时隔两年,这次不自学了,跑来远隔万里的意大利找教授学😅
目前的课程安排是每周四、周五,早上8-11点,三个小时的课程。
以后每次课后的作业我会分享到这里,如果你也在学python或者是前辈,欢迎指点/探讨一二,共同进步!
今天学了list及其相应的操作,在完成exercise时,遇到这样一道题:
#题目要求
write a program that computes all medals won by each Country (consider the
above data), and plots a table such as
Ita: 3
Fra: 1
Usa: 1
Nor: 1
Jap: 2
我的第一遍答案是:
```python
medals = [
["Ita", 0,3,0], # ita
["Fra", 0,0,1], # fra
["Usa", 0,0,1], # usa
["Nor", 1,0,0], # nor
["Jap", 1,0,1] # jap
]
i = 0
all_it_medals = 0
for j in range(1,4):
all_it_medals += medals[i][j]
i = 1
all_fr_medals = 0
for j in range(1,4):
all_fr_medals += medals[i][j]
i = 2
all_us_medals = 0
for j in range(1,4):
all_us_medals += medals[i][j]
i = 3
all_nor_medals = 0
for j in range(1,4):
all_nor_medals += medals[i][j]
i = 4
all_jp_medals = 0
for j in range(1,4):
all_jp_medals += medals[i][j]
print(f'Ita: {all_it_medals}')
print(f'Fra: {all_fr_medals}')
print(f'Usa: {all_us_medals}')
print(f'Nor: {all_nor_medals}')
print(f'Jap: {all_jp_medals}')
**太繁琐了,发现既然i从0到4,不如直接遍历它,改进以后,如下:**
```python
medals = [
["Ita", 0,3,0], # ita
["Fra", 0,0,1], # fra
["Usa", 0,0,1], # usa
["Nor", 1,0,0], # nor
["Jap", 1,0,1] # jap
]
for i in range(5): *#第一版中写了i = 0~ 4,那不如直接遍历i*
country = medals[i][0]
all_medals = 0
for j in range(1,4):
all_medals += medals[i][j]
print(f'{country}:{all_medals}') *#这里打印最后的计算结果,故print与for对齐*
而教授给的参考答案是:
medals = [
["Ita", 0,3,0], # ita
["Fra", 0,0,1], # fra
["Usa", 0,0,1], # usa
["Nor", 1,0,0], # nor
["Jap", 1,0,1] # jap
]
for i in range(len(medals)):
medals_count = 0;
for j in range(len(medals[0])):
if j == 0:
print(f'{medals[i][j]}: ', end = "")
else:
medals_count += medals[i][j]
print(f'{medals_count}')
教授的答案更具有通用性和普适性,可是逻辑对我来说还是太绕了,我自己是写不出来这种的。你们觉得哪种更好一些呢?