簡體   English   中英

如何通過函數傳遞 Tkinter 條目

[英]How to pass a Tkinter Entry through a function

有什么合理的方法可以將我的while循環轉換為for循環嗎? 我試圖創建這個,但我從來沒有走得太遠,因為range和/或xrange因為數字太大或它們沒有采用float所以中斷了。 這是我的while循環,我想看看是否有合理的for循環轉換(這是在函數內是縮進的原因):

    a = float(E1.get())
    b = (a + 1)
    c = sqrt(b)
    e = sqrt(a)
    f = (unichr(0x221A))
    fractional, integral = modf(c)
    while integral == integral:
        fractional1, integral1 = modf(a / (integral**2))
        print(fractional1)
        if fractional1 != 0:
            integral -= 1
            continue
        else: break

如果rangexrange是可能的,它必須是range(1,a+1)xrange(1,a+1)

這是我的全部代碼:

def radical():
    # Define variables needed
    a = float(E1.get())
    b = (a + 1)
    c = sqrt(b)
    e = sqrt(a)
    f = (unichr(0x221A))
    fractional, integral = modf(c)
    while integral == integral:
        fractional1, integral1 = modf(a / (integral**2))
        print(fractional1)
        if fractional1 != 0:
            integral -= 1
            continue
        else: break
    d = (a / (integral**2))
    # make pointless floats integers
    if integral.is_integer():
        integral = int(integral)
    if d.is_integer():
        d = int(d)
    if e.is_integer():
        e = int(e)
    # set conditions for output
    if d == 1:
        global master
        master = Tkinter.Tk()
        w = Tkinter.Message(master, padx=5, pady=5,text=(integral)).grid(ipadx=5, ipady=5)
        master.title("Square Root")
        master.mainloop()
    elif integral == 1:
        master = Tkinter.Tk()
        w = Tkinter.Message(master, padx=5, pady=5,text=(f,d,"or",e)).grid(ipadx=5, ipady=5)
        master.title("Simplified Radical")
        master.mainloop()
    else:
        master = Tkinter.Tk()
        w = Tkinter.Message(master, padx=5, pady=5,text=(integral,f,d,"or",e)).grid(ipadx=5, ipady=5)
        master.title("Simplified Radical")
        master.mainloop()

如果你想要無限循環,你可以使用itertools.repeat(1)這將無限產生:

import itertools

....

for _ in itertools.repeat(1):  # instead of `while integral == integral`
    ...

您還可以使用itertools.count()itertools.cycle([1])


更新

使用range(integral, 0, -1) ,您可以從integral向下迭代到1 (不包括 0)。

for integral in range(integral, 0, -1):  # xrange if you're using Python 2.x
    fractional1, integral1 = modf(a / (integral**2))
    print(fractional1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM