好的,所以我是python的新手,并试图学习如何编码。我今天遇到了一个我不明白的问题。因此,此代码按预期执行,并打印三个数字中最大的一个,无论最大数字是什么位置。
if num1 >= num2 and num3:
print(num1, 'Is the greatest number!')
elif num2 >= num3 and num1:
print(num2, 'Is the greatest number!')
else:
print(num3, 'Is the greatest number')
但如果我将elif语句更改为:
elif num2 >= num1 and num3:
print(num2, 'Is the greatest number!')
即使num3是最大的,else语句也不会执行,它将显示更大数量的num1或num2。
答案 0 :(得分:2)
你的第一个版本完全是巧合。你需要做
if num1 >= num2 and num1 >= num3:
print(num1, 'Is the greatest number!')
elif num2 >= num3 and num2 >= num1:
print(num2, 'Is the greatest number!')
else:
print(num3, 'Is the greatest number')
虽然如果任何数字相等,这仍然会打印错误的信息
答案 1 :(得分:1)
这里的问题是关键字and
的工作方式存在误解。
在python中,cond1 and cond2
用于分隔两个完整的逻辑语句:cond1
。它首先检查cond1
。如果True
为cond2
,则会继续检查cond2
。如果True
也是True
,则整个语句的结果为if num1 >= num2 and num3
。
执行True
时,如果以下是num1 >= num2
,您实际上是在询问python:
num3
0
存在且不是if num1 >= num2 and num1 >= num3
(因为它是一个数字) 不 检查num1 = 2, num2 = 1, num3 = 3
。
因此,如果True
,您的条件仍然会为if num1 >= num2 and num3
返回python-docx
。
同样的概念适用于您的问题条件。