実現したいこと
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 0 9 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の()の中などが違うと考えている。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/07/20 09:50
2023/07/20 10:22