Python While循环不继续执行If语句

Python While循环不继续执行If语句,python,loops,Python,Loops,我是Python新手,我正在试图弄清楚为什么我的程序不会运行超过初始输入。在我输入一个数字之前,一切正常。然后回到节目的开头。循环语句如下所示: loop = 1 choice = 0 while loop == 1: choice = menu() if choice == 1: (List of commands) elif choice == 2: (List of commands) etc... elif

我是Python新手,我正在试图弄清楚为什么我的程序不会运行超过初始输入。在我输入一个数字之前,一切正常。然后回到节目的开头。循环语句如下所示:

 loop = 1
 choice = 0
 while loop == 1:
     choice = menu()
     if choice == 1:
        (List of commands)
     elif choice == 2:
        (List of commands)  etc...
     elif choice == 5:
        loop = 0

我是一个大傻瓜,所以我打赌这是一个荒谬的问题,但我只是被难住了

TypeError:不能将序列与'str'类型的非整数相乘
意味着你要像'5'*'5'这样相乘,它们是
str
但不是int 5*5

'1'+'1'='11'
但是
1+1=2

因此,您应该将str更改为int

NO_ACTION, SMTH_ACTION, SMTH_OTHER_ACTION, EXIT_ACTION = 0,1,2,3
choice = NO_ACTION
while True:
    choice = int(menu()) # python strong typed!

    if choice is SMTH_ACTION:
        (List of commands)

    elif choice is SMTH_OTHER_ACTION:
        (List of commands)  etc...

    elif choice is EXIT_ACTION:
       break
不需要退出标志-使用
break
关键字。
不要使用“幻数”-定义常数。

等。。。很明显,它并没有出现在节目中!你怎么输入这个号码?如果
菜单()。这在很大程度上取决于
menu()
的外观。如果将
menu()
的返回值强制转换为
int
,是否有效?i、 e.
choice=int(menu())
?问题在于您尚未发布的代码。
def add(a,b):print(a,“+”,b,“=”,(a+b)#这减去给定def sub的两个数字(a,b):print(b,“-”,a,“=”,b-a)#这将给定def mul的两个数字相乘(a,b):print(a,“*”,b,“=”,a*b)#这将给定def div(a,b)的两个数字相除:print(a,“/”,b,“=”,a/b)
所以我不应该像这样定义我的函数,我应该这样做
无动作,SMTH_动作等=0,1,2,3
它会把每一个动作都与相应的数字联系起来。无动作=0 SMTH_动作=1等。再次为自己是一个傻瓜感到抱歉!必须通过尝试和错误来学习!为粗心大意的代码感到抱歉,它没有出现但正如我所期望的那样!@Jeremy Smith,将函数描述放在:)和@Jeremy Smith,使用字符串格式:
print(“%s+%s=%s%”(a,b,a+b))