質問編集履歴

2 試したものを追加

mofu_mofu

mofu_mofu score 71

2018/02/19 20:56  投稿

Pythonのassertで複数行を入出力させたいとき
お世話になっております。
競技プログラミングのような問題を解くことをPython3.6 + Pycharmで想定していて、簡単なテストをコード上で行いたいです。なのですが、複数行の入出力をassertさせる方法がわかりません。
複数行のinputやoutputをpythonでassertする方法(もしくはより簡単にPycharm上で入出力のテストができるやりかた)を教えていただけないでしょうか。
例えば、yukicoderの[この問題](https://yukicoder.me/problems/no/646)のサンプルとして
```
#input
5
```
```
#output
55555
5555
555
55
5
```
がありますが、以下のように書いてもassertでエラーになってしまいます。提出はできたのでmult_number関数の中身は問題ないと思われます。
(入出力はstrでされるものだと認識しています)
```
#num = int(input())
def mult_number(num):
   for i in range(0,num):
       print(str(num) * (num - i))
nums_4 = """
4444
444
44
4
"""
nums_5 = """
55555
5555
555
55
5
"""
assert mult_number(4) == nums_4
assert mult_number(5) == nums_5
```
```
Traceback (most recent call last):
4444
444
 File "input.py", line 22, in <module>
44
4
   assert mult_number(int(4)) == nums_4
AssertionError
Process finished with exit code 1
```
よろしくお願いいたします。
よろしくお願いいたします。
---
追記分
```
#関数にしてreturnにした。WAでテストケースで引っかかった
num = int(input())
def mult_number(num):
   for i in range(0,num):
       return(str(num) * (num - i))
```
```
#関数にしてprintにした。WAでテストケースで引っかかった
num = int(input())
def mult_number(num):
   for i in range(0,num):
       return(str(num) * (num - i))
```
```
#関数にしていない。 テストケースをすべて通過した
num = int(input())
for i in range(0,num):
   print(str(num) * (num - i))
```
  • Python 3.x

    12868 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1 文言の追加

mofu_mofu

mofu_mofu score 71

2018/02/19 20:30  投稿

Pythonのassertで複数行を入出力させたいとき
お世話になっております。
競技プログラミングのような問題を解くことをPython3.6 + Pycharmで想定していて、簡単なテストをコード上で行いたいです。なのですが、複数行の入出力をassertさせる方法がわかりません。
複数行のinputやoutputをpythonでassertする方法(もしくはより簡単にPycharm上で入出力のテストができるやりかた)を教えていただけないでしょうか。
例えば、yukicoderの[この問題](https://yukicoder.me/problems/no/646)のサンプルとして
```
#input
5
```
```
#output
55555
5555
555
55
5
```
がありますが、以下のように書いてもエラーになってしまいます。
がありますが、以下のように書いてもassertでエラーになってしまいます。提出はできたのでmult_number関数の中身は問題ないと思われます。
(入出力はstrでされるものだと認識しています)
```
#num = int(input())
def mult_number(num):
   for i in range(0,num):
       print(str(num) * (num - i))
nums_4 = """
4444
444
44
4
"""
nums_5 = """
55555
5555
555
55
5
"""
assert mult_number(4) == nums_4
assert mult_number(5) == nums_5
```
```
Traceback (most recent call last):
4444
444
 File "input.py", line 22, in <module>
44
4
   assert mult_number(int(4)) == nums_4
AssertionError
Process finished with exit code 1
```
よろしくお願いいたします。
  • Python 3.x

    12868 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る