时间与随机模块的用法及小游戏案例

时间模块之延迟

import time  #通常import语句会写到代码的开头

print('终极秘密为....')   
time.sleep(1.5)
#暂停1.5秒,再继续运行后面的代码
print('我才是奥特曼!') 
-----------------------------------------------------------------------
终极秘密为....
我才是奥特曼!

随机生成数字之random模块.randint()函数

import random 
#调用random模块,与
a = random.randint(1,100)
# 随机生成1-100范围内(含1和100)的一个整数,并赋值给变量a
print(a)
--------------------------------------------------------------------------
31

游戏小练习之两大知识点

import time,random
gesture=['剪刀','石头','布']

while 1:
    xiaoming=0
    xiaohong=0

    for i in range(1,4):
        time.sleep(1)
        print('\n---------------现在是第{}局-------------'.format(i))
        
        a=random.choice(gesture) #从列表中随机返回一个数据
        b=random.choice(gesture)

        if a=='剪刀'and b=='石头':
            xiaohong +=1
            print('小红赢了')
        if a=='剪刀'and b=='布':
            xiaoming +=1
            print('小明赢了') 
            
        if a=='石头'and b=='剪刀':
            xiaoming +=1
            print('小明赢了')
        if a=='石头'and b=='布':
            xiaohong +=1
            print('小红赢了')
            
        
        if a=='布'and b=='剪刀':
            xiaohong +=1
            print('小红赢了')
        if a=='布'and b=='石头':
            xiaoming +=1
            print('小明赢了')

        if a==b:
            print('打平')

    if xiaoming>xiaohong:
        time.sleep(1)
        print('小明赢了')
    elif xiaohong>xiaoming:
        time.sleep(1)
        print('小红赢了')
    else:
        print('平局')

    a1 = input('要继续游戏吗,请输入n退出,输入其他继续:')
    if a1 == 'n':
        break


----------------------------------------------------------------
---------------现在是第1-------------
小红赢了

---------------现在是第2-------------
打平

---------------现在是第3-------------
打平
小红赢了
要继续游戏吗,请输入n退出,输入其他继续:

---------------现在是第1-------------
小红赢了

---------------现在是第2-------------
打平

---------------现在是第3-------------
小明赢了
平局
要继续游戏吗,请输入n退出,输入其他继续:

三局两胜的判断实现

好比乒乓球比赛,有一方赢了一局就翻一下计分牌,让数字+1,最后看哪边的数字大就是哪边获胜。
对于计算机也是如此:它靠数据思考,比如拿数据做计算、做条件判断、做循环等。所以这里的关键就在于,要给计算机数据。
那么仿照计分牌的做法,我们的解决方法也就出来了:采取计分的方式,赢一局记一分,平局不计分。所以,我们要给计算机一个空白的“计分板”,用于存放【玩家】和【敌人】每一局的得分。

player_victory = 0
#存放玩家赢的局数。
enemy_victory = 0
#存放敌人赢的局数

那什么情况下,这两个变量会变动(+1)呢?自然是要与具体每一局的结果挂钩,这时候可以回看我们计算输赢的条件判断语句。

if player_life > 0 and enemy_life <= 0: #玩家赢
print(‘敌人死翘翘了,你赢了’)
elif player_life <= 0 and enemy_life > 0: #敌人赢
print(‘悲催,敌人把你干掉了!’)
else: #平局
print(‘哎呀,你和敌人同归于尽了!’)

然后,我们将敌人和玩家各自赢的局数给算出来:
这样三局过后,player_victory和enemy_victory会被赋上新的值。给你一个小技巧:player_victory = player_victory + 1,总是这样写有点烦人,我们可以写作player_victory += 1,这两个代码是等价的,都代表"如果if后的条件满足,变量就+1"。
这也是程序员是追求“极简”的体现。

player_victory = 0
enemy_victory = 0
if player_life > 0 and enemy_life <= 0:
player_victory += 1
print(‘敌人死翘翘了,你赢了!’)
elif player_life <= 0 and enemy_life > 0:
enemy_victory += 1
print(‘悲催,敌人把你干掉了!’)
else:
print(‘哎呀,你和敌人同归于尽了!’)

格式符对不同类型数据的拼接

格式符%

我们在用+拼接字符串和变量的时候,常常需要考虑变量是什么类型的数据,如果不是字符串类型,还先需要str()函数转换。
并且一句话常常要拼接成好几个部分,然后我们要考虑每一对引号’ '的起始位置,好麻烦,相信你多少会有点体会。
所以,为了更方便地实现不同数据类型的拼接,用【格式符%】是更常用更便利的一种方式。
我们可以把%想象成:图书馆里用来占位的一本书。先占一个位置,之后再填上实际的变量。举个例子:下面这两种写法是相同的,请你着重研究下第二行的语法。

print(‘血量:’+str(player_life)+’ 攻击:'+str(player_attack))
print(‘血量:%s 攻击:%s’ % (player_life,player_attack))

我们看到格式符%后面有一个字母s,这是一个类型码,用来控制数据显示的类型。%s就表示先占一个字符串类型的位置。
占完位置之后,我们要以%的形式在后面补上要填充的内容,如此一来我们就免去了转换类型的烦恼。如果是多个数据,就要把它们放进括号,按顺序填充,用逗号隔开。

format()函数

format()函数是从 Python2.6 起新增的一种格式化字符串的函数,功能比上述提到的方式更强大。
format()函数用来占位的是大括号{},不用区分类型码(%+类型码)。
具体的语法是:‘str.format()’,而不是课堂上提到的’str % ()'。
而且,它对后面数据的引用更灵活,不限次数,也可指定对应关系。

print(‘血量:%s 攻击:%s’ % (player_life,player_attack))
print(‘【玩家】\n血量:{}\n攻击:{}’.format(player_life,player_attack))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello world !

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值