回答編集履歴

2

追記

2018/09/04 14:44

投稿

quickquip
quickquip

スコア11065

test CHANGED
@@ -24,6 +24,22 @@
24
24
 
25
25
  今見えている文字列は、そのバイト列と等価なリテラル表現でしょう。
26
26
 
27
+ このファイルがUTF-8で書かれていれば、"売"の文字はE5,A3,B2という3バイトで表現されているはずです。結果に`('\xe5\xa3\xb2……`と表示されいてますからこれが、この部分のバイト列としての表現であることが分かります。
28
+
27
29
 
28
30
 
29
31
  以上から、python2で実行しているのだと確信できます。
32
+
33
+
34
+
35
+ ----
36
+
37
+
38
+
39
+ コマンドラインで
40
+
41
+ `python -V` でpythonのバージョンが
42
+
43
+ `which python`でどこのpythonを起動しているかが
44
+
45
+ 分かりますよ。

1

追記

2018/09/04 14:44

投稿

quickquip
quickquip

スコア11065

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