繁体   English   中英

循环和列表 - Grok Learning

[英]Looping and Lists - Grok Learning

我今天刚开始在 Grok Learning 上学习编写 Python 代码,我目前被困在这个问题上。 我必须创建一个读取消息的代码,并且:

  • 以相反的顺序阅读单词
  • 只取消息中以大写字母开头的单词
  • 把所有东西都变成小写

我做对了所有事情,但最后我无法摆脱一个空间。 我想知道是否有人知道如何删除它。 这是我的代码:

code = [] 
translation = [] 

msg = input("code: ") 
code = msg.split()
code.reverse()

for c in code:
  if c[0].isupper(): 
    translation.append(c)  

print("says: ", end='')
for c in translation:     
    c = c.lower()
    print(c, end = ' ')

谢谢:)

您需要对translation中的所有字母进行迭代,但最后一个字母并在没有空格的情况下单独打印:

for c in translation[:-1]:     
    c = c.lower()
    print(c, end = ' ')

print(translation[-1], end='')

这是一个常见的问题:

  • 你有一个由 n 个元素组成的序列
  • 您想使用元素之间的分隔符将它们格式化为字符串,从而产生 n-1 个分隔符

如果你真的想构建生成的字符串,我会说 pythonic 的方法是str.join() 它接受任何可迭代的字符串,例如一个列表,并使用调用它的字符串作为分隔符将所有元素连接在一起。 举个例子:

my_list = ["1", "2", "3"]
joined = ", ".join(my_list)
# joined == "1, 2, 3"

在你的情况下,你可以做

msg = "Hello hello test Test asd adsa Das"
code = msg.split()
code.reverse()

translation = [c.lower() for c in code if c[0].isupper()]

print("says: ", end='')
print(" ".join(translation))
# output:
# says: das test hello

对于打印,请注意print也可以采用多个元素并使用分隔符打印它们。 所以,你可以使用这个:

print(*translation, sep=" ")

您也可以省略显式设置 sep 因为空格是默认设置:

print(*translation)

您可以简单地使用join()f-strings

result = ' '.join(translation).lower()
print(f"says: {result}")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM