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]))