python - 为什么我的程序在行首添加了额外的空格?
问题描述
您好,希望您能帮到我,
我正在尝试制作一种算法,该算法采用带有名称列表的 txt 文件,将它们随机重新排序并将它们分配给团队。
它有效,我唯一的问题是,由于某种原因,它在列表的所有行中添加了一个额外的空间,除了第一个元素。它不是 txt 文件,那里的列表很好。
例如,我想要这样的输出:
team 1
dude1
dude2
team 2
dude3
dude4
相反,它这样做:
team 1
dude1
dude2
team 2
dude3
dude4
所以团队 1 在没有空间的情况下这样做,但其他一切在开始时都有空间。
这是代码:
import random
raw_list = open("list.txt","r")
people_list = []
for line in raw_list.readlines():
people_list.append(line)
raw_list.close()
team_list = []
team_num = int(input("enter the number of teams you want "))
len_people = int(len(people_list))
teams = len_people / team_num
len_people=int(len_people+team_num)
j = 1
i = 1
for n in range(len_people):
if i == 1:
if j>team_num:
popper = random.randint(0, (len(people_list)) - 1)
team_list.append(people_list.pop(popper))
else:
team_list.append(f"Team {j}\n")
i = i + 1
elif i < teams:
i=i+1
popper = random.randint(0, (len(people_list)) - 1)
team_list.append(people_list.pop(popper))
else:
i = 1
j = j + 1
popper = random.randint(0, (len(people_list)) - 1)
team_list.append(people_list.pop(popper))
print (*team_list)
谢谢
解决方案
strip
如果从文件中读取名称时删除换行符,格式化会更容易。一般来说,如果您将数据与您想要的显示方式分开,那么生活会更轻松;稍后添加格式很容易,但是当它全部混合到所有内容中时很难删除/修改它。
import random
# Get complete list of people.
with open("list.txt", "r") as raw_list:
people_list = [line.strip() for line in raw_list.readlines()]
# Build list of (empty) teams.
team_list = [[] for _ in range(int(
input("enter the number of teams you want ")
))]
# Shuffle people and assign them to each team in turn.
random.shuffle(people_list)
for i, person in enumerate(people_list):
team_list[i % len(team_list)].append(person)
# Output.
for i, team in enumerate(team_list):
print(f"Team {i+1}")
for person in team:
print(person)
印刷:
enter the number of teams you want 2
Team 1
dude2
dude3
Team 2
dude4
dude1
每个team
只包含一个名称列表,没有额外的换行符等,这意味着如果您决定要更改显示团队的方式,这非常简单:
for i, team in enumerate(team_list):
print(f"Team {i+1}:", ", ".join(team))
enter the number of teams you want 2
Team 1: dude2, dude3
Team 2: dude1, dude4
推荐阅读
- java - 无法侦听主机 localhost 上的端口 1527
- automation - 需要帮助我处理 azure Runbooks 吗?
- mfc - 如何将 CFile 的内容复制到 CMemFile?
- android - @Bindable 不在 BR 类中生成字段
- google-apps-script - 如何通过文件上传修改 Google 表单响应
- docker - 如何使用基于 kaniko 的 gitlab-runner 构建 node.js 映像?
- ros - ROS Controller_manager
- python-3.x - 一次从 CSV 搜索字符串一行
- java - 有没有办法更改默认映射?
- memory-leaks - 为什么工厂查找表上的“字段指向的内存可能泄漏”