質問編集履歴

2

途中経過

2018/04/12 01:18

投稿

eme
eme

スコア27

test CHANGED
File without changes
test CHANGED
@@ -87,3 +87,65 @@
87
87
  ```
88
88
 
89
89
  として書きなおしましたが、まだうまくいきません...
90
+
91
+
92
+
93
+ ```python
94
+
95
+ # -*- coding: utf-8 -*-
96
+
97
+ def bowling(a):
98
+
99
+ score=0#トータルスコア
100
+
101
+ flame=1#フレーム(1−10)
102
+
103
+ throw=1#フレーム内の投球回数(1or2)
104
+
105
+ for n in range(0,len(a)):
106
+
107
+ print(throw)
108
+
109
+ score += a[n]v8
110
+
111
+ if flame != 10:
112
+
113
+ if throw == 1 and a[n] == 10:#ストライクの時
114
+
115
+ score += (a[n+1] + a[n+2])#後ろの2投分をスコアに加算
116
+
117
+ flame += 1#フレームを一つ進める(この時投球回数は増やさない)
118
+
119
+ elif throw == 1 and a[n] != 10:
120
+
121
+ throw += 1
122
+
123
+ elif throw == 2 and a[n]+a[n-1] == 10:#スペアの時
124
+
125
+ score += a[n+1]#後ろ1投分をスコアに加算する
126
+
127
+ flame += 1#フレームを一つ進める
128
+
129
+ throw = 1#投球回数を1に戻す
130
+
131
+ elif throw >= 3:#1フレーム2投までなので、次のフレーム(1)に移る
132
+
133
+ flame += 1
134
+
135
+ throw = 1
136
+
137
+ else:
138
+
139
+ throw += 1
140
+
141
+ else:
142
+
143
+ throw += 1
144
+
145
+ print(score)
146
+
147
+ ```
148
+
149
+ 途中経過を示します。おそらく、throw==2の時の処理を完成させれば、うまくいくと思われます。(一応、bowling([10,8,2,10,0,10,10,6,4,10,8,2,10,9,1,10]))の時はうまく計算ができました。別の配列で失敗しましたが...
150
+
151
+ (printで吐き出す方法を教えてくれた方どうもありがとうございました。)

1

助言をもとに書きなおしました。

2018/04/12 01:18

投稿

eme
eme

スコア27

test CHANGED
File without changes
test CHANGED
@@ -35,3 +35,55 @@
35
35
  ボウリングのスコアを計算するアルゴリズムを作成しました。
36
36
 
37
37
  しかし、例としてtest1を実行したところ、200点のところが190点として出力されました。スペアは次の1投のスコアを、ストライクは次の2投分のスコアを加算することはわかるのですが、どうかご指導ください。
38
+
39
+
40
+
41
+ 追記
42
+
43
+ ```python
44
+
45
+ def bowling(a):
46
+
47
+ score=0#トータルスコア
48
+
49
+ flame=1#フレーム(1−10)
50
+
51
+ throw=1#フレーム内の投球回数(1or2)
52
+
53
+ for n in range(0,len(a)-1):
54
+
55
+ score += a[n]
56
+
57
+ if flame != 10:
58
+
59
+ if throw == 1 and a[n] == 10:#ストライクの時
60
+
61
+ score += (a[n+1] + a[n+2])#後ろの2投分をスコアに加算
62
+
63
+ flame += 1#フレームを一つ進める(この時投球回数は増やさない)
64
+
65
+ if throw == 2 and a[n]+a[n-1] == 10:#スペアの時
66
+
67
+ score += a[n+1]#後ろ1投分をスコアに加算する
68
+
69
+ flame += 1#フレームを一つ進める
70
+
71
+ throw = 1#投球回数を1に戻す
72
+
73
+ if throw >= 3:#1フレーム2投までなので、次のフレーム(1)に移る
74
+
75
+ flame += 1
76
+
77
+ throw = 1
78
+
79
+ throw += 1
80
+
81
+ else:
82
+
83
+ throw += 1
84
+
85
+ print(score)
86
+
87
+ ```
88
+
89
+ として書きなおしましたが、まだうまくいきません...