2017-08-06 339 views
-2

如果輸入參數中有一個奇數,但是當所有數字都是偶數時,下面的代碼運行良好,但它不打印「全部均勻」。有什麼想法嗎?我正在使用Python3.6不顯示打印輸出在Python中

#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)) 
+1

你的縮進是這樣的,使用'print()'語句的塊永遠不會執行('z%2 == 0'是真的,所以'else'套件是nev呃達到了)。 –

+1

您的每個'else:'套件都是多餘的,可以完全刪除。例如,不需要將'x'分配回'x'。 –

+0

你甚至沒有*列表*;如果你這樣做,所有這些代碼可以寫入一行:'最大(我爲我在數字,如果我%2 == 0)' - 好,但你可以使用'[x,y,z]'那裏.. 。 –

回答

0

12%2 == 0,所以它只是初始化z = 0並不打印任何東西。

if z%2==0: 
    z=0 
else: 
    z=z 
    t=x+y+z 
0

您有錯誤與其他的Z, 嘗試

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

這段代碼:

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

由於被評論者指出這都可以用一些稍微更Python代碼代替:

numbers = [2, 4, 12] 
results = max(0 if i % 2 == 0 else i for i in numbers) 

這下面的代碼基本上是說......如果results是什麼,但零,打印results否則print'all even'

if results:   
    print(results) 
else: 
    print('all even')