不断得到"无"结果



我正在为class做一项作业,我们应该在那里:

编写一个程序,要求用户输入一个10个字符的电话号码,格式为XXX-XXX-XXXX。应用程序应显示电话号码,并将原始文件中出现的任何字母字符翻译为相应的数字字符。例如,如果用户输入555-GET-FOOD,则应用程序应显示555-438-3663。使用循环对字符串中的每个字符进行迭代。根据上面列出的映射,编写一个函数,将字母转换为正确的数字。在循环中调用此函数以转换字符。

这是我迄今为止的代码:

# write function that converts letter to number
def num_trans(number):
num = number.upper()
if char == "A" or char == "B" or char == "C":
num.replace(char,"2")
elif char == "D" or char == "E" or char == "F":
num.replace(char,"3")
elif char == "G" or char == "H" or char == "I":
num.replace(char,"4")
elif char == "J" or char == "K" or char == "L":
num.replace(char,"5")
elif char == "M" or char == "N" or char == "O":
num.replace(char,"6")
elif char == "P" or char == "Q" or char == "R" or char == "S":
num.replace(char,"7")
elif char == "T" or char == "U" or char == "V":
num.replace(char,"8")
elif char == "W" or char == "X" or char == "Y" or char == "Z":
num.replace(char,"9")
# ask for user input phone number
numb = input("Please input a number in the format XXX-XXX-XXXX: ")
# change letters to numbers
# use loop to go over each character
for char in numb:
new_num = num_trans(numb)
# print number
print(new_num)

我在输入中输入的任何东西;无";。我不知道怎么解决这个问题。请帮助

def num_trans(number):
num = number.upper()
if num == "A" or num == "B" or num == "C":
return '2'
elif num == "D" or num == "E" or num == "F":
return '3'
elif num == "G" or num == "H" or num == "I":
return '4'
elif num == "J" or num == "K" or num == "L":
return '5'
elif num == "M" or num == "N" or num == "O":
return '6'
elif num == "P" or num == "Q" or num == "R" or num == "S":
return '7'
elif num == "T" or num == "U" or num == "V":
return '8'
elif num == "W" or num == "X" or num == "Y" or num == "Z":
return '9'
else:
return str(num)
def new_function():
new_number = ''
for char in '555-GET-FOOD':
new_number += num_trans(char)
print(new_number)
if __name__ == '__main__':
new_function()

输出

555-438-3663

您可能需要了解以下几点:

  1. 字符串是不可变的,replace()不会在适当的位置更改字符串,这意味着如果你不将结果保存在新变量中,你只会得到原始变量
  2. 保存新结果后,需要return,这样外部的变量就可以赋值,否则函数只返回None
  3. 尽管您的代码可以运行,但有一个未在函数参数中定义的变量(在本例中为char(确实令人困惑

我只对您的代码进行了一些小的更改,使其能够工作,但它可以进一步改进:

def num_trans(number):
num = number.upper()
if char == "A" or char == "B" or char == "C":
# save result after replace
num = num.replace(char,"2")
elif char == "D" or char == "E" or char == "F":
num =  num.replace(char,"3")
elif char == "G" or char == "H" or char == "I":
num = num.replace(char,"4")
elif char == "J" or char == "K" or char == "L":
num = num.replace(char,"5")
elif char == "M" or char == "N" or char == "O":
num = num.replace(char,"6")
elif char == "P" or char == "Q" or char == "R" or char == "S":
num = num.replace(char,"7")
elif char == "T" or char == "U" or char == "V":
num = num.replace(char,"8")
elif char == "W" or char == "X" or char == "Y" or char == "Z":
num = num.replace(char,"9")
# return it
return num
numb = input("Please input a number in the format XXX-XXX-XXXX: ")
new_num = numb
for char in numb:
# use num_trans(new_num) to replace the string recursively
# otherwise num_trans(numb) only do the last change
new_num = num_trans(new_num)
print(new_num)

输出:

555-438-3663

通过从num_trans:返回一个值,您可以实现更多您想要实现的目标

def num_trans(number):
num = number.upper()
if char == "A" or char == "B" or char == "C":
return "2"
elif char == "D" or char == "E" or char == "F":
return "3"
elif char == "G" or char == "H" or char == "I":
return "4"

等等-您还需要在这些值从函数返回时重新组合它们,并处理数字和短划线等其他字符。

最新更新