2017-08-23 6 views
3

私は、この質問の回答/解決策をもう一度見てきました。しかし、私はsliceを再割り当てすることについて何も見つけることができませんでした。私はオンラインコードの教師Treehouseのクイズの1つをしています。彼らは私にこの質問/割り当てを与えてくれました:スライスを文字列に割り当てる

私のために新しい機能を作成する必要があります。 これはという名前のsillycaseとなり、1つの文字列を引数として取ります。 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の前半を小文字にする方法と、後半を大文字にする方法です。

答えて

1

文字列のメソッド.lower().upper()は新しい文字列を返し、インプレースでは機能しません。動作するはずです以下は、直接新しいlowerによって返された文字列とupperを追加します。

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

か、あなたのケースで:

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

sillycase('treehouse') # 'treeHOUSE' 
1

あなたは、たとえば、変数へ.lower().upper()を割り当てる必要があり

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

文字列は不変です。あなたは

begining.lower() 
end.upper() 

beginingendが変更されていない行うと、彼らは単に、それぞれあなたの下限と大文字の文字列を返します。ですから、結果を得るためには、このようなことを期待しているでしょう。

begining = begining.lower() 
end = end.upper() 
関連する問題