import turtle
import time
print("投票器v1.0")
print("\033[系统题示:禁止未成年人打赏!\033[0m")
#画笔准备
turtle.bgpic("vote.gif")
pen = turtle.Pen()
turtle.addshape("flower.gif")
pen.hideturtle()
pen.shape("flower.gif")
pen.penup()
turtle.tracer(0)
#精灵坐标位置
position = [(-130, 80), (70, 80), (270, 80),
(-130, -120), (70, -120), (270, -120),
(-130, -320), (70, -320), (270, -320)]
def vote(x):
pen.goto(position[x])
pen.stamp()
answer=""
e=True
list=[]
while e:
try:
for i in range(4):
time.sleep(3)
answer=int(turtle.textinput("请投票","请问您是要给几号投票"))-1
vote(answer)
cp=answer+1
print("message:已给予%s号一朵小红花"%cp)
turtle.update()
e=False
print("投票完成")
except:
try:
cp=answer+1
print("投票的号码不能为%s"%cp)
time.sleep(3)
e=True
except:
print("请输入正常文字")
#错误日志:1.每人只能投一票但现在可以给一个人多投几票.
#2.报错有时可能会出现错误,比如说上次投的5这次没投或写的其他但打印结果却是"投票号码不能为5",有时是预期结果,预期结果最高概率为第一次较多.
#3.投零号时也可以投,并且不显示
依据错误信息,将代码修改如下, list信息最好做个永久存储,记录下来.
import time
import turtle
print("投票器v1.0")
print("\033[系统题示:禁止未成年人打赏!\033[0m")
# 画笔准备
turtle.bgpic("vote.gif")
pen = turtle.Pen()
turtle.addshape("flower.gif")
pen.hideturtle()
pen.shape("flower.gif")
pen.penup()
turtle.tracer(0)
# 精灵坐标位置
position = [(-130, 80), (70, 80), (270, 80),
(-130, -120), (70, -120), (270, -120),
(-130, -320), (70, -320), (270, -320)]
def vote(x):
pen.goto(position[x])
pen.stamp()
answer = ""
e = True
# 用来收集已投的信息
list = []
while e:
for i in range(4):
time.sleep(3)
try:
answer = int(turtle.textinput("请投票", "请问您是要给几号投票")) - 1
# 忽略0号
if answer == -1:
continue
cp = answer + 1
# 每人只能投一票
if answer in list:
print("投票的号码不能为%s" % cp)
else:
vote(answer)
print("message:已给予%s号一朵小红花" % cp)
turtle.update()
e = False
print("投票完成")
list.append(answer)
# 输入非数值 报错
except ValueError:
print("请输入正常文字")
# 错误日志:1.每人只能投一票但现在可以给一个人多投几票.
# 2.报错有时可能会出现错误,比如说上次投的5这次没投或写的其他但打印结果却是"投票号码不能为5",有时是预期结果,预期结果最高概率为第一次较多.
# 3.投零号时也可以投,并且不显示
知道如何处理CSV文件中的日期后,就可对气温图形进行改进了,即提取日期和最高气温,并将它们传递给plot(),如下表示
import csv
from datetime import datetime
from matplotlib import pyplot as plt
#从文件中获取最高温度
#从文件中获取日期和最高温度
filename='sitka_weather_07-2014.csv'
with open(filename) as f:
reader=csv.reader(f)
header_row=next(reader)
dates,highs=[],[] #创建两个空列表,用于存储从文件中提取的日期和最高温度
for row in reader:
current_date=datetime.strptime(row[0],"%Y-%m-%d") #row[0]包含日期信息的数据转换为datetime对象
dates.append(current_date)#并将其附加到列表dates的末尾
high=int(row[1]) #将这些字符串转换为数字,然后方便,atplotlib读取它们
highs.append(high)
print(highs)
#for index, column_header in enumerate(header_row):
# print(header_row)
#根据数据绘制图形
fig=plt.figure(dpi=128,figsize=(10,6))
plt.plot(dates,highs,c='red')
#设置图形的格式
plt.title("Daily high temperatures,July 2014",fontsize=24)
plt.xlabel('',fontsize=16)
fig.autofmt_xdate()#绘制斜的日期标签,以免它们批次重叠
plt.ylabel("Temperature (F)",fontsize=16)
plt.tick_params(axis='both',which='major',labelsize=16)
plt.show()
根据给出的参考资料和错误日志,我可以看出问题出在定义了一个str变量,覆盖了Python内置的str()方法,导致str对象不可调用,从而引发了TypeError: 'str' object is not callable的错误。为了解决这个问题,我们需要按照以下步骤进行操作:
Step 1: 检查代码中是否定义了名为str的变量,并且该变量是否被覆盖了Python内置的str()方法。
Step 2: 如果存在名为str的变量并且与内置方法发生了冲突,我们需要将变量名更改为其他名字,以避免冲突。
Step 3: 如果代码中没有定义名为str的变量或者没有发生冲突,则需进一步分析代码的其他部分,寻找是否还有其他原因导致该错误。
根据给出的错误日志和参考资料,这是一个文件打开和读取的过程,不涉及str变量的定义和覆盖,所以这个问题不是因为str变量的问题造成的。错误日志中提到了使用了file函数来打开文件,并且出现了TypeError: 'str' object is not callable的错误。根据Python的官方文档,file函数已经在Python2.6中被废弃,所以在Python3版本中不再支持,这就是导致错误的原因。
为了解决这个问题,我们需要将file函数替换为open函数来打开文件,并且指定正确的文件路径。例如,使用以下代码来打开文件并读取内容:
def login():
fOpen = open('D:\\backupAll\\eclipseRoot\\20190917LearnMVCDemo\\View\\index14.html','r',encoding='utf-8')
data = fOpen.read()
return data
通过替换file函数并使用open函数来打开文件,我们可以避免TypeError: 'str' object is not callable错误。
请注意,上述代码中的文件路径是一个示例,你需要根据你自己的实际情况提供正确的文件路径。
希望这个解决方案对你有帮助!如果你有任何其他问题,请随时提问。