Python キーボード入力した複数の数値をリストにするプログラムを作成したい

実現したいこと

Pythonでキーボード入力した複数の整数値をリストにするプログラムを作成したい

前提

次のようなプログラムA1.py を作る.
(1)キーボードから整数値を入力し, 10個まで順次リストに蓄積する。
(2)10個未満でも負の値が入力されたら,その時点で入力を終了する。
(3)入力を終了したら、リストの内容を表示する。

そして、実行画面は以下のようになる。
input an integer 3
input an integer 1
input an integer 4
input an integer -9
Variable x has value [3, 1, 4].
Type of x is <class 'list'>.

なお、以下のモジュール”Mod1.py”のdisplayで結果を表示、get_intで整数値を入力することとする。

Python

1def display(var, name='x', dispType=True, dispId=False):2 print(f'Variable {name} has value {var}.')3 if dispType:4 print(f'Type of {name} is {type(var)}.')5 if dispId:6 print(f'ID of {name} is {id(var)}.')7 print()8 return 09 10def get_int(prompt='input an integer '):11 return int(input(prompt))

A1のソースコードを以下(発生している問題・エラーメッセージ欄)のように作っていたが、「forループで10個まで順次リストに蓄積し、負の値が入力されると入力を終了する」ということはわかっているが、このプログラム文をうまく作れない。

発生している問題・エラーメッセージ

Python

1[]2Traceback (most recent call last):3 File "A1.py", line 5, in <module>4 M1.get_int(ls_prime)5 File "A1.py", line 9, in get_int 6 return int(input(prompt))7 ^^^^^^^^^^^^^^^^^^8ValueError: invalid literal for int() with base 10: ''

該当のソースコード

Python

1import Mod1 as Md 2 3ls_prime = []4for i in range(10):5 Md.get_int(ls_prime)6 ls_prime.append(ls_prime)7 8Md.display(ls_prime)

試したこと

forループを使うことはわかっていたため、まずそれをソースコードにした。しかし、if文を使おうと思ったのだが、実行結果がうまく出なかったため、記載のソースコードでは消去している。
おそらく、forとifを使うことと、Md.get_intの()の中などが違うと考えている。

コメントを投稿

0 コメント