【问题标题】:How to handle with spaces with string looping?如何处理带有字符串循环的空格?
【发布时间】:2021-03-02 04:24:55
【问题描述】:

对于我在hackerrank 的任务,我需要编写一个程序,将字符串作为输入并以倒序和反转字符返回该字符串,这意味着像“hELLO wORLD”这样的输入应该返回为“Hello World”,ı做了所有的事情,但是当我尝试运行它时,它停在空格上,不知道如何解决。

def reverse(sentence):
mylist = []
splitted = sentence.split(" ")
for i in range(len(splitted)):
    mylist.append(splitted[-1])
    splitted.pop(-1)
    
for i in mylist:
    chars = []
    for char in i:
        if char.islower():
            char = char.upper()
            chars.append(char)
        elif char.isupper():
            char = char.lower()
            chars.append(char)
        else:
            char = char
            chars.append(char)
    print(chars)
    newmessage = ""
    for i in chars:
        newmessage += str(i)
    print(newmessage)

reverse("helLoWorld")

【问题讨论】:

标签: python string loops replace


【解决方案1】:

您可以查看 Chris Charley 评论的swap case,但如果您想使用您的代码,您可以跳过拆分句子以保留空格。

def reverse(sentence):
    # mylist = []
    # splitted = sentence.split(" ")
    # for i in range(len(splitted)):
    #     mylist.append(splitted[-1])
    #     splitted.pop(-1)

    chars = []
    for i in sentence:
        for char in i:
            if char.islower():
                char = char.upper()
                chars.append(char)
            elif char.isupper():
                char = char.lower()
                chars.append(char)
            else:
                char = char
                chars.append(char)
        # print(chars)
    newmessage = ""
    for i in chars:
        newmessage += str(i)
    print(newmessage)


reverse('hELLO wORLD')

输出:

Hello World

【讨论】:

  • 谢谢,但是,我必须用逆序重写字符串,比如如果输入是“hello world”,它应该提示“world hello”。这就是我使用拆分的原因。
  • 嗯,你可以在得到newmessage之后使用split来改变句子的顺序。
【解决方案2】:
def reverse(sentence):
complete_string =""
mylist = []
splitted = sentence.split(" ")
for i in range(len(splitted)):
    mylist.append(splitted[-1])
    splitted.pop(-1)

print(mylist)
    
for x,i in enumerate(mylist):
    chars = []
    for char in i:
        if char.islower():
            char = char.upper()
            chars.append(char)
        elif char.isupper():
            char = char.lower()
            chars.append(char)
        else:
            char = char
            chars.append(char)
    print(chars)
    newmessage = ""
    for i in chars:
        newmessage += str(i)
    print(newmessage)
    if len(mylist)-x != 1:
        complete_string += newmessage + " "
    else:
        complete_string += newmessage
print(complete_string)

reverse("你好世界")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    相关资源
    最近更新 更多