回答編集履歴

2

追記

2019/01/13 16:48

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -53,3 +53,69 @@
53
53
 
54
54
 
55
55
  このように複合的な条件を記載できる言語は稀で、Pythonの特長の一つです。
56
+
57
+
58
+
59
+ 書いてみた
60
+
61
+ ---
62
+
63
+ 私なら、こう書きます。
64
+
65
+ ```Python
66
+
67
+ import sys
68
+
69
+
70
+
71
+
72
+
73
+ def read_int(prompt, lower, upper):
74
+
75
+ prompt += f' [{lower}, {upper}]'
76
+
77
+
78
+
79
+ while True:
80
+
81
+ num = input(prompt)
82
+
83
+ try:
84
+
85
+ num = int(num)
86
+
87
+ except ValueError:
88
+
89
+ print(f'{num}は数値化できません。', file=sys.stderr)
90
+
91
+ continue
92
+
93
+
94
+
95
+ if lower <= num <= upper:
96
+
97
+ return num
98
+
99
+
100
+
101
+ print(f'範囲外の数字を入力しています。 [{lower}, {upper}]', file=sys.stderr)
102
+
103
+ ```
104
+
105
+
106
+
107
+ #####ポイント
108
+
109
+ - **関数名を、単語の区切りが分かるように変更**
110
+
111
+ - **min及びmaxという命名は、組み込み関数と重複するので避ける**
112
+
113
+ - 下限と上限をせっかく受け取っているので、プロンプトの一部を関数内で生成
114
+
115
+ - プロンプトの活用
116
+
117
+ - f-string記法の積極的な利用
118
+
119
+ - アーリーリターンを駆使し、コードを簡潔に
120
+
121
+ - エラーは標準エラー出力に

1

追記

2019/01/13 16:48

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -37,3 +37,19 @@
37
37
  ...
38
38
 
39
39
  ```
40
+
41
+
42
+
43
+ なお、『数値numの値がaより大きくbより小さい』という条件は、次のように書くことができます。
44
+
45
+ ```Python
46
+
47
+ if a < num < b:
48
+
49
+ ...
50
+
51
+ ```
52
+
53
+
54
+
55
+ このように複合的な条件を記載できる言語は稀で、Pythonの特長の一つです。