我想在 for 循环中打印可迭代对象后添加一个新行

问题描述 投票:0回答:2

我正在和刽子手玩。我是个菜鸟。我将要猜测的单词加载到列表中。我正在使用 for 循环来打印带有空格和结尾=“”的单词,以便它们打印出来。打印完所有字母后,我想将光标移动到新行。有没有一种优雅的方法来做到这一点?打印功能的一部分?

hidden_word = list(r.get_random_word().lower()) 对于 hide_word 中的字母: 打印(f“{字母}”,结束=“”)

这会将单词打印在一行中,中间有一个空格“

a b a c a d a b r a

但是在 print 语句之后转到下一行的最佳方法是什么?

只需“打印()”

或者是否有一个开关或者是打印功能的一部分?

python string for-loop
2个回答
0
投票

在循环后添加

print

for letter in hidden_word:
    print(f"{letter} ", end="")
    # Or more clearly/with less work:
    print(letter, end=" ")
print()

或者避免循环并让星形解包加上

print
的默认参数之间的空格来完成工作:

print(*hidden_word)

或使用

str.join
手动添加字母之间的空格并打印结果的单个字符串:

print(' '.join(hidden_word))

其中任何一个都有效。选项 2 是最简洁/直接的,但也可能是性能最低的,但是您正在执行 I/O,因此 CPU 成本无论如何都毫无意义。


0
投票

您有多种选择。哪一个“最好”是主观的;选择您认为最简单的一个。

word = r.get_random_word().lower() # note that strings are iterable without being `list`s

# option 1 (your suggestion is fine)
for letter in word:
  print(letter, end=" ")
print()

# option 2
for index, character in enumerate(word):
  if index == len(word) - 1:
    print(character)
  else:
    print(character, end=" ")

# option 3
print(*word, sep=" ")

# option 4
print(" ".join(word))

选项 3 和 4 显然是最直接(也是最短)的,因此它们是首选。

© www.soinside.com 2019 - 2024. All rights reserved.