回答編集履歴

3

追記

2018/08/15 13:45

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -15,4 +15,47 @@
15
15
  ...
16
16
  ```
17
17
 
18
- これは上手い具合に、continueの有無で結果が変わる例にもなっていますね。
18
+ これは上手い具合に、continueの有無で結果が変わる例にもなっていますね。
19
+
20
+ 書いてみた
21
+ ---
22
+ 仕様を若干変更しても良いなら、私ならこのように書きます。
23
+ 終了条件はEOFの読み取りです。Windowsなら Ctrl+Z、Mac/Linuxなら Ctrl+D で送出できます。
24
+ ```Python
25
+ def main():
26
+ kill = [1, 2, 5, 6]
27
+
28
+ while True:
29
+ try:
30
+ kill_count = input("キル数は: ")
31
+ except EOFError:
32
+ print('終了します')
33
+ break
34
+
35
+ if not kill_count:
36
+ print('入力してください')
37
+ continue
38
+
39
+ try:
40
+ kill_count = int(kill_count)
41
+ except ValueError:
42
+ print('整数値を入力してください')
43
+ continue
44
+
45
+ kill_tmp = kill + [kill_count]
46
+ print(f'平均キル数: {sum(kill_tmp) / len(kill_tmp)}')
47
+
48
+
49
+ if __name__ == '__main__':
50
+ main()
51
+ ```
52
+
53
+ 元のコードに比べて優位なところはこんな感じですかね。
54
+ - モジュールの名前空間を汚染しない
55
+ - ネストが減って、コードを追いやすくなっている
56
+ - 標準入力がリダイレクトされても上手く捌ける
57
+ - キル数として0を入力したときにエラー表示されるバグの改善
58
+ - 終了条件が(慣れている人にとっては)明確
59
+
60
+ 今は何のことやら分からないかもしれません。
61
+ もうちょっと勉強してから見返してみると意味が汲み取れる... かも?

2

修正

2018/08/15 13:45

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -9,8 +9,8 @@
9
9
  try:
10
10
  kill_count=int(input("キル数は: "))
11
11
  except ValueError:
12
- print("数字を入力してください")
12
+ print("数字を入力してください")
13
- continue
13
+ continue
14
14
 
15
15
  ...
16
16
  ```

1

修正

2018/08/15 13:07

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -15,4 +15,4 @@
15
15
  ...
16
16
  ```
17
17
 
18
- これは上手い具合に、continueの有無で結果が変わって例にもなっていますね。
18
+ これは上手い具合に、continueの有無で結果が変わ例にもなっていますね。