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

質問編集履歴

2

途中経過

2018/04/12 01:18

投稿

eme
eme

スコア27

title CHANGED
File without changes
body CHANGED
@@ -42,4 +42,35 @@
42
42
  throw += 1
43
43
  print(score)
44
44
  ```
45
- として書きなおしましたが、まだうまくいきません...
45
+ として書きなおしましたが、まだうまくいきません...
46
+
47
+ ```python
48
+ # -*- coding: utf-8 -*-
49
+ def bowling(a):
50
+ score=0#トータルスコア
51
+ flame=1#フレーム(1−10)
52
+ throw=1#フレーム内の投球回数(1or2)
53
+ for n in range(0,len(a)):
54
+ print(throw)
55
+ score += a[n]v8
56
+ if flame != 10:
57
+ if throw == 1 and a[n] == 10:#ストライクの時
58
+ score += (a[n+1] + a[n+2])#後ろの2投分をスコアに加算
59
+ flame += 1#フレームを一つ進める(この時投球回数は増やさない)
60
+ elif throw == 1 and a[n] != 10:
61
+ throw += 1
62
+ elif throw == 2 and a[n]+a[n-1] == 10:#スペアの時
63
+ score += a[n+1]#後ろ1投分をスコアに加算する
64
+ flame += 1#フレームを一つ進める
65
+ throw = 1#投球回数を1に戻す
66
+ elif throw >= 3:#1フレーム2投までなので、次のフレーム(1)に移る
67
+ flame += 1
68
+ throw = 1
69
+ else:
70
+ throw += 1
71
+ else:
72
+ throw += 1
73
+ print(score)
74
+ ```
75
+ 途中経過を示します。おそらく、throw==2の時の処理を完成させれば、うまくいくと思われます。(一応、bowling([10,8,2,10,0,10,10,6,4,10,8,2,10,9,1,10]))の時はうまく計算ができました。別の配列で失敗しましたが...
76
+ (printで吐き出す方法を教えてくれた方どうもありがとうございました。)

1

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

2018/04/12 01:18

投稿

eme
eme

スコア27

title CHANGED
File without changes
body CHANGED
@@ -16,4 +16,30 @@
16
16
  print(bowling([10,8,2,10,0,10,10,6,4,10,8,2,10,9,1,10]))
17
17
  ```
18
18
  ボウリングのスコアを計算するアルゴリズムを作成しました。
19
- しかし、例としてtest1を実行したところ、200点のところが190点として出力されました。スペアは次の1投のスコアを、ストライクは次の2投分のスコアを加算することはわかるのですが、どうかご指導ください。
19
+ しかし、例としてtest1を実行したところ、200点のところが190点として出力されました。スペアは次の1投のスコアを、ストライクは次の2投分のスコアを加算することはわかるのですが、どうかご指導ください。
20
+
21
+ 追記
22
+ ```python
23
+ def bowling(a):
24
+ score=0#トータルスコア
25
+ flame=1#フレーム(1−10)
26
+ throw=1#フレーム内の投球回数(1or2)
27
+ for n in range(0,len(a)-1):
28
+ score += a[n]
29
+ if flame != 10:
30
+ if throw == 1 and a[n] == 10:#ストライクの時
31
+ score += (a[n+1] + a[n+2])#後ろの2投分をスコアに加算
32
+ flame += 1#フレームを一つ進める(この時投球回数は増やさない)
33
+ if throw == 2 and a[n]+a[n-1] == 10:#スペアの時
34
+ score += a[n+1]#後ろ1投分をスコアに加算する
35
+ flame += 1#フレームを一つ進める
36
+ throw = 1#投球回数を1に戻す
37
+ if throw >= 3:#1フレーム2投までなので、次のフレーム(1)に移る
38
+ flame += 1
39
+ throw = 1
40
+ throw += 1
41
+ else:
42
+ throw += 1
43
+ print(score)
44
+ ```
45
+ として書きなおしましたが、まだうまくいきません...