对于我的一项任务,用户输入多个字符串,直到输入一个空行,然后将其打印在一行中,这就是我的做法。

words = []
word = input("Word: ")

while word:
  words.append(word)
  word = input("Word: ")

words = (' ').join(words)
print(words)

但是,还有另一部分,它获取列表中每个字符串的第一个字母,并将其以大写字母打印在一行中。我不知道如何将其打印在一行上。这是我的代码:

words_split = words.split() 
for word in words_split:
  i = word[0]
  print(i.upper())

例如,如果我输入ace, bravo, charlie:它会打印出来

A

C

代替

高手

有人可以帮助我吗谢谢(:


我有另一个使用 Python 列表理解的解决方案,我建议阅读有关网络上该方法的更多信息。

如果你有下一个例子:

words = 'Create a list of the first letters of every word in this string'

您可以创建一个新列表,其中每个第一个字母都写这样的内容:

newlist = [x[0].upper() for x in words.split()]
print(newlist)

正确的输出是:

 ['C', 'A', 'L', 'O', 'T', 'F', 'L', 'O', 'E', 'W', 'I', 'T', 'S']

有很多可能性,但这就是我要做的:

words_split = words.split() 
print(''.join(word[0].upper() for word in words_split))

你的问题是打印函数在每次打印后都会向下一行,要解决这个问题,你可以使用 end 参数:

print("a",end = '')
print("b",end = '')

将打印:

ab

代替:

A


在 for 循环外部创建一个空字符串,并在循环内部将每个字母添加到其中。循环结束后,打印字符串。

words_split = words.split()

output = ""

for word in words_split:
    output += word[0].upper()

print(output)

另一种方法是将打印的终止字符更改为空:

words_split = words.split()

for word in words_split:
    i = word[0]
    print(i.upper(), end='')

更新了我的答案,因为 @Smarx 给出了相同的答案。

考虑到:

words = "ABC BCA CAB"

我是这样说的:

first_letter_upper = [word[0].upper() for word in words.split()]
joined_words = ''.join(first_letter_upper)
print(joined_words)

印刷

ABC

docs.python.org/3/library/functions.html#print

在你的例子中输出不应该是 ABC 吗?

那么取消 print(output) 的缩进使其只打印 for 循环的最后结果?

它不会打印最后的结果,而是打印所有字符连接在一起的最终结果。