虽然不会因输入字符串而中断

时间:2018-11-14 05:01:14

标签: python

如何用字符串输入来中断while?我正在尝试这个,但是第一个if被忽略了:

from itertools import cycle;
ewe=cycle([0]);
Nom_join="";
Principal_loop=True;
Cont_Error1=0;
while(Principal_loop==True):

    for i in ewe:
        Nom_join=input("give me a name to search: -> ");
        if (Nom_join==""):
            print("you cant do that");
            Cont_Error1+=1;
        elif(Nom_join==" "):
            print("you cant do that");
            Cont_Error1+=1;
        elif(Nom_join.isdigit()):
            print("you cant do that")
            Cont_Error1+=1;
        elif(Nom_join=="*"):
            Principal_loop=False;
        else:
            break;

1 个答案:

答案 0 :(得分:0)

尝试在break之后添加Principal_loop=False语句。是的,请删除分号并在运算符之前和之后添加空格以符合PEP 8 guidelines。另外,在条件语句后也没有括号。

from itertools import cycle
ewe = cycle([0])
Nom_join = ""
Principal_loop = True
Cont_Error1 = 0

while Principal_loop == True:
    for i in ewe:
        Nom_join = input("give me a name to search: -> ")
        if Nom_join == "":
            print("you cant do that")
            Cont_Error1 += 1;
        elif Nom_join == " ":
            print("you cant do that")
            Cont_Error1 += 1
        elif Nom_join.isdigit():
            print("you cant do that")
            Cont_Error1 += 1
        elif Nom_join == "*":
            Principal_loop = False
            break
        else:
            break

我真的不确定为什么您需要启动一个无限零循环...还可以进行许多其他简化。这样做似乎更简单:

Cont_Error1 = 0
while True:
    Nom_join = input("give me a name to search: -> ")
    if Nom_join in {"", " ", "*"} or Nom_join.isdigit():
        print("you can't do that")
        Cont_Error1 += 1;
    else:
        break