时间模块之延迟
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))