Python-IF-Else语句并返回
我正在尝试编写一个代码,让用户输入一个字母并返回数字,就像我们的手机键盘一样。我的工作是:Python-IF-Else语句并返回,python,if-statement,return-value,Python,If Statement,Return Value,我正在尝试编写一个代码,让用户输入一个字母并返回数字,就像我们的手机键盘一样。我的工作是: phone_letters = [" ", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"] def let_to_num(): letter =input("Enter: ") key = 0 while key < 10: if letter.upper() in phone
phone_letters = [" ", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"]
def let_to_num():
letter =input("Enter: ")
key = 0
while key < 10:
if letter.upper() in phone_letters[key]:
return key
else:
return "Not found"
print(let_to_num())
phone_字母=[“”、“”、“ABC”、“DEF”、“GHI”、“JKL”、“MNO”、“PQRS”、“TUV”、“WXYZ”]
def let_to_num():
字母=输入(“输入:”)
键=0
键<10时:
如果字母[key]中的字母.upper():
返回键
其他:
返回“未找到”
打印(让_到_num())
但是它不起作用,正确答案应该是:
while key < 10:
if letter.upper() in phone_letters[key]:
return key
else:
key += 1
return "Not found"
键<10时:
如果字母[key]中的字母.upper():
返回键
其他:
键+=1
返回“未找到”
我的理解是“如果”输入不在电话信中,那么我们跳转到“其他”并返回“未找到”。“如果”输入可以在电话信中找到,然后返回“键”并结束
我不明白为什么else语句中的(return“Not found”)会为每个输入返回“Not found”?“key+=1”的函数是什么?您遇到的问题是由于您将
key
的值设置为0。这会影响您的if
语句
if letter.upper()在电话字母[key]中:
这表示,在电话字母[0]:
中是”
,因此您对字母的检查不会返回true
,因为它不在”
下面的代码解决了这些问题,请查看底部的学习链接和代码功能注释,快乐学习
phone_letters = [" ", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"]
def let_to_num():
letter =input("Enter: ")
while letter.isalpha(): # Only runs if the input is a alphabetical char
# index of the item in list, if the letter is found within the value
# of the list item. This loops over every element in the list.
number = [idx for idx, value in enumerate(phone_letters) if letter.upper() in value]
return number[0] if number else 'Not Found'
print(let_to_num())
在这里阅读列表理解 试试下面的代码
def let_to_num():
letter = input("Enter: ")
for i in range(len(phone_letters)):
if letter.upper() in phone_letters[i]:
return i
return 'Not found'
print(let_to_num())
因此,这里的想法是迭代
,同时
从key=0到key=9(这是你的phone_字母
列表的索引)。在if块中,检查输入的字母是否为键当前迭代的字母之一。
例如,用户输入字母“P”,while循环开始-
key=0,电话字母[key]=“”,条件为False。现在,key的值必须增加,以便检查电话字母的下一个索引。您的代码没有这样做,而是转到else块,它返回在第一个块中找不到的内容
key=1,电话字母[key]='',条件为False。
键=7,电话字母[键]=“PQRS”,条件为真
只有当用户输入的字符不存在于任何电话字母索引中时,才会找不到结果。
希望这能说明问题 key+=1
与key=key+1
具有相同的效果。代码的其余部分现在更有意义了吗?返回“未找到”
将立即退出函数key
不是由一引发的,只有当letter.upper()
在phone\u letters[0]
中时才有验证。如果你要理解:to\u number={letter:i代表i,letter in enumerate(phone\u letters)代表letter in letter}
然后number=to\u number.get(letter.upper(),“未找到”)
@stephernauch使用类似的概念更新了代码。还解决了在不匹配时引发错误的问题。