繁体   English   中英

我如何将二维列表打印为偶数表?

[英]how do i print the 2d list as an even table?

#Create a program that allows 2 players to throw a 6 sided dice and record the roll value 10 times. 
#The winner is the player with the highest total 
#This task must store the results in a 2D array 

#Extra: 
#Work out the average roll across the 10 throws per player and display the result 
#Frequency analysis broken down per player and per game

from random import randint

results = [[],[]]

for i in range (2):
    
    player = []
    total = 0
    average = 0
    
    #player enters their name
    name = input(f"\nEnter your name player {i + 1}: ")
    player.append(name)
    
    print(f"Player {i + 1} it is your turn")
    
    for x in range(10):
        print("\nTo roll the die press any key")
        input()
    
        roll = randint(1,6)
        player.append(roll)
        print("You rolled a", roll)
        total += roll
    
    average = total/10
    
    player.append(total)
    player.append(average)
    results.append(player)
    
print("""\nNAME  R1  R2  R3  R4  R5  R6  R7  R8  R9  R10  TOTAL  AVG""")

for i in results:
    for c in i:
        print(c,end = "   ")
    print()

我不确定如何均匀地隔开这些值,以便它们在打印时排成一行。

我尝试在打印时在值之间添加空格,但如果其中一个名称或数字的长度不同,则整行将与列不对齐。

您可以使用以下语法:

print('%5s' % str(c))

基本上:

  • %字符通知 python 它必须用某些东西代替令牌
  • s字符通知 python 令牌将是一个字符串
  • 5 (或您想要的任何数字)通知 python 用最多 5 个字符的空格填充字符串。

我发现在How to print a string at a fixed width? .

计算两个名字之间的差异

diff = abs(len(results[2][0]) - len(results[3][0])) #abs = absolute value

比较两个名字的长度:

if len(results[2][0] ) > len(results[3][0]):
    results[3][0] = results[3][0] + " "*diff # add spaces much as difference between 2 names
else:
    results[2][0] = results[2][0] + " "*diff

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM