実現したいこと
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 コメント