Python析因计算器错误?

时间:2012-04-10 07:14:40

标签: python tkinter calculator factorial

所以,我开始用Python学习Tkinter,(刚开始学习Python),并决定尝试使用Tkinter创建一个阶乘计算器。我不想做任何太花哨的事情,这就是我想出的:

from Tkinter import *
import tkMessageBox

def calculate():
    number = inputNumber.get()
    inputNumber.delete(0, END)
    product = 1
    for i in range(number):
        product = product * (i+1)
    inputNumber.insert(product)

cal = Tk()
cal.title("Factorial Calculator")
cal.geometry('450x300+200+200')

factorialNumber = IntVar()
inputNumber = Entry(cal, textvariable=factorialNumber)
inputNumber.pack()

enterButton= Button(cal, text="CALCULATE!", width=20,command=calculate)
enterButton.pack(side='bottom',padx=15,pady=15)

cal.mainloop()

所以我跑了这个,当我点击“CALCULATE!”按钮,它吐出这个错误:

Traceback (most recent call last):
File "C:\Python27\Lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\Users\Wesley Yu\Desktop\New folder (4)\module1.py", line 8, in calculate
for i in range(number):
TypeError: range() integer end argument expected, got str.

我已经尝试过修复它,但无济于事。我该怎么办?

对不起,如果这是非常基础的,还在学习:)

3 个答案:

答案 0 :(得分:3)

条目会产生字符串。首先将它传递给int()构造函数。

>>> int('42')
42

答案 1 :(得分:1)

试试这个:

for i in range(int(number)):
    etc

答案 2 :(得分:0)

python有一个内置函数,用于使用数学模块计算阶乘:

import math

i = 40      #an example number

print math.factorial(i)

看起来你正在运行python 3.x,所以你将无法使用上面的确切代码而不对其进行任何修改。我希望这会有所帮助。