if语句没有响应(python)
if语句没有响应。我正在尝试获取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
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)