

初心者用の本で年を入れると干支がわかるプログラムを書いているのですが

[code]

    year_str = input('あなたの生まれ年の西暦を４桁で入力してください: ')
    year = int(year_str)
    number_of_eto = (year + 8) % 12
    print('あなたの干支は', number_of_eto, '番です。')
    
[/code]

と書くと  
あなたの生まれ年の西暦を４桁で入力してください:  
と出て年を入力すると

[code]

    ('\xe3\x81\x82\xe3\x81\xaa\xe3\x81\x9f\xe3\x81\xae\xe5\xb9\xb2\xe6\x94\xaf\xe3\x81\xaf', 2, '\xe7\x95\xaa\xe3\x81\xa7\xe3\x81\x99\xe3\x80\x82')
    
[/code]

と出てしまいます。

本だとあなたの干支は〜番ですと出るはずなのですが、どこか書き方が間違っていますか❓


CC BY-SA 4.0
2018-07-01T00:38:21.227
45196
2018-07-01T01:49:44.297
2018-07-01T01:49:44.297
19110
29133
question
python python3
print()関数で \xe3\x81\x82〜 のように出力されてしまう


Python 3 をお使いなのであれば、このコードで正しく出力されるはずです。しかし Python 2
では質問文にあるようにバックスラッシュでエスケープされたものがたくさんある文字列が出力されます。これは、Python 3.0
から[プログラム中にある文字列のエンコードの扱いが変わった](https://docs.python.org/ja/3.7/whatsnew/3.0.html#text-
vs-data-instead-of-unicode-vs-8-bit)ことと関係しています。

ということで、まずはお使いの Python のバージョンをご確認ください。これはたとえばターミナルで以下のコマンドを入力すると確かめられます。

[code]

    python --version
    
[/code]

Python 2.x がインストールされていれば、それが原因です。解決法はいくつかあります。

  * `python3` コマンドが存在すれば、`python` コマンドの代わりにこれを使う。これは Python 3.x 系を動かすためのコマンドです。
  * 今後 2.x 系を使う予定が無いのであれば、一度 2.x を削除して 3.x をインストールする。これのやり方は OS やパッケージ管理ツールによって異なります。やり方が分からなければ別途ご質問ください。


CC BY-SA 4.0
2018-07-01T00:56:01.303
45197
2018-07-01T00:56:01.303
19110
45196
answer