我要问的问题是:如果变量young
和famous
都为True
,则写一个打印“您必须富有!” 的表达式
使用输入'True' 'True'
:You must be rich!
以下代码有什么问题?输出为'There is always the lottery...'
,而不是'You must be rich!'
。
young = (input() == 'True')
famous = (input() == 'True')
if (young == 'True') and (famous == 'True'):
print('You must be rich!')
else:
print('There is always the lottery...')
答案 0 :(得分:2)
您的代码正在执行的操作是检查young
是否等于字符串'True'
,以及famous
是否等于字符串'True'
。您要
if (young and famous):
或者如果您想写出来
if (young == True and famous == True):
答案 1 :(得分:2)
实际上,您需要根据字符串“ True”检查值,而实际上需要根据布尔值True对其进行检查。只需删除引号。
if (young == True) and (famous == True):
print('You must be rich!')
else:
print('There is always the lottery...')
答案 2 :(得分:0)
第一和第二行实际上是布尔值。
输入函数求值后,将根据您键入的内容为您提供True
或False
。
因此if语句正在评估
if ({True or False} == 'True') and ({True or False} == 'True'):
由于布尔值和字符串表示形式永远都不等效,因此它将始终为false。
更改为此
if input('Are you young?')=='True' and input('Are you famous?')=='True':
print('you must me rich!')
else:
print('there is always the lottery')
答案 3 :(得分:0)
您的赋值运算符:
young = (input() == 'True')
famous = (input() == 'True')
将这两个变量设置为布尔值。但是,您的if语句会将它们与字符串进行比较:
if (young == 'True') and (famous == 'True'):
在上述每个实例中,将单引号放在True周围,它将起作用,因为然后比较是针对布尔值True而不是字符串'True'。
请注意,您可以使用type关键字进行检查以显示其类型。即:
print(type(young))
print(type('True'))