質問編集履歴
6
コードの変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,52 +5,34 @@
|
|
5
5
|
|
6
6
|
ご教授いただければ幸いです。
|
7
7
|
|
8
|
-
最初にプレイする?というのが出てきてyで起動するのですが、
|
9
|
-
|
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
|
-
|
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
|
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
|
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/
|
30
|
+
File "C:/Users/Documents/Python Scripts/21_game.py", line 50
|
41
|
-
|
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
|
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
|
-
|
74
|
+
|
91
|
-
if 0 < i <18:
|
92
|
-
|
75
|
+
if len(lst)==1:
|
93
|
-
|
76
|
+
lst[0]==i
|
77
|
+
|
94
|
-
|
78
|
+
elif len(lst)==2:
|
95
|
-
|
79
|
+
if lst[0]+1==lst[1]:
|
96
|
-
elif len(lst)==3:
|
97
|
-
|
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
|
-
|
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
文法の修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Python 21ゲーム プレイヤー対コンピューター
|
1
|
+
Python 21ゲーム プレイヤー対コンピューター 分岐がうまくいかない
|
body
CHANGED
File without changes
|
4
調べなおしてみたら、21を言ったほうが負け、というルールがオーソドックスなもののようなので、ルール変更しました。お騒がせしてすみません。
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
|
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
|
101
|
+
print(19,20)
|
64
102
|
print ('残念、あなたの負けだね')
|
65
103
|
elif i == 19:
|
66
|
-
print(20
|
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
分岐の修正
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 <
|
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
インデントの修正
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
|
-
|
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
|
-
|
42
|
+
print(OPENING_MESSAGE)
|
43
|
+
while True:
|
44
|
+
kai = input('1~3個の数字を入れてね:')
|
35
45
|
|
36
|
-
|
46
|
+
if len(kai)>3:
|
37
|
-
|
47
|
+
print('3桁以内だよ')
|
48
|
+
else:
|
38
|
-
|
49
|
+
lst = list(map(int,kai))
|
50
|
+
for i in lst:
|
51
|
+
if 0 < i <21:
|
39
|
-
|
52
|
+
if len(lst) == 1:
|
40
|
-
|
53
|
+
print(lst[0]+1,lst[1]+2,lst[2]+3)
|
41
|
-
|
54
|
+
elif len(lst)==2:
|
42
|
-
|
55
|
+
print(lst[1]+1,lst[2])
|
43
|
-
|
56
|
+
elif len(lst)==3:
|
44
|
-
|
57
|
+
print(lst[3]+1)
|
45
|
-
|
58
|
+
else:
|
46
|
-
|
59
|
+
pass
|
47
|
-
|
60
|
+
elif i == 21:
|
48
|
-
|
61
|
+
print ('おめでとう!あなたの勝ちだよ')
|
62
|
+
else:
|
49
|
-
|
63
|
+
print ('残念、あなたの負けだね')
|
64
|
+
|
50
|
-
|
65
|
+
break
|
51
|
-
|
66
|
+
|
52
|
-
|
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
インデントエラーだけではなさそうです、、、
title
CHANGED
File without changes
|
body
CHANGED
@@ -11,14 +11,12 @@
|
|
11
11
|
### 発生している問題・エラーメッセージ
|
12
12
|
|
13
13
|
```
|
14
|
-
IndentationError:
|
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から作ってみました
|