python - 使用 Python 进行计算和编程介绍

标签 python logic computation

我正在尝试解决 Finger Exercise 3.1,但我不知道我在这里做错了什么。当我输入“1”作为整数时,它返回 0 和 0。

我是编程和 Stack Overflow 的新手,所以我不确定我是否正确地执行此操作,但我想我会试一试。

问题是: 编写一个程序,要求用户输入一个整数并打印两个整数, root 和 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."

如何修复我的代码,使其返回正确的整数? 我在这里做错了什么?我缺少什么逻辑?

最佳答案

一个问题是,虽然您确实有结束循环的条件,但它们总是会一直达到最大允许条件。您可以使用 break 或如图所示,通过在函数中使用 return 来解决该问题。此外,不使用计数器,而是使用 xrange() 函数(Python 3 中的 range())。

>>> def p(num):
...     for power in xrange(6):
...         for root in xrange(num/2+1):
...             if root**power==num:
...                 return root, power
...
>>> r, pwr = p(8)
>>> print 'The root is', r, 'and the power is', pwr
The root is 2 and the power is 3

关于python - 使用 Python 进行计算和编程介绍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202740/

相关文章:

python - 在具有导入函数的模块上使用 pydoc

javascript - 使用搜索词过滤树结构 json 的 Javascript 函数。排除与搜索词不匹配的任何对象

arrays - ruby assoc array 是内部的哈希表吗?什么是查找时间复杂度?

algorithm - 快速计算第 n 个大小为 b 的位序列,设置为 k 位?

python - 在python中快速生成3D噪声

python - 应用 functools.partial() 后 "TypeError: got multiple values for argument"

python - 过滤 pandas 列,即 2 个日期之间的差异

php - 这些 PHP if 语句是否存在逻辑错误?

java - Java 泛型中的通用限定符?

algorithm - 大整数的 GCD 算法