【问题标题】:Python Factorial Calculator Error?Python阶乘计算器错误?
【发布时间】:2012-04-22 11:57:22
【问题描述】:

所以,我开始在 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()

所以我运行了这个,当我点击“计算!”按钮,它吐出这个错误:

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.

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

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

【问题讨论】:

    标签: python tkinter calculator factorial


    【解决方案1】:

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

    >>> int('42')
    42
    

    【讨论】:

    • 编辑:啊,成功了!我还有一件事需要解决,但谢谢你:)
    • 这是一个完全不同的问题。
    【解决方案2】:

    试试这个:

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

    【讨论】:

      【解决方案3】:

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

      import math
      
      i = 40      #an example number
      
      print math.factorial(i)
      

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

      【讨论】:

        猜你喜欢
        • 2022-01-17
        • 2017-04-19
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2021-01-22
        • 2015-04-19
        • 1970-01-01
        相关资源
        最近更新 更多