我刚刚开始学习python 2天前,我试图做一些基于文本的冒险练习,我唯一的问题是功能:
def menu_op():
print('1- Action 1')
print('2- Action 2')
choice= input('Choose action: ')
return choice
def action_op(x):
if x == 1:
print('You chose action 1')
if x == 2:
print('You chose action 2')
menu_op()
action_op(menu_op())
这背后的想法是调用菜单函数,该函数给出一个等于用户输入的值,当调用后者时,该函数被送入动作函数,并根据用户的选择做某事。
虽然代码看起来不起作用,但不能告诉我犯了什么问题。 提前致谢
答案 0 :(得分:3)
看起来你正在使用Python 3.x.在该版本中,input
返回Python 2.x中的raw_input
之类的字符串对象。这意味着函数menu_op
的返回值将始终为字符串。
因此,您需要将x
与字符串而不是整数进行比较:
if x == '1':
print('You chose action 1')
elif x == '2':
print('You chose action 2')
我还将第二个if
更改为elif
,因为x
永远不会与'1'
和'2'
相等。
答案 1 :(得分:1)
您正在调用menu_op()
次功能两次。第一次被调用时,选择不会传递给action_op()
menu_op() #return is not catched
action_op(menu_op())
menu_op
返回的值是一个字符串,因此您应该比较action_op
中的字符串,而不是将x
与整数进行比较
def action_op(x):
if x == 1:
^^^ #should compare strings here -> x == "1"
答案 2 :(得分:0)
choice= int(input('Choose action: ')) # make choice an int to compare
In [1]: 1 == "1"
Out[1]: False
In [2]: 1 == int("1")
Out[2]: True
input
是一个字符串,您正在比较if x == 1
其中x
是"1"