python - 使用 while 循环继续提示用户输入布尔值,但在满足参数后仍会重复
问题描述
我想继续询问用户isMale
是否不输入True
或False
. 但是,即使我输入True
or ,while 循环也会不断询问False
。我不知道为什么。
name = input("Name: ")
age = int(input("Age: "))
isMale = bool(input("Male? "))
while (isMale != True) or (isMale != False): #Is this correct?
print("Wrong Input. Please type True/False")
isMale = bool(input("Male? "))
if(isMale == True):
print("His name is "+ name)
print("He is {input} years old.".format(input= age))
print("He is a Male")
elif(isMale == False):
print("Her name is " + name)
print("She is {input} years old.".format(input= age))
print("She is a Female")
解决方案
这是一个简单的解决方案,但是让我给出一些解释,当您将输入转换为布尔值时,如果输入为空false
,如果输入包含某些内容,则true
无论字符串如何,都将始终true
如此,这样在这种情况下我决定创建变量并将其初始化为false
,如果其中一个条件评估为true
名为notValid
will be的变量false
。
我添加了一些字符串方法,可以帮助您格式化输入,strip()
以删除多余的空格并将tittle()
输入大写。
而且所有的条件都没有检查和输入,这是字符串和布尔值的形式,我更改isMale == True
为no,isMale == 'True'
因为两者都是字符串,很容易比较它们。
例子
name = input("Name: ")
age = int(input("Age: "))
isMale = input("Male? ").strip().title()
notValid = True
if(isMale == 'True'):
print("His name is "+ name)
print("He is {input} years old.".format(input= age))
print("He is a Male")
notValid = False
elif(isMale == 'False'):
print("Her name is " + name)
print("She is {input} years old.".format(input= age))
print("She is a Female")
notValid = False
while notValid:
if (isMale != 'True') or (isMale != 'False'):
print("Wrong Input. Please type True/False")
isMale = input("Male? ").strip().title()
else:
notValid = False
推荐阅读
- mongodb - 将新密钥添加到 Mongodb 上的集合中(有序)
- objective-c - NSPropertyListSerialization dataWithPropertyList 返回错误 3851
- python - 为什么 df_sub 不将日期识别为索引的一部分?
- node.js - 在开发期间和 docker build for production 期间使用 eslint 缓存是否安全?
- react-native-sqlite-storage - 如何在 react-native-sqlite-storage 查询中使用 LIKE
- bash - 是否可以在 psql 中结合使用 `-c` 和 `-v`?
- python - 使用日期时间从字符串中提取预期日期
- cron - 每年 2 天运行 cronjob
- ios - 使用表格数据进行 CoreML 设备上模型训练
- python - 有没有办法改变 Plotly Sankey 图中的文本对齐方式?