我正在写一本通过 Python 教授计算机编程原理的书。其中一个手指练习要求我:编写一个程序,要求用户输入一个整数并打印两个整数,root 和 pwr,使得 0 < pwr < 6 并且 root^pwr 等于用户输入的整数。如果不存在这样的整数对,它应该打印一条消息。我写了一个程序来完成这个要求。我只有一个关于用列表的数字测试方程的问题。这是我的代码:
x = int(raw_input('Enter an integer: '))
root = 0
pwr = [1,2,3,4,5]
listnum = 0
for root in range(0, x + 1):
while pow(root, pwr[listnum]) < x:
root += 1
if pow(root, pwr[listnum]) == x:
print str(root) + '^' + str(pwr[listnum]) + ' = ' + str(x)
break
listnum += 1
if pow(root, pwr[listnum]) == x:
print str(root) + '^' + str(pwr[listnum]) + ' = ' + str(x)
break
listnum += 1
if pow(root, pwr[listnum]) == x:
print str(root) + '^' + str(pwr[listnum]) + ' = ' + str(x)
break
listnum += 1
if pow(root, pwr[listnum]) == x:
print str(root) + '^' + str(pwr[listnum]) + ' = ' + str(x)
break
listnum += 1
if pow(root, pwr[listnum]) == x:
print str(root) + '^' + str(pwr[listnum]) + ' = ' + str(x)
break
listnum = 0
if pow(root, pwr[listnum]) == x:
break
else:
print 'No combinations within parameters exist'
我想知道如何测试if pow(root, pwr[listnum]) < x对于所有 5 个增量,而不必重复listnum += 1...if...break重复。如果问题不清楚,我可以尝试详细说明。我已经看到一个关于这个确切问题的问题,但他们都没有明确回答我的具体问题,所以我无意重新发布问题。如果要提出任何其他建议,他们将不胜感激。谢谢!