for 循环卡在第一次迭代时,其他循环未正确返回



我被卡住了。

我正在尝试转换用户输入的9个字母,并将它们转换为与数字0-9一致的数字(就像手机一样(。

到目前为止,我的字母列表对象是有效的,但当它到达'letter_converter'函数中的for循环时,它只会返回['2','2'…],并且不会继续整个循环,对于'letter'列表中的任何其他字母,数字不会返回除'2'之外的任何值,对于所有其他字母:它返回'None'。

有人能帮我解释一下为什么会这样吗?我更多的是在寻找答案背后的逻辑,因为我对编码是全新的。

def phone_number_converter():
'''This program will take user input to convert nine letters
to a phone number using the text numbers from a phone number'''
def letter_list():
#takes 9 character string of user input and adds them to a list
#returns: list object 'letters'
word_input = input('Input nine letters: ')
word = word_input
letters = []
for letter in word:
letters.append(letter)
return letters
def letter_converter(letters):
#takes a list object with separate strings and converts them to '0 - 9'
#returns:list object called 'numbers'
n = len(letters)
numbers = []

for letter in letters:
while (len(numbers)) < n:
if letter == 'a' or 'b' or 'c':
numbers.append('2')
elif letter == 'd' or 'e' or 'f':
numbers.append('3')
elif letter == 'g' or 'h' or 'i':
numbers.append('4')
elif letter == 'j' or 'k' or 'l':
numbers.append('5')
elif letter == 'm' or 'n' or 'o':
numbers.append('6')
elif letter == 'p' or 'q' or 'r' or 's':
numbers.append('7')
elif letter == 't' or 'u' or 'v':
numbers.append('8')
else:
numbers.append('9')    
return numbers
letters = letter_list()
numbers = letter_converter(letters)
return numbers 
print(phone_number_converter())}
while (len(numbers)) < n:
if letter == 'a' or 'b' or 'c':
numbers.append('2')
elif letter == 'd' or 'e' or 'f':
numbers.append('3')
elif letter == 'g' or 'h' or 'i':
numbers.append('4')
elif letter == 'j' or 'k' or 'l':
numbers.append('5')
elif letter == 'm' or 'n' or 'o':
numbers.append('6')
elif letter == 'p' or 'q' or 'r' or 's':
numbers.append('7')
elif letter == 't' or 'u' or 'v':
numbers.append('8')
else:
numbers.append('9') 

在这里,你可以比较"b"或"c",如果它总是真的,那么你需要对每个if 都这样做

if letter in ('a', 'b', 'c'):

您可以更容易地实现这一点,方法是制作一个将单个字母转换为数字的函数,然后使用列表理解将其应用于输入单词。

def letter_to_phone_digit(letter):
groups = ["abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]
for digit, letters in enumerate(groups, start=2):
if letter in letters:
return digit
def phone_number_converter():
word_input = input('Input nine letters: ')
return [letter_to_phone_digit(letter) for letter in word_input]

相关内容

  • 没有找到相关文章