Progateの関数編でつまずいているのでコードの内容を理解できるようにしたい。
私は今現在プログラミング学習サイトである「Progate」でPythonの基礎文法を勉強しておりまして、YouTubeを観たり書籍を読んだりと、ある程度のPythonの知識を網羅しましたが(したはずですが)、「関数」のところで詰まってしまいました。ということは全然網羅してないということになります。
前置きが長くなりましたが、以下のコードがどういう流れで動いているのかがちょっとよく分からないので質問させていただきます。
該当のソースコード
python
1# 関数validateを定義 2def validate(hand): 3 # handの値によって条件分岐する 4 if hand < 0 or hand > 2: 5 return False 6 else: 7 return True 8 9def print_hand(hand, name='ゲスト'): 10 hands = ['グー', 'チョキ', 'パー'] 11 print(name + 'は' + hands[hand] + 'を出しました') 12 13print('じゃんけんを始めます') 14player_name = input('名前を入力してください: ') 15print('何を出しますか?(0: グー, 1: チョキ, 2: パー)') 16player_hand = int(input('数字を入力してください: ')) 17 18# 関数validateの戻り値がTrueの場合、以下のif~else文が実行されるようにしてください 19if validate(player_hand): 20 if player_name == '': 21 print_hand(player_hand) 22 else: 23 print_hand(player_hand, player_name) 24# 関数validateの戻り値がFalseの場合「正しい数値を入力してください」と出力してください 25else: 26 print('正しい数値を入力してください') 27
試したこと
- まずは自分で考える
- teratailの過去記事を参考にする
上記の2つを実行したのですが、結局わからずこちらで質問させていただく運びとなりました。
自分で考えたこと
まずはこのプログラムを動かしたときに実行されるのが関数の定義部分の下のprint文。
print('じゃんけんを始めます')
player_name = input('名前を入力してください: ')
print('何を出しますか?(0: グー, 1: チョキ, 2: パー)')
player_hand = int(input('数字を入力してください: '))
ここまでは大丈夫なんです。
次に、「if validate(player_hand):」のところが実行され上で定義しておいたvalidate()関数を呼び出す。
関数内のif文が実行されて0~2以外の数字を入力したら、これは正しいので「False」がreturnされる、と。
更にここで入れ子になっているif文で
Falseの処理が実行される。
if player_name == '':
print_hand(player_hand)
else:
print_hand(player_hand, player_name)
この時、上で定義しておいた2番目の関数が呼び出されメッセージが表示される。
という流れだと思うのですが、正直自信がないです。
間違い等がありましたら教えていただけると幸いです。昨晩とこの記事を書いている今も悶々としております。お時間をいただけませんでしょうか?
回答1件
あなたの回答
tips
プレビュー