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