teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

コードの変更

2019/01/29 04:55

投稿

mofmofmof
mofmofmof

スコア15

title CHANGED
File without changes
body CHANGED
@@ -5,52 +5,34 @@
5
5
 
6
6
  ご教授いただければ幸いです。
7
7
 
8
- 最初にプレイする?というのが出てきてyで起動するのですが、
9
- 1~3個の数字を入れてね、からそれ以降エラーが出ます。
8
+ サイコロで出た目の数で、数字を何個いうか決めるようにしたいです。
10
- 分岐間違っるのかと思います。
9
+ インデントエラーてるのですが、どこをどう直したらよのかわかりせん…
11
10
 
12
11
  ### 発生している問題・エラーメッセージ
13
12
 
14
13
  ```
14
+ runfile('C:/Users/Documents/Python Scripts/21_game.py',
15
+ wdir='C:/Users/Documents/Python Scripts')
15
- プレイする?y/n:y
16
+ Traceback (most recent call last):
16
- 始まるよー
17
17
 
18
+ File "C:\Users\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2961, in run_code
18
- __________________________________________________
19
+ exec(code_obj, self.user_global_ns, self.user_ns)
19
20
 
20
- **21ゲーム**
21
- 1から順番に交互に数を言っていき、
22
- 21を言った方が負けのゲームだよ!
23
- 一度に言える数は1~3つまで!
24
- コンピューターに勝てるかな??
25
- __________________________________________________
21
+ File "<ipython-input-27-8021c557fff1>", line 1, in <module>
22
+ runfile('C:/Users/Documents/Python Scripts/21_game.py', wdir='C:/Users/Documents/Python Scripts')
26
23
 
27
-
28
- 1~3個の数字を入れてね:12
29
- Traceback (most recent call last):
30
-
31
- File "<ipython-input-37-8021c557fff1>", line 1, in <module>
32
- runfile('C:/Users/****/Documents/Python Scripts/21_game.py', wdir='C:/Users/YUNA/Documents/Python Scripts')
33
-
34
- File "C:\Users****\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 668, in runfile
24
+ File "C:\Users\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 668, in runfile
35
25
  execfile(filename, namespace)
36
26
 
37
- File "C:\Users****\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile
27
+ File "C:\Users\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile
38
28
  exec(compile(f.read(), filename, 'exec'), namespace)
39
29
 
40
- File "C:/Users/****/Documents/Python Scripts/21_game.py", line 79, in <module>
30
+ File "C:/Users/Documents/Python Scripts/21_game.py", line 50
41
- main()
31
+ if 0<i<18:
32
+ ^
33
+ IndentationError: unexpected indent
42
34
 
43
- File "C:/Users/****/Documents/Python Scripts/21_game.py", line 75, in main
44
- game()
45
35
 
46
- File "C:/Users/****/Documents/Python Scripts/21_game.py", line 36, in game
47
- print(lst[1]+1,lst[2])
48
-
49
- IndexError: list index out of range
50
-
51
-
52
-
53
-
54
36
  ```
55
37
 
56
38
  ### 該当のソースコード
@@ -59,59 +41,76 @@
59
41
 
60
42
  # -*- coding: utf-8 -*-
61
43
  """
62
- Created on Tue Jan 29 00:15:14 2019
44
+ Created on Tue Jan 29 09:25:24 2019
63
45
 
64
- @author: YUNA
65
46
  """
66
47
 
67
- #21を言ったら負けゲーム
68
48
 
49
+ #21を言ったら負けなゲーム
69
50
  OPENING_MESSAGE="""
70
51
  ____________________________
71
52
 
72
- 21ゲーム
53
+ ***21ゲーム***
73
54
  1~21までの数字を、1~3つ順番に
74
55
  交互に言い合って
75
56
  21を言った人が負けのゲームだよ!
76
57
  コンピューターに勝てるかな??
58
+ (数字はコンマで区切って入力してね!)
77
59
  ____________________________
78
60
  """
79
61
 
80
-
81
62
  def game():
63
+ import random
82
64
  print(OPENING_MESSAGE)
65
+
66
+
83
67
  while True:
