Python最新バージョン取り込みとランチャーの使いっぷり
久しぶりにPythonにて開発。。。
でも、ちょっと前に現場でしかやったことなくて
一から自分で書いたことはないな、、、
ひとまず、ネット解説にあるコードをコピペして思い出しますか。
コピー元ː スイカ割りゲーム
※Python公式サイトにある例です、以下同サイトより抜粋拝借
suikawari.py
import random
import math
def calc_distance(x1, y1, x2, y2):
# 2点間の距離を求める
diff_x = x1 - x2
diff_y = y1 - y2
return math.sqrt(diff_x**2 + diff_y**2)
suika_x = random.randrange(0, 5) # スイカのx座標
suika_y = random.randrange(0, 5) # スイカのy座標
player_x = random.randrange(0, 5) # プレイヤーのx座標
player_y = random.randrange(0, 5) # プレイヤーのy座標
# スイカとプレイヤーの位置が異なる間、処理を繰り返す
while (suika_x != player_x) or (suika_y != player_y):
# スイカとプレイヤーの距離を表示する
distance = calc_distance(player_x, player_y, suika_x, suika_y)
print("スイカへの距離:", distance)
# キー入力に応じて、プレイヤーを移動する
c = input("n:北に移動 s:南に移動 e:東に移動 w:西に移動")
if c == "n":
player_y = player_y - 1
elif c == "s":
player_y = player_y + 1
elif c == "w":
player_x = player_x - 1
elif c == "e":
player_x = player_x + 1
print("スイカを割りました!")
なるなる、こういう感じになるのか。
よし、ではこのコードを実行してみましょう。
えいっ
C:\MAIN\dev\python\pyladies>python suikawari.py
繧ケ繧、繧ォ縺ク縺ョ霍晞屬: 2.23606797749979
n:蛹励↓遘サ蜍� s:蜊励↓遘サ蜍� e:譚ア縺ォ遘サ蜍� w:隘ソ縺ォ遘サ蜍�
あれーーーーーーーーーーーー!?!?
文字化け!!!
もう一回やってみよう。
C:\MAIN\dev\python\pyladies>python suikawari.py
繧ケ繧、繧ォ縺ク縺ョ霍晞屬: 2.23606797749979
n:蛹励↓遘サ蜍� s:蜊励↓遘サ蜍� e:譚ア縺ォ遘サ蜍� w:隘ソ縺ォ遘サ蜍�
・・・・・やっぱり文字化け
調べてみると、ソースの最初に
# coding: utf-8
を、つけると、コンソール実行結果が文字化けしないんだってと、
やってみよう。
C:\MAIN\dev\python\pyladies>python suikawari.py
File "suikawari.py", line 5
SyntaxError: Non-ASCII character '\xef' in file suikawari.py on line 5, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
おやおやおや。
さっきと異なる結果が。
うーーーーーん。。。
先生に聞いたところ
「Pythonのバージョンが古いのでは?
たぶん、最新バージョンでそんなエラーが出るとは思えないのですよ。
新しいものをインストールしましょう!」
と、アドバイスをいただきました。
なるほどね。
では、れっつらインストール。
ここ見てやりましたː Windows版Pythonのインストール
C:\MAIN\dev\python\pyladies>py --list-paths
Installed Pythons found by py Launcher for Windows
-3.9-64 C:\Users\7can3\AppData\Local\Programs\Python\Python39\python.exe *
-3.7-64 C:\Users\7can3\Anaconda3\python.exe
-2.7-64 C:\Python27\python.exe
バージョンの確認、OK!
インストールされているPythonが一連出てきて、今適用されているバージョンには "*" がついてるのですね。
3.7と2.7インストールしてたのか、、、覚えてなぃ
あと、このインストールガイド見て、色々確認しますと、
コードを実行したり、Python周りのこと確認するには
pythonコマンドじゃなくて、pyコマンドを使用した方が良さそうでした。
それでは本題のコード実行してみましょう。
おや、なんだこれは?
C:\MAIN\dev\python\pyladies>py
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
ふむふむふむ。
ランチャー、と言って、バージョン指定実行ができるのね。
これはありがたいお話。
現場だと、お客さんによっては会社のあれこれ。。。の関係上
古いバージョンで実行しないといけない案件があったりするもんね。
では実行。
C:\MAIN\dev\python\pyladies>py
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> suikawari.py
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'suikawari' is not defined
>>>
あれっ
また何か変?
先生によると
「この記号">"は、コマンド1つを実行するためのもので、
ここには例えば"1+2" みたいなコードが入るんですよ」
とのこと。
C:\MAIN\dev\python\pyladies>py
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+2
3
>>>
あっ 本当だ。
では、このアプリコードを動かすにはどうしたらいいのかな?
と、先生に聞くと
先生ː「こうです!」
C:\MAIN\dev\python\pyladies>py suikawari.py
なるほどね~。
では、実行!
C:\MAIN\dev\python\pyladies>py suikawari.py
スイカへの距離: 3.605551275463989
n:北に移動 s:南に移動 e:東に移動 w:西に移動
動いたーーーー!!!
【まとめ】
今回は、下記のことを覚えましたね。
・開発する時は、最新バージョンのPythonをインストールしよう。
・最新インストールすると、ランチャーがインストールされるので、バージョン指定もできるようにしておこう。
新たなことを覚えられて何より。
これからも楽しく開発していきましょう!
※本記事は、PyLadies Japan Advent Calendar 2020 3日目の記事として投稿しております。