0

そこで、私は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.

私はすでにそれを修正しようとしましたが、役に立ちませんでした。私は何をすべきか?

これが非常に基本的なものである場合は申し訳ありませんが、まだ学習中です:)

4

3 に答える 3

3

エントリは文字列になります。int()最初にコンストラクターに渡します。

>>> int('42')
42
于 2012-04-10T07:17:34.717 に答える
1

これを試して:

for i in range(int(number)):
    etc
于 2012-04-10T07:18:08.320 に答える
0

Pythonには、数学モジュールを使用して階乗を計算するための組み込み関数があります。

import math

i = 40      #an example number

print math.factorial(i)

Python 3.xを実行しているように見えるため、上記のコードを変更せずに使用することはできません。これがお役に立てば幸いです。

于 2012-04-11T17:41:35.910 に答える