解壓 ---- 現在有一場跳水比賽決賽,共10名裁判,10選手,評分規則是這10名裁判依次給選手打分,如果裁判棄權則沒有分。最後,去掉一個最高分,去掉最低分,剩下的成績平均分就是選手的最終成績
阿新 • • 發佈:2019-02-05
現在有一場跳水比賽決賽,共10名裁判,10選手,評分規則是這10名裁判依次給選手打分,如果裁判棄權則沒有分。最後,去掉一個最高分,去掉最低分,剩下的成績平均分就是選手的最終成績
解壓
In [1]:a, b = 1, 2
print(a, b)
1 2In [2]:
a, b = b, a
print(a, b)
2 1In [3]:
name, city, birth = 'xiaoming', 'Beijing', (2017, 8, 8)
print('%s born at %s on %s' % (name, city, birth))
xiaoming born at Beijing on (2017, 8, 8)
name, city, (year, month, day) = 'xiaoming', 'Beijing', (2017, 8, 8)
print('%s %s年%s月%s日出生於%s' % (name, year, month, day, city))
xiaoming 2017年8月8日出生於Beijing
同樣的規則也適用於tuple或者list
同樣也適用於所有的可迭代物件,比如迭代器、字串、檔案物件
注意: 如果可迭代物件的個數超過變數的個數,則會丟擲ValueError
In [5]:name, city, *birth = 'xiaoming', 'Beijing', 2017 , 8, 8
print(name, city, birth)
xiaoming Beijing [2017, 8, 8]
注意第3個帶*號的引數,它永遠都是List, 即使沒有值的情況下, 也會返回一個空的list,省去了型別檢查
In [7]:name, city, *birth = 'xiaoming', 'Beijing'
print(name, city, birth)
xiaoming Beijing []In [9]:
people = ['李白', '白居易', '李清照']
for p in people:
family_name, *name = p
# print('姓: %s - 名: %s' % (family_name, name))
print('姓: %s - 名: %s' % (family_name, ''.join(name)))
# 因為*name返回的是list, 所以把它轉換成字串
姓: 李 - 名: ['白'] 姓: 李 - 名: 白 姓: 白 - 名: ['居', '易'] 姓: 白 - 名: 居易 姓: 李 - 名: ['清', '照'] 姓: 李 - 名: 清照In [10]:
# 如 :
*head, tail = range(10)
print(head, tail)
[0, 1, 2, 3, 4, 5, 6, 7, 8] 9In [11]:
# 如: 可以這種方法只取後面幾個,(同理:前後幾個,頭尾幾個)
*_, a, b = range(10)
print(a, b)
8 9
現在有一場跳水比賽決賽,共10名裁判,10選手,評分規則是這10名裁判依次給選手打分,如果裁判棄權則沒有分。最後,去掉一個最高分,去掉最低分,剩下的成績平均分就是選手的最終成績,
In [13]:import random # 隨機取得分數
import faker # 用第三方庫引用姓名
f = faker.Faker('zh_CN') # 不填引數, 預設為外國人的名, 'zh_CN'為中文名
players = [f.name() for i in range(10)] # 取得10名運動員的名字
print(players)
['汲秀榮', '粱龍', '卻玉珍', '諸林', '郟晶', '蔚超', '許紅梅', '仉麗娟', '法穎', '束玉梅']In [14]:
def collect_scores(player, judge_num=10):
scores = []
for i in range(judge_num):
if i % 4 == 0:
continue
scores.append(random.randint(6, 10))
return player, scores
In [15]:all_scores = [collect_scores(player) for player in players]
for player, scores in all_scores:
scores.sort()
min_score, *f_scores, max_score = scores
print(player, sum(f_scores) / len(f_scores))
汲秀榮 6.8 粱龍 7.4 卻玉珍 8.6 諸林 7.2 郟晶 7.8 蔚超 6.6 許紅梅 8.4 仉麗娟 7.6 法穎 8.0 束玉梅 8.0