为什么当我输入一个空字符串('nothing here')时它会忽略我的 while 条件?

Why it ignores my while condition when I input an void string ('nothing here')?

我有这个代码:

sex = str(input('type sex:')).upper()

while sex not in 'MF':
    sex = str(input('try again: ')).upper()
print('Done!!!')

当我尝试输入几乎所有内容时,它作为验证对象工作正常,但当它是 '' 时,它只是跳过我的 while 循环。 我试过在开始时初始化 sex 字符串,但没有帮助 :c

正如 jasonharper 所说,'MF' 包含 3 个空字符串。要修复它,您可以将代码更改为:

while sex not in ('M', 'F'):
    sex = str(input('try again: ')).upper()
print('Done!!!')

或者如果你真的想使用 'MF',你可以在 while 循环中额外检查一个空字符串:

while not sex and sex not in 'MF':
    sex = str(input('try again: ')).upper()
print('Done!!!')