ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

みんなのPythonコミュのみんなのPython改訂版:質問で〜す

  • mixiチェック
  • このエントリーをはてなブックマークに追加
 すみません。ただいま大学院の「インターネット科学演習」という授業で「みんなのPython改訂版」を教科書に、コツコツとPythonの使い方を学んでいるところですが、今週の課題を進めている途中で、ちょっと疑問が生じました。

 課題の進め方は毎週同じですが、この本に例示されているリストを打ち込み、その結果を確認したうえで、自分で応用例を打ち込み、その結果を確認するという方法がとられています。

 今週は「04-02 関数を利用する」が課題の範囲ですが、P119「関数の戻り値」の最下段にあるプログラム例「関数を引数にする」を、この通りに打ち込むとエラーが出るだけなので、ちょっと戸惑っています。

「関数を引数にする」を打ち込むと、以下のような結果になります。

---------------------------------------------
>>> for cnt in range(len(seq)):
... print seq[cnt]
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'seq' is not defined
---------------------------------------------

 とりあえず例のとおりに打ち込んでみたのですが、ここで使われている「seq」の意味がわかりませんでした。「シークエンス」の意味であろうと考えたのですが、あらかじめ設定されている特別な関数や命令の名前でもなさそうです。

 そこで「seq」に次のようなリストを定義したところ、ここで望まれているような結果が得られたような気がします。

---------------------------------------------
>>> seq = [1, 2, 3, 4, 5]
>>> for cnt in range(len(seq)):
... print seq[cnt]
...
1
2
3
4
5
>>>
---------------------------------------------

「seq」については、このような変数名と考えていいのでしょうか?(シークエンス型を示す変数名として、一般的に使われているものという印象を受けたのですが)

 BASICとPerlくらいの知識しかないので、不安に苛まれながらPythonを学んでいますが、記憶細胞が日々死滅しつつある年齢での受講なので、1週間経つと、もう前週に学んだ内容を忘れてしまう状況で、毎回、復習が欠かせません。

 こんな危なっかしいビギナーに、アドバイスを頂ければ幸いです。

コメント(10)

「みんなのPython改訂版」は持っていないのですが、すがやみつるさんの推察通りの解釈で良いと思います

つまり、seq は単なる変数名であり、特に何らかの意味を持つ単語やキーワードではないということです
P119 のプログラム例の誤植か、その前後にプログラム例を補填するような記載があるのではないでしょうか
 どうもありがとうございます。

 P119に掲載されている例は、下記の2行のみで、実行結果も表示されていません(これを実行すると未定義エラーになります)。

------------------------------------
>>> for cnt in range(len(seq)):
...   print seq[cnt]
------------------------------------

 この前の例は無関係のもので、「seq」についての定義はありません。

 以下のような文字列を定義した場合でも正常に動きますので、やはり定義した行が抜けたのかもしれませんね。

------------------------------------
>>> seq = "abcde"
>>> for cnt in range(len(seq)):
...   print seq[cnt]
...
a
b
c
d
e
>>>
------------------------------------

(インデントを半角スペースにしておくと、1つだけにまとめられてしまうようなので、全角スペースにしました)

こんばんは:-)。
この部分のseqは,関数を説明するための導入として,関数には戻り値があり,関数によってはリストのような複雑なオブジェクトを戻り値として返すことがある,ということを示すためにコードの断片を示したものです。
最初から読み進めている読者なら足りない部分を類推する力がついてるはずと思って,seqの定義は書きませんでした。
おな,seqはシーケンスという縛りしかありませんので,リストにもタプルにも文字列にもなり得ます。
まさにすがやさんがなさったように,足りない部分を補えるということは,これまでの積み重ねがちゃんと咀嚼できているというこの証明に他ならないと思いますよ:-)。
atsさん

 ありがとうございました。

 課題が、例の部分をそのまま打ち込み、表示された結果をそのままコピー&ペーストして提出する方式なんです。

 そのため、この例のままだとエラーになったものを提出せざるを得ず、ちょっと戸惑ってしまったわけです。

 そうそう。まだ「タプル」の概念に、ちょっと戸惑っています。これも慣れだと思っておりますが。

>4
>>「タプル」の概念

「リスト」の概念が理解できていれば、最初に生成したとき以降は変更できない「リスト」だと考えておけば大丈夫
>竜@コンプネットさん

 ありがとうございます。

 Javaの授業を取っていたときもそうなんですが、いちどBASICで考えてからPythonのコードを考えるようなところがありまして、自分でも、フランス語を学ぶのに、いちど英語で考えてから、それをフランス語に再翻訳しているような感じがしています。

 Pythonは、2年がかりで学ぶので、コツコツ進めていきたいと思いますが、でも、こう書きながら、「リストかあ。BASICならDIMを使うところだな」なんて思ってしまうワケです(^_^;)。

DIM文使いましたね〜。
で,思いついたのですが,タプルはBASICでいうところのREAD DATA文に似ているかも知れません。複数ある,変更する必要のない値を扱うためにあるという意味では,同じような性質があると思いました:-)。
「タプルはREAD DATA文に似ている」

 これ、すごく納得できました(^_^)。BASIC育ちの人間のせいで、こう言っていただいて、なんだかストンと腑に落ちました。

 Perlも以下のWebサイトを参考に独習しました(^_^;)。

http://www.orange.ne.jp/~kibita/n88/
 今週もコツコツと『みんなのPython』をテキストに、課題を進めています。

 ところでP154の「set型を操作する」に出てくる「append()メソッド」ですが、次ページの「要素の追加」を試してもエラーになります。

 うーん……と困っていたのですが、P155の冒頭にチラリと印刷されていた「add()」を「append()」の代わりに使ったら、例のとおりの結果が出ました。

 ここは「add()」が正しいと考えていいのでしょうか。

  ***

 今回は、「find()」と「rfind()」などの末尾からの検索結果で示される数字の意味を咄嗟に理解できず、少しこんがらかりました。「rfind()」の結果は、後ろから数えたインデックスになるのかと勘違いしまして。
しばらく放置していてスイマセン。
事情がありまして,いませっせとタイポの発掘作業をしております。
ご指摘の部分も,タイポでした。本文ではadd()と書いてあるんですよね。ケアレスミスで申し訳ないです。
修正はサポートサイトで公開させていただきます。少々お待ち下さい。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

みんなのPython 更新情報

みんなのPythonのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング