2012-04-10 7 views
0

Also fing ich an, Tkinter in Python zu lernen (ich begann gerade Python zu lernen) und entschied mich, einen faktoriellen Taschenrechner mit Tkinter zu erstellen. Ich werde nicht für etwas Besonderes und hier ist das, was ich habe kommen mit:Python Factorial Calculator Fehler?

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

So lief ich dies, und als ich auf den „BERECHNEN!“ Knopf spuckt er diesen Fehler aus:

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. 

Ich habe bereits versucht, es zu beheben, aber ohne Erfolg. Was soll ich machen?

Sorry, wenn dies sehr einfach ist, immer noch lernen :)

Antwort

3

Einträge in Strings führen. Übergeben Sie es zuerst an den int() Konstruktor.

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

Bearbeiten: Ahh, es hat funktioniert! Ich hatte eine andere Sache, die ich beheben musste, aber danke :) – user1323395

+0

Das ist ein ganz anderes Problem. –

1

Try this:

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

Python hat eine eingebaute Funktion für factorials mit dem Mathematikmodul Berechnung:

import math 

i = 40  #an example number 

print math.factorial(i) 

Es sieht aus wie Sie Python 3.x ausgeführt werden, so Sie können den obigen Code nicht ohne Änderungen verwenden. Ich hoffe das hilft.