2012-04-10 26 views
0

私はPythonでTkinterを学び始めました(Pythonを学ぶことを始めました)、Tkinterを使って階乗計算を試してみることにしました。PythonのFactorial Calculatorエラー?

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

+0

それは全く異なる問題です。 –

1

これを試してみてください:

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

Pythonは数学モジュールで階乗を計算する機能が組み込まれています:

import math 

i = 40  #an example number 

print math.factorial(i) 

あなたがそう、Pythonの3.xのを実行しているようです。上記の正確なコードをそのまま使用することはできません。私はこれが役立つことを願っています