2012-04-10 70 views
0

因此,我开始在Python中学习Tkinter(刚开始学习Python),并决定尝试使用Tkinter创建一个阶乘计算器。我不会为任何东西太花哨和这里是我想出来的:Python因子计算器错误?

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() 

于是我就这样,当我打“计算!”按钮,它吐出这个错误:

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

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

>>> int('42') 
42 
+0

编辑:啊,它的工作!我有另一件事,我需要修复,但谢谢你:) – user1323395 2012-04-10 07:28:06

+0

这是一个完全不同的问题。 – 2012-04-10 07:29:33

1

试试这个:

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

Python有一个内置的功能与数学模块计算阶乘:

import math 

i = 40  #an example number 

print math.factorial(i) 

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