如何在python中创建函数let_to_num()
在我的作业中,我必须使用列表将数字转换为字母。我能做到这一点,只是我被奖金问题难住了。当输入为空时,索引需要参考[2]。我试图添加一个elif语句,但无论我做什么,我都会继续得到第一个索引。本课程未涵盖任何有关处理空白输入项的信息。我的代码如下:如何在python中创建函数let_to_num(),python,Python,在我的作业中,我必须使用列表将数字转换为字母。我能做到这一点,只是我被奖金问题难住了。当输入为空时,索引需要参考[2]。我试图添加一个elif语句,但无论我做什么,我都会继续得到第一个索引。本课程未涵盖任何有关处理空白输入项的信息。我的代码如下: phone_letters = [' ', '','ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ'] letter = input('Enter a single letter, spac
phone_letters = [' ', '','ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
letter = input('Enter a single letter, space or empty: ')
def let_to_num(letter):
key = 0
while key < 10:
if letter.upper() in phone_letters[key]:
return key
elif letter == False: #don't know how to deal with a blank input
key = 1
else:
key = key + 1
return "Not Found"
print(letter,"=",let_to_num(letter))
phone_字母=['','ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ']
字母=输入('输入单个字母、空格或空:')
def let_至_num(字母):
键=0
键<10时:
如果字母[key]中的字母.upper():
返回键
elif letter==False:#不知道如何处理空白输入
键=1
其他:
键=键+1
返回“未找到”
打印(字母“=”,从字母到数字)
即使空字符串为“falsy”,以下比较也不起作用:
“”==False#False
相反,您可以使用逻辑运算符而不是:
不是“”#正确
因此,在代码中,可以使用
def let_to_num(字母):
如果不是字母:
返回1
键=0
键<10时:
如果字母[key]中的字母.upper():
返回键
其他:
键=键+1
返回“未找到”
您还可以删除与列表中的空字符串对应的条目。最后,请注意my_字符串中的''对于任何字符串都将计算为True
如果要进一步改进代码,可以查看或查看内置函数。即使空字符串为“falsy”,以下比较也不起作用:
“”==False#False
相反,您可以使用逻辑运算符而不是:
不是“”#正确
因此,在代码中,可以使用
def let_to_num(字母):
如果不是字母:
返回1
键=0
键<10时:
如果字母[key]中的字母.upper():
返回键
其他:
键=键+1
返回“未找到”
您还可以删除与列表中的空字符串对应的条目。最后,请注意my_字符串中的''对于任何字符串都将计算为True
如果您想进一步改进代码,可以查看或查看内置函数。输入不是您的问题,而是您如何检查。您可能只想在函数的开头放一个检查输入是否为“”的特例
问题是,您正在查看字母是否位于phone_字母的值中,但空字符串将始终与该测试匹配。因此,您的支票在key=0中查找它并“找到”它
因此,您需要尽早检查input==“”并处理它。然后做你的循环(或者别的什么)
请注意,这是一个很好的字典用法。如果您创建了一个包含每个字母编号的字典,那么查找并返回该值就很容易了。它还处理空字符串,没有特殊的大小写
>>> let_to_num = {"": 2,
... " ": 1,
... "A":3,
... "B":3,
... "C":3,
... "D":4}
>>> let_to_num.get("", "Not Found") # empty string
2
>>> let_to_num.get(" ", "Not Found") # space
1
>>> let_to_num.get("D", "Not Found") # regular letter
4
>>> let_to_num.get("$", "Not Found") # invalid letter
'Not Found'
输入不是你的问题,而是你如何检查。您可能只想在函数的开头放一个检查输入是否为“”的特例
问题是,您正在查看字母是否位于phone_字母的值中,但空字符串将始终与该测试匹配。因此,您的支票在key=0中查找它并“找到”它
因此,您需要尽早检查input==“”并处理它。然后做你的循环(或者别的什么)
请注意,这是一个很好的字典用法。如果您创建了一个包含每个字母编号的字典,那么查找并返回该值就很容易了。它还处理空字符串,没有特殊的大小写
>>> let_to_num = {"": 2,
... " ": 1,
... "A":3,
... "B":3,
... "C":3,
... "D":4}
>>> let_to_num.get("", "Not Found") # empty string
2
>>> let_to_num.get(" ", "Not Found") # space
1
>>> let_to_num.get("D", "Not Found") # regular letter
4
>>> let_to_num.get("$", "Not Found") # invalid letter
'Not Found'
空条目为”
,带空格的条目为”
,但是,当空字符串的计算结果为False
时,空格的计算结果为True
。
我处理上述代码的方法如下
phone_letters = [' ', '','ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
letter = input('Enter a single letter, space or empty: ')
def let_to_num(letter):
if letter == "": # Make sure it's not an empty string
return letter
for index, item in enumerate(phone_letters): # loop over each item in letters
if letter.upper() in item: # String comp
return index
return "Not Found" # Default return if still here
空条目为”
,带空格的条目为”
,但是,当空字符串的计算结果为False
时,空格的计算结果为True
。
我处理上述代码的方法如下
phone_letters = [' ', '','ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
letter = input('Enter a single letter, space or empty: ')
def let_to_num(letter):
if letter == "": # Make sure it's not an empty string
return letter
for index, item in enumerate(phone_letters): # loop over each item in letters
if letter.upper() in item: # String comp
return index
return "Not Found" # Default return if still here
欢迎来到SO。如果用户输入'
或'
应该为该情况分配哪个键,您希望发生什么?您想做什么?请给出一些输入和预期输出的示例…您需要分别处理'
输入。空白条目为'
,带空格的条目为'
,但空字符串的计算结果为False
空格的计算结果为True
欢迎使用。如果用户输入'
或'
应该为该情况分配哪个键,您希望发生什么?您想做什么?请给出几个输入和预期输出的示例…您需要分别处理'
输入。空白条目为'
,带空格的条目为'
,而空字符串的计算结果为假
空格的计算结果为真