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

回答編集履歴

2

追記

2019/01/13 16:48

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -25,4 +25,37 @@
25
25
  ...
26
26
  ```
27
27
 
28
- このように複合的な条件を記載できる言語は稀で、Pythonの特長の一つです。
28
+ このように複合的な条件を記載できる言語は稀で、Pythonの特長の一つです。
29
+
30
+ 書いてみた
31
+ ---
32
+ 私なら、こう書きます。
33
+ ```Python
34
+ import sys
35
+
36
+
37
+ def read_int(prompt, lower, upper):
38
+ prompt += f' [{lower}, {upper}]'
39
+
40
+ while True:
41
+ num = input(prompt)
42
+ try:
43
+ num = int(num)
44
+ except ValueError:
45
+ print(f'{num}は数値化できません。', file=sys.stderr)
46
+ continue
47
+
48
+ if lower <= num <= upper:
49
+ return num
50
+
51
+ print(f'範囲外の数字を入力しています。 [{lower}, {upper}]', file=sys.stderr)
52
+ ```
53
+
54
+ #####ポイント
55
+ - **関数名を、単語の区切りが分かるように変更**
56
+ - **min及びmaxという命名は、組み込み関数と重複するので避ける**
57
+ - 下限と上限をせっかく受け取っているので、プロンプトの一部を関数内で生成
58
+ - プロンプトの活用
59
+ - f-string記法の積極的な利用
60
+ - アーリーリターンを駆使し、コードを簡潔に
61
+ - エラーは標準エラー出力に

1

追記

2019/01/13 16:48

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -17,4 +17,12 @@
17
17
  continue
18
18
 
19
19
  ...
20
- ```
20
+ ```
21
+
22
+ なお、『数値numの値がaより大きくbより小さい』という条件は、次のように書くことができます。
23
+ ```Python
24
+ if a < num < b:
25
+ ...
26
+ ```
27
+
28
+ このように複合的な条件を記載できる言語は稀で、Pythonの特長の一つです。