84
- kai = input('1~3個の数字を入れてね:')
68
+ kai = input('1~3個の数字を入れてね:').split(',')
85
69
 
86
70
  if len(kai)>3:
87
- print('3桁以内だよ')
71
+ print('3桁以内だよ')
88
72
  else:
89
73
  lst = list(map(int,kai))
90
- for i in lst:
74
+
91
- if 0 < i <18:
92
- if len(lst) == 1:
75
+ if len(lst)==1:
93
- print(lst[0]+1,lst[1]+2,lst[2]+3)
76
+ lst[0]==i
77
+
94
- elif len(lst)==2:
78
+ elif len(lst)==2:
95
- print(lst[1]+1,lst[2])
79
+ if lst[0]+1==lst[1]:
96
- elif len(lst)==3:
97
- print(lst[3]+1)
80
+ lst[1]==i
98
- else:
99
- pass
100
- elif i == 18:
101
- print(19,20)
102
- print ('残念、あなたの負けだね')
103
- elif i == 19:
104
- print(20)
105
- print ('残念、あなたの負けだね')
106
- elif i == 20:
107
- print(21)
108
- print ('おめでとう!あなたの勝ちだよ')
109
- elif i == 21:
110
- print ('残念、あなたの負けだね')
111
81
  else:
112
- print ('謎のエラー')
82
+ print('数字は順番に入力してね')
83
+
113
-
84
+ elif len(lst)==3:
85
+ if lst[0]+1==lst[1] and lst[1]+1==lst[2]:
86
+ lst[2]==i
87
+ else:
88
+ print('数字は順番に入力してね')
89
+
90
+ if 0<i<18:
91
+ dice=r.choice(face)
92
+ r = random
93
+ face=[1,2,3,4,5,6]
94
+
95
+ if dice>4:
96
+ print(i+1)
97
+ elif 2<dice<5:
98
+ print(i+1,i+2)
99
+ elif dice<3:
100
+ print(i+1,i+2,i+3)
101
+ elif i==18:
102
+ print(19,20)
103
+ elif i==19:
104
+ print(20)
105
+
106
+ elif i==20:
107
+ print(21)
108
+ print('おめでとう!あなたの勝ちだよ')
114
- break
109
+ break
110
+
111
+ elif i==21:
112
+ print('残念、あなたの負けだね')
113
+ break
115
114
 
116
115
  return print('ゲーム終了')
117
116
 
@@ -135,8 +134,7 @@
135
134
 
136
135
 
137
136
  if __name__ == '__main__':
138
- main()
137
+ main()
139
-
140
138
 
141
139
 
142
140
 
@@ -146,9 +144,6 @@
146
144
 
147
145
  ### 試したこと
148
146
  同じようなものを作っている人が見つからず、1から作ってみました
149
- 箱の作り方が間違っているのかな?と思います
150
- 条件分岐がおかしいのか、数字を打ち込んだ後の処理がうまくいきませんでした
151
- 助けてください(´;ω;`)
152
147
 
153
148
  ### 補足情報(FW/ツールのバージョンなど)
154
149
 

5

文法の修正

2019/01/29 04:55

投稿

mofmofmof
mofmofmof

スコア15

title CHANGED
@@ -1,1 +1,1 @@
1
- Python 21ゲーム プレイヤー対コンピューター(コンピューター絶対勝つよにしプログラム組めかった…)
1
+ Python 21ゲーム プレイヤー対コンピューター 分岐がうまくいかな
body CHANGED
File without changes

4

調べなおしてみたら、21を言ったほうが負け、というルールがオーソドックスなもののようなので、ルール変更しました。お騒がせしてすみません。

2019/01/28 15:39

投稿

mofmofmof
mofmofmof

スコア15

title CHANGED
File without changes
body CHANGED
@@ -2,17 +2,55 @@
2
2
 
3
3
  21ゲームというものをpythonで実装しようとしてみましたが、実行できません
4
4
  どうしたらよいかアドバイスお願いします!
5
- あと、このままだとコンピューター側の完全勝利になってしまいます
6
- (4の倍数を言ったほうが勝つので後攻有利)
7
5
 
8
-
9
- あと、欲を言えばランダムな回数コンピューターに数字を言わせたいです~!
10
6
  ご教授いただければ幸いです。
11
7
 
8
+ 最初にプレイする?というのが出てきてyで起動するのですが、
9
+ 1~3個の数字を入れてね、からのそれ以降でエラーが出ます。
10
+ 分岐が間違っているのかと思います。
11
+
12
12
  ### 発生している問題・エラーメッセージ
13
13
 
14
14
  ```
15
+ プレイする?y/n:y
16
+ 始まるよー
17
+
18
+ __________________________________________________
19
+
20
+ **21ゲーム**
21
+ 1から順番に交互に数を言っていき、
22
+ 21を言った方が負けのゲームだよ!
23
+ 一度に言える数は1~3つまで!
24
+ コンピューターに勝てるかな??
25
+ __________________________________________________
26
+
27
+
28
+ 1~3個の数字を入れてね:12
29
+ Traceback (most recent call last):
30
+
31
+ File "<ipython-input-37-8021c557fff1>", line 1, in <module>
32
+ runfile('C:/Users/****/Documents/Python Scripts/21_game.py', wdir='C:/Users/YUNA/Documents/Python Scripts')
33
+
34
+ File "C:\Users****\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 668, in runfile
35
+ execfile(filename, namespace)
36
+
37
+ File "C:\Users****\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile
38
+ exec(compile(f.read(), filename, 'exec'), namespace)
39
+
40
+ File "C:/Users/****/Documents/Python Scripts/21_game.py", line 79, in <module>
41
+ main()
42
+
43
+ File "C:/Users/****/Documents/Python Scripts/21_game.py", line 75, in main
44
+ game()
45
+
46
+ File "C:/Users/****/Documents/Python Scripts/21_game.py", line 36, in game
47
+ print(lst[1]+1,lst[2])
48
+
15
49
  IndexError: list index out of range
50
+
51
+
52
+
53
+
16
54
  ```
17
55
 
18
56
  ### 該当のソースコード
@@ -21,12 +59,12 @@
21
59
 
22
60
  # -*- coding: utf-8 -*-
23
61
  """
24
- Created on Mon Jan 28 05:06:18 2019
62
+ Created on Tue Jan 29 00:15:14 2019
25
63
 
26
64
  @author: YUNA
27
65
  """
28
66
 
29
- #21を言ったら勝ちゲーム
67
+ #21を言ったら負けゲーム
30
68
 
31
69
  OPENING_MESSAGE="""
32
70
  ____________________________
@@ -34,7 +72,7 @@
34
72
  21ゲーム
35
73
  1~21までの数字を、1~3つ順番に
36
74
  交互に言い合って
37
- 21を言った人が勝ちのゲームだよ!
75
+ 21を言った人が負けのゲームだよ!
38
76
  コンピューターに勝てるかな??
39
77
  ____________________________
40
78
  """
@@ -60,16 +98,16 @@
60
98
  else:
61
99
  pass
62
100
  elif i == 18:
63
- print(19,20,21)
101
+ print(19,20)
64
102
  print ('残念、あなたの負けだね')
65
103
  elif i == 19:
66
- print(20,21)
104
+ print(20)
67
105
  print ('残念、あなたの負けだね')
68
106
  elif i == 20:
69
107
  print(21)
108
+ print ('おめでとう!あなたの勝ちだよ')
109
+ elif i == 21:
70
110
  print ('残念、あなたの負けだね')
71
- elif i == 21:
72
- print ('おめでとう!あなたの勝ちだよ')
73
111
  else:
74
112
  print ('謎のエラー')
75
113
 
@@ -101,6 +139,9 @@
101
139
 
102
140
 
103
141
 
142
+
143
+
144
+
104
145
  ```
105
146
 
106
147
  ### 試したこと

3

分岐の修正

2019/01/28 15:33

投稿

mofmofmof
mofmofmof

スコア15

title CHANGED
File without changes
body CHANGED
@@ -4,8 +4,8 @@
4
4
  どうしたらよいかアドバイスお願いします!
5
5
  あと、このままだとコンピューター側の完全勝利になってしまいます
6
6
  (4の倍数を言ったほうが勝つので後攻有利)
7
- どのようにしたら、21が出た時点で(コンピューター側にしろ、人間側にしろ)ゲームが終わるような分岐が作れるのでしょうか、、、
8
7
 
8
+
9
9
  あと、欲を言えばランダムな回数コンピューターに数字を言わせたいです~!
10
10
  ご教授いただければ幸いです。
11
11
 
@@ -18,10 +18,12 @@
18
18
  ### 該当のソースコード
19
19
 
20
20
  ```python
21
+
21
22
  # -*- coding: utf-8 -*-
22
23
  """
23
24
  Created on Mon Jan 28 05:06:18 2019
24
25
 
26
+ @author: YUNA
25
27
  """
26
28
 
27
29
  #21を言ったら勝ちゲーム
@@ -48,7 +50,7 @@
48
50
  else:
49
51
  lst = list(map(int,kai))
50
52
  for i in lst:
51
- if 0 < i <21:
53
+ if 0 < i <18:
52
54
  if len(lst) == 1:
53
55
  print(lst[0]+1,lst[1]+2,lst[2]+3)
54
56
  elif len(lst)==2:
@@ -57,10 +59,19 @@
57
59
  print(lst[3]+1)
58
60
  else:
59
61
  pass
62
+ elif i == 18:
63
+ print(19,20,21)
64
+ print ('残念、あなたの負けだね')
65
+ elif i == 19:
66
+ print(20,21)
67
+ print ('残念、あなたの負けだね')
68
+ elif i == 20:
69
+ print(21)
70
+ print ('残念、あなたの負けだね')
60
71
  elif i == 21:
61
72
  print ('おめでとう!あなたの勝ちだよ')
62
73
  else:
63
- print ('残念、あなた負けだね')
74
+ print ('エラー')
64
75
 
65
76
  break
66
77
 
@@ -88,6 +99,8 @@
88
99
  if __name__ == '__main__':
89
100
  main()
90
101
 
102
+
103
+
91
104
  ```
92
105
 
93
106
  ### 試したこと

2

インデントの修正

2019/01/28 01:18

投稿

mofmofmof
mofmofmof

スコア15

title CHANGED
File without changes
body CHANGED
@@ -4,20 +4,28 @@
4
4
  どうしたらよいかアドバイスお願いします!
5
5
  あと、このままだとコンピューター側の完全勝利になってしまいます
6
6
  (4の倍数を言ったほうが勝つので後攻有利)
7
+ どのようにしたら、21が出た時点で(コンピューター側にしろ、人間側にしろ)ゲームが終わるような分岐が作れるのでしょうか、、、
7
8
 
8
- 欲を言えばランダムな回数コンピューターに数字を言わせたいです~!
9
+ あと、欲を言えばランダムな回数コンピューターに数字を言わせたいです~!
9
10
  ご教授いただければ幸いです。
10
11
 
11
12
  ### 発生している問題・エラーメッセージ
12
13
 
13
14
  ```
14
- IndentationError: expected an indented block
15
+ IndexError: list index out of range
15
16
  ```
16
17
 
17
18
  ### 該当のソースコード
18
19
 
19
20
  ```python
21
+ # -*- coding: utf-8 -*-
22
+ """
23
+ Created on Mon Jan 28 05:06:18 2019
20
24
 
25
+ """
26
+
27
+ #21を言ったら勝ちゲーム
28
+
21
29
  OPENING_MESSAGE="""
22
30
  ____________________________
23
31
 
@@ -31,25 +39,32 @@
31
39
 
32
40
 
33
41
  def game():
34
- print(OPENING_MESSAGE)
42
+ print(OPENING_MESSAGE)
43
+ while True:
44
+ kai = input('1~3個の数字を入れてね:')
35
45
 
36
- while True:
46
+ if len(kai)>3:
37
- kai = input('1~3個の数字を入れてね:')
47
+ print('3桁以内だよ')
48
+ else:
38
- lst = list(map(int,kai))
49
+ lst = list(map(int,kai))
50
+ for i in lst:
51
+ if 0 < i <21:
39
- if len(lst)==1:
52
+ if len(lst) == 1:
40
- print(lst[0]+1,lst[1]+2,lst[2]+3)
53
+ print(lst[0]+1,lst[1]+2,lst[2]+3)
41
- elif len(lst)==2:
54
+ elif len(lst)==2:
42
- print(lst[0]+1,lst[1])
55
+ print(lst[1]+1,lst[2])
43
- elif len(lst)==3
56
+ elif len(lst)==3:
44
- print(lst[0]+1)
57
+ print(lst[3]+1)
45
- else print('3桁以内の数字を入力してください')
58
+ else:
46
-
59
+ pass
47
- if 21 in lst:
60
+ elif i == 21:
48
- print ('おめでとう!あなたの勝ちだよ')
61
+ print ('おめでとう!あなたの勝ちだよ')
62
+ else:
49
- elif print ('残念、あなたの負けだね'):
63
+ print ('残念、あなたの負けだね')
64
+
50
- break
65
+ break
51
-
66
+
52
- return print('ゲーム終了')
67
+ return print('ゲーム終了')
53
68
 
54
69
  def main():
55
70
  while True:
@@ -67,19 +82,18 @@
67
82
  elif x == 'y':
68
83
  print('始まるよー')
69
84
 
70
- sleep(2)
71
-
72
85
  game()
73
86
 
74
87
 
75
88
  if __name__ == '__main__':
76
89
  main()
90
+
77
- ```
91
+ ```
78
92
 
79
93
  ### 試したこと
80
94
  同じようなものを作っている人が見つからず、1から作ってみました
81
95
  箱の作り方が間違っているのかな?と思います
82
- もはや何を直てよいかもわかりません、、、
96
+ 条件分岐がおかしい、数字を打ち込んだ後の処理がうくいきませんでした
83
97
  助けてください(´;ω;`)
84
98
 
85
99
  ### 補足情報(FW/ツールのバージョンなど)

1

インデントエラーだけではなさそうです、、、

2019/01/28 01:00

投稿

mofmofmof
mofmofmof

スコア15

title CHANGED
File without changes
body CHANGED
@@ -11,14 +11,12 @@
11
11
  ### 発生している問題・エラーメッセージ
12
12
 
13
13
  ```
14
- IndentationError: unindent does not match any outer indentation level
14
+ IndentationError: expected an indented block
15
15
  ```
16
16
 
17
17
  ### 該当のソースコード
18
18
 
19
19
  ```python
20
- # -*- coding: utf-8 -*-
21
- #21を言ったら勝ちゲーム
22
20
 
23
21
  OPENING_MESSAGE="""
24
22
  ____________________________
@@ -38,26 +36,21 @@
38
36
  while True:
39
37
  kai = input('1~3個の数字を入れてね:')
40
38
  lst = list(map(int,kai))
39
+ if len(lst)==1:
40
+ print(lst[0]+1,lst[1]+2,lst[2]+3)
41
+ elif len(lst)==2:
42
+ print(lst[0]+1,lst[1])
43
+ elif len(lst)==3
44
+ print(lst[0]+1)
45
+ else print('3桁以内の数字を入力してください')
46
+
47
+ if 21 in lst:
48
+ print ('おめでとう!あなたの勝ちだよ')
49
+ elif print ('残念、あなたの負けだね'):
50
+ break
51
+
52
+ return print('ゲーム終了')
41
53
 
42
- if len(lst)==1:
43
- print(lst[0]+1,lst[1]+2,lst[2]+3)
44
-
45
- elif len(lst)==2:
46
- print(lst[0]+1,lst[1])
47
-
48
- elif len(lst)==3
49
- print(lst[0]+1)
50
-
51
- else print('3桁以内の数字を入力してください')
52
-
53
-
54
- if 21 in lst:
55
- print ('おめでとう!あなたの勝ちだよ')
56
- elif print ('残念、あなたの負けだね'):
57
- break
58
-
59
-  return print('ゲーム終了')
60
-
61
54
  def main():
62
55
  while True:
63
56
  x = input('プレイする?y/n:')
@@ -81,8 +74,7 @@
81
74
 
82
75
  if __name__ == '__main__':
83
76
  main()
84
-
85
- ```
77
+ ```
86
78
 
87
79
  ### 試したこと
88
80
  同じようなものを作っている人が見つからず、1から作ってみました