我正在尝试解决手指运动3.1,在这里我无法弄清楚自己在做什么错.当我输入“ 1”作为整数时,它将返回0和0.
我是编程和堆栈溢出的完全新手,因此不确定是否正确执行此操作,但我想我会尝试一下.
这就是问题:
编写一个程序,要求用户输入一个整数并打印两个整数,
根和pwr,使得0≤ pwr< 6,root ** pwr等于输入的整数
由用户.如果不存在这样的整数对,则应将消息打印到
这种效果.
到目前为止,这是我的解决方案:
x = int(raw_input('Enter a positive integer: '))
root = 0
pwr = 0
while pwr < 6:
pwr += 1
while root**pwr < x:
root += 1
if root**pwr == x:
print "The root is " + str(root) + " and the power is " + str(pwr)
else:
print "No such pair of integers exists."
如何修复我的代码,使其返回正确的整数?
我在这里做错了什么?我缺少什么逻辑?
解决方法:
尽管对于Python而言不是很习惯,但您已经接近正确的答案.
第一个问题是您永远不会重置root,因此您将只执行一次内部循环.将root = 0移动到外部循环应该可以解决它.
第二个错误是,当您达到所寻求的条件时,您永远不会中断循环.将测试移到循环内部将解决此问题.
让我们看看到目前为止的情况:
x = int(raw_input('Enter a positive integer: '))
pwr = 0
while pwr < 6:
root = 0
pwr += 1
while root**pwr < x:
root += 1
if root**pwr == x:
print "The root is {} and the power is {}".fornat(
root, pwr
)
else:
print "No such pair of integers exists."
输出:
Enter a positive integer: 16
The root is 16 and the power is 1
The root is 4 and the power is 2
The root is 2 and the power is 4
No such pair of integers exists.
由于这是一项学习活动,因此我将让您找出并解决代码中的其他问题.