回答編集履歴

3

追記

2018/08/15 13:45

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -33,3 +33,89 @@
33
33
 
34
34
 
35
35
  これは上手い具合に、continueの有無で結果が変わる例にもなっていますね。
36
+
37
+
38
+
39
+ 書いてみた
40
+
41
+ ---
42
+
43
+ 仕様を若干変更しても良いなら、私ならこのように書きます。
44
+
45
+ 終了条件はEOFの読み取りです。Windowsなら Ctrl+Z、Mac/Linuxなら Ctrl+D で送出できます。
46
+
47
+ ```Python
48
+
49
+ def main():
50
+
51
+ kill = [1, 2, 5, 6]
52
+
53
+
54
+
55
+ while True:
56
+
57
+ try:
58
+
59
+ kill_count = input("キル数は: ")
60
+
61
+ except EOFError:
62
+
63
+ print('終了します')
64
+
65
+ break
66
+
67
+
68
+
69
+ if not kill_count:
70
+
71
+ print('入力してください')
72
+
73
+ continue
74
+
75
+
76
+
77
+ try:
78
+
79
+ kill_count = int(kill_count)
80
+
81
+ except ValueError:
82
+
83
+ print('整数値を入力してください')
84
+
85
+ continue
86
+
87
+
88
+
89
+ kill_tmp = kill + [kill_count]
90
+
91
+ print(f'平均キル数: {sum(kill_tmp) / len(kill_tmp)}')
92
+
93
+
94
+
95
+
96
+
97
+ if __name__ == '__main__':
98
+
99
+ main()
100
+
101
+ ```
102
+
103
+
104
+
105
+ 元のコードに比べて優位なところはこんな感じですかね。
106
+
107
+ - モジュールの名前空間を汚染しない
108
+
109
+ - ネストが減って、コードを追いやすくなっている
110
+
111
+ - 標準入力がリダイレクトされても上手く捌ける
112
+
113
+ - キル数として0を入力したときにエラー表示されるバグの改善
114
+
115
+ - 終了条件が(慣れている人にとっては)明確
116
+
117
+
118
+
119
+ 今は何のことやら分からないかもしれません。
120
+
121
+ もうちょっと勉強してから見返してみると意味が汲み取れる... かも?

2

修正

2018/08/15 13:45

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -20,9 +20,9 @@
20
20
 
21
21
  except ValueError:
22
22
 
23
- print("数字を入力してください")
23
+ print("数字を入力してください")
24
24
 
25
- continue
25
+ continue
26
26
 
27
27
 
28
28
 

1

修正

2018/08/15 13:07

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -32,4 +32,4 @@
32
32
 
33
33
 
34
34
 
35
- これは上手い具合に、continueの有無で結果が変わって例にもなっていますね。
35
+ これは上手い具合に、continueの有無で結果が変わ例にもなっていますね。