Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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
如何要求用户输入布尔值以限定if语句,并在Python中使用该信息打印句子_Python_Python 3.x_If Statement_Boolean - Fatal编程技术网

如何要求用户输入布尔值以限定if语句,并在Python中使用该信息打印句子

如何要求用户输入布尔值以限定if语句,并在Python中使用该信息打印句子,python,python-3.x,if-statement,boolean,Python,Python 3.x,If Statement,Boolean,我带着我的第一个(希望不是最后一个)问题来到这里 我试图从用户那里获取信息,特别是布尔值,以确定他们是否是男性/女性和高/矮,然后打印“你是高/矮男性/女性”的正确语句 我的代码运行时总是返回“You is high male”,搜索显示这是因为用户的输入总是被认为是真实的,因为它是一个字符串 我已经看到了获取布尔值的其他示例,但没有看到获取两个布尔值并在if语句中同时使用它们的示例。我在附近吗?我错过了什么?我知道我不能使用bool()对输入进行转换。目前,您正在检查字符串是否为非零。而是检查

我带着我的第一个(希望不是最后一个)问题来到这里

我试图从用户那里获取信息,特别是布尔值,以确定他们是否是男性/女性和高/矮,然后打印“你是高/矮男性/女性”的正确语句

我的代码运行时总是返回“You is high male”,搜索显示这是因为用户的输入总是被认为是真实的,因为它是一个字符串


我已经看到了获取布尔值的其他示例,但没有看到获取两个布尔值并在if语句中同时使用它们的示例。我在附近吗?我错过了什么?我知道我不能使用bool()对输入进行转换。

目前,您正在检查字符串是否为非零。而是检查字符串的值

    if is_tall.upper() in ('YES', 'Y') and is_male.upper() in ('YES', 'Y'):
        print("You are a tall male")
    elif is_tall.upper() in ('YES', 'Y') and is_male.upper() in ('NO', 'N'):
        print("You are a tall female")
等等


您可以在中的
之后的括号中列出任意数量的有效字符串(答案),并强制将所有输入设置为
.upper()
。lower()
可以避免处理两倍(或更多)的可能响应。

当前,您正在检查字符串是否为非零。而是检查字符串的值

    if is_tall.upper() in ('YES', 'Y') and is_male.upper() in ('YES', 'Y'):
        print("You are a tall male")
    elif is_tall.upper() in ('YES', 'Y') and is_male.upper() in ('NO', 'N'):
        print("You are a tall female")
等等


您可以在
中的
之后的括号中列出任意数量的有效字符串(答案),并强制将所有输入设置为
.upper()
。lower()
可以避免处理两倍(或更多)可能的响应。

您可以尝试以下方法:

tall_str = input("Are you tall? ")
while tall_str.lower() not in {'y', 'yes', 'n', 'no'}:
   tall_str = input("Are you tall [y/n] ? ")

is_tall = True if tall_str.lower() in {'y', 'yes'} else False
这将接受类似于
'Yes'
'nO'
(对于
高度
)的内容,然后将它们转换为
(对于
高度
),并再次询问给出的答案是否不可接受

然后,您可以对
is_male
执行相同的操作


将字符串强制转换为布尔值后,您的
if
子句将起作用。

您可以尝试以下操作:

tall_str = input("Are you tall? ")
while tall_str.lower() not in {'y', 'yes', 'n', 'no'}:
   tall_str = input("Are you tall [y/n] ? ")

is_tall = True if tall_str.lower() in {'y', 'yes'} else False
这将接受类似于
'Yes'
'nO'
(对于
高度
)的内容,然后将它们转换为
(对于
高度
),并再次询问给出的答案是否不可接受

然后,您可以对
is_male
执行相同的操作


将字符串转换为布尔值后,您的
if
子句将起作用。

这种方法适合您吗

is_tall = True if input("Are you tall?").lower() == 'y' else False
is_male = True if input("Are you male?").lower() == 'y' else False
...

在输入中获取布尔值没有简单的方法,尽管您可以自己进行转换。

这种方法适合您吗

is_tall = True if input("Are you tall?").lower() == 'y' else False
is_male = True if input("Are you male?").lower() == 'y' else False
...

没有简单的方法可以在输入中获得布尔值,尽管你可以自己转换。

正如Hiro所建议的,你也可以在['y','yes','ya','yos']中增加这些条件,比如在['y','yes','ya','yos']中增加if输入(“你是男性吗?”)。否则,正如Hiro所建议的,你也可以在['y','yes','ya yos']中增加这些条件否则,用户键入什么作为答案?答案是什么?用户键入的答案是什么?答案是什么?谢谢!我将在这里学习一些我不知道的东西,你的工作非常出色。谢谢!我将在这里学习一些我不知道的东西,你的工作非常出色。谢谢!你和阿宽一起为我工作,谢谢!你和阿宽一起为我工作。