Python3 であっち向いてホイのゲームを作ろうとしています。
じゃんけんの自手の入力(数字)とその数字によってグー、チョキ、パーの区別をする関数を設定しました。
指示通りに整数を入力されれば意図したとおりに動作します。しかし、小数や文字列を入力されたときにエラーとなってしまいます。
int(input()) を変えて修正しようといろいろ試みたのですが、うまくいきません。どうしたらよいか教えてください。
以下がコードです。
def inputjanken(): の me = int(input())
def inputAcchi(): の FaceM = int(input())
の部分で困っています。
ほかの箇所は参考になるかと思って載せましたが、問題とは関係ないです。
よろしくお願いします。
python
1import random 2 3def inputjanken(): 4 print("1,2,3 がそれぞれ グー、チョキ、パー に該当します。\n1~3の中で好きな数字を選んで下さい。") 5 global me 6 global teM 7 me = int(input()) 8 if me == 1: 9 teM = "グー" 10 elif me == 2: 11 teM = "チョキ" 12 elif me == 3: 13 teM = "パー" 14 else: 15 teM = "不明、やり直して下さい。\n" 16 print("あなたの手は "+teM) 17 18def PCjanken(): 19 global PC 20 global teP 21 PC = random.randint(1,3) 22 if PC == 1: 23 teP = "グー" 24 elif PC == 2: 25 teP = "チョキ" 26 elif PC == 3: 27 teP = "パー" 28 else: 29 teP = "不明、やり直して下さい。" 30 print(" \nPCの手は "+teP) 31 print(" ") 32 33def janken(): 34 global me 35 global PC 36 global ResultJ 37 if me == PC: 38 ResultJ = [1,"あいこ、もう一回\n"] 39 elif (me == 1 and PC == 2) or (me == 2 and PC == 3) or (me == 3 and PC == 1): 40 ResultJ = [2,"じゃんけんで、あなたが勝ちました"] 41 elif (me == 1 and PC == 3) or (me == 2 and PC == 1) or (me == 3 and PC == 2): 42 ResultJ = [3,"じゃんけんで、あなたは負けました"] 43 print(ResultJ[1]) 44 45def inputAcchi(): 46 global FaceM 47 global FaceP 48 global Dir 49 print(" \n1,2,3,4 が それぞれ 上、下、左、右 に該当します。\n1~4の中で好きな数字を選んで下さい。") 50 FaceM = int(input()) 51 FaceP = random.randint(1,4) 52 if FaceM == 1: 53 Dir[0] = "上" 54 elif FaceM == 2: 55 Dir[0] = "下" 56 elif FaceM == 3: 57 Dir[0] = "左" 58 elif FaceM == 4: 59 Dir[0] = "右" 60 else: 61 Dir[0] = "正しい入力ではありません。" 62 63 if FaceP == 1: 64 Dir[1] = "上" 65 elif FaceP == 2: 66 Dir[1] = "下" 67 elif FaceP == 3: 68 Dir[1] = "左" 69 elif FaceP == 4: 70 Dir[1] = "右" 71 72 print("あなたの顔の向きは "+Dir[0]) 73 print("\nPCの顔の向きは "+Dir[1]) 74 75def hanteiAcchi(): 76 global ResultA 77 if 1 <= FaceM and 4 >= FaceM: 78 if FaceM == FaceP: 79 ResultA = [1,"当たり"] 80 elif FaceM != FaceP: 81 ResultA = [2,"外れ"] 82 print("") 83 print(ResultA[1]) 84 else: 85 print("入力が間違っています") 86 87def hanteiAll(): 88 global ResultJ 89 global ResultA 90 global ResultF 91 if ResultJ[0] == 2 and ResultA[0] == 1: 92 ResultF = [1,"あなたの勝ちです!!"] 93 elif ResultJ[0] == 3 and ResultA[0] == 1: 94 ResultF = [2,"あなたの負けです……"] 95 elif ResultA[0] == 2: 96 ResultF = [0,"もう一度じゃんけんです \n"] 97 print(ResultF[1]) 98 99def is_int(s): 100 try: 101 int(s) 102 except: 103 return False 104 return True 105 106me = "" 107teM = "" 108PC = "" 109teP = "" 110ResultJ = [] 111ResultA = [] 112ResultF = ["",""] 113Dir = ["",""] 114 115 116print("今からPCと「あっち向いてほい」をしてもらいます。\n") 117while True: 118 while True: 119 while True: 120 inputjanken() 121 if (me == 1) or (me == 2) or (me == 3): 122 break 123 PCjanken() 124 janken() 125 if ResultJ[0] != 1: 126 break 127 while True: 128 inputAcchi() 129 if (FaceM == 1) or (FaceM == 2) or (FaceM == 3) or (FaceM == 4): 130 break 131 hanteiAcchi() 132 hanteiAll() 133 if ResultF[0] != 0: 134 break

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/18 02:46