gpt4 book ai didi

python - 在 Python 中使用 while 循环打印功率表

转载 作者:行者123 更新时间:2023-11-30 23:13:52 27 4
gpt4 key购买 nike

我正在尝试编写一个程序来打印权力表。要求用户提供底数,然后提供最大指数。然后程序会根据这些信息打印出一个权力表。例如,如果用户输入 2 作为底数,输入 4 作为最大指数,程序将首先从 2^1 开始,然后是 2^2,然后是 2^3,最后是 2^4。我不明白为什么我写的不起作用。我调试了一下,发现我的基值实际上增加了 1,但我不知道为什么。

def main():
base=eval(input("Enter the base number: "))
max=eval(input("Enter the maximum exponent "))
counter = 1
while counter<=max:
base = base^counter
counter = counter+1
print(base)
main()

最佳答案

^ 运算符给出以下结果:

>>> 2^1
3
>>> 3^2
1
<小时/>

数学模块

使用math模块的pow方法来生成数字之间的幂。

演示:

>>> import math
>>> math.pow(2,2)
4.0
>>> math.pow(2,1)
2.0
>>> math.pow(2,3)
8.0
>>>
<小时/>

使用异常句柄进行类型转换

类型转换的最佳实践,通过异常处理将字符串转换为整数,因为用户也可能输入 alpha 值。

当我们尝试评估 alpha 值时,eval() 将引发 NameError 异常。

演示:

>>> eval("g")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'g' is not defined
>>> eval("2")
2
>>>

带有异常处理的类型转换:

>>> try:
... a = int(raw_input("Enter digit:"))
... except ValueError:
... print "Enter only digit."
... a = 0
...
Enter digit:e
Enter only digit.
<小时/>

不要使用内置函数名称作为用户定义变量。max是Python中的内置函数。

>>> max
<built-in function max>
>>>
<小时/>

代码:

def generatePowerTable():
try:
base = int(raw_input("Enter the base number: "))
except ValueError:
print "Enter integer value only. Now base number 2 is selected."
base = 2
try:
base_pow = int(raw_input("Enter the maximum exponent "))
except:
print "Enter integer value only. Now base max power 5 is selected."
base_pow = 5

for i in xrange(1, base_pow+1):
rs = base**i
print "%d ^ %d = %d"%(base, i, rs)

if __name__=="__main__":
generatePowerTable()

输出:

$ python 3.py 
Enter the base number: 2
Enter the maximum exponent 5
2 ^ 1 = 2
2 ^ 2 = 4
2 ^ 3 = 8
2 ^ 4 = 16
2 ^ 5 = 32

$ python 3.py
Enter the base number: e
Enter integer value only. Now base number 2 is selected.
Enter the maximum exponent r
Enter integer value only. Now base max power 5 is selected.
2 ^ 1 = 2
2 ^ 2 = 4
2 ^ 3 = 8
2 ^ 4 = 16
2 ^ 5 = 32

注意:对于 Python 2.x 使用 raw_input()xrange()

Python 3.x 使用 input()range()

关于python - 在 Python 中使用 while 循环打印功率表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080001/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com