python基础语法
第八课(项目实操:PK小游戏(1))
一、python中的格式化字符串
- 语法:print(’ 格式串 ’ % ( 变量 ))
s = 'abc'
i = 123
f = 1.23
print('字符串:%s 整形:%d 浮点型: %f' % (s, i, f))
输出:
字符串:abc 整形:123 浮点型: 1.230000
2. 单变量时可以不加括号
s = 'abc'
print('字符串:%s' % s)
输出:
字符串:abc
3. 对于数字(浮点数和整数),输出的时候都可以用 %s
s = 'abc'
i = 123
f = 1.23
print('字符串:%s 整形:%s 浮点型: %s' % (s, i, f))
输出:
字符串:abc 整形:123 浮点型: 1.230000
二、补充:format()函数
format()函数用来占位的是大括号{},不用区分类型码(%+类型码)。
具体的语法是:‘str.format()’,而不是课堂上提到的’str % ()’。
而且,它对后面数据的引用更灵活,不限次数,也可指定对应关系。
# % 格式化:str % ()
print('%s%d'%('数字:',0))
print('%d,%d'%(0,1))
print('%d,%d,%d'%(0,1,0))
name1 = 'Python'
print('I am learning %s'% name1) # 注:当只跟一个数据时,%后可不加括号,format()一定要有。
# format()格式化函数:str.format()
print('\n{}{}'.format('数字:',0)) # 优势1:不用担心用错类型码。
print('{},{}'.format(0,1)) # 不设置指定位置时,默认按顺序对应。
print('{1},{0}'.format(0,1)) # 优势2:当设置指定位置时,按指定的对应。
print('{0},{1},{0}'.format(0,1)) # 优势3:可多次调用format后的数据。
name2 = 'Python基础语法'
print('我正在学{}'.format(name2)) # format()函数也接受通过参数传入数据。
输出:
数字:0
0,1
0,1,0
I am learning Python
数字:0
0,1
1,0
0,1,0
我正在学Python基础语法
第九课
一、不让print()换行的方法
[具体描述]
方法:
print('Hello', end='')
print('World')
输出:
HelloWorld
二、列表合并:extend()
三、列表排序:sort()
INF、练习题
(一)再来一盘【第八课】(第七关)(第一个较长的代码)
练习要求:
新功能是:每盘(3局)游戏结束后,游戏会问我们是否要继续游戏,再加一盘。
我们可以选择再来一盘,也可以选择退出游戏。
(二)学习小组成绩的合并排序【第九课】
练习要求:
一次测评中,老师将 学习小组A 和 学习小组B 的测评成绩(满分 100 分)从低到高记录放进两个列表:
A=[91, 95, 97, 99],B=[92, 93, 96, 98] 。
现在,老师想将两个小组的成绩合并为一个列表,并按照从低到高的顺序排序,你能帮老师完成吗?
(三)老师我又来了【第九课】
练习要求:
上一个练习中,我们完成了两组成绩的合并和排序。
不过,老师有了新的需求:想知道两组的平均分,以及把低于平均分的成绩也打印出来。
所以,在这个练习中,我们会帮老师计算出两组合并后的平均分,并挑出那些在平均分之下的成绩。
scores = [91, 95, 97, 99, 92, 93, 96, 98]
INF+1、练习题答案
(一)再来一盘
考察点:
1.循环
2.判断
import time
import random
player_victory = 0
enemy_victory = 0
while True:
for i in range(1,4):
time.sleep(1.5)
print(' \n——————现在是第 %s 局——————' % i)
player_life = random.randint(100,150)
player_attack = random.randint(30,50)
enemy_life = random.randint(100,150)
enemy_attack = random.randint(30,50)
print('【玩家】\n血量:%s\n攻击:%s' % (player_life,player_attack))
print('------------------------')
time.sleep(1)
print('【敌人】\n血量:%s\n攻击:%s' % (enemy_life,enemy_attack))
print('-----------------------')
time.sleep(1)
while player_life > 0 and enemy_life > 0:
player_life = player_life - enemy_attack
enemy_life = enemy_life - player_attack
print('你发起了攻击,【玩家】剩余血量%s' % player_life)
print('敌人向你发起了攻击,【敌人】的血量剩余%s' % enemy_life)
print('-----------------------')
time.sleep(1.2)
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('哎呀,你和敌人同归于尽了!')
if player_victory > enemy_victory :
time.sleep(1)
print('\n【最终结果:你赢了!】')
elif enemy_victory > player_victory:
print('\n【最终结果:你输了!】')
else:
print('\n【最终结果:平局!】')
a1 = input('要继续游戏吗,请输入n退出,输入其他继续:') # 在 while True 循环中设置跳出条件。
if a1 == 'n':
break
(二)学习小组成绩的合并排序
考察点:
1.列表合并
2.列表排序
不改变原来的列表:
list1 = [91, 95, 97, 99]
list2 = [92, 93, 96, 98]
# 把 A 组成绩赋值给一个新列表,用来存合并的成绩——这个细节要注意!
list3 =list1
list3.extend(list2)
print(list3)
list3.sort()
print(list3)
改变原来的列表:
list1 = [91, 95, 97, 99]
list2 = [92, 93, 96, 98]
list1.extend(list2)
list1.sort()
print(list1)
(三)老师我又来了
考察点:
1.循环
2.判断
摸鱼做法:
scores = [91, 95, 97, 99, 92, 93, 96, 98]
ave = sum(scores)/len(scores)
for i in scores:
if i < ave :
print(str(i))
扩展做法(使用numpy):
import numpy as np # 导入 numpy库,下面出现的 np 即 numpy库
scores1 = [91, 95, 97, 99, 92, 93, 96, 98]
scores2 = []
average = np.mean(scores1) # 一行解决。
print('平均成绩是:{}'.format(average))
for score in scores1:
if score < average:
scores2.append(score)
continue # 少于平均分的成绩放到新建的空列表中,然后继续判断。
print(' 低于平均成绩的有:{}'.format(scores2)) # 上个关卡选做题的知识。
# 下面展示一种NumPy数组的操作,感兴趣的同学可以自行去学习哈。
scores3 = np.array(scores1)
print(' 低于平均成绩的有:{}'.format(scores3[scores3<average]))