我写了这个程序,而且我遇到了很多问题。我对python没有太多经验,所以我确定我犯了一堆愚蠢的语法错误。请帮我找到代码中的所有错误!
import string
num_ltr = []
ltr_num = []
num = 1
for ltr in string.ascii_lowercase:
num_ltr[num] = ltr
ltr_num[ltr] = num
num += 1
def print_menu():
return '1. Translate a string to numbers'
return '2. Translate numbers to a string'
return '3. Quit'
def ltr_to_num(s, ltr_num):
for char in s:
print ltr_num[char]
print
def num_to_ltr(num_ltr, s):
num_list = s.split()
sentence = 0
for num in num_list:
if num.isdigit():
sentence = num_ltr[num]
else:
sentence += num
user_choice = 0
while user_choice != 3:
print print_menu()
user_choice = raw_input("> ")
if user_choice = 1:
s = raw_input('Enter a sentence: ')
num_to_ltr(s,num_ltr)
elif user_choice = 2:
s = raw_input('Enter the numbers separated by spaces: ')
num_to_ltr(s,num_ltr)
elif user_choice != 3:
print "I don't recognize that choice."
print "Goodbye!"
答案 0 :(得分:1)
我不知道你在第一部分做了什么,在这里很难帮助你。如果您解释得更多,则更容易解决:
for ltr in string.ascii_lowercase:
num_ltr[num] = ltr
ltr_num[ltr] = num
num += 1
您希望打印这些行,而不是"返回"它们(每个函数只能返回一个东西)。
def print_menu():
return '1. Translate a string to numbers'
return '2. Translate numbers to a string'
return '3. Quit'
改为将其改为:
def print_menu():
print('1. Translate a string to numbers')
print('2. Translate numbers to a string')
print('3. Quit')
比较值的代码为==
,=
用于分配:
while user_choice != 3:
print print_menu()
user_choice = raw_input("> ")
if user_choice == 1:
s = raw_input('Enter a sentence: ')
num_to_ltr(s,num_ltr)
elif user_choice == 2:
s = raw_input('Enter the numbers separated by spaces: ')
num_to_ltr(s,num_ltr)
elif user_choice != 3:
print "I don't recognize that choice."
print "Goodbye!"
答案 1 :(得分:0)
一般建议:编写伪代码。编写程序并同时测试代码以最大限度地减少错误。信息收集了老师,朋友和stackoverflow。
你有使用python 2.7的具体原因吗?
import string
num_ltr = []
ltr_num = []
num = 1
for ltr in string.ascii_lowercase:
num_ltr[num] = ltr
ltr_num[ltr] = num
num += 1
def print_menu():
print '1. Translate a string to numbers'
print '2. Translate numbers to a string'
print'3. Quit'
def ltr_to_num(s, ltr_num):
for char in s:
print (ltr_num[char])
def num_to_ltr(num_ltr, s):
num_list = s.split()
sentence = 0
for num in num_list:
if num.isdigit():
sentence = num_ltr[num]
else:
sentence += num
user_choice = 0
while user_choice != 3:
print print_menu()
user_choice = raw_input("> ")
if user_choice == 1:
s = raw_input('Enter a sentence: ')
num_to_ltr(s,num_ltr)
elif user_choice == 2:
s = raw_input('Enter the numbers separated by spaces: ')
num_to_ltr(s,num_ltr)
elif user_choice != 3:
print "I don't recognize that choice."
print "Goodbye!"
我修正了你的一些错误,我不知道你在顶部做了什么,如果你想要更多帮助请告诉我。我希望我有所帮助。
答案 2 :(得分:0)
如果您使用IDE(集成开发环境),则可以使用它来突出显示代码出现问题的位置。我使用PyCharm。
刚才你在末尾和sentence = num_ltr[num]
行的while块中有一些缩进错误。
此外,您的print_menu
函数会多次调用return
。我想你想把字符串加在一起。你可能也想在每一行的末尾加上'\ n'。
您需要更改检查菜单选择的方式。将输入转换为int,或者与字符串而不是数字进行比较,例如'1'
代替1
。
除此之外,只需尝试运行代码并阅读错误消息。这应该给你足够的线索以进一步 - 甚至可能就工作代码而言。