如何使我的while循环检查这两种情况

时间:2019-04-26 23:45:07

标签: python while-loop

对于我的程序,我要求用户提供邮政编码。我试图让程序再次询问用户他们的邮政编码,如果他们输入的不仅是数字,而且是5个字符。它的确不是5个字符,而是再次要求提供邮政编码,但不会再次询问用户是否输入了非数字的字符。例如,如果您键入“ 8789”,则无法使用,但如果您键入“ 8jkf0”,则将可以使用。

我已经尝试过将我的或切换到and,但这就是它。我想不出要尝试的其他方法。我是python的新手。我在学校使用它,有时在业余时间使用它。

zipcode = input("What is your ZIP code? ")
ziplen = len(zipcode)
while not (char.isnumber() for char in zipcode) or not ziplen == 5:
    zipcode = input("What is your ZIP code? ")
    ziplen = len(zipcode)

我希望该程序再次询问用户的邮政编码,如果他们输入的不仅是数字和正好5个字符,还只会检查它是否正好是5个字符。

2 个答案:

答案 0 :(得分:4)

isnumeric检查整个字符串,就这样:

while not zipcode.isnumeric() or not len(zipcode) == 5:
    ...

答案 1 :(得分:1)

您需要调用pattern = r"chapter \d" y = x.map(lambda x: bool(re.search(pattern,str(x), flags=re.I))) z = np.cumsum(y) 函数以返回测试all()中所有字符的结果。您的列表理解会产生一个生成器,这将永远是真实的。

正确的功能是zipcode,而不是isdigit

isnumber