我正在嘗試制作一個 Python 程式,它要求用戶輸入一個數字,然后使用遞回來反轉它。我的嘗試如下,但我的代碼給了我 TypeError: unsupported operand type(s) for //: 'Entry' and 'int' - 有什么想法嗎?
from tkinter import *
def reverseInteger(n, r):
if n==0:
return r
else:
return reverseInteger(n//10, r*10 n%10)
window = Tk()
window.title("Reverse Integer")
frame1 = Frame(window)
frame1.pack()
number = StringVar()
numEntry = Entry(frame1, textvariable=number)
btGetName = Button(frame1, text = "Calculate", command = reverseInteger(numEntry, 0))
label3 = Label(frame1)
numEntry.grid(row = 1, column = 1)
btGetName.grid(row = 1, column = 2)
label3.grid(row = 2, column = 1, sticky="w")
window.mainloop()
uj5u.com熱心網友回復:
您的遞回函式非常好,但您的代碼中還有其他幾個問題。
主要的一個是command引數Button必須是用戶按下按鈕時將呼叫的函式。在您的代碼中,command設定為reverseInteger
int 的回傳值。所以這里有一個問題。
在我看來,您還想將計算結果放入其中,label3因此您StringVar應該附加到它而不是附加到numEntry.
所以這里有一個我覺得不錯的版本:
from tkinter import *
def reverseInteger(n, r):
if n==0:
return r
else:
return reverseInteger(n//10, r*10 n%10)
def reverse(): # called when the user click on the button
value = reverseInteger(int(numEntry.get()), 0)
number.set(value) # change the text of the label
window = Tk()
window.title("Reverse Integer")
frame1 = Frame(window)
frame1.pack()
number = StringVar()
numEntry = Entry(frame1)
btGetName = Button(frame1, text = "Calculate", command = reverse)
label3 = Label(frame1, textvariable=number)
numEntry.grid(row = 1, column = 1)
btGetName.grid(row = 1, column = 2)
label3.grid(row = 2, column = 1, sticky="w")
window.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437486.html
