我是python的新手并尝试进行手指练习,包括找到整数的根。我的第一次(经过多次试验和错误)尝试如下:
x = int(raw_input("Please pick a positive integer: "))
root = 2
pwr = 2
while pwr < 6: #this is meant to change pwr from 2 to 3 to 4 to 5
if root ** pwr < x and root ** pwr != x:
pwr = pwr + 1
elif root ** pwr == ax:
break
elif root ** pwr > x: #increments root to cycle thru again
root = root + 1
pwr = 2
if root ** pwr == x:
print root, '**', pwr, '=', x
else:
print x, "has no integer roots."
这适用于8&amp; 9,但挂了10。
我的第二次尝试适用于所有三个数字:
x = int(raw_input("Please pick an integer: "))
root = 2
for pwr in range(2,6):
while root ** pwr < abs(x):
root = root + 1
if root ** pwr == abs(x):
break
if root ** pwr == abs(x):
break
root = root + 1
root = 2
if root ** pwr == abs(x):
print root, '**', pwr, '=', x
else:
print x, "has no integer roots."
为什么第一个挂断?我觉得我对while循环的工作方式有一个基本的误解。请帮忙。
答案 0 :(得分:0)
你被困在
elif root ** pwr > x: #increments root to cycle thru again
root = root + 1
pwr = 2
如果root ** 2 > x
在每次迭代中设置pwr = 2
。
如果root
变大,你需要以某种方式打破循环。
答案 1 :(得分:0)
我认为在while循环中挂起是因为有几件事情。
首先,正如上面提到的@Baart,ax
未被定义 - 你的意思是x
吗?
其次,将10作为x,循环执行如下: