3 dog cat pig
という入力があった時に
input_lines = input() list_num = int(input_lines) all_data =[] for i in range(list_num): input_lines = input() all_data.append(input_lines) split_str=[] ans =[] two_str =[] for i in range(list_num): len_str = len(all_data[i]) split_str = list(all_data[i]) last_str = split_str[len_str-1] print(last_str) for i in range(list_num): len_str = len(all_data[i]) split_str = list(all_data[i]) last_str = split_str[len_str-1] z =split_str _str.pop() print(z) if last_str =='s' or 'sh' or 'ch' or 'o' or 'x': y = split_str.pop() print(y) z = y + 'es' ans.append(z) elif last_str =='f' or 'fe': y = split_str.pop() print(y) z = y + 'ves' ans.append(z) elif last_str =='y' and split_str[len_str-2] != 'a' or 'i' or 'u' or 'e' or 'o': y = split_str.pop() print(y) z = y + 'ies' ans.append(z) else: y = split_str.pop() print(y) z = split_str + 's' ans.append(z)
とコードを書きました。
z =split_str.pop() print(z) print(split_str)
と書いた部分で、
['d','o'] ['c','a'] ['p','i']
と出力されました。
2つわからないことがありまして、
ひとつは
split_str _str.pop()
は配列の最後の要素を切り取り、最後の要素を返すメソッドだと調べたら出てくるのですが、私の認識が何かおかしいのでしょうか?
2つめは、
print(split_str)
でも
['d','o'] ['c','a'] ['p','i']
と出力されたことで
zに最後の要素を切りとった結果を格納しているので
どうしてsplit_str までが変更されるのかわからないことです。
スコープの外だと思っていましたが、
変数が更新されているのでしょうか?
「z = split_str.pop()」と書こうと思っていたところを「z =split_str _str.pop()」と書いてしまってませんか?
![guest](/img/icon/icnUserSample.jpg)
回答2件
あなたの回答
tips
プレビュー