CS50:第6周|实验室:世界杯
#python #braziliandevs #cs50

我上一次写有关CS50的写作是为了第3周的复数。

我看到,今年,该课程增加了一些非常有趣的劳动力,我将寻求执行并将其带入。

Semana 6:Python

第6周非常有趣,该课程介绍了动态语言 python ,并且仍然是整个课程的重读,因此现在以这种新语言。 P>

处理以前在语言C 中面临的困难,并打开像Python这样的语言所提供的设施,但很明显表示权衡。。

最后,提出了两项​​活动:

  • 实验室:从理论上讲,这项活动有望与一两个朋友结交。 让我们在这篇文章中处理这个实验室

  • 问题集:SAM的活动,没有两个困难。本周特定于本周,它正在重做C中与python所面临的挑战。

当我已经在C中谈论过这些练习时,我计划将它们带到Python,但是如果您有生命,您正在谈论。

实验室:世界杯

我发现这项活动非常酷,是运行世界杯模拟。

  • 有两个.csv电子表格,带有两个列(选择,评分)。
  • farã使用funçõesleitura de arquivoslistasdicionários操纵的概念以及所有其他基本编程块

预期的结果是输出这样的信息,以告知团队冠军的可能性。

$ python tournament.py 2018m.csv
Belgium: 20.9% chance of winning
Brazil: 20.3% chance of winning
Portugal: 14.5% chance of winning
Spain: 13.6% chance of winning
Switzerland: 10.5% chance of winning
Argentina: 6.5% chance of winning
England: 3.7% chance of winning
France: 3.3% chance of winning
Denmark: 2.2% chance of winning
Croatia: 2.0% chance of winning
Colombia: 1.8% chance of winning
Sweden: 0.5% chance of winning
Uruguay: 0.1% chance of winning
Mexico: 0.1% chance of winning

实施的详细信息

遵循site do cs50提供的实现步骤。

第一步。首先,在 main 上,阅读有关 csv文件中选择的信息以记忆(存储在方差中),然后添加每个团队进入您的列表团队。

def main():
    # Ensure correct usage
    if len(sys.argv) != 2:
        sys.exit("Usage: python tournament.py FILENAME")
    teams = []
    # TODO: Read teams into memory from file
    counts = {}
    # TODO: Simulate N tournaments and keep track of win counts
    # Print each team's chances of winning, according to simulation
    for team in sorted(counts, key=lambda team: counts[team], reverse=True):
        print(f"{team}: {counts[team] * 100 / N:.1f}% chance of winning")
  • 我们可以看到它应该通过命令行两个参数,其中一个是 koud0 file
  • serã 读取模式
  • 对于每行,让我们创建一个对键:value 在其中我们将进行选择及其各自的等级(note)
  • 对于创建的每对,让我们添加在koud7 列表上。
teams = []
    # TODO: Read teams into memory from file
    with open(sys.argv[1], "r") as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            team = {"team": row["team"], "rating": int(row["rating"])}
            teams += [team] #append each team in csv in teams list

第二步。然后,实现koud8函数。此功能将作为成员接收与团队的列表,模拟回合在©大约一个团队中。此功能必须返回该团队的名称

def simulate_tournament(teams):
    """Simulate a tournament. Return name of winning team."""
    # TODO
  • 有一个simulate_round(teams)函数模拟回合。
  • 我的羊毛说,模拟一轮只向一支球队进行模拟,即此列表的大小 只是一个团队。
def simulate_tournament(teams):
    """Simulate a tournament. Return name of winning team."""
    # TODO
    while len(teams) != 1:
        teams = simulate_round(teams)

    return teams

第三步。返回 funad main ,跑到 simulate_tournament n,并保持记录,因为每个 团队赢得了在 dicionário中称为counts

counts = {}
    # TODO: Simulate N tournaments and keep track of win counts
  • 执行loops n次称为funa koud8
  • a 函数koud8 以这种格式返回列表:
[{'team': Brazil, 'rating': 1384}]
  • 使用含义仅提取team键的值,我们检查了,如果 dicionário couts 已经包含了这个团队。
  • 如果存在,它会增加1(一个)。如果没有,该团队将被添加到计数字典中。
counts = {}
    # TODO: Simulate N tournaments and keep track of win counts
    for i in range(N):
        winner = simulate_tournament(teams)
        print(winner[0]["team"])
        if winner[0]["team"] not in counts:
            counts.update({winner[0]["team"]: 1})
        else:
            counts[winner[0]["team"]] += 1

因此挑战完成了。

包括£o

这项实验室练习非常有趣,并且能够为您要使用的其他方式和比赛进行对抗的可能性。

我认为这个实验室非常好学习和练习Python语言的基本概念

如果您和Dan在一起,或者您喜欢它。
在下面留下您的评论,然后将我添加到网中。

github:repositório da atividade | mpfdev (pessoal)