実現したいこと
入力した現在の時間(分単位)を60で割って時間単位に直して表示するプログラムです。
例外処理として使用者が計算に対応しない値(「あ」や「a」など)を数回入力すると強制的に処理を中断する機能があります。
発生している問題・分からないこと
22行目の割り算の処理からint型とstr型には対応していない旨のエラーが吐かれるのですが。
int型は割り算に対応しているので「変数minutesがstr型を使用しているため、同時に処理することはできない二つの型が使われている」という意味だと僕は解釈しています。
しかし14行目からのフィードバック(エラーメッセージの2行目)からminutesはintに変換されていることがわかります。なぜ二つのデータ型が使われていると判断されるのでしょうか?
原因がわかる方はぜひ教えてください。(画像の挿入はうまくいってますか?)
蛇足(親関数)
エラーメッセージ
error
1Please type the current time:5・・・・・・・・・・(入力) 2Systemlog:minute type = <class 'int'> ・・・・・・(フィードバック) 3Traceback (most recent call last): 4line 41, in <module> 5 intereface_about_data_type(minutes)・・・・・(親関数) 6line 33, in intereface_about_data_type 7 calculation_prosess(minutes,minutes_is_int,x)・・・・(子関数) 8 line 22, in calculation_prosess 9 x = minutes / 60 ・・・・・・・(問題部分) 10 ~~~~~~~~^~~~ 11TypeError: unsupported operand type(s) for /: 'str' and 'int'
該当のソースコード
python
1ソースコード(問題部分のみ)2 3minutes = input("Please type the current time:")4 5miss = 06hour = None7minutes_is_int = False8 9def change_data_type(minutes):10 global miss 11 global minutes_is_int 12 try:13 minutes = int(minutes)14 minutes_is_int = True15 print(f"Systemlog:{type(minutes)}")16 except ValueError:17 print("Did you type string? It can't process.")18 minutes = input("Please type the current time:")19 miss = miss + 120 21def calculation_prosess(minutes,minutes_is_int,x):22 if minutes_is_int == True:23 hour = minutes / 6024 hour = str(x)25 else:26 print("Systemlog:Calculation_prosses about hour")27 28def intereface_about_data_type(minutes):29 global hour 30 global miss 31 global minutes_is_int 32 while minutes_is_int == False:33 change_data_type(minutes)34 calculation_prosess(minutes,minutes_is_int,hour)35 if miss > 5:36 print("Systemlog:Processing has been interrupted because the system has determined that it cannot continue.")37 break38 else:39 print(f"Systemlog:Not miss > 5. miss = {miss}")40 41intereface_about_data_type(minutes)42 43print(f"{minutes}分は{x}時間です")44 45
試したこと・調べたこと
上記の詳細・結果
スコープの仕様を自分が勘違いしていることを疑ってgoogleなどで調べてみましたが、原因がわかりません。
補足
pythonのバージョンは3.12.1です。

0 コメント