这是使用Python 3.7.6的最新答案(2020 年 6 月) ,用于John Guttag 的《使用 Python 进行计算和编程简介》的第二版。
正如巨无霸所写
正如其他人所指出的,这是 John Guttag 的《使用 Python 进行计算和编程导论》第 3.1 节(详尽枚举)的手指练习,这是大规模开放在线课程 MITx:6.00.1x 计算机科学导论和使用 Python 编程。教科书和课程使用 Python 2.7。...其他答案中的一个常见错误是他们没有考虑所有整数。一个正确的程序应该解决所有整数的问题,包括正整数和负整数以及零(零也是整数)。
在 Guttag 书中的这个练习之前,我们已经介绍了 while 循环,但没有介绍 for 循环和 range 函数,这两者都将在下一节中介绍。
手指练习:编写一个程序,要求用户输入一个整数并打印两个整数,root 和 pwr,使得 0 < pwr < 6 并且 root**pwr 等于用户输入的整数。如果不存在这样的整数对,它应该打印一条消息。
x = int(input('Enter an integer to analyze '))
root = 0
pwr = 1
while pwr < 6:
while root**pwr < abs(x):
root += 1
if abs(root**pwr) != abs(x):
print('no root at the power', pwr, 'for', x)
else:
if x < 0:
root = -root
if pwr%2 != 0:
print (root, "**", pwr, '=', x)
else:
print('no root at the power', pwr, 'for', x)
else:
print (root, "**", pwr, '=', x)
root = 0
pwr += 1
这个解决方案对所有整数都有效,使用Python 3,稍微短一些(相对于迄今为止在参考书第二版中获得的知识),并且通过打印每个幂的答案稍微更完整(据我所知)即使不存在这样的对。
它将返回类似的结果
Enter an integer to analyze -8
-8 ** 1 = -8
no root at the power 2 for -8
-2 ** 3 = -8
no root at the power 4 for -8
no root at the power 5 for -8