Help us understand the problem. What is going on with this article?

ひよっこエンジニアがPythonを触ってみた

はじめに

ご覧いただきありがとうございます!
そしてはじめまして!shii_yuです。
プログラミングほぼ未経験者ですがアドベントカレンダーを書かせていただくことになり初投稿をさせていただきます!
Pythonの知識が浅くご指摘があれば是非よろしくお願いします。
未熟ですがよろしくおねがいします。

なぜPython?

アドベントカレンダーを書いてみたかったが、知識もなければアウトプットできるものもない私。
とりあえず初心者が作れるものを作ってみよう...と考え選ばれたのはじゃんけんでした!
if文だけでいけそうだし簡単でしょ!と思っていました。(すみません)
じゃんけんアプリを作ろう!となった時言語で迷ったのですがPythonを選ばせていただきました。
なぜPythonにしたかというとあいうえお = あいうえお(文字列=文字列)が出来るからです:smirk:
プログラミング言語はいろいろありますがcやjavaなどはあいうえお = あいうえおができないらしいのです...。
厳密に言うと出来るらしいのですが文字コードやらなんやらややこしい!!よくわからん!!ってなりました。
JavaScriptもできるのですがイケてそうだしキてそうだしとりあえずPythonにしました。

開発環境について

突然ですが、皆様のパソコンはMacですか?
ちなみに私はMacに憧れるWindowsユーザーです。
環境としましてはwindows10に入っているUbuntu 18.04でpython 3.3.6とpip 9.0.1をインストールして使っています。
環境構築についてはAnacondaがよく使われていると感じました。
今回は私が実装した方法(Macに憧れるwindows10ユーザー向け)での説明をしていきます。

環境構築

Windows Subsystem for Linuxのインストール

  1. 左下にある検索のところから「機能」と入力を行い、候補に現れるWindowsの機能の有効化または無効化を選択。
  2. 以下の画像のWindows Subsystem for Linuxにチェックを入れてokを押し指示に従いインストールした後に再起動を行う。 python1.PNG

Ubuntu 18.04 LTSのインストール

  1. Microsoft Store」を開いていただき、「ubuntu」と検索するとUbuntu 18.04 LTSが出てくるので選択し、インストールを行う。
    pyhonubuntu.PNG

  2. インストールが終わればプログラムを起動し、任意のユーザー名とパスワードを入力(今後必要になる)

Pythonのインストール

  1. ここからはターミナルに以下のコマンドを(1)から順番に打ってもらい、Pythonを導入していく。
(1) $ sudo apt update 
(2) $ sudo apt upgrade 
(3) $ sudo apt -y install python3 
(4) $ python3 -V 

(4)によって表示されたバージョンが,3.6以上であることを確認.
バージョンが表示されない場合はなんらかのウイルス対策ソフトが入っている可能性が大なのでその解除をしてみてください。

(5) $ sudo apt -y install python3-pip 
(6) $ sudo pip3 install --user -U pip 
(7) $ sudo pip3 install --user -U setuptools jupyterlab numpy matplotlib tensorflow 

以上でPythonとpipの導入は終わりです。
ターミナルでjupyter labと打っていただければ、URLがでてくるのでそれをコピーしてブラウザに貼り付ければ以下の画面が出てきます。NotebookのPython3を押していただければソースコードを入力できる画面になり、Pythonを実行できます!
pyhongamen.PNG

じゃんけんアプリについて

環境構築で疲れておしまい!と言いたいところですが、これから本題のじゃんけんについて話していきます!

じゃんけんアプリの流れを考えよう!

作る前に流れを考えてみました。
・qが押されるまで何回でも入力でき、qが入力されると終わる。
・「グー」「チョキ」「パー」の入力をする。
・「勝ち「負け」「あいこ」の判定をする。
・「グー」「チョキ」「パー」以外入力されるともう1度入力できる。
・相手の手はrandomを使ってみる。

じゃんけんアプリに必要なこと

その1 変数の宣言
その2 入力と出力
その3 判定文
その4 繰り返し文
その5 random

とりあえず順番に考えていくことにします!

その1 変数の宣言

基本中の基本中の基本というやつですね。(しかしだいたいここがわけわからん)
私はCやJavaに少し触れてきたので、変数の宣言といえばint a = 0var a = 0他にもなんかごちゃごちゃした書き方があったり、intやstring型、double型などいろいろな型の指定をしなければいけなかったり、まず、変数の宣言だけでも難しかったです。Pythonの宣言は以下のとおりです。

なんと!!!!簡単!!!!!!なんと!!!便利。(型は勝手に考えてくれるだとかなんとか)ちなみに、型を付けたいときは型ヒントとかいうやつでx: intでつけれるみたいですね(1番下のやつです)便利。なぜ334なんでしょう...。

その2 入力と出力

基本中の基本というやつですね。
出力はprintf()で()の中に文字を入れてあげれば出力できます。
入力はinput()で出来ます。
input.PNG

input関数は入力されたデータを文字列として返します。
「グー」「チョキ」「パー」でじゃんけんしたい私にとってはとても嬉しいですね。
整数型に変更したい場合はint(input("入力してください")とする必要があります。

その3 判定文

勝ったか負けたかの判定文が必要です。
Pythonのif文はどうやらインデントで区切られる...?!波括弧({})がいらない!?!?
判定文は以下のようにインデントで区切られるみたいですね。
ifbun.PNG

(他言語では、if文の中身が1行だけのときは波括弧つけなくてもいいのに、つけてたくらいの愛用者でした。)
悲しい。インデントが規格であるらしいですね。これは仕方がないので従うしかないですね。

その4 ループ文

ループ文はwhile文といわゆるfor文があります。今回はwhile文を使用します。
while文はある条件が行われるまで、for文は何回分といった感じなので、while文が向いていると思いました。
ループ文もやはりとは思いましたがインデントで区切られます。Pythonでwhile文を書くと以下のようになります。
while.PNG

インデントでループ文を記述する、絶対ややこしいと思いましたが、仕方がないので従うしかないです。
なれてくると、こっちのほうがやりやすいのでしょうか?永遠の疑問ですね。

その5 random

敵の手を決めるためにrandomな整数がほしいということで、randomを使います。Pythonには標準ライブラリと呼ばれるものに関数random()があるので、import randomの記述を行えばrandom()でrandomな整数がどこでも呼び出すことが出来ます。今回はrandom(1,3)の3つの数字の中でグーチョキパーを決めていきます。

実際にソースコードを書いていこう!

この5つさえあれば簡単にソースコードがかけるはず!!
ってことで書いていきました。
勝手にいくつか機能を付け加えてみました。

janken.ipynb
import random
py_number = random.randint(1,3)
my_hand = input("グーかチョキかパーを入力してください。終了する時はqを押してください。")

while my_hand != "q":
    if py_number == 1:
        py_hand = "グー"
    elif py_number == 2:
        py_hand = "チョキ"
    else:
        py_hand = "パー"

    if  my_hand == py_hand:
        judge = "あいこ"
    else:
        if my_hand == "グー":
            if py_hand == "チョキ":
                judge = "勝ち"
            else:
                judge = "負け"
        elif my_hand == "チョキ":
            if py_hand == "グー":

                judge = "負け"
            else:
                judge = "勝ち"
        elif my_hand == "パー":
            if py_hand == "グー":
                judge = "勝ち"
            else:
                judge = "負け"
        else:
            my_hand = input("グーかチョキかパーを入力してください。")
            continue           

    print(f'あなたの手は{my_hand}で相手の手は{py_hand}なので')    
    print(f'結果は{judge}です。')

    py_number = random.randint(1,3)
    my_hand = input("グーかチョキかパーを入力してください。終了する時はqを押してください。")

実行結果

gutyokipa.PNG

やってみて

頭の中では思い浮かんでも、実際にコードを書くと全然思い通りにいかないなと思いました。
このソースコードを見られた方は「何回inputあるんだ」とも思っていらっしゃるかもしれません。
きれいなコードと言われるものを書くのは難しいとしみじみと感じました。
特に!!!!!どこまでがwhileでループが回っているんだ!!!と何回も無限ループに陥り....
あと、continueがなかなか出てこず、グーチョキパー以外の文字でも判定されるようになったり.....。
じゃんけん簡単!if文だけでできるでしょ!って思ってたのが大間違いでした。

最後に

この記事を読んでくださった方は、プログラミングを始めたばかりの人、プログラミングに深く関わってきてる人、様々な人がいると思います。
私もプログラミングが難しくてよくわからんくて無理やばいとか思うことが何度もあります、なんなら今も思っています。
しかし、それを乗り越えると楽しさが残ると思います。無理もうプログラミングやめたいいと思っている方
プログラミングは楽しみながらしましょう!そして楽しいプログラミングライフを送りましょう!!!

P.S.綺麗なソースコードをかけるようになりたいですね。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away