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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

1470閲覧

python 戻り値が定義されてない

peanut

総合スコア11

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2016/10/21 00:43

###前提・実現したいこと
list_1から数を1つ取り出す。その数だけランダムに数字を発生させて、それらの和を取る。この動作でかかった時間も測る。
↑の流れを各list_1の要素ごとに和、かかった時間を出力する。
###発生している問題・エラーメッセージ

for n in list_1: create(n) ---> list_2.append(s) list_3.append(end) NameError: name 's' is not defined

###該当のソースコード

python2.7.12

1 2import random 3import time 4 5list_1=[1,2,4] 6list_2=[] 7list_3=[] 8 9def create(n): 10 start= time.time() 11 s=sum(random.randint(0,1000000)for x in range(n)) 12 end=time.time()-start 13 return (s,end) 14 15for n in list_1: 16 create(n) 17 list_2.append(s) 18 list_3.append(end) 19 20for (w1,w2,w3) in zip (list_1,list_2,list_3): 21 print "要素" +str(w1) +"\n要素の和" + str 22 23 24###補足情報(言語/FW/ツール等のバージョンなど) 25mac10.12 python2.7.12

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

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

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

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

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

guest

回答1

0

ベストアンサー

screate()のローカル変数なので、関数の外から参照することはできません。
エラーメッセージの通り、そのスコープでsが定義されていません。
現状のコードだとcreate()の戻り値が捨てられているようなので、それを利用してあげれば上手く動くコードになると思います。

投稿2016/10/21 01:27

carimatics

総合スコア740

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

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

peanut

2016/10/21 02:04

ローカル変数やスコープの意味を調べてみましたが、よくわかりません。 すみませんが参考URLなどあれば載せていただけるとありがたいです。
D.I

2016/10/21 02:07

Carimaticsさんが書かれているのに補足すると for分内の create(n) を以下のようにするといいと思います s, end = create(n)
D.I

2016/10/21 02:10

ローカル変数とは、そのメソッド内のみ使われるものです。 def create(n):内で使われている s,end は そのメソッド内でのみ使われ、 その後、破棄されると考えてもらえばいいと思います
carimatics

2016/10/21 02:36

D.Iさんのコメントの通りですが、少し補足します。 「スコープ」というのは、「変数や関数などの名前を利用できる範囲」のことです。 例えば、関数内で定義された変数は、その関数内のみで利用可能な変数です。 つまり、変数を利用できる範囲が限定されています。 (繰り返しの説明になりますが)このような「変数が利用可能な範囲」をスコープと呼びます。 特に、関数内でのみ利用可能な変数は「ローカル変数」と呼ばれます。 スコープの取り扱いについては言語仕様によって異なります。 Pythonのスコープについては以下の公式ドキュメントで解説されていますので、参考にしてください。 http://docs.python.jp/2.7/tutorial/classes.html 公式ドキュメントはある程度の慣れがなければ用語が難しく感じるかもしれないので、以下のURLも参考に挙げておきます。 http://bacspot.dip.jp/virtual_link/www/si.musashi-tech.ac.jp/www/Python_IntroProgramming/02/index-1a.html http://uxmilk.jp/41353
peanut

2016/10/21 03:44

わかりやすい解説ありがとうございます! 上手く動きました。URLも読んで見ます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問