Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 而循环不';不能识别多种情况_Python_While Loop_User Input - Fatal编程技术网

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'不是字母表,所以要求再次输入。这太复杂了,不能真正解决问题。其他答案更清楚请告诉我我做错了什么,这个问题指定了在给定条件下,单个字母字符打破循环的需要。