dictionary - 循环打印太多次
问题描述
def main():
lightning = dict()
with open("lightning.txt","r") as f:
for name,goals,assists in zip(f,f,f):
lightning[name.strip()] = [int(goals),int(assists)]
f.close()
title_Player = 'Player'
title_Goals = 'Goals'
title_Assists = 'Assists'
title_Total = 'Total'
print('{:<10}{:^6}{:^8}{:^6}'.format(title_Player, title_Goals, title_Assists, title_Total))
highest_points = 0
for k in lightning:
goals = lightning[k][0]
assist = lightning[k][1]
total = goals + assist
print('{:<8}'.format(k), end = ' ')
for v in lightning[k]:
print('{:^6}{:^8}'.format(goals, assist), end = ' ')
print('{:^6}'.format(total))
if total > highest_points:
highest_points = total
top_scorer = k
print(top_scorer, 'is the top scorer with', highest_points, 'points')
if __name__ == '__main__':
main()
这是我的代码,目标和辅助在输出中显示了两次,我尝试使用部分 for 循环进行调整,但没有任何成功。但是,所有列格式都是正确的。
解决方案
就在这儿:
for v in lightning[k]:
print('{:^6}{:^8}'.format(goals, assist), end = ' ')
由于您正在迭代 Lightning[k](它有两个值,目标和助攻),因此您正在运行该打印语句(打印出目标和助攻)两次。相反,为了适合您的表格标题,您可能应该更改以下内容:
print('{:<8}'.format(k), end = ' ')
for v in lightning[k]:
print('{:^6}{:^8}'.format(goals, assist), end = ' ')
print('{:^6}'.format(total))
对此:
print('{:<10}{:^6}{:^8}{:^6}'.format(k, goals, assist, total))
这将在与标题中的列(10、6、8、6)相同大小的列中一次打印名称、目标、助攻和总数。
推荐阅读
- laravel - 无法在 Laravel 中包含 Font Awesome
- mysql - 特定条件下Mysql中的计算
- javascript - 如何将多行输入通过管道传输到 Node.js 程序?
- android - 以编程方式获取通话期间的通话时间?
- python - python代码上的无效参数错误
- java - 在 StackPane 中的 AreaChart 上覆盖节点
- node.js - nodejs - 如何在 mongo 的最后一些文档中搜索
- homebrew - 尝试 brew install watchman 时地窖中未链接的小桶
- azure-data-factory - Azure 数据工厂:从 Salesforce 到 REST API
- javascript - 用 Jest 和 Enzyme 反应组件的测试状态