if-else语句未执行while循环

时间:2019-08-12 19:10:02

标签: python-3.x

ab=0
while ab==0:
    ab=input("enter here:")
    if ab==1:
        print("print this ab==1")
    elif ab==2:
        print("print this ab==2")
    elif ab==3:
        print("print this ab==3")
    elif ab==4:
        print("print this ab==4")
    else:
        print("try again")

结果:

enter here:2

try again

当我将输入作为1,2,3,4之类的东西时,它返回else条件(打印“重试”),然后循环在这里结束

输出:

enter here:4

try again

并且循环终止

当我的输入是1/2/3/4时,我希望有相应的elif条件,但实际输出是else条件,并且在结果循环终止之后

4 个答案:

答案 0 :(得分:1)

Python将输入视为字符串。因此,要么将这些数字作为字符串进行比较,要么将您的输入转换为整数。您可以尝试

ab = int(input("enter here"))

答案 1 :(得分:0)

您还可以将输入与字符串进行比较,而不必将其转换为int。

例如。

...
elif ab=="1":
    print("print this ab==1")
...

答案 2 :(得分:0)

选项1:您需要强制转换input()调用返回的值。使用以下方法: int(input())

选项2:您可以比较字符串而不是整数:if ab=="1"

但不要同时选择两者之一。如果希望获得实际上可以转换为整数的值,则第一个是好的。因此,如果选择该选项,则应在投射前检查输入值。

答案 3 :(得分:0)

默认情况下,Python的input()方法返回一个字符串。您必须通过将输入转换为int的方式来对待它:

ab = int(input(“enter int here”))

或者以str格式执行所有比较,如果您要测试数字以外的其他输入,则可以使用该格式:

ab=input("enter string here:")
if ab=='1':
    print("print this ab==1")
elif ab=='2':
    print("print this ab==2")
elif ab=='3':
    print("print this ab==3")
elif ab=='4':
    print("print this ab==4")
else:
    print("try again")