見出し画像

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日目の記事として投稿しております。

いいなと思ったら応援しよう!