用于循环卡住且不交互(Python 3)
我目前正在编写一个小脚本,旨在查找出租车号码。这里只有一个小问题,for循环不会增加变量x,而是永远卡在循环中。我将在下面粘贴代码的相关部分:用于循环卡住且不交互(Python 3),python,python-3.x,for-loop,increment,Python,Python 3.x,For Loop,Increment,我目前正在编写一个小脚本,旨在查找出租车号码。这里只有一个小问题,for循环不会增加变量x,而是永远卡在循环中。我将在下面粘贴代码的相关部分: n = int(10) counter = int(0) m = int(m) x = int(1) y = int(n**(1/3)) cheatsheet = [] while counter in range(0,m): for x in range(1,y): if x**3 + y**3 < n:
n = int(10)
counter = int(0)
m = int(m)
x = int(1)
y = int(n**(1/3))
cheatsheet = []
while counter in range(0,m):
for x in range(1,y):
if x**3 + y**3 < n:
print('less than')
print(x,y,n)
continue
elif x**3 + y**3 > n:
print('greater than')
y -= 1
continue
elif x > y:
if n in cheatsheet:
print('counting')
counter = counter+1
#checking if n occurs in the list, if so it will add 1 to the counter so that the program will know when to stop
n = n + 1
y = int(n**(1/3))
x = 1
print('break1')
#resetting values and bumping n so that it will continue the quest to find 'em all
break
else:
if x and y == 1:
#this is an error correction for low n values, i mean really low it might be redundant by now
n = n + 1
y = int(n**(1/3))
x = 1
print('break2')
break
cheatsheet.append((n,x,y))
print(cheatsheet)
n=int(10)
计数器=int(0)
m=int(m)
x=int(1)
y=int(n**(1/3))
备忘单=[]
计数器处于范围(0,m)时:
对于范围(1,y)内的x:
如果x**3+y**3n:
打印('大于')
y-=1
持续
如果x>y:
如果备忘单中有n:
打印('计数')
计数器=计数器+1
#检查列表中是否出现n,如果出现,它将向计数器中添加1,以便程序知道何时停止
n=n+1
y=int(n**(1/3))
x=1
打印('break1')
#重置值并撞击n,以便继续寻找所有值
打破
其他:
如果x和y==1:
#这是对低n值的错误纠正,我的意思是非常低,现在可能是多余的
n=n+1
y=int(n**(1/3))
x=1
打印('break2')
打破
备忘单。附加((n,x,y))
打印(备忘单)
这将在终端窗口中产生以下结果:
注意,我自己终止了进程,程序没有。
可以看出,脚本只是循环并打印“小于”和x、y、n的值
非常感谢您的帮助
编辑:变量m由用户给定,但未包含在这段代码中。这有许多问题,我不愿意发布功能代码,但我会指出其中的一些问题 首先:
n = int(10)
不是必需的,不是错误,而是多余的。使用具有相同效果的n=10
然后:
将始终计算为True
m
是*从未修改过的,因此成员资格测试总是成功的,也许您需要重新评估您的循环
for x in range(1,y):
这将始终分配x
值1
y
通过您的算术计算为2
(int轮浮动到地板上,即int(2.9)->2
),因此可以使用math.ceil
或将一个添加到y
显然,您在循环中一直在重新分配变量名,这会造成混乱,并可能导致意外行为。这有许多问题,我不愿意发布函数代码,但我会指出其中的一些问题 首先:
n = int(10)
不是必需的,不是错误,而是多余的。使用具有相同效果的n=10
然后:
将始终计算为True
m
是*从未修改过的,因此成员资格测试总是成功的,也许您需要重新评估您的循环
for x in range(1,y):
这将始终分配x
值1
y
通过您的算术计算为2
(int轮浮动到地板上,即int(2.9)->2
),因此可以使用math.ceil
或将一个添加到y
显然,您在循环中总是重新分配变量名,这会造成混乱,并可能导致意外行为。我认为for循环工作正常,但while循环没有被取消。continue语句使程序脱离for循环,但while循环的计数器从未更新。如果查看我上传的图像,它不会将x=1与x=2碰撞。范围(1,2)意味着它将只迭代1次。它是唯一的端点。意思:如果你在范围(1,3):打印(x)中对x执行,你得到12我认为你的for循环工作正常,但是你的while循环没有被取消。continue语句使程序脱离for循环,但while循环的计数器从未更新。如果查看我上传的图像,它不会将x=1与x=2碰撞。范围(1,2)意味着它将只迭代1次。它是唯一的端点。意思是:如果你在范围(1,3)内对x进行打印(x),你会得到12