1.【常用命令】某个代码后暂停1s
time.sleep(1)
2.【习惯】把重复的部分设置为变量,把每次都变化的部分设置为变量。
3.【规则】字符串拼接规则,多个字符串连成一句代码:
‘d:/dir/demo/notes/’ + str(i) + '.mav'==‘d:/dir/demo/notes/i.mav'
4.【错误】字符串拼接规则,多个字符串用加号连接,但是加号两边必须都是字符串,所以需要用str(i),把数字变量i,转变成数字字符。
5.【常用命令】随机数生成器,从a到b之中的随机生成一个数。
random.randint(a,b)
6.【常用】while中常用计数器和累加器,再加上break退出。
7.【案例1】写一个system.beep(a,b)随机生成一串旋律,太简单,我们看下一个案例
7.【案例2】请写一个猜音阶的程序
【功能设计】系统发出1-7中一个音阶,user猜一个音阶,对了的话,播放一段正确提示音与提示字符,记一个正确;如果错了的话,播放一个错误提示音,它反馈给你是大了还是小了,一共可以错误3次。如果正确播放一段正确提示音与提示字符,记一个正确;如果猜了3次没猜出来,就记录一次错误。重复以上流程7次,基于正确和错误数给出一个评分。
【程序设计思考】
重复的部分是:发出一个随机音阶,输入答案。判断对错,输出反馈,记分。
不重复的部分是:赋值循环条件,最后结算总分。
【程序流程】
赋值循环条件i,7次。
循环
播放一个随机音阶,输入一个答案
-判断对,反馈,记分,结束
-判断错,反馈,计数累加,判断是否跳出,再循环前赋值再循环:
----判断错,反馈,计数累加,判断是否跳出
----判断对,反馈,记分,跳出
计数累加,判断是否跳出
【程序代码】
import os#os也是模块 import random#random 也是模块 import time i=0 point = 0 minepoint = 0 tlose=4.5 twin=4.5 while i<=7: randomkey=random.randint (1,7)#randint与参数之间有无空格 os.system ('start D:/demo/notes/'+str(randomkey)+'.mp3')#os.system函数使用时,与参数之间有没有空格 guessanswer = int(input('请问你听到的是C大调中的哪个音阶呢(1-7)?')) losetime = 0 if randomkey == guessanswer: os.system ('start D:/demo/reflect/award.mp3') print ('答对了!你对音阶的辨识能力提高了') point += 1 time.sleep(twin) else: os.system ('start D:/demo/reflect/lose.mp3') losetime += 1 minepoint += 1 time.sleep(tlose) if randomkey > guessanswer: print (' 低了哦,试试更高一点把!') elif randomkey < guessanswer:#if...if,,,是口语化的,if后面应该跟的是else print (' 高了哦,试试更低一点把!') while losetime <= 3: os.system ('start D:/demo/notes/'+str(randomkey)+'.mp3') guessanswer = int(input('请问这是C大调中的哪个音阶呢(1-7)?')) if randomkey == guessanswer: os.system ('start D:/demo/reflect/award.mp3') print ('答对了!你对音阶的辨识能力提高了') point += 1 time.sleep(twin) break else: os.system ('start D:/demo/reflect/lose.mp3') losetime +=1 minepoint += 1 if randomkey > guessanswer: print (' 低了哦,试试更高一点把!') elif randomkey < guessanswer: print (' 高了哦,试试更低一点把!') time.sleep (tlose) i += 1 print (' 游戏结束,你的得分是'+str (point)+';你错误的次数是'+str(minepoint)+'。')
这个程序挺好玩的,嘿嘿。可以练绝对音感。音阶文件是自己用钢琴录的,网上找应该也有。