首页 > 解决方案 > 使用 while 循环继续提示用户输入布尔值,但在满足参数后仍会重复

问题描述

我想继续询问用户isMale是否不输入TrueFalse. 但是,即使我输入Trueor ,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")

标签: pythonoperator-keyword

解决方案


这是一个简单的解决方案,但是让我给出一些解释,当您将输入转换为布尔值时,如果输入为空false,如果输入包含某些内容,则true无论字符串如何,都将始终true如此,这样在这种情况下我决定创建变量并将其初始化为false,如果其中一个条件评估为true名为notValidwill 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

推荐阅读