Python 我在变量方面做错了什么?
我想做一个小程序来改变句子的大小写,让它们听起来很讽刺。我想把它放在一个小框架中,并使用了本教程()。我已经提取了它的一些代码并实现了它,但我认为我搞砸了 Shell不断地给我关于缺少变量的错误,我在代码中似乎找不到。你们中的一些人能找到我在哪里犯的错误吗Python 我在变量方面做错了什么?,python,variables,tkinter,Python,Variables,Tkinter,我想做一个小程序来改变句子的大小写,让它们听起来很讽刺。我想把它放在一个小框架中,并使用了本教程()。我已经提取了它的一些代码并实现了它,但我认为我搞砸了 Shell不断地给我关于缺少变量的错误,我在代码中似乎找不到。你们中的一些人能找到我在哪里犯的错误吗 import random import tkinter as tk root= tk.Tk() root.title('hOofDleTteRdiNGes') canvas1 = tk.Canvas(root, width = 400,
import random
import tkinter as tk
root= tk.Tk()
root.title('hOofDleTteRdiNGes')
canvas1 = tk.Canvas(root, width = 400, height = 300)
canvas1.pack()
entry1 = tk.Entry (root)
canvas1.create_window(200, 140, window=entry1)
def capi_sentence(sentence):
sentence.lower = entry1.get()
new_sentence = ''
number = 0 #Dummy number for tracking
for letter in sentence.lower():
if len(new_sentence)<2: #Creates the first two letter
random_number = random.randint(0,1) #This randomly decides if the letter should be upper or lowercase
if random_number==0:
new_sentence += letter.upper()
else:
new_sentence += letter
else:
if (new_sentence[number-2].isupper() and new_sentence[number-1].isupper() or new_sentence[number-2].islower() and new_sentence[number-1].islower())==True:
#Checks if the two letters before are both upper or lowercase
if new_sentence[number-1].isupper(): #Makes the next letter the opposite of the letter before
new_sentence += letter.lower()
else:
new_sentence += letter.upper()
else:
random_number = random.randint(0,1)
if random_number==0:
new_sentence += letter.upper()
else:
new_sentence += letter
number += 1 #Add one more to the tracking
label1 = tk.label(new_sentence)
button1 = tk.Button(text='hoofdletter shufflen', command=capi_sentence)
canvas1.create_window(200, 180, window=button1)
随机导入
将tkinter作为tk导入
root=tk.tk()
root.title('hoofdrettinges')
canvas1=tk.Canvas(根,宽=400,高=300)
画布1.pack()
entry1=tk.Entry(根)
canvas1.create_window(200140,window=entry1)
def capi_句子(句子):
station.lower=entry1.get()
新句子=“”
编号=0#用于跟踪的虚拟编号
用于句子中的字母。小写()
如果len(新句子)你有一些问题
最后需要调用root.mainloop()
,这样会出现一个窗口
您的capi\u语句
函数接受一个参数,但按下按钮时调用的回调函数不提供参数
使用
它调用您的函数,返回值为entry1.get()
在正确地传递文本后,capi_句子的第一行是不必要的(而且无论如何也没有真正意义)
您在创建标签时使用了小写的label
。您还需要传入一个父窗口小部件(例如root),并将文本作为text
关键字参数传入。最后,您需要通过打包将其添加到窗口中
一些杂项提示:
您不需要在条件结束时使用==True
;如果为true,则if将已运行
您可以使用枚举
删除显式数字
逻辑,该逻辑返回元组列表(i,item),其中item是列表中的原始项,i的索引从0到N-1。
我用这个(和其他简化)重写了下面的for循环,所以它更容易阅读
for i, letter in enumerate(sentence.lower()):
maybe_upper = letter.upper() if random.randint(0, 1) else letter
if len(new_sentence) < 2: #Creates the first two letter
new_sentence += maybe_upper
else:
l2, l1 = new_sentence[i - 2 : i]
if (l1.isupper() and l2.isupper()) or (l1.islower() and l2.islower()):
#Checks if the two letters before are both upper or lowercase
new_sentence += letter.lower() if l1.isupper() else letter.upper()
else:
new_sentence += maybe_upper
对于i,枚举中的字母(句子.lower()):
如果random.randint(0,1)或者字母
如果len(新句子)<2:#创建前两个字母
新句子+=可能更高
其他:
l2,l1=新的句子[i-2:i]
如果(l1.isupper()和l2.isupper())或(l1.islower()和l2.islower()):
#检查前面的两个字母是大写还是小写
新的_语句+=字母.lower(),如果l1.isupper(),否则为字母.upper()
其他:
新句子+=可能更高
请添加错误消息:)哦,我完全忘了。我会提醒我这样做是在将来:)谢谢你的帮助,它现在的工作!
label1 = tk.Label(root, text=new_sentence)
label1.pack()
for i, letter in enumerate(sentence.lower()):
maybe_upper = letter.upper() if random.randint(0, 1) else letter
if len(new_sentence) < 2: #Creates the first two letter
new_sentence += maybe_upper
else:
l2, l1 = new_sentence[i - 2 : i]
if (l1.isupper() and l2.isupper()) or (l1.islower() and l2.islower()):
#Checks if the two letters before are both upper or lowercase
new_sentence += letter.lower() if l1.isupper() else letter.upper()
else:
new_sentence += maybe_upper