質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

解決済

1回答

686閲覧

pythonでifの後に続く条件式の例外処理

takumi3

総合スコア18

Python 3.x

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

0グッド

0クリップ

投稿2019/11/25 11:34

if (int(dict_json['report_num']) == 1) and (dict_json['report_time'] != BEFORE_dict_json['report_time']):

こちらのコード中のdict_json['report_num']に何も代入されない場合があります。この時、

ValueError invalid literal for int() with base 10: ''

となってしまいます。if文中の条件式の部分においてtryexceptのような機能を実装させたい場合はどうしたらよいでしょうか。ちなみに何も代入されていない場合はif文中のコードは実行させたくありません。

try: bool = (int(dict_json['report_num']) == 1) and (dict_json['report_time'] != BEFORE_dict_json['report_time']) except ValueError: bool = False if bool:

というようにするしかないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

数値化しなければ良いのでは。

Python

1if (dict_json['report_num'] == '1') and (dict_json['report_time'] != BEFORE_dict_json['report_time']): 2 ...

条件が長すぎて読みづらいのは事実なので、適当に関数を用意してやっても良いでしょう。

Python

1def cond(n_json, before_json): # 関数名は目的に合わせ適切に付け直してください 2 if n_json['report_num'] != '1': 3 return False 4 5 return n_json['report_time'] != before_json['report_time'] 6 7if cond(dict_json, BEFORE_dict_json): 8 ...

投稿2019/11/25 11:38

編集2019/11/25 11:42
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takumi3

2019/11/25 11:47

なるほど、整数値はintとして処理するという考えにとらわれていました。 今回の問題はそもそも例外が出ない状況にするという方法で解決しましたが、例外処理が条件文中で必要な場合はどうしたらよいのでしょうか?
LouiS0616

2019/11/25 11:50

関数を作るのが最も影響範囲が狭く、バグが生じづらいように思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問