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

回答編集履歴

1

コメントを受けて追記

2018/11/13 17:20

投稿

退会済みユーザー
answer CHANGED
@@ -8,4 +8,27 @@
8
8
  # 前半は省略
9
9
  ret = odd_digits_vals + (even_digits_vals * 3)
10
10
  return (0, 9, 8, 7, 6, 5, 4, 3, 2, 1)[ret % 10]
11
+ ```
12
+
13
+ ---
14
+ 以下はコメントを受けての追記です。
15
+
16
+ pythonではリストやタプルのようなシーケンス型のオブジェクトの後ろに[i]のように大括弧を書くことで(最初の要素を0番目として)i番目の要素を指すことができます。よって、以下のように書くことでretの下1桁の値に応じて狙った値をreturnすることができます。
17
+ |retの下1桁の値|returnされる値|
18
+ |:--|:--:|
19
+ |0|0|
20
+ |1|9|
21
+ |2|8|
22
+ |...|...|
23
+ |9|1|
24
+
25
+
26
+ ```python
27
+ table = (0, 9, 8, 7, 6, 5, 4, 3, 2, 1)
28
+ return table[ret % 10]
29
+
30
+ ```
31
+ 上の2行をさらにまとめると、以下の1行になります。
32
+ ```python
33
+ return (0, 9, 8, 7, 6, 5, 4, 3, 2, 1)[ret % 10]
11
34
  ```