对于我的一项任务,用户输入多个字符串,直到输入一个空行,然后将其打印在一行中,这就是我的做法。
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 循环的最后结果?
它不会打印最后的结果,而是打印所有字符连接在一起的最终结果。