都灵大学 | Python日记

时隔两年,这次不自学了,跑来远隔万里的意大利找教授学😅

目前的课程安排是每周四、周五,早上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}')

教授的答案更具有通用性和普适性,可是逻辑对我来说还是太绕了,我自己是写不出来这种的。你们觉得哪种更好一些呢?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值