我已经四处寻找这个问题的答案/解决方案了,因为看起来应该已经问过了。但我没有找到任何关于重新分配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
小一半的前半部分,而后半部分是大写的。
答案 0 :(得分:1)
字符串的.lower()
和.upper()
方法会返回一个新字符串,并且不会就地工作。以下内容可以直接添加由lower
和upper
返回的新字符串:
def sillycase(example):
beginning = example[:len(example) // 2]
end = example[len(example) // 2:]
example = beginning.lower() + end.upper()
return example
sillycase('treehouse') # 'treeHOUSE'
答案 1 :(得分:1)
您需要将.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
答案 2 :(得分:0)
字符串是不可变的!当你这样做
def self.sort_temp(range)
array = where(max_temperature: range).all.map {|condition| condition.date}
trip_nums = array.map do |date|
Trip.where(start_date: date.beginning_of_day...date.end_of_day).count
end
output = {}
output[:max] = trip_nums.sort.last
output[:min] = trip_nums.sort.reverse.last
output[:avg] = trip_nums.inject(:+) / trip_nums.length unless trip_nums.length == 0
output
end
begining.lower()
end.upper()
和begining
没有改变,它们只是简单地返回大小写的字符串。所以为了得到你期望做的结果
end