coursera-miniproject stopwatch任务总结
---恢复内容开始---
首先是miniproject的说明:
下面是我纠结的编码思考过程:
1 2 3 4 5 6 7 | def format (t): A = t / / 600 B = (t - t / / 600 * 600 ) / / 100 C = (t - t / / 600 * 600 ) / / 10 - (t - t / / 600 * 600 ) / / 100 * 10 d = str (t) D = d[ - 1 ] return str (A) + ":" + str (B) + str (C) + "." + D |
第二天试验了一些数据,应该是没问题的。
然后开始写可视frame
Timer的格式?
Timer不能工作 报错
Count在最前面定义t
Format(t)将count得到的t转换成A:BC.D的格式
Draw_handler在画布上将Format(t)显示出来
删掉多余的,单纯实验timer
我解决了timer的问题!!!柳暗花明又一村啊!!!刚才躺床上都想放弃了,我删掉多余的,单纯实验timer就解决问题啦,原来simplegui.creat_timer creat少打了一个e,应该是create啊!
然后又报错canvas.draw_text(format(t),[100,100],24,”white”) t没有定义
我就设置t为全局变量 t = 0。但是画布上只显示了0:00.0,我再在tick里面声明全局变量t,
Def tick()
t+=1
return t
点击run,就可以啦:
现在还需要:
1.3个可以工作的按钮;
貌似已经解决了,用timer.start() timer.stop()
但是开始的时候秒表就开始跑了,这是咋回事?
2.记分牌,按到stop整秒记1分,如何表达记分牌
3.按Run启动的秒表应该是停止状态,按start才开始框架刚打开的是0状态
先处理第三个问题
关于第二个问题,Stop的逻辑应该是比较复杂的,start按钮应该是比较简单的,因为stop是要记分数的
按start后t = 0,
现在我run以后马上开始count,不应该这样,应该是我点start之后开始count
Tick 应该是停止的状态?
Timer.start()
T=0这个全局变量是否应该存在?
点开始 timer就开始运行,第二个参数tick
解决了!!!在最后写
Timer.stop()
就!行!啦!
第二个问题:如何写两个draw handler? 用空白的试一试?看一看视频?看完视频我就知道怎么写了,是写两行:
Def draw(canvas):
Canvas.draw_text(format(t), [100, 100], 24, “White)#format(t)必须是字符串
Canvas.draw_text(“Hello!”, [200, 50], 24, “White)
按下stop,X/Y,Y值加1,X值是否加1要看是否是整数秒
Reset"清除success、/attampts结果
A:BC.D
每次点击Stop, Y加1
只要D=0,X就加1
否则X不加1
D = d[-1] = str(t)[-1]
下面的代码,不能工作,stop,start,Reset都不好使了
---------------------------------------------------------------------------
def stop():#stop不工作
x = 0
y = 0
y += 1
if int(str(t)[-1]) == 0:
x += 1#x,y都是整数,非字符串
else:
return x#这里好像有问题?
timer.stop()
return str(x) + "/" + str(y)#这里应该不用return成字符串的,应该是 canvas.draw_text(str(x) + "/" + str(y)
======================================
Stop具体要实现什么功能?
1.秒表停止 2.Y值加1 3.如果t为整数秒,X加1
不改动的话功能1可以实现,现在要考虑如何实现功能2。3
另外定义一个X/Y?
先看看code clinic
l 按照code clinic说法,stop 按钮应该检查t% 10 == 0
l Draw handler call format(t)
用布尔函数,True of False; 。建议添加布尔变量 True-秒表工作running False-秒表停止stop,然后用这个数值决定按stop的时候是否更新score
If timer.is_running():
之前有模板说可以给出True 和false的?
def stop_button_handler():
global
num_pushes,num_succ_pushes
if timer.is_running() and
tenths_of_sec==0:#可以改
num_succ_pushes += 1
num_pushes += 1
timer.stop()
elif timer.is_running():
num_pushes += 1
timer.stop()
else:
timer.stop()
现在参考上面的代码,试一试,上面的代码启发了我(论坛有人贴的)
难道是draw_handler_text出了问题?一定要是字符串?
Canvas.draw_text(str(x) + “/” + str(y), [200, 200], 24, “Green”)#这里才关键,之前一直想要这样:canvas.draw_text(stop(), [200,200])
我搞!定!了!
def stop():
global x, y
if timer.is_running() and t % 10 == 0:
x += 1
y += 1
timer.stop()
elif timer.is_running():
y += 1
timer.stop
else:
timer.stop
删掉timer.is_running()不行,因为删掉后,计时器已经停止了,按stop x,y依然家1
最后完成了,reset是这样的:
Def reset():
Global t, x, y
T = 0
X = 0
Y = 0
Timer.stop()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | # template for "Stopwatch: The Game" import simplegui t = 0 x = 0 y = 0 # define helper function format that converts time # in tenths of seconds into formatted string A:BC.D def format (t): A = t / / 600 B = (t - t / / 600 * 600 ) / / 100 C = (t - t / / 600 * 600 ) / / 10 - (t - t / / 600 * 600 ) / / 100 * 10 d = str (t) D = d[ - 1 ] return str (A) + ":" + str (B) + str (C) + "." + D # define event handlers for buttons; "Start", "Stop", "Reset" def start(): timer.start() #在某一个时间停止, def stop(): global x, y if timer.is_running() and t % 10 = = 0 : x + = 1 y + = 1 timer.stop() elif timer.is_running(): y + = 1 timer.stop() def reset(): global t, x, y t = 0 x = 0 y = 0 timer.stop() # define event handler for timer with 0.1 sec interval def tick(): global t t + = 1 #不需要return # define draw handler def draw(canvas): canvas.draw_text( format (t), [ 80 , 120 ], 50 , "White" ) canvas.draw_text( str (x) + "/" + str (y), [ 220 , 30 ], 35 , "Green" ) # create frame f = simplegui.create_frame( "Stopwatch" , 300 , 200 ) # register event handlers f.add_button( "Start" , start, 100 ) f.add_button( "Stop" , stop, 100 ) f.add_button( "Reset" , reset, 100 ) f.set_draw_handler(draw) timer = simplegui.create_timer( 100 , tick) # start frame f.start() timer.stop() # Please remember to review the grading rubric |
很有成就感!嗯!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?