2016-10-13 10 views
-1

を応答しない場合。私はgcd(20,6) プログラムの出力を取得しようとしている:最後の番号は(-3)プログラムが出力20=6(3) + 3必要がありますが、if文が応答していませんが0未満であればgcd(20,6): 20=6(4) + -3、私はそれをする必要があります。おかげなステートメントは、if文が応答しない(パイソン)

rnumtup = (20, 6) 
if rnumtup[0] > rnumtup[1]: 
    x= rnumtup[1] 
    y =rnumtup[0] 
w = x/y 
w = round(w) 
z = x - (y*w) 
z = round(z) 

while z != 0: 
    x = y 
    y = z 
    w = x/y 
    w = round(w) 
    z = x - (y*w) 
    z = round(z) 
    if z > 0: #not responding 
     #some statements 
    if z < 0: #not responding 
     #some statements 
+7

'もしz == 0'ならば? –

+0

zは0に等しいことはありません。 – jack

+0

これはpythonです3.5 – jack

答えて

0

z0に等しいので、あなたif文は何もしていません。コード内

説明が

rnumtup = (20, 6) 
if rnumtup[0] > rnumtup[1]: 
    x= rnumtup[1] #x = 20 
    y =rnumtup[0] #y = 6 
w = x/y #w = 3 
w = round(w) # Does nothing 
z = x - (y*w) # z = 2 
z = round(z) # Does nothing 

while z != 0: 
    x = y # x = 6 
    y = z # y = 2 
    w = x/y # w = 3 
    w = round(w) # Does nothing 
    z = x - (y*w) # z = 0 --> If statements don't work, while loop ends after first iteration 
    z = round(z) 
    if z > 0: #not responding, because z == 0 
     #some statements 
    if z < 0: #not responding, because z == 0 
     #some statements 

注意をコメントのpython 20/63に等しいが、20.0/63.33333..

+0

は、()=小数点で番号を生成します数字、例えば、xのためでありますそれは何もしない理由を、Y 888、= 54は、その後、W = 16.4 – jack

+1

はい、それはです。あなたが期待する通り、20/6は3.33ではなく3です。 OPとしてガーボルオルドス@ –

+0

は、Python 3.5、 '20/6'が3.33であることを特徴とします。 「20 // 6」は3 – Jeon

0

に等しいあなたは、zがあるため

while z!=0: 

の0することができないと思うだろうということが、あなたのプログラムがステートメント

に達すると
z= round(z) 

zは0にすることができ、> 0が偽であるので、あなただけ厳密に正または負の数のための小切手をプログラムする、より良いGDC機能がeuclid's algorithmになり、ここでのpython 3バージョン

def gdc(a,b): 
    while a!=b: 
     if a>b: 
     a=a-b 
     else: 
     b=b-a 
    return a 
print(gdc(20,6)) 
0

であるI代わりの、感謝の男を見つけました:)

rnumtup = (20, 6) 
if rnumtup[0] > rnumtup[1]: 
    x= rnumtup[1] 
    y =rnumtup[0] 
w = x/y 
w = round(w) # Does nothing 
z = x - (y*w) 
z = round(z) 

if z< 0: 
    w = x/y 
    w = round(w) 
    w = w-1 
    z = x - (y*w) 
    z = round(z) 

while z != 0: 
    x = y # x = 6 
    y = z # y = 2 
    w = x/y # w = 3 
    w = round(w) # Does nothing 
    z = x - (y*w) 
    if z< 0: 
     w = x/y 
     w = round(w) 
     w = w-1 
     z = x - (y*w) 
    z = round(z) 
関連する問題