【问题标题】:assigning slices to strings将切片分配给字符串
【发布时间】:2018-01-31 09:57:45
【问题描述】:

我已经四处寻找这个问题的答案/解决方案,因为它似乎应该已经被问过了。但我没有找到任何关于重新分配slice 的信息。我正在为在线代码老师 Treehouse 做一个测验,他们给了我这个问题/作业:

我需要你为我创建一个新函数。 这一个将被命名为 sillycase ,它将采用单个字符串作为参数。 sillycase 应该返回相同的字符串但是前半部分应该小写,后半部分应该大写。 例如,对于字符串“Treehouse”,sillycase 将返回“treeHOUSE”。 不要担心四舍五入,但请记住索引应该是 整数。您需要使用 int() 函数或整数除法,//。

我已经解决了其他人的问题并走到了这一步:

def sillycase(example):
    begining = example[:len(example) // 2]
    end = example[len(example) // 2:]
    begining.lower()
    end.upper()
    example = begining + end
    return example

我不知道为什么这是错误的,但是当我以 "Treehouse" 为例运行它时,它会返回 "Treehouse"。如果还不清楚,我的问题是如何将string 的前半部分小写,后半部分大写。

【问题讨论】:

    标签: python string slice


    【解决方案1】:

    用于字符串的方法.lower().upper() 返回一个新字符串并且不能就地工作。以下应该可以直接添加lowerupper 返回的新字符串:

    def sillycase(example):
        beginning = example[:len(example) // 2]
        end = example[len(example) // 2:]
        example = beginning.lower() + end.upper()
        return example
    
    sillycase('treehouse')   # 'treeHOUSE'
    

    【讨论】:

      【解决方案2】:

      需要给变量赋值.lower().upper(),例如:

      begining = begining.lower()
      end = end.upper()
      example = begining + end
      

      或者在你的情况下:

      def sillycase(example):
          begining = example[:len(example) // 2].lower()
          end = example[len(example) // 2:].upper()
          example = begining + end
          return example
      

      【讨论】:

        【解决方案3】:

        字符串是不可变的!当你这样做

        begining.lower()
        end.upper()
        

        beginingend 没有改变,它们只是分别返回小写和大写字符串。所以为了得到你期望的结果,做这样的事情

        begining = begining.lower()
        end = end.upper()
        

        【讨论】:

          猜你喜欢
          • 2020-11-27
          • 1970-01-01
          • 1970-01-01
          • 2015-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-09
          相关资源
          最近更新 更多