回答編集履歴

3

追記

2018/02/19 12:37

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -115,3 +115,35 @@
115
115
 
116
116
 
117
117
  慣れるまでは前者を使った方が分かりやすいかもしれませんね。
118
+
119
+
120
+
121
+ ---
122
+
123
+ 忘れてた。
124
+
125
+ **真の意味で、文字列を返す関数**
126
+
127
+ ```Python
128
+
129
+ def multi_number(num):
130
+
131
+ ret = ''
132
+
133
+ for i in range(num):
134
+
135
+ ret += str(num) * (num-i) + '\n'
136
+
137
+ return ret[:-1]
138
+
139
+
140
+
141
+ print(multi_number(3))
142
+
143
+ ```
144
+
145
+
146
+
147
+ ret[:-1]したのは最後に改行が重複するのを防ぐためです。
148
+
149
+ retのまま返して、print関数の引数endに空文字列を指定するのもアリです。

2

追記

2018/02/19 12:36

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -55,3 +55,63 @@
55
55
 
56
56
 
57
57
  ※ Pythonでは、『戻り値なしの関数の戻り値』はNoneになります。ややこしい。
58
+
59
+
60
+
61
+ コメントを受けて
62
+
63
+ ---
64
+
65
+ multi_numberを文字列を返す関数にしてみましょう。
66
+
67
+
68
+
69
+ **リストを返す場合**
70
+
71
+ ```Python
72
+
73
+ def multi_number(num):
74
+
75
+ ret = []
76
+
77
+ for i in range(num):
78
+
79
+ ret.append(str(num) * (num-i))
80
+
81
+ return ret
82
+
83
+
84
+
85
+ print(*multi_number(3), sep='\n')
86
+
87
+ # 普通にfor文でぶん回しても良い
88
+
89
+ # for row in multi_number(3):
90
+
91
+ # print(row)
92
+
93
+ ```
94
+
95
+
96
+
97
+ **ジェネレータ関数にする場合**
98
+
99
+ ```Python
100
+
101
+ def multi_number(num):
102
+
103
+ for i in range(num):
104
+
105
+ yield str(num) * (num-i)
106
+
107
+
108
+
109
+ for row in multi_number(3):
110
+
111
+ print(row)
112
+
113
+ ```
114
+
115
+
116
+
117
+ 慣れるまでは前者を使った方が分かりやすいかもしれませんね。

1

追記

2018/02/19 12:17

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1,6 +1,6 @@
1
1
  nums_4は文字列ですが、mult_number(4)はNoneです。※
2
2
 
3
- 同じように表示されるからと言って同値だとは全く言えないです。
3
+ 対話環境で同じように表示されるからと言って同値だとは全く言えないです。
4
4
 
5
5
  ```Python
6
6
 
@@ -24,8 +24,34 @@
24
24
 
25
25
  <class 'NoneType'>
26
26
 
27
+ >>>
28
+
29
+ >>> "aaa" == print("aaa")
30
+
31
+ aaa
32
+
33
+ False
34
+
35
+ >>> assert "aaa" == print("aaa")
36
+
37
+ aaa
38
+
39
+ Traceback (most recent call last):
40
+
41
+ File "<stdin>", line 1, in <module>
42
+
43
+ AssertionError
44
+
27
45
  ```
28
46
 
29
47
 
30
48
 
49
+ > 複数行の入出力をassertさせる方法がわかりません。
50
+
51
+
52
+
53
+ この場合行数は関係ないです。
54
+
55
+
56
+
31
57
  ※ Pythonでは、『戻り値なしの関数の戻り値』はNoneになります。ややこしい。