Python 而循环不';不能识别多种情况
我要求用户输入,它必须是单字符字母表 我试过这个密码Python 而循环不';不能识别多种情况,python,while-loop,user-input,Python,While Loop,User Input,我要求用户输入,它必须是单字符字母表 我试过这个密码 ask = '' while len(ask) != 1 and ask.isalpha() != True: ask = input(message).upper() 但它接受任何一个数字来打破while循环。我不明白为什么 我检查了单个数字上的ask.isalpha(),结果返回False。那么,为什么它会打破循环呢 对不起,这个问题。这很幼稚,但我找不到答案 多谢各位 编辑: 添加了整个代码。您需要一个或操作,而不是和来实现您
ask = ''
while len(ask) != 1 and ask.isalpha() != True:
ask = input(message).upper()
但它接受任何一个数字来打破while循环。我不明白为什么
我检查了单个数字上的ask.isalpha()
,结果返回False。那么,为什么它会打破循环呢
对不起,这个问题。这很幼稚,但我找不到答案
多谢各位
编辑:
添加了整个代码。您需要一个
或
操作,而不是和
来实现您想要的。此外,在进入while
循环之前,您需要第一次接受用户输入
因此,您的代码应该是:
ask = input(message).upper()
while len(ask) != 1 or ask.isalpha() != True:
ask = input(message).upper()
您正在使用
=
表示当为输入1位数条件时不等于so,而循环不匹配,因此代码停止。您应该使用==
而不是=代码>有不同的方法
#如果希望用户输入大写字母
尽管如此:
ask=输入('消息:')
如果len(ask)==1且ask.isalpha()==True且ask.isupper()==True:
打破
#如果要将输入转换为上限
尽管如此:
ask=(输入('message:')。上限()
如果len(ask)==1且ask.isalpha()==True:
打破
在这种情况下,如果您的所有条件都满足,您需要==
而不是=代码>与条件的第二部分。另外,考虑使用<代码>…虽然
循环以允许第一次输入。很抱歉,=
对我不起作用。循环甚至没有启动,并且在更改为=
后没有提示使用输入。while循环失败,因为ask
无法满足循环条件。将ask
设置为一些默认值,比如说a
或使用do。。while
按建议循环。抱歉@KrishnaChaurasia,但请解释一下这个while循环。我找不到python的任何这样的循环。我的坏…python不支持do。。而
循环。应该可以解决你的问题。很抱歉,=
对我不起作用。循环甚至没有启动,在更改为==
后也没有提示使用输入。很抱歉,=
对我不起作用。循环甚至没有启动,在更改为==
@Meet Edited my answer之后,也没有提示使用输入,请再次尝试。输入1作为第一个输入提示。程序停止了。它应该停止,因为1.isalpha()
是False
。但是我需要输入的是一个只有1个字符的字母表。”1'不是字母表,所以要求再次输入。这太复杂了,不能真正解决问题。其他答案更清楚请告诉我我做错了什么,这个问题指定了在给定条件下,单个字母字符打破循环的需要。