Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不以python显示打印输出_Python_Python 3.x_Printing - Fatal编程技术网

不以python显示打印输出

不以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

如果输入参数中有奇数,下面的代码工作正常,但当所有数字都是偶数时,则不会打印“全部偶数”。有什么想法吗?我正在使用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))

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')