不以python显示打印输出
如果输入参数中有奇数,下面的代码工作正常,但当所有数字都是偶数时,则不会打印“全部偶数”。有什么想法吗?我正在使用Python3.6不以python显示打印输出,python,python-3.x,printing,Python,Python 3.x,Printing,如果输入参数中有奇数,下面的代码工作正常,但当所有数字都是偶数时,则不会打印“全部偶数”。有什么想法吗?我正在使用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
#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))
12%2==0,因此它只初始化z=0,不打印任何内容
if z%2==0:
z=0
else:
z=z
t=x+y+z
此代码段:
>>> 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')
也许这可以很好地工作
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))
为清楚起见,我重新格式化了其中一些行,并删除了冗余行(即,
else x=x
)
这条线没有适当地伸出,这意味着它从未运行过
t = x + y + z
if t == 0:
print('all even')
else:
print(max(x,y,z))
正如评论者所指出的,这一切都可以用一些稍微更具python风格的代码来代替:
numbers = [2, 4, 12]
results = max(0 if i % 2 == 0 else i for i in numbers)
下面的代码基本上说。。。如果结果
不是零,则打印结果
否则打印“全部偶数”
if results:
print(results)
else:
print('all even')
缩进使得包含
print()
语句的块永远不会执行(z%2==0
为真,因此永远不会到达else
套件)。每个else:
套件都是多余的,可以完全删除。例如,不需要将x
分配回x
;如果您这样做了,那么所有这些代码都可以写入一行:max(如果i%2==0,则i代表i)
-好的,但是您可以在那里使用[x,y,z]
。。非常感谢。只需使用您的输入修复它。我的第一篇关于堆栈溢出的帖子和我使用Python的第一天。有这样的支持感觉很好。
if results:
print(results)
else:
print('all even')