質問するログイン新規登録

回答編集履歴

2

追記

2018/09/04 14:44

投稿

quickquip
quickquip

スコア11353

answer CHANGED
@@ -11,5 +11,13 @@
11
11
 
12
12
  python2のstr型は文字列型**ではなくて**バイト型です。printに直に指定されたらその**バイト列**をだしますが、リストやタプルの中にあったら`repr`関数に渡されて**ソースコードに書いたときに等価になる表現**に置き換えられます。
13
13
  今見えている文字列は、そのバイト列と等価なリテラル表現でしょう。
14
+ このファイルがUTF-8で書かれていれば、"売"の文字はE5,A3,B2という3バイトで表現されているはずです。結果に`('\xe5\xa3\xb2……`と表示されいてますからこれが、この部分のバイト列としての表現であることが分かります。
14
15
 
15
- 以上から、python2で実行しているのだと確信できます。
16
+ 以上から、python2で実行しているのだと確信できます。
17
+
18
+ ----
19
+
20
+ コマンドラインで
21
+ `python -V` でpythonのバージョンが
22
+ `which python`でどこのpythonを起動しているかが
23
+ 分かりますよ。

1

追記

2018/09/04 14:44

投稿

quickquip
quickquip

スコア11353

answer CHANGED
@@ -1,2 +1,15 @@
1
1
  python3のコードをpython2で実行しています。(python2の正しい=仕様通りの動作です)
2
- python2を使う理由はありません。ぜひpython3をインストールしましょう。
2
+ python2を使う理由はありません。ぜひpython3をインストールしましょう。
3
+
4
+ ----
5
+
6
+ `print`はpython3では関数ですが、python2では**文**です。
7
+
8
+ `print("売上の値を変更します。")` の括弧は関数呼び出しの括弧ではなくて、結合優先順の指定に思われていて、`print "売上の値を変更します。"`と同じ動作をしています。
9
+
10
+ `print("売上は",sale,"万円です。")`は、`("売上は",sale,"万円です。")`というタプルを表示しろ、という意味になっていて、実際タプルの形式で表示されています。
11
+
12
+ python2のstr型は文字列型**ではなくて**バイト型です。printに直に指定されたらその**バイト列**をだしますが、リストやタプルの中にあったら`repr`関数に渡されて**ソースコードに書いたときに等価になる表現**に置き換えられます。
13
+ 今見えている文字列は、そのバイト列と等価なリテラル表現でしょう。
14
+
15
+ 以上から、python2で実行しているのだと確信できます。