Python- IF Else 语句和 return
Python- IF Else statement and return
我正在尝试编写代码让用户输入字母和 return 数字,就像我们的 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())
然而它不起作用,正确答案应该是:
while key < 10:
if letter.upper() in phone_letters[key]:
return key
else:
key += 1
return "Not found"
我的理解是 "IF" input not in phone_letter,然后我们跳转到 else 和 return "Not found"。 "IF" 输入可以在 phone_letter 然后 return "key" 和 end.
中找到
我不明白为什么else语句中的(return "Not found")每次输入都会return "Not found"? "key += 1"
的功能是什么
您遇到的问题是由于您将 key
的值设置为 0。这会影响您的 if
语句;
if letter.upper() in phone_letters[key]:
这是在说明,in phone_letters[0]:
是 " "
,因此您对字母的检查永远不会 returns 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())
在此处阅读列表理解; List Comprehension in Python
试试下面的代码,
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())
所以这里的想法是迭代 while
从 key = 0 到 key = 9(这是你的 phone_letters
列表的索引)。在 if 块中,您检查输入的 letter
是否是 key
当前迭代的字母之一。
例如,用户输入字母 'P',while 循环开始 -
- key = 0, phone_letters[key] = " ", 条件为假。 现在 key 的值必须递增才能检查 phone_letters 的下一个索引。您的代码不会那样做,而是转到第一个 returns Not Found in the very first block
的 else 块
- key = 1, phone_letters[key] = "", 条件为假。
...
- key = 7,phone_letters[key] = "PQRS",条件为真。
仅当用户输入的字符不在 phone_letters 的 任何 索引中时,结果才应为 Not Found。
希望说清楚!
我正在尝试编写代码让用户输入字母和 return 数字,就像我们的 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())
然而它不起作用,正确答案应该是:
while key < 10:
if letter.upper() in phone_letters[key]:
return key
else:
key += 1
return "Not found"
我的理解是 "IF" input not in phone_letter,然后我们跳转到 else 和 return "Not found"。 "IF" 输入可以在 phone_letter 然后 return "key" 和 end.
中找到我不明白为什么else语句中的(return "Not found")每次输入都会return "Not found"? "key += 1"
的功能是什么您遇到的问题是由于您将 key
的值设置为 0。这会影响您的 if
语句;
if letter.upper() in phone_letters[key]:
这是在说明,in phone_letters[0]:
是 " "
,因此您对字母的检查永远不会 returns 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())
在此处阅读列表理解; List Comprehension in Python
试试下面的代码,
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())
所以这里的想法是迭代 while
从 key = 0 到 key = 9(这是你的 phone_letters
列表的索引)。在 if 块中,您检查输入的 letter
是否是 key
当前迭代的字母之一。
例如,用户输入字母 'P',while 循环开始 -
- key = 0, phone_letters[key] = " ", 条件为假。 现在 key 的值必须递增才能检查 phone_letters 的下一个索引。您的代码不会那样做,而是转到第一个 returns Not Found in the very first block 的 else 块
- key = 1, phone_letters[key] = "", 条件为假。 ...
- key = 7,phone_letters[key] = "PQRS",条件为真。
仅当用户输入的字符不在 phone_letters 的 任何 索引中时,结果才应为 Not Found。
希望说清楚!