質問: temp return list ``` ### 試したこと まだ始めたばかりで色々と頑張って考えてみたのですが、まだプログラミングに慣れていなくて試すも何も分からないです(笑) ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
回答: evalの引数は適切な文字列でないといけないからです。 入力を無理矢理実行しようとしてしまっているので、文法エラーが出ています。 **基本的に、evalとexecは使用禁止です。**初心者のうちはなおさらです。 普通にinputで値を受け取ればよいです。 ``` >>> input_list = input().split() 2 4 5 6 3 >>> print(input_list) ['2', '4', '5', '6', '3'] >>> >>> input_list = list(map(int, input_list)) >>> print(input_list) [2, 4, 5, 6, 3] ``` なお、今回のエラー(Syntax Error)は**値の受け取り方**に全て起因しています。 かなり泥臭い方法ではありますが、反転の処理自体には問題ないように思えます。 もうちょっときれいに解くなら リストのように、値が並んでいるものを**シーケンス**と呼びます。 シーケンスを反転させる方法はいくつかありますが、今回の場合**スライス**を使うと良いでしょう。 こんな感じです。 ``` hoge = 'abcde' print(hoge[::-1]) """出力 edcba """ ``` スライスは見慣れるまでは難解に思えますが、慣れると非常に簡潔です。 覚えておくと、かなり融通が効きます。Pythonのスライスについて その他、気になったところ > > > ``` > def reverse(list): > list = [] > ... > ``` > > せっかく引数としてlistを受け取ったのに、空のリストで上書きしてしまっています。 引数は既にデータがあるものとして扱ってください。 つまり、入力を受け付けるべきは関数reverse内ではないと言うことです。 > > > ``` > def reverse(list): > for i in range(len(list) // 2): > ???????????????? = ????????????????? > return list > ``` > > これ、教科書に載っていたんでしょうか?それでしたら、ちょっと内容が眉唾です。 元々の関数/クラスを隠してしまう(**シャドウイング**)ので、次の変数名は避けてください。 `str` `list` `dict` `set` `max` `min` `int` `float` `sum` などなど。 質問のしかた teratailでは、上記のようにコードを見やすく表示する機能があります。 質問編集画面を開き、コードを選択した状態でボタンを押してください。 特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。