【风变编程】第八、九课笔记

python基础语法

  • 第八课(项目实操:PK小游戏(1))
    • 一、python中的格式化字符串
    • 二、补充:format()函数
  • 第九课
    • 一、不让print()换行的方法
    • 二、列表合并:extend()
    • 三、列表排序:sort()
    • INF、练习题
      • (一)再来一盘【第八课】(第七关)(第一个较长的代码)
      • (二)学习小组成绩的合并排序【第九课】
      • (三)老师我又来了【第九课】
    • INF+1、练习题答案
      • (一)再来一盘
      • (二)学习小组成绩的合并排序
      • (三)老师我又来了

 

第八课(项目实操:PK小游戏(1))

链接:[ 全文章目录 ]

一、python中的格式化字符串


  1. 语法: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、练习题


(一)再来一盘【第八课】(第七关)(第一个较长的代码)

【风变编程】第八、九课笔记_第1张图片
【风变编程】第八、九课笔记_第2张图片

练习要求:

新功能是:每盘(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]))

 
 
链接:[ 全文章目录 ]

你可能感兴趣的:(风变编程,风变编程,python小课,python入门)