プロが教えるわが家の防犯対策術!

昔、チャットソフトや掲示板、CSVデータの分析でperlを使っていました。
その時は Perl/CGI逆引き大全600の極意 を全部読むとやりたいことは粗方できました。
そこで、pythonでもこのような本を探しているのですが見つかりません。
お薦めの書籍があれば教えて頂けると幸いです。

もしくは、正しいプログラミングの練習方法などあれば教えて頂けると幸いです。

perlについてですが、人の書いたソフトが殆ど別の言語を使っているかのように難しく殆ど読めませんでした。一応、動く物はできたのですが、独学としては失敗したと思っています。

宜しくお願い致します。

A 回答 (4件)

あー、そういう意味では、用語は覚えておいた方がいいかもしれません。



https://docs.python.jp/3/glossary.html#term-argu …
> 位置引数: キーワード引数以外の引数。

原文
https://docs.python.org/3.6/glossary.html#term-a …
> positional argument: an argument that is not a keyword argument.


こういう用語は、日常会話とは違う意味で使われていることがあります。
参考書やネット情報を読むときでも、質問するときでも、専門用語(Technical term)を正しく使うのが大切です。
    • good
    • 0

まず、どんなプログラムでも共通ですが


「どんな間違いなのか、できるかぎり正確に把握する」
のが大切です。

「エラーになります」
なんて情報、何の価値もありません。

エラーが出るなら、具体的にどんなエラーなのか、メッセージが出るはずです。
それを読むことが、まず第一歩です。
エラーメッセージを読んで理解するだけで、大抵のエラーは直せます。


そのスクリプト、こんなエラーメッセージじゃないですか?
Traceback (most recent call last):
File "XXXXX.py", line 18, in <module>
print ( test_1(function_1,5,6) )
File "XXXXX.py", line 7, in test_1
return f(x+p)
TypeError: function_1() missing 1 required positional argument: 'p'

> function_1() missing 1 required positional argument: 'p'

「 function_1() で missing(無い) 1(1つの) required(必要とされる) positional(位置の) argument引数) : p
と、単語の直訳でも、なんとなく言いたいことはわかるのでは?

File "XXXXX.py", line 18, in <module>
File "XXXXX.py", line 7, in test_1

は、ファイル〜の XX行目、 モジュールの直下 / test_1メソッド というエラー発生箇所を示しています。
(行数は、こちらで確認したものなので、実際のものは、あなた自身で確認してください)

print ( test_1(function_1,5,6) )
return f(x+p)
は、どこで発生したエラーか、実際のスクリプトを出力したものです。
実行は上から順番に去れてます。
print ( test_1(function_1,5,6) )
から呼び出された先で
return f(x+p)
を実行中にエラーになった、ということです。


ここまでのエラーメッセージから得た情報をふまえて、エラー発生箇所
return f(x+p)
をよーく見てください。



プログラミングは、コードを書くことも大切ですが、それ以上に「正しく動作するように修正する」ことが重要です。
残念ながら、参考書にはあまり書いてありません。
    • good
    • 0
この回答へのお礼

再度回答いただきありがとうございます!

回答を読み試行錯誤し、こちらでお礼を何度か書き換えている間に分かりました。特に疑問点を文章にしようと作業する時に気付いたのですが、これをしなければ一生気付けなかった気がします。結局1時間30分くらい掛かってしまいました><
もう少し、効率よくやりたいのですが何か良い方法は無いものでしょうかね?
今、ゼロから作るDeepLearningという本を読んでいるのですがページが全然進みませんOrz


以下無駄に長いですが気付くまでの試行錯誤です。

翻訳について恥ずかしながらmissing(行方不明)とargument(議論?)の訳を間違えていました。pの位置がおかしいと言っているところまでは分かったです。位置とはなんぞ?そもそもpを付けてダメという意味なのか?など30分くらい考えたりしていました。ただ、汎用性の高そうな言語ですし入れることは多分できるだろうが・・・悩んでいました。
perlの場合英文を訳さずこの単語のエラーなら大体この辺りがおかしいと分かっていましたのであまり細かく読んでいませんでした。正しく冷静に訳すことの重要性を再認識致しました。頂いた情報を元に考えたところf(x,p)やf(x+p,p)など無事動作させることができました!

また、そもそもなのですが、一次関数をそのまま直接入れることができるのも「え?こんな事できるの???」と驚きがあったりしています。どんな形で入力できるのかなどについてはどのようにすれば分かりますでしょうか?実はそれが知りたく、色々コードをいじくってエラーが出て勝手に混乱していました。
サンプルコードを見ていて、できるんだ。と気付くのも良いのですが、できれば、予め関数をそのまま入れることを知っておきたかったりします。
今回のも、f(x,p)が良くてf(x+p)がなぜダメなのか正直なところよく分かりません。引数認識できなかったからダメなのだろうから、fがサブルーチンみたいな感じとして認識されたのかな位の推測をしてみましたが自信が持てないのです。
あれ、fってよく見たらf(x,p)と同じ形だしfunction_1(x,p)って意味じぁないか???
※この時点で、引数にサブルーチンを入れたのだから当然だろと自分で突っ込みを入れました。ここまでに1.5時間掛かりました。

お礼日時:2017/05/22 23:01

pythonを使って〇〇をしてみよう、みたいな特定分野(科学計算や機械学習、クローリングなど)向けの本はありますけど、全方位向けの書籍はあまり見ないです。

あと「チャットソフトや掲示板」というのは今ならpythonではなく、phpを使用することが多いのではないかと思います。

件の書籍の内容はご理解されているのですよね?
であれば、python の入門書を購入し基礎固めをしてから、その書籍の内容をpython用に翻訳するのは如何でしょうか?
特殊なライブラリを使用するのでなければ対応可能だと思います。


他言語習得者にお勧めする入門本は以下です。
入門 Python 3
https://www.amazon.co.jp/%E5%85%A5%E9%96%80-Pyth …
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。

Perl/CGI逆引き大全600の極意の内容の理解というのがよく分かりませんが、コピペが多いですが、色々試している間だに何となくperlの使い方が分かり、エラーが出ないようにCGIを作ることはできるようになりました。ただ、一から書いていると言うよりも似ているサブルーチンを探してきてコピペ改変しながら使う感じです。一応できるようになり、一応らくだ本も読んだのですが、難しい表現が多く、サンプルを見てどのように動くかは分かるけど、いまいち用語が理解ができないという感じで読み終わりました。

pythonについてはニューラルネットに興味が沸き誰もがpythonを薦めることもあり、こちらを勉強しようと思っています。今のところ「ゼロから作る Deep Learning」という本を読みたいと思い、perlと似ていることもあり特にpythonについては勉強せずに動かしながらやっている感じです。100/300ぺージくらいまでは特に疑問無く読み進められたのですが、微妙に分からない所もチラホラ出てきて困っている感じです。

ご紹介頂いた本は、らくだ本と同じ会社ですね。正直なところ、perlで読んだのですがその経験から理解できる自信が沸かない気がしています。プログラマの方は本を読んでその内容が頭にしっかり入っているのでしょうかね・・・
因みに、Windowsのソフトを作りたく、初めてのC#も買ったのですが、途中で挫折してしまい結局諦めてしまい、なんとか使えるのはperlだけというのが今の私の状況です。

お礼日時:2017/05/22 20:51

私は


https://docs.python.jp/3/
こんなのがあれば十分なので、お勧め書籍なるものは紹介できません。


> perlについてですが、人の書いたソフトが殆ど別の言語を使っているかのように難しく殆ど読めませんでした。

Perlには その自由さの裏返しとして
「Write Only Language(書き込み専用言語:書けるけど、あとから読むとなんだかわからない)」
なんて揶揄があるくらいですから。

その点、Python は「だれが書いても同じようになる」という特徴があるので、わかりやすいと思います。
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
例えばですが、下記の様なテストスクリプトを、誰かが書いた物を参考に、見よう見まねで書いているのですが最後のprintは正常に動作しません。
こういった分からない時に、そのサイトはどのように利用すればよいのでしょうか?
perlでも同じようなサイトはあるのですが今ひとつ利用方法が分からないところがあったりします。

def test_0(f,x):
 p = 10
 return f(x+p)

def test_1(f,x,p):
 return f(x+p)

def function_0(x):
 return 100*x+20

def function_1(x,p):
 return 100*x+10*p

print ( function_0(5) )
print ( function_1(5,6) )
print ( test_0(function_0,5) )
print ( test_1(function_1,5,6) ) #エラーが出る

お礼日時:2017/05/22 20:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!