簡體   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