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

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

新規登録して質問してみよう
ただいま回答率
85.48%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

926閲覧

空のリスト[]のときに0を出力させたい

hacker_

総合スコア11

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/06/02 15:59

前提・実現したいこと

pythonで与えられたリストの最大の数値と最少の数値の差に対し、リストの最後尾の数値を掛けた値を返す計算をしています。
number = [] の時だけ0を出力させたいです。

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

Traceback (most recent call last): File "print_string.py", line 20, in <module> result = check_sample(number) File "print_string.py", line 5, in check_sample a = max(number) ValueError: max() arg is an empty sequence

該当のソースコード

python

1def check_sample(number): 2 a = max(number) 3 b = min(number) 4 c = a- b 5 d = number[-1] 6 e = d * c 7 8 return e 9 10 11 12number = [] 13 14if number == []: 15 print(0) 16 17result = check_sample(number) 18print(result)

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

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

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

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

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

guest

回答3

0

ベストアンサー

check_sample関数が引数にどこまで責任を持つかに依ります。
場合に依っては単に次のように書き換えるだけで良いのでは。

Python

1if number == []: 2 print(0)

result = check_sample(number)
print(result)

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

Python

1if number == []: # if not number: の方が Pythonic 2 print(0) 3else: 4 result = check_sample(number) 5 print(result)

number = [] の時だけ0を出力させたいです。

number = [1, 1, 1, 1] のときも、
number = [3, 2, 1, 0] のときも計算の結果0が出力されますが、それは問題無いのでしょうか。

投稿2019/06/03 03:32

LouiS0616

総合スコア35660

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

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

hacker_

2019/06/03 04:04

回答ありがとうございます。 その書き方はとてもわかりやすいですね。参考になりました。 number=[] の時に0を表示させたいので、計算結果として0になっても大丈夫です。 丁寧な回答ありがとうございます。また機会があればよろしくお願いします。
LouiS0616

2019/06/03 04:19

回答にも書きましたが、check_sampleがどこまで処理の責任を担うかに依ります。 私の方法がふさわしい場合もあれば、同様にotnさんの方法がふさわしい場合もあります。
guest

0

len()という便利なものを使うという感じですかね?

投稿2019/06/02 19:56

otolab

総合スコア765

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

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

LouiS0616

2019/06/03 03:38

== [] でも比較としては問題無く機能しますし、そもそも空リストはfalsyなのでlenを使うのは冗長です。 PEP8にも「For sequences, (strings, lists, tuples), use the fact that empty sequences are false.」と書かれています。
hacker_

2019/06/03 04:00

なるほど、lenを使っても解決しそうですね。回答ありがとうございます。
hacker_

2019/06/03 04:01

>>LouiS0601 回答ありがとうございます。解決しました。
guest

0

if[]かどうかを判断して別処理するしかないと思います。

投稿2019/06/02 16:06

otn

総合スコア84538

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

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

hacker_

2019/06/02 16:15

回答ありがとうございます。 それは関数内にということでよろしいでしょうか? if number != []: a = max(number) b = min(number) c = a- b d = number[-1] e = d * c else: return 0 return e このような形でしょうか?
otn

2019/06/03 03:21

はい。関数内です。 []の時に早期にリターンするのが普通な気がします。
hacker_

2019/06/03 03:59

回答ありがとうございます。無事解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問