Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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
if语句没有响应(python)_Python - Fatal编程技术网

if语句没有响应(python)

if语句没有响应(python),python,Python,if语句没有响应。我正在尝试获取gcd(20,6) 程序输出:gcd(20,6):20=6(4)+-3,如果最后一个数字(-3)小于0,则程序应输出20=6(3)+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

if语句没有响应。我正在尝试获取
gcd(20,6)
程序输出:
gcd(20,6):20=6(4)+-3
,如果最后一个数字(-3)小于0,则程序应输出
20=6(3)+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
rnumtup=(20,6)
如果rnumtup[0]>rnumtup[1]:
x=rnumtup[1]
y=rnumtup[0]
w=x/y
w=圆形(w)
z=x-(y*w)
z=圆形(z)
而z!=0:
x=y
y=z
w=x/y
w=圆形(w)
z=x-(y*w)
z=圆形(z)
如果z>0:#不响应
#一些声明
如果z<0:#不响应
#一些声明

z
等于
0
,因此您的
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
rnumtup=(20,6)
如果rnumtup[0]>rnumtup[1]:
x=rnumtup[1]#x=20
y=rnumtup[0]#y=6
w=x/y#w=3
w=圆形(w)#不起任何作用
z=x-(y*w)#z=2
z=圆形(z)#不起任何作用
而z!=0:
x=y#x=6
y=z#y=2
w=x/y#w=3
w=圆形(w)#不起任何作用
z=x-(y*w)#z=0-->如果语句不起作用,循环在第一次迭代后结束
z=圆形(z)
如果z>0:#不响应,因为z==0
#一些声明
如果z<0:#不响应,因为z==0
#一些声明

请注意,在python中
20/6
等于
3
,但是
20.0/6
等于
3.33333..
您会认为z不能为0,因为

while z!=0:
但是当你的程序到达语句

z= round(z)
z可以是0,并且您的程序只检查严格的正数或负数,因为0>0为false,更好的gdc函数应该是,这是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))

我找到了另一个选择,谢谢大家:)

rnumtup=(20,6)
如果rnumtup[0]>rnumtup[1]:
x=rnumtup[1]
y=rnumtup[0]
w=x/y
w=圆形(w)#不起任何作用
z=x-(y*w)
z=圆形(z)
如果z<0:
w=x/y
w=圆形(w)
w=w-1
z=x-(y*w)
z=圆形(z)
而z!=0:
x=y#x=6
y=z#y=2
w=x/y#w=3
w=圆形(w)#不起任何作用
z=x-(y*w)
如果z<0:
w=x/y
w=圆形(w)
w=w-1
z=x-(y*w)
z=圆形(z)

如果z==0又有什么
呢?z可以等于0,这就是python 3.5,我只是不明白为什么if语句没有响应,因为正如Gábor所指出的,z到达那里时总是0。w=round()表示将产生小数点的数字,例如x=888,y=54,然后w=16.4Yes,这就是为什么它什么也不做。20/6是3,而不是你所期望的3.33。@Gábor Erdős正如OP所说的Python 3.5,
20/6
是3.33<代码>20//6
为3
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)