学习笔记8 随机的旋律生成器

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)+'。')

这个程序挺好玩的,嘿嘿。可以练绝对音感。音阶文件是自己用钢琴录的,网上找应该也有。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值