見出し画像

pythonじゃんけん勇者の旅.Lv6-型-

じゃんけんプログラムを少しづつ改良してPythonのレベルアップを目指すnote.Lv6

前回のあらすじ

・defで関数化

↓マガジン一覧はコチラ↓


今回の完成イメージ

じゃんけんをして、グー・チョキ・パーのどれを選択したかを出力する

今回の学習内容

・inputおさらい
・+の意味
・型を学ぶ


inputおさらい

さて、再びinputを使ってグー・チョキ・パーのどれを選択したを変数に格納しましょう。
コードの例は下記です

def jyanken_input():
    jyanken = input(r'あなたの手は?{1:グー,2:チョキ,3:パー}:')
    print('あなたは' +  jyanken + 'を選択しました')

jyanken_input()

出力結果は下記です

あなたの手は?{1:グー,2:チョキ,3:パー}:1
あなたは1を選択しました

+の意味

「+」は文字通り足すの意味ですが、
計算としての「+」以外にも文字列をつなげたいときにも「+」を使用します。

例えば下記の構文

apple = 'りんご'
banana = 'バナナ'
orange = 'オレンジ'

print(apple + banana + orange)

出力結果は

りんごバナナオレンジ

となります

では数字の場合はどうでしょうか

x = 2
y = 3
z = 5

print(x + y +z)

出力結果は

10

となり、ちゃんと計算されてますよね。先ほどは文字列がつながったのに、今度は計算されました。文字列がつながって「235」と出力されてもいいはずなのになぜでしょうか?

型とは 文字列と数字

その値が文字列なのか数字なのかは変数に代入するときに決定しています
str = 'object'
とした場合はシングルコーテションで囲った=文字列だと認識されます
num = 1
とした場合はシングルコーテションのない数値なので数値だと認識されます。

なので、文字列をつなげるのか、足し算をするのかは変数の型によって判別されるのです。

では、文字列と数字が混在しているとどうなるのか下記を実行してみましょう

string = '2'
num = 3

print(string + num)

エラーが返ってきました

Traceback (most recent call last):
  File "yuusya_lv1.py", line 4in <module>
    print(str + num)
TypeError: can only concatenate str (not "int") to str

タイプエラーとなっているので型のエラーだと言ってるようです。
strと言ってる部分が文字列で、intと言ってる部分が数字をさします。

型変換してみましょう

string = '2'
num = 3

string = int(string)

print(string + num)

とすると、出力結果は「5」になります。
何が起きているかというと、string = int(string)で変数stringを上書きをしています。int(object)とすることで、値が数字型に変換されます。変数stringが数字型に変換されたのでstring + numは足し算になり出力結果が「5」になったのです。

では、今度は数字型を文字列型に変換していましょう。

string = '2'
num = 3

num = str(num)

print(string + num)

とすると出力結果は「23」になります。

型を確認するには

構文を読んで、型が何かをパッと読み取れる場合はいいのですが、どうにも分からない場合は型を確認する関数typeを使ってみます。

def type_print():
    print('変数numの型は' + str(type(string)) + 'です')
    print('変数numの型は' + str(type(num)) + 'です')

string = '2'
num = 3

type_print()

string = int(num)
num = str(num)

type_print()

出力結果は

変数numの型は<class 'str'>です
変数numの型は<class 'int'>です
変数numの型は<class 'int'>です
変数numの型は<class 'str'>です

となります。

実行

1.下記のコードを「yuusya_lv6.py」として保存

import sys

def fast_input():
    print('じゃんけんはじめる?')
    txt = input(r'入力してね!{はい:y,いいえ:n}:')
    if txt == 'y':
        print('はいを選んだね!じゃんけんをはじめよう')
    elif txt == 'n':
        print('いいえを選んだね!終了するね')
        sys.exit()
    else:
        print('yとn以外を入力したね!終了するね')
        sys.exit()

def jyanken_input():
    jyanken = input(r'あなたの手は?{1:グー,2:チョキ,3:パー}:')
    print('あなたは' +  jyanken + 'を選択しました')

fast_input()
jyanken_input()

2.pythonの実行
ターミナルから「yuusya_lv6.py」が保存されているディレクトリに移動し「yuusya_lv6.py」を実行。

おさらい

・+は、文字列型か数字型で結果が変わる
・型がわからないときはtype()で調べる

次回予告

・辞書について学ぶ


この記事が気に入ったらサポートをしてみませんか?