文字列をシフトする
与えられた文字列に対して、指定したシフト量 shift だけ位置をずらした文字の並びを順に生成するジェネレーターを作成します。例えば、文字列 'sushi' を右に2文字シフト(shift = 2)すると、生成される並びは 'h', 'i', 's', 'u', 's' になります。左に2文字シフト(shift = -2)すると、生成される並びは 's', 'h', 'i', 's', 'u' になります。
ヒント: 有効なインデックス内を循環させるには % 演算子を使います。正または負の数に適用しても、非負の余りが得られるため、インデックスをシフトするときに役立ちます。
例えば、6 文字からなる文字列を保持する変数 string = 'python' を考えます。
2 % 6 = 2(したがって、string[2 % 6]はt)0 % 6 = 0(したがって、string[0 % 6]はp)-2 % 6 = 4(したがって、string[-2 % 6]はo)
この演習はコースの一部です
Pythonでコーディング面接問題を練習する
演習の手順
- 提供された
len_string変数を使って、文字列のインデックスをループします。 - シフトを行ったとき、そのインデックスに対応する文字を求めます。
- 文字列
'DataCamp'を右に3文字シフトする(つまり"ampDataC")ジェネレーターを作成します。 - ジェネレーターから新しい文字列を作成し、出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def shift_string(string, shift):
len_string = len(string)
# Loop over the indices of a string
for idx in ____:
# Find which character will correspond to the index.
____ ____[____]
# Create a generator
gen = ____
# Create a new string using the generator and print it out
string_shifted = ''.____
print(string_shifted)