Python - 函数调用问题

时间:2014-08-06 14:30:52

标签: python function

我刚刚开始学习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())

这背后的想法是调用菜单函数,该函数给出一个等于用户输入的值,当调用后者时,该函数被送入动作函数,并根据用户的选择做某事。

虽然代码看起来不起作用,但不能告诉我犯了什么问题。 提前致谢

3 个答案:

答案 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"