Python 为什么我的程序会在行的开头添加额外的空格?

Python 为什么我的程序会在行的开头添加额外的空格?,python,list,spaces,txt,Python,List,Spaces,Txt,你好,我希望你能帮助我 我正在尝试制作一个算法,该算法获取一个包含名称列表的txt文件,对它们进行随机排序,并将它们分配给团队 它是有效的,我唯一的问题是,出于某种原因,它在列表的所有行中添加了一个额外的空间,除了第一个元素。它不是txt文件,列表在那里很好 例如,我想要这样的输出: team 1 dude1 dude2 team 2 dude3 dude4 相反,它是这样做的: team 1 dude1 dude2 team 2 dude3 dude4 因此,第一队在没有空间的情

你好,我希望你能帮助我

我正在尝试制作一个算法,该算法获取一个包含名称列表的txt文件,对它们进行随机排序,并将它们分配给团队

它是有效的,我唯一的问题是,出于某种原因,它在列表的所有行中添加了一个额外的空间,除了第一个元素。它不是txt文件,列表在那里很好

例如,我想要这样的输出:

team 1
dude1
dude2
team 2
dude3
dude4
相反,它是这样做的:

team 1
 dude1
 dude2
 team 2
 dude3
 dude4
因此,第一队在没有空间的情况下完成了这项任务,但其他所有项目在最后都有空间

代码如下:

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)
随机导入
原始列表=打开(“list.txt”、“r”)
人员列表=[]
对于原始列表中的行。readlines():
人员列表。追加(行)
原始列表。关闭()
团队列表=[]
team_num=int(输入(“输入您想要的团队数量”))
len_people=int(len(人员列表))
团队=列队人数/团队人数
len_people=int(len_people+team_num)
j=1
i=1
对于范围内的n(len_人):
如果i==1:
如果j>团队数量:
popper=random.randint(0,(len(人员列表))-1)
team_list.append(people_list.pop(popper))
其他:
team_list.append(f“team{j}\n”)
i=i+1
elif i<团队:
i=i+1
popper=random.randint(0,(len(人员列表))-1)
team_list.append(people_list.pop(popper))
其他:
i=1
j=j+1
popper=random.randint(0,(len(人员列表))-1)
team_list.append(people_list.pop(popper))
打印(*团队列表)

谢谢

print(*team_list)
就像将
team_list
的每个元素作为位置参数传递一样。默认情况下,
print
在每个参数之间放置一个空格。将其更改为
print(*team_list,sep='')
以抑制默认的空格分隔符。

在对
print()
的一次调用中打印多个值时,会在它们之间放置一个空格。例如,如果你写信

a = "abc"
b = "def"
print(a, b)
它打印

abc def
因此,当您调用
print(*team_list)
时,它会在每个团队成员之间留出一个空格

您可以使用
sep
参数来更改:

print(team_list, sep="")

如果在从文件中读取换行符时使用
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))

请提供预期的价格。显示中间结果与您预期的不同之处。我们应该能够复制和粘贴一个连续的代码块,执行该文件,并再现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和期望的输出测试我们的建议。发布您的整个程序是多余的。格式化输出描述以显示错误。您当前的代码失败,因为我们没有您的输入文件。只需在发布的示例中硬编码测试数据即可替换该输入。您确定用代码创建了示例吗?该示例包含小写的“team”,但代码是大写的。太棒了!我不知道。谢谢
enter the number of teams you want 2
Team 1: dude2, dude3
Team 2: dude1, dude4