使用Python进行计算和编程简介

我正在尝试解决手指运动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.

由于这是一项学习活动,因此我将让您找出并解决代码中的其他问题.

上一篇:python-Matlab或Octave如何这么快?


下一篇:javascript-节点如何“实际”处理线程?