如何格式化多列文本,每列都左对齐?

huangapple go评论110阅读模式
英文:

How to format multiple columns of text, each column being left aligned?

问题

我目前正在尝试使用我的Python代码获得这个输出:

  1. Three of Spades Four of Spades Seven of Spades Ten of Spades
  2. Queen of Clubs Three of Clubs King of Diamonds Nine of Spades
  3. Seven of Clubs Jack of Hearts Six of Hearts King of Hearts
  4. Ten of Diamonds Eight of Clubs Three of Hearts Ace of Hearts
  5. Nine of Clubs Eight of Spades Ten of Hearts Nine of Hearts
  6. Jack of Diamonds Five of Clubs King of Spades Ace of Clubs
  7. Deuce of Spades Deuce of Diamonds Queen of Diamonds Six of Spades
  8. Four of Hearts Ace of Diamonds Five of Diamonds Six of Clubs
  9. Jack of Spades Eight of Hearts Ace of Spades Six of Diamonds
  10. Ten of Clubs Deuce of Clubs Deuce of Hearts Five of Spades
  11. Seven of Diamonds King of Clubs Nine of Diamonds Queen of Spades
  12. Four of Clubs Five of Hearts Four of Diamonds Seven of Hearts
  13. Eight of Diamonds Queen of Hearts Three of Diamonds Jack of Clubs

以下是我的代码打印输出:

  1. counter = 0
  2. for value, suit in initialize_deck():
  3. if counter % 4 == 0:
  4. print()
  5. counter += 1
  6. print(f'{value:5} of {suit:9}', end=' ')

(initialize_deck())是我之前在代码中定义的函数,它返回一个洗牌后的元组列表,包含每张卡牌和花色的组合。

这是我成功获得的最佳输出:

  1. Four of Spades Five of Hearts Queen of Diamonds Six of Clubs
  2. Ace of Hearts Ace of Spades Eight of Diamonds Nine of Diamonds
  3. King of Diamonds King of Clubs Jack of Spades Deuce of Hearts
  4. King of Hearts Eight of Spades Five of Diamonds Seven of Diamonds
  5. Ten of Clubs King of Spades Three of Hearts Seven of Clubs
  6. Deuce of Clubs Jack of Diamonds Eight of Clubs Seven of Spades
  7. Eight of Hearts Queen of Clubs Six of Spades Ten of Diamonds
  8. Ace of Diamonds Four of Diamonds Five of Clubs Jack of Clubs
  9. Nine of Spades Jack of Hearts Ten of Spades Queen of Spades
  10. Nine of Clubs Deuce of Diamonds Six of Diamonds Queen of Hearts
  11. Nine of Hearts Three of Clubs Seven of Hearts Ten of Hearts
  12. Five of Spades Four of Hearts Six of Hearts Deuce of Spades
  13. Ace of Clubs Four of Clubs Three of Diamonds Three of Spades

我不想在文本段之间有任何间隔,但我希望每一列都能对齐。

英文:

I am currently trying to get this output with my python code:

  1. Three of Spades Four of Spades Seven of Spades Ten of Spades
  2. Queen of Clubs Three of Clubs King of Diamonds Nine of Spades
  3. Seven of Clubs Jack of Hearts Six of Hearts King of Hearts
  4. Ten of Diamonds Eight of Clubs Three of Hearts Ace of Hearts
  5. Nine of Clubs Eight of Spades Ten of Hearts Nine of Hearts
  6. Jack of Diamonds Five of Clubs King of Spades Ace of Clubs
  7. Deuce of Spades Deuce of Diamonds Queen of Diamonds Six of Spades
  8. Four of Hearts Ace of Diamonds Five of Diamonds Six of Clubs
  9. Jack of Spades Eight of Hearts Ace of Spades Six of Diamonds
  10. Ten of Clubs Deuce of Clubs Deuce of Hearts Five of Spades
  11. Seven of Diamonds King of Clubs Nine of Diamonds Queen of Spades
  12. Four of Clubs Five of Hearts Four of Diamonds Seven of Hearts
  13. Eight of Diamonds Queen of Hearts Three of Diamonds Jack of Clubs

Here is my code printing the output:

  1. counter = 0
  2. for value, suit in initialize_deck():
  3. if counter % 4 == 0:
  4. print()
  5. counter += 1
  6. print(f'{value:5} of {suit:9}', end=' ')

(initialize_deck()) is a function previously defined earlier in my code, which returns a shuffled list of tuples containing each card and suit combination.

This is the best output I have managed to get:

  1. Four of Spades Five of Hearts Queen of Diamonds Six of Clubs
  2. Ace of Hearts Ace of Spades Eight of Diamonds Nine of Diamonds
  3. King of Diamonds King of Clubs Jack of Spades Deuce of Hearts
  4. King of Hearts Eight of Spades Five of Diamonds Seven of Diamonds
  5. Ten of Clubs King of Spades Three of Hearts Seven of Clubs
  6. Deuce of Clubs Jack of Diamonds Eight of Clubs Seven of Spades
  7. Eight of Hearts Queen of Clubs Six of Spades Ten of Diamonds
  8. Ace of Diamonds Four of Diamonds Five of Clubs Jack of Clubs
  9. Nine of Spades Jack of Hearts Ten of Spades Queen of Spades
  10. Nine of Clubs Deuce of Diamonds Six of Diamonds Queen of Hearts
  11. Nine of Hearts Three of Clubs Seven of Hearts Ten of Hearts
  12. Five of Spades Four of Hearts Six of Hearts Deuce of Spades
  13. Ace of Clubs Four of Clubs Three of Diamonds Three of Spades

I don't want any gaps between the segments of text, but I want each colum to be in a nice line.

答案1

得分: 2

You need to first create a string containing {value} of {suit}, and then format this string to the required width.

  1. for counter, (value, suit) in enumerate(initialize_deck()):
  2. if counter % 4 == 0:
  3. print()
  4. card = f'{value} of {suit}'
  5. print(f'{card:18}', end=' ')

This gives your desired output:

  1. Three of Spades Four of Spades Seven of Spades Ten of Spades
  2. Queen of Clubs Three of Clubs King of Diamonds Nine of Spades
  3. Seven of Clubs Jack of Hearts Six of Hearts King of Hearts
  4. Ten of Diamonds Eight of Clubs Three of Hearts Ace of Hearts
  5. Nine of Clubs Eight of Spades Ten of Hearts Nine of Hearts
  6. Jack of Diamonds Five of Clubs King of Spades Ace of Clubs
  7. Deuce of Spades Deuce of Diamonds Queen of Diamonds Six of Spades
  8. Four of Hearts Ace of Diamonds Five of Diamonds Six of Clubs
  9. Jack of Spades Eight of Hearts Ace of Spades Six of Diamonds
  10. Ten of Clubs Deuce of Clubs Deuce of Hearts Five of Spades
  11. Seven of Diamonds King of Clubs Nine of Diamonds Queen of Spades
  12. Four of Clubs Five of Hearts Four of Diamonds Seven of Hearts
  13. Eight of Diamonds Queen of Hearts Three of Diamonds Jack of Clubs

Note that I used enumerate to count the iterations instead of maintaining a counter manually, but that is irrelevant to formatting the text.

英文:

You need to first create a string containing {value} of {suit}, and then format this string to the required width.

  1. for counter, (value, suit) in enumerate(initialize_deck()):
  2. if counter % 4 == 0:
  3. print()
  4. card = f'{value} of {suit}'
  5. print(f'{card:18}', end=' ')

This gives your desired output:

  1. Three of Spades Four of Spades Seven of Spades Ten of Spades
  2. Queen of Clubs Three of Clubs King of Diamonds Nine of Spades
  3. Seven of Clubs Jack of Hearts Six of Hearts King of Hearts
  4. Ten of Diamonds Eight of Clubs Three of Hearts Ace of Hearts
  5. Nine of Clubs Eight of Spades Ten of Hearts Nine of Hearts
  6. Jack of Diamonds Five of Clubs King of Spades Ace of Clubs
  7. Deuce of Spades Deuce of Diamonds Queen of Diamonds Six of Spades
  8. Four of Hearts Ace of Diamonds Five of Diamonds Six of Clubs
  9. Jack of Spades Eight of Hearts Ace of Spades Six of Diamonds
  10. Ten of Clubs Deuce of Clubs Deuce of Hearts Five of Spades
  11. Seven of Diamonds King of Clubs Nine of Diamonds Queen of Spades
  12. Four of Clubs Five of Hearts Four of Diamonds Seven of Hearts
  13. Eight of Diamonds Queen of Hearts Three of Diamonds Jack of Clubs

Note that I used enumerate to count the iterations instead of maintaining a counter manually, but that is irrelevant to formatting the text.

huangapple
  • 本文由 发表于 2023年3月7日 09:26:15
  • 转载请务必保留本文链接:https://go.coder-hub.com/75657274.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定