【風變編程】第八、九課筆記


 

第八課(項目實操: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、練習題


(一)再來一盤【第八課】(第七關)(第一個較長的代碼)

練習要求:

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

 
 
鏈接:[ 全文章目錄 ]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章