[英]How to ask for a boolean input from a user to qualify if statements and print a sentence using that information in Python
我在这里是我的第一个查询(希望不是最后一个查询)。
我正在尝试从用户那里获取信息,特别是布尔值,以确定它们是男性/女性还是身材高/矮,然后打印正确的语句“您是男性/女性身高/矮”
is_tall = input("Are you tall?")
is_male = input("Are you male?")
if is_tall and is_male:
print("You are a tall male")
elif is_tall and not(is_male):
print("You are a tall female")
elif not(is_tall) and is_male:
print("You are a short male, sorry")
else:
print("You are a short female, sorry")
我的代码运行并始终返回“您是个高个子男性”,搜索显示这是因为用户输入的内容始终是真实的,因为它是字符串。
我已经看到了其他示例,它们可以获取布尔值,但不能在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")
等等
您可以在in后面的括号in
.upper()
任意.upper()
有效字符串(答案),并且将所有输入都强制为.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'
(对于tall_str
)之类的东西,然后将它们转换为True
或False
(对于is_tall
),然后再次询问给定的答案是否可接受。
然后可以对is_male
执行相同的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
...
尽管可以自己进行转换,但没有简单的方法来获取布尔值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.