Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-KeyError';C';关于列表检查值_Python - Fatal编程技术网

Python-KeyError';C';关于列表检查值

Python-KeyError';C';关于列表检查值,python,Python,我正在尝试创建一个代码,为单词中的字母赋值,然后在pythonm中将它们吐出来。这是我的代码: import time import os import string os.system('cls') values = dict() for index, letter in enumerate(string.ascii_lowercase): values[letter] = index + 1 def scramble(letter): i = 0 phrase =

我正在尝试创建一个代码,为单词中的字母赋值,然后在pythonm中将它们吐出来。这是我的代码:

import time
import os
import string
os.system('cls')
values = dict()

for index, letter in enumerate(string.ascii_lowercase):
    values[letter] = index + 1


def scramble(letter):
   i = 0
   phrase = list(letter)
   mylist = []
   while i < len(phrase):
      list.append(values[phrase[i]])
      i = i + 1
   print(res)
   
scramble("Crapx")
导入时间
导入操作系统
导入字符串
操作系统(“cls”)
值=dict()
对于索引,枚举中的字母(string.ascii_小写):
值[字母]=索引+1
def加扰(字母):
i=0
短语=列表(字母)
mylist=[]
而我
好吧,这样我就得到了错误

Traceback (most recent call last):
  File "d:\Code\Python\fibbanaci.py", line 22, in <module>
    scramble("Crapx")
  File "d:\Code\Python\fibbanaci.py", line 18, in scramble
    list.append(values[phrase[i]])
KeyError: 'C'
PS D:\Code\Python> 
回溯(最近一次呼叫最后一次):
文件“d:\Code\Python\fibbanaci.py”,第22行,在
扰码(“Crapx”)
文件“d:\Code\Python\fibbanaci.py”,第18行,置乱
list.append(值[短语[i]])
键错误:“C”
PS D:\Code\Python>

有人知道这个问题的解决方法吗?

字典值将string.ascii_小写字母映射到索引+1。它没有大写字母的键。事实上,你可以

def scramble(letter):
   i = 0
   phrase = list(letter.lower())
   mylist = []
   while i < len(phrase):
      mylist.append(values[phrase[i]])
      i += 1
   print(phrase)

你的字典没有大写键。您可以使用
string.ascii_字母
而不是
string.ascii_小写字母

import time
import os
import string
os.system('cls')
values = dict()

for index, letter in enumerate(string.ascii_letters):
    values[letter] = index + 1

def scramble(letter):
   i = 0
   phrase = list(letter)
   mylist = []
   while i < len(phrase):
      mylist.append(values[phrase[i]])
      i = i + 1
   print(mylist)
   
scramble("Crapx")
导入时间
导入操作系统
导入字符串
操作系统(“cls”)
值=dict()
对于索引,枚举中的字母(string.ascii_字母):
值[字母]=索引+1
def加扰(字母):
i=0
短语=列表(字母)
mylist=[]
而我
字典只包含小写字母,但是
Crapx
有大写的
C
。假设您的输入是一个变量,您可以调用输入字符串的lower<代码>加扰(“Crapx.lower())
嘿,这确实有帮助,但并没有完全解决问题。最后,我调整了代码以找到
defscramble(letter):I=0短语=list(letter.lower())mylist=[]的工作代码,而我
仍然有错误吗。。?或者你的预期结果是什么。。?
import time
import os
import string
os.system('cls')
values = dict()

for index, letter in enumerate(string.ascii_letters):
    values[letter] = index + 1

def scramble(letter):
   i = 0
   phrase = list(letter)
   mylist = []
   while i < len(phrase):
      mylist.append(values[phrase[i]])
      i = i + 1
   print(mylist)
   
scramble("Crapx")