如果输入参数中有奇数,则下面的代码效果很好,但是当所有数字都是偶数时,它就不会打印出所有偶数'有什么想法吗?我使用的是Python3.6
#Find largest odd number from the given list
x,y,z=2,4,12
if x%2==0:
x=0
else:
x=x
if y%2==0:
y=0
else:
y=y
if z%2==0:
z=0
else:
z=z
t=x+y+z
if t==0:
print('all even')
else:
print(max(x,y,z))
答案 0 :(得分:0)
12%2 == 0所以它只是初始化z = 0并且什么都不打印。
if z%2==0:
z=0
else:
z=z
t=x+y+z
答案 1 :(得分:0)
此代码段:
>>> x, y, z = 2, 4, 12
>>> x%2, y%2, z%2
(0, 0, 0)
表示偶数的mod 2
始终为0.
因此,if
语句中的条件在所有情况下都会评估为True
,因此不会输入最终的else
分支,也不会进行打印。
您可以尝试使用此代码:
x, y, z = 2, 4, 12
numbers = (x, y, z)
if any(i%2 for i in numbers):
print(max(numbers))
else:
print('all even')
或者,更简洁:
print(max(numbers) if any(i%2 for i in numbers) else 'all even')
答案 2 :(得分:0)
也许这可以很好地运作
x,y,z=2,4,12
if x%2==0:
x=0
if y%2==0:
y=0
if z%2==0:
z=0
t=x+y+z
if t==0:
print('all even')
else:
print(max(x,y,z))
答案 3 :(得分:0)
为清楚起见,我重新格式化了其中一些行并删除了多余的行(即else x=x
)
x, y, z = 2, 4, 12
if x % 2 == 0:
x = 0
if y % 2 == 0:
y = 0
if z % 2 == 0:
z = 0
这条线没有正确缩进,这意味着它从未跑过。
t = x + y + z
if t == 0:
print('all even')
else:
print(max(x,y,z))
正如评论者所指出的,这可以用一些稍微更多的Pythonic代码替换:
numbers = [2, 4, 12]
results = max(0 if i % 2 == 0 else i for i in numbers)
以下代码基本上说......如果results
不是零,则打印results
OTHERWISE打印'全部均匀'
if results:
print(results)
else:
print('all even')