【问题标题】:How to capitalize 1st and 4th characters of a string?如何将字符串的第一个和第四个字符大写?
【发布时间】:2020-01-10 16:25:30
【问题描述】:

OLD MACDONALD:编写一个函数,将名字的第一个和第四个字母大写

我正在尝试以不同的方式编写此内容,而且我也觉得有一种更简单的方法可以做到这一点。不能,您直接应用它而不获取字符串的所有其他单词?还是分道扬镳之类的?

这是我尝试另一种方式的尝试之一。我也在尝试使用forif 声明来做到这一点。任何帮助表示赞赏。

def old_macdonald(words):
    wordletter = words[0]
    fourthletter = words[3]
    newword = []

    for i,l in enumerate(words):
        if i[0]:
            newword = l.capatalize
            return newword
        if i[3]:
            newword = l.capatalize
    return newword

【问题讨论】:

标签: python string uppercase


【解决方案1】:

这是 IMO 最清晰的方式

def old_macdonald(name):
    mylist = list(name)
    mylist[0] = mylist[0].upper()
    mylist[3] = mylist[3].upper()
    return ''.join(mylist)

【讨论】:

    【解决方案2】:
    def old_macdonald(name):
        letters = list(name)
        for index in range(len(name)):
            if index == 0:
                letters[index] = letters[index].upper()
            elif index == 3:
                letters[index] = letters[index].upper()
        return "".join(letters)
    

    这个对我有用

    【讨论】:

    • 欢迎来到 SO 并感谢您的回答!当您已经有了索引时,为什么要使用循环进行迭代?列表是随机访问的,所以你可以说letters[0] = letters[0].upper()
    【解决方案3】:

    此代码将生成字符串 Capital 的第一个和第四个元素。

    def cap(name):
        first = name[0]
        mid = name[1:3]
        second = name[3]
        rest = name[4:]    
        return first.upper() + mid + second.upper() + rest
    
    
    cap('kahasdfn')
    

    【讨论】:

      【解决方案4】:

      这是一种方法。您确实需要将字符串拆分为字符列表来更改单个字符,因为字符串是不可变的,然后使用 join 将它们转换回字符串。

      def old_macdonald(name):
          letters = list(name)
          for letter_to_capitalize in [1, 4]:
              if len(letters) >= letter_to_capitalize:
                  letters[letter_to_capitalize - 1] = letters[letter_to_capitalize - 1].upper()
      
          return "".join(letters)
      

      【讨论】:

        【解决方案5】:

        一个非常简单且可修改的示例。

        def old_mcdonald(word):
            indexes = (0,3) #letters i want to cap
            new_word = "".join([v.capitalize() if i in indexes else v for i,v in enumerate(word)])
            return new_word
        

        【讨论】:

          【解决方案6】:
          def old_macdonald(s):
              return ''.join([s[:1].upper(), s[1:3], s[3:4].upper(), s[4:]])
          
          # s[:1] -  letter index 0 (first)
          # s[1:3] - letters index 1-2
          # s[3:4] - letter index 3 (fourth)
          # s[4:]  - letters index 4 onward
          test_string = "abcdefghijklmnopqr"
          print(old_macdonald(test_string )) # AbcDefghijklmnopqr
          

          【讨论】:

            【解决方案7】:

            我喜欢这样写:

            def old_macdonald(word):
                indices = (0, 4)
                return ''.join(c.capitalize() if index in indices else c for index, c in enumerate(word))
            

            虽然有点长,所以你可能更喜欢写得更清楚:

            def old_macdonald(word):
                indices = (0, 4)
                new_string = []
                for index, c in enumerate(word):
                    new_string.append(c.capitalize() if index in indices else c)
                return ''.join(new_string)
            

            【讨论】:

            • 糟糕,看起来 TheLazyScripter 已经说了几乎完全相同的事情
            【解决方案8】:
            def old_macdonald(s):
                w=""
                for i in s:
                    t=s.index(i)
                    if t==0:
                        w=w+i.upper()
                    elif(t==3):
                        w=w+i.upper()
                    else:
                        w=w+i
                print(w)
            old_macdonald("aman")
            

            【讨论】:

              【解决方案9】:
              def old_macdonald(s):
                  return s[0:3].capitalize() + s[3:].capitalize()
              

              https://ideone.com/2D0qbZ

              【讨论】:

                【解决方案10】:

                这个成功了

                def old_macdonald(name):
                    word = ''
                    for index,letter in enumerate(name):
                        if index == 0 or index == 3:
                            letter = name[index].capitalize()
                            word += letter
                        else:
                            word += letter
                    return word
                

                【讨论】:

                  【解决方案11】:
                  def old_macdonald(name):
                      return (name[0].upper()+name[1:3].lower()+name[3].upper()+name[4:].lower())
                  

                  【讨论】:

                  • 没有任何解释的代码转储很少有帮助。 Stack Overflow 是关于学习的,而不是提供 sn-ps 来盲目复制和粘贴。请edit您的问题并解释它如何比OP提供的更好。见How to Answer
                  猜你喜欢
                  • 1970-01-01
                  • 2020-04-29
                  • 2022-01-09
                  • 2014-06-08
                  • 1970-01-01
                  • 2010-12-25
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多