[英]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
如果range
或xrange
是可能的,它必須是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.