[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/01 12:01 / Filesize : 217 KB / Number-of Response : 883
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれPython(超初心者用) その7



1 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 13:25:51 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、
お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>950 辺りで

前スレ
くだすれPython(超初心者用) その6
pc12.2ch.net/test/read.cgi/tech/1264686181/

関連スレ
Pythonのお勉強 Part37
pc12.2ch.net/test/read.cgi/tech/1268467168/

522 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 15:57:52 ]
質問が漠然としすぎだろ
Pythonはどの程度できるのか
Webプログラミングって具体的にはどんなことがしたいのか
そういうこと書かないとまともな答えは返ってこないと思うよ

523 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 16:05:37 ]
>>522
そうですね。
まだちょっと勉強不足なので>>521
無視して下さい。
ありがとうございました

524 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 17:54:46 ]
djangoでもやっとけ

525 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 18:07:54 ]
>>521
みんなのパイソン webアプリ編

526 名前:デフォルトの名無しさん [2010/06/28(月) 16:49:57 ]
オーナーがrootのpythonのライブラリを
/usr/local/に配置して、
一般ユーザで実行したら、
pycファイルが生成される時に問題になりますよね。
pycファイルが生成されるディレクトリは一般ユーザにも書き込み可にしておくのでしょうか?
それともrootで一度全部実行してpycファイルを生成しておくのでしょうか?

527 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 19:05:39 ]
>>526
事前にコンパイルするもの。
python -m compileall /path/to/lib
で、再帰的にコンパイルできるはず。

528 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 22:42:12 ]
>pycファイルが生成される時に問題になりますよね。

ならない
毎回pycが作られずに実行されるだけ

529 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 01:11:20 ]
python3はいつごろ主流になりますか

530 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 01:14:12 ]
>>529
3-5年後



531 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 04:04:15 ]
>>527
>>528

よく分かりました
ありがとうございました。

532 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 06:53:28 ]
>>530
去年も同じこと聞いた。
来年も同じこと聞くのかな。

533 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 07:17:26 ]
python4はいつごろ?

534 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 07:20:14 ]
3-5年後

535 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 08:47:09 ]
>>532
ちゃんと前進しているよ。
PyQt、CherryPy、Cython、lxml、docutils、etc... がPython3対応しているし、
今年のGSoCでもいろいろな有名プロダクトがPython3対応プロジェクトを
上げてるし、Python2最後となるPython2.7のリリース目前で、すでに開発者
MLはPython3への移行をどうやって加速するかの話題で一杯。

536 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 08:48:50 ]
>>533
10年後くらいに登場して、15年後くらいに普及するんじゃない?

537 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 09:49:31 ]
月間Pythonはいつ出ますか?

538 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 09:52:12 ]
月間

539 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 23:04:53 ]
月刊「桃井かおり」の次

540 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 12:34:00 ]
>>535
おれも自分のプログラムをいくつか、3.1で動くようにしてみた。
が、やってみて、ふと思ったのは、3.1に対応するメリットって
なんだろう?ってこと。
3.1で欲しい機能のほとんどは、2.xにバックポートされてるし、
対応ライブラリもとぼしいのにって考えたら、何のためにやって
んのか、よくわからなくなってしまった…



541 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 00:16:33 ]
>>540
でも、それは2.7で終わりで、これからは新しい機能はPython3にしか導入されない。
New GIL はPython3.2から搭載されるし、unladen swallowで開発されたLLVM JITは
Python 3.3 で configure オプションになるべくPython3用に開発が継続している。

542 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 10:46:13 ]
context.Dr7 |= condition << ((available * 4) + 16)
これは
context.Dr7とconditionで論理和をとり、その値をcontext.Dr7に
代入してさらに((available * 4)+16)分だけ左にビットシフトするという
意味ですよね?

543 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 10:55:52 ]
プログラミングの知識もないのにttp://www.oreilly.co.jp/books/9784873114484/読んだりするなよ(wWwwwWWwww

544 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 11:07:12 ]
>>542
context.Dr7 |= condition << ((available * 4) + 16)

context.Dr7 = context.Dr7 | condition << ((available * 4) + 16)
と等価

<< と | の優先順位は << のほうが先なので
condition を avaialbe * 4 + 16 で左シフトしてから
context.Dr7 と論理和とって context.Dr7 に代入するって意味

545 名前:544 mailto:sage [2010/07/02(金) 11:08:05 ]
typoがひどいが煽られても泣かない

546 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 11:11:21 ]
>>543
サーセン;; c言語ちょっとかじったレベルで挑戦してます;;

>>544
ああ なるほど優先順位が高いんですね ありがとうござます><

547 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 00:07:02 ]
>>544
結果的に正しいけど、
context.Dr7 = context.Dr7 | (condition << ((available * 4) + 16))
とした方がいいと思うよ。

a *= 2+1 と等価なのは、
a = a * 2+1 じゃなく
a = a * (2+1) だから。

548 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 00:09:55 ]
いちいち()が面倒だから
a *= 2 + 1
で言いと思うぞ
っつーかここらは C でも同じはずなんだが

549 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 00:48:13 ]
なんでpythonにビット演算子入れようとしたんだろう
高級言語だとそこまで需要高くないと思うし、関数かメソッドで十分じゃね?

550 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 00:51:46 ]
>>548
ちょwちゃんと嫁w



551 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 00:58:48 ]
>>550
さすがに
a *= 2 + 1

a = a * 2 + 1
と解釈するアホはおらんだろ

552 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:00:08 ]
>>549
なんでSQLにビット演算子入れなかったんだろう

553 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:30:34 ]
>>551
的外れなレスだな。

554 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:33:49 ]
>>551
じゃあ
context.Dr7 |= condition < ((available * 4) + 16)
だったら?

555 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:39:22 ]
>>554
>>544

556 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:49:38 ]
>>555
え?ほんとに?

557 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:58:00 ]
>>555
class context:
    Dr7=7
condition=100
available=0
context.Dr7 |= condition < ((available * 4) + 16)
# ==> context.Dr7 = 7
context.Dr7 = context.Dr7 | condition < ((available * 4) + 16)
# ==> context.Dr7 = False

558 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 03:34:10 ]
PyScripterで実行を停止するにはどうしたら良いかわかりますか?
止め方がわからないと無限ループに入ったときに為す術がないので聞きたいです。

559 名前:544 mailto:sage [2010/07/03(土) 06:20:16 ]
>>547
ああ本当だ。考え方が完全に間違っていた
<< と | の優先順位を云々するまでもないね
指摘ありがとう

560 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:00:30 ]
>>> import cairo

Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
import cairo
File "C:\Python26\lib\site-packages\cairo\__init__.py", line 1, in <module>
from _cairo import *
ImportError: DLL load failed: 指定されたモジュールが見つかりません。


???



561 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:33:38 ]
エラーメッセージを書かないのは論外だが、エラーメッセージだけをかくのもいかんだろ。
どうやってインストールしたかぐらいは書け。

562 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 21:17:09 ]
python初めて三日の俺にも指定されたモジュールが見つからなかったっていうエラーなのはわかる
どこが???なんだ

563 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 21:21:39 ]
ここまで答える気が失せる質問も珍しい

564 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 21:30:21 ]
GTK+がインストールされてないと予想してみる

565 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 21:33:11 ]
GTKは糞

566 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:07:57 ]
あっはい
python2.6.5を使っていて、pycairoを使おうとしまして
「pycairoモジュールについて python.matrix.jp/modules/pycairo.html
ここのインストーラへのリンクが切れてたりするので、適当にpy2.6用を探してきました↓
sourceforge.jp/projects/sfnet_ecell/downloads/Third-party%20Packages/Windows/pycairo-1.8.8.win32-py2.6.exe/
sourceforge.jp/projects/sfnet_ecell/downloads/Third-party%20Packages/Windows/pygtk-2.16.0.win32-py2.6.exe/

gtkのインストールは
gtk+-bundle_2.20.0-20100406_win32でで、
kyle-in-jp.blogspot.com/2009/03/pycairowindows.html
ここの
pkg-config --cflags gtk+-2.0
このコマンドを実行しただけなんですが、普通にインスコしないと駄目なんでしょうか
バージョンのミスマッチとかですか?一体どうすればいいのやら

567 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:22:13 ]
gtkのbinフォルダが環境変数のPATHに加わってないんじゃない?

568 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:25:11 ]
>>566
_cairo.dllも入ってるはずなのに、どういうわけか入ってないって内容のエラー。
身に覚えがないなら、よそからpycairo拾ってきたらいいと思う。

569 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:57:19 ]
_cairo.pyd が依存している DLL (多分 libcairo-2.dll) が見つからないってエラーでしょ

570 名前:568 mailto:sage [2010/07/04(日) 01:57:39 ]
>>569
ごめん。俺が間違ってた。
>>568なら
ImportError: No module named _cairo
って出るはずだな。



571 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 08:06:15 ]
>>569
そのdllがあればいいんですか?

572 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 23:41:32 ]
プログラム自体超初心者です。ある入門書に下記のように書いてありました。
何度も読み返し、丸二日自力で考えたのですが、どうしても書いてある意味が分かりません。
特に”実際のデータ”、”実体”が何なのか分かりません。
結局”初期化メソッド”、”インスタンス”とは何なのでしょうか?

datetime.date(2030,4,14)
ところで、dateはデータ型の名前そのものですが、見方を変えると、datetimeが持っているdateという関数のようにも解釈できます。
つまり、ある型”の実際のデータ”を用意するには、その型と同じ名前のメソッドを呼び出せばいいのです
この”型と同じメソッド”の事を、特に初期化メソッドと呼びます。また、このように生成されたデータ型の”実体”の事を、特に、インスタンスと呼びます。



573 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 00:24:31 ]
>ある入門書

さっさと捨てろ

574 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 00:41:35 ]
インスタンスは型を具象化させたもので、具象化させるプロセスが初期化メソッドかな
まあその本はさっさと投げ捨ててプログラム書いてみた方が早いよ

575 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 00:48:40 ]
>>572
ほんとはオブジェクト指向なんて、初心者のうちから叩き込まれても何が嬉しいのか分からないんだよ。
だから今はあっさり流して、いつかプログラムが自分でも結構かけるようになった日に見返して、
なるほど、そういう意味だったんだと気づけたらそれでいいのだけど。

※上級者の方へ: 以下、厳密でないのは分かっている。間違いの指摘や補足は、初心者を困らせないような前置きをしてから頼む。

君は、日付を扱いたい。
君が簡単に日付を扱えるように、Pythonの作者たちが日付を扱うための「型」としてdateを用意してくれている。
「データ型」と「型」は同じものと考えていい。

そして、date型を作るためにはどうすればいいか? datetime.dateを関数呼び出しのように使えばいい。
それが「見方を変えると、datetimeが持っているdateという関数のようにも解釈できます」の意味。

別に、makeDate()でもdateFactory()でも名前なんて何でもよかったんだけど、
Pythonでは、型の名前を関数呼び出しのようにすると型を作れる、というルールになっている。
(他にもそういうルールになってる言語も結構あるから、そこそこメジャーなルールと言えるけど)

date()を呼び出しのようにすると、Pythonでは、
1. date型を作り出す
2. date.__init__()って関数を、最初の引数に1で作り出した型、第二引数以降にdate()の引数を入れて呼び出す
ということが行われる。
ここで、date.__init__()関数は、dateを使うための準備をするための関数で「初期化メソッド」と呼ばれている。

ところで、dateがどういう風にできているのか、というのを見ると、
dateはこんな関数を持ってるよ、といった内容の「クラス定義」だけが書いてある。

実際に日付のデータを持っているのはdateそのものではなく、「date()で作り出したもの」のみ。
そういう「クラス定義」から作り出したものを「インスタンス」と呼んでおり、インスタンスが日付のデータを実際に持っている。
つまり、「クラス定義」という作り方マニュアルを使って、作り出した「実体」が「実際のデータ」を持っているインスタンス、ということだ。

……って、わっかんねーよなぁ。

576 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 01:24:42 ]
140字以内でお願いできますか

577 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 02:06:04 ]
その本は漏れも捨てたほうがいいと思うけど、それはさておき

>>572
datetimeはモジュールで、その中にはdateというクラスが入っている
クラスは「呼び出し可能」であり、関数のように呼び出すことができる
呼び出すことでクラスはインスタンスを生成して返す

下はdateクラスからインスタンスd1, d2を生成し、属性の参照とメソッド呼び出しをする例
>>> import datetime
>>> d1 = datetime.date(1945, 8, 15)
>>> d2 = datetime.date(2000, 1, 31)
>>> d1.year, d2.year
(1945, 2000)
>>> d1.isoformat(), d2.isoformat()
('1945-08-15', '2000-01-31')

初期化メソッド(たぶん__init__のこと)については自分でクラス定義するようになったらわかるよ

578 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 02:10:57 ]
とりあえずプログラムを書け。小難しいことは後で必要があったら考えろ

579 名前:572 mailto:sage [2010/07/05(月) 02:20:25 ]
>>575,577
本当に本当にありがとうございます!!!
クラスやinitなどまだ勉強していない部分なので詳細は理解できませんが、中で何をやっているのか仕組みは分かってきました。
明日早いのに感動して色々調べてたらこんな時間に・・
入門用の本はやさしい書き方なのですが、自分のように論理的に納得できないと前に進めないタイプは
ちょっと難しくても詳しく書いてある本の方がいい気がしてきました。



580 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 02:23:01 ]
何のためにコンストラクタが一つと決まってるのか分からん。Javaはいくつもできるじゃん



581 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 02:54:46 ]
>>580
理由1(実装による理由)
Pythonでは名前空間がname manglingもしない単純な辞書になってるから、それをしようと思ったらすごく面倒になるし、
関数の引数に型をつけないから、引数の数でしか曖昧性を排除する手段がない。
けど、引数の数だけでいいんだったら、可変数引数をとればいいだけのこと。

理由2(ややPython信者めいた理由)
そもそもコンストラクタを複数作る必要はない。
どうせどれも似たような処理だったり、似てはいなくても共通部分が多く存在することは多い。
C++やJavaで、別のコンストラクタを呼び出すだけのコンストラクタを作ったことがある人も多いのでは?

もともとコンストラクタ(に限らず、同名の関数)を複数作らなければならないのは、
型に縛りがあることや、可変長引数が扱いにくい/扱えないことにあるので、
それが可能なPythonには、コンストラクタ(や関数)をいくつも作る必要がない。

582 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 03:22:04 ]
俺もCを学校で習った程度の者なんだけど
>>572の"初期化メソッド"ってつまり、コンストラクタの事?

583 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 03:27:02 ]
そう取るのが妥当じゃね?
コンストラクタに複雑な引数渡すくらいならclassmethodからインスタンス返した方がいいよ
win32apiみたいなのはごめんだ

584 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 12:39:00 ]
いわゆるファクトリ関数だな

585 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 11:34:21 ]
最適化アルゴリズムをpythonで組んでるのですが
10000回反復し、10〜100回くり返し試行するため
実行時間が数時間かかります
無駄な処理を省き8時間かかっていたものを4,5時間までに短縮できましたが
まだまだ遅すぎます。
そこでcythonなどを使おうと調べてるのですが、
解説サイトが少なく(英語読めませんごめんなさい)、使い方がほとんどわかりません
わかりやすい解説サイトもしくは使い方を教えてください。
まずは、簡単なやつから作ろうと思ってます。
その次の段階としてルーレット選択は全てcythonなどで実行できるようにしたいです。
ちなみにpython3使っていて、2.xにする気はほとんどないです。

586 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 12:21:42 ]
>>585
そのルーレット選択とかいう、Cythonで書きたいコードの元になるPythonコードを貼って。

コードを一切見せずに日本語でやりたいことだけ言われても、どう返していいかわからない。

587 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:11:22 ]
>>586
# 次の都市決定
def next_city(self,tau,eta):
""" 評価値計算 """
val_L = [ (tau[self.pre][omega]**self.alufa)*eta[self.pre][omega] for omega in self.omega_list ] # 未訪問評価値リスト作成
s = sum(val_L) # 評価値の合計
""" 評価値が0の時 """
if not s: # 評価値の合計が0なら
val_L = [ eta[self.pre][omega] for omega in self.omega_list ] # 距離の評価値のみでリスト作成
s = sum(val_L) # 評価値の合計更新
""" 相対値 """
val_L = [(i/s) for i in val_L] # 相対的な評価値
#s = sum(val_L) # 評価値の合計更新

""" ルーレット選択 """
tmp_sum = 0 # 合計
val_prob_L = [] # 評価値の確率リスト
for val in val_L: # 評価値リスト
tmp_sum += val # 評価値加算
#tmp_sum += val/s # 評価値加算
val_prob_L.append(tmp_sum) # 評価値確率リスト作成

self.pre = self.omega_list[bisect.bisect(val_prob_L,random.random())] # 次の都市

とりあえずはこの部分をcythonで書きたいです
tau,eta は、n*nの二次元リストです。 今、nは51です。
self.pre:現在の場所,omega未訪問の場所
eta:現在地と未訪問の場所との距離(の逆数)
あとわかりづらい部分あったら言ってください

基本的に独学なので変なコードですいません
コメントは自分でわかりやすいように書いてあるやつなので表現が間違ってることもあります

588 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:13:54 ]
インデント…

  # 次の都市決定
  def next_city(self,tau,eta):
    """ 評価値計算 """
    val_L = [ (tau[self.pre][omega]**self.alufa)*eta[self.pre][omega] for omega in self.omega_list ] # 未訪問評価値リスト作成
    s = sum(val_L) # 評価値の合計
    """ 評価値が0の時 """
    if not s: # 評価値の合計が0なら
      val_L = [ eta[self.pre][omega] for omega in self.omega_list ] # 距離の評価値のみでリスト作成
      s = sum(val_L) # 評価値の合計更新
    """ 相対値 """
    val_L = [(i/s) for i in val_L] # 相対的な評価値
    #s = sum(val_L) # 評価値の合計更新

    """ ルーレット選択 """
    tmp_sum = 0 # 評価値の合計
    val_prob_L = [] # 評価値の確率リスト
    for val in val_L: # 評価値リスト
      tmp_sum += val # 評価値加算
      #tmp_sum += val/s # 評価値加算
      val_prob_L.append(tmp_sum) # 評価値確率リスト作成

    self.pre = self.omega_list[bisect.bisect(val_prob_L,random.random())] # 次の都市

589 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:46:06 ]
糞どうでもいいけど、Cythonってなんて発音すんの?

590 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:50:41 ]
サイソンでしょ



591 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:53:48 ]
アメリカ:サイソン
イギリス:シーソン
ロシア:スサン
ドイツ:サイスン
イタリア:シッスナ
フランス:スーさん
中国:シェンシゥン
韓国:サアソン
日本:なんて読むの?

592 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 18:31:22 ]
カイソン

593 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 21:46:26 ]
docs.cython.org/src/quickstart/build.html
英語わからないっつってもこれくらいならなんとかなるんじゃないの?

594 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 22:02:01 ]
ちぃちぃょん

595 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:01:16 ]
糞どうでもいいけど、数あるプログラミング言語がある中で、

Pythonを選んだ理由を教えてください。

596 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:03:35 ]
名前がかわいい

597 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:06:22 ]
Guidoさんが好みのタイプなので

598 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:13:29 ]
括弧が少ないから

599 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:15:23 ]
2タブが気に食わなかったから

600 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:18:19 ]
$があまり出てこないから



601 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:19:39 ]
インストールとかモジュールの追加が楽だから

602 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 01:29:25 ]
Perlが嫌いだったから

603 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 01:40:18 ]
インデント強要ウザいとかいうバカがいないから

604 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 03:36:56 ]
hello.pyx
def say_hello_to(name):
  print("Hello %s!" % name)

C:\Users\test\>python C:\Python31\Scripts\cython.py hello.pyx

Error converting Pyrex file to C:
------------------------------------------------------------
...
def say_hello_to(name):
^
------------------------------------------------------------

C:\Users\test\hello.pyx:1:23: Unrecognized character

こんなエラーが出るんですがどうしたらいいですか?

605 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 07:54:04 ]
>>604
BOM付きUTF-8で書いてるんじゃない?

606 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 10:28:55 ]
>>605
ありがとうございます
どこで、BOM付きUTF-8に設定しているのかわからずに、
とりあえず、適当にエンコードしてみたら、

UTF-8 - Win(CR +LF)  にしたら、同じエラー
UTF-8 - Unix(LF)    にしたら通りました。

で新たなエラーが

thon setup.py build_ext --inplace
running build_ext
cythoning hello.pyx to hello.c
building 'hello' extension
error: Unable to find vcvarsall.bat

調べた結果
pythonlife.seesaa.net/archives/200909-1.html
>MSVCかMinGWまたはCygwin上のgccが必要となる。
とあり、MinGWは入っているので、これを利用し、

>後で判ったことだが、PythonでMinGWをdefaultで使いInstallする場合には、Python26/Lib/distutilsに
>次の内容distutils.cfgとして作成しておくと良いそうだ。今後は概ね「setup.py install」だけで大丈夫かもしれない。
>[build]
>compiler=mingw32
Python31/Lib/distutils/distutils.cfgを追加し、エラーもなくコンパイル出来ました。
import helloとし、実行した結果なんとかできました。

あとは、setup.pyの書き方がいまいち理解してないので、もう少し勉強してみます。

607 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 10:58:54 ]
まずBOM有無が決められるエディタを探すのが先じゃないかな?

608 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 11:31:25 ]
tmp.py
----
import hello
----

C:\Users\test>python tmp.py
Traceback (most recent call last):
File "tmp.py", line 1, in <module>
import hello
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8d in position 22: unexpected code byte
対話モードだと出来るのですが、テキストで.pyを作成して実行すると上記のエラーが起きます
これは何が問題になっているのでしょうか?

C:\Users\test>python
Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import hello
>>> hello.say_hello_to()
Hello!
>>>

609 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 12:03:22 ]
>>607
emacs23使ってます
.emacs.elを書き換えて
デフォルト保存をutf-8から,utf-8-auto-unixにしたらコンパイルは問題なくなりました

610 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 20:53:18 ]
>595
マジレスすると、numpyとmatplotlibが使いたかった

そんだけ



611 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 01:57:53 ]
>>608
エラーメッセージはちゃんと読んだ?

612 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 13:00:11 ]
cursesでstdscrの画面右下(24 x 80のコンソールなら23, 79)に書き込もうとすると
ERRが返ってくるんだけど、うちだけ?

import curses
stdscr = curses.initscr()
maxy, maxx = stdscr.getmaxyx()
stdscr.addch(maxy - 1, maxx - 1, 'A')
curses.endwin()

File "bugtest.py", line 4, in <module>
stdscr.addch(maxy - 1, maxx - 1, 'A')
_curses.error: addch() returned ERR

stdscr.addstr()でも同じ。

Cからだといけるんだけど、Pythonで回避法ってある?
Python 2.5.1と2.6.1で確認済。Macです。


613 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 14:31:15 ]
うちもなる。
Cの方は単に返り値を無視してるだけでは?
scrollokとかするとエラーでないっぽい。

614 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 14:45:27 ]
Cでは確かに返り値をチェックしてない。
try:〜except: passでとりあえず回避。Thx。

615 名前:デフォルトの名無しさん mailto:sage [2010/07/10(土) 01:09:38 ]
>>611
unicodeデコードエラー
解読出来ませんでした。

どうやったら直るのでしょうか・・・・?
文字コードをいくつか変えて実行してもダメで、どうすればいいかわからないです。

616 名前:デフォルトの名無しさん mailto:sage [2010/07/10(土) 01:14:06 ]
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8d in position 22: unexpected code byte

要点は
utf8' codec can't decode byte 0x8d

unexpected code byte

617 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 12:34:54 ]
対話モードで、
>>> repr(open('tmp.py', 'rb').read())
を実行してみて。

618 名前:名無しさん@そうだ選挙に行こう [2010/07/10(土) 20:36:35 ]
window.pyという名前で保存したのに、ダブルクリックで起動できません
何が原因でしょうか?

619 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 20:39:49 ]
>>618
コマンドプロンプトから起動してね

620 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 20:40:50 ]
>>619
それしかないんでしょうか



621 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 20:45:18 ]
>>620
というか起動はしてるんだけど
処理を終えたかエラーで止まったかでプロンプトが閉じちゃってるんだと思うよ

これ以上はwindow.pyの内容と何がしたいのか(どういう結果がほしいのか)が
わからないとなんともいえない

622 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 20:46:47 ]
>>621
なるほど、解決しました

623 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 23:55:07 ]
お礼は?

624 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 00:24:47 ]
三行以上で?

625 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 01:26:35 ]
>>617
C:\Users\test>python tmp.py
Traceback (most recent call last):
 File "tmp.py", line 1, in <module>
  import hello
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8d in position 22: unexpected code byte

C:\Users\test>python
Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] onwin32
Type "help", "copyright", "credits" or "license" for more information.
>>> #utf-8 Win
>>> repr(open('tmp.py', 'rb').read())
"b'import hello\\r\\nhello.say_hello_to()\\r\\n'"
>>> #utf-8 Unix
>>> repr(open('tmp.py', 'rb').read())
"b'import hello\\nhello.say_hello_to()\\n'"
>>>

でした。

>>616
>UnicodeDecodeError: 'utf8'コーデックは位置22でバイト0x8dを解読できません: 予期していなかったコードバイト

>'utf8'コーデックはバイト0x8dを解読できません。
0x8d がどれを指してるのかが・・・
>予期していなかったコードバイト
0x8dがダメなんですよね?
utf8自体がダメなんですかね

飯食って、グレープフルーツゼリー作って、そのあと意識があれば調べてみます

626 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 02:18:16 ]
なんだ中学生か

627 名前:625 mailto:sage [2010/07/11(日) 02:20:59 ]
う〜ん・・・
結局よくわからないです

hello.pydがいけないんですか?
この中なら\x8d は何回か出てきてます
でもそしたら、対話モードでもimport出来ないはず...?

今度こそ飯を

628 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 02:33:41 ]
バイト数が問題なんですか><

629 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 04:30:08 ]
まずBOM有無が決められるエディタを探すのが先じゃないかな?

630 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 04:42:33 ]
>>629
そのためにpyscripter入れたけどダメでした



631 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 04:49:59 ]
馬鹿には無理

632 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 07:45:36 ]
notepad++オヌヌメ

633 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 09:23:34 ]
結局どうしたいいんですか?

634 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 10:08:13 ]
>>627
pycじゃなくてpyd?
よくわかんないから関連ファイル全部まとめてzipでうpしてくれると話が早い

635 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:46:52 ]
>>627
対話モードと直接実行時でロードしている hello モジュールが違ってる気がする。

tmp.py で
try:
  import hello
except UnicodeDecodeError as e:
  print(repr(e.object), (e.start, e.end))
import os, imp
print(os.path.abspath(imp.find_module("hello")[1]))

636 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:47:38 ]
BOMって関係あんの?

637 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:51:54 ]
>>604 の Unrecognized character のエラーは codecs.open 使ってるのに
'\r' を読み取る事を考慮していない Cython のバグ

638 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:59:03 ]
俺が体験してきた中で
一番最初に出会って、頻繁に出るのはBOM関連のエラーだな
たまにBOM付きじゃないとダメってのがあるけど基本なしですれば問題ない
まずBOM無しUTF-8を既定にできるエディタをさがすべき

639 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 13:38:55 ]
>>638
で、そのBOM関連エラーでどうやって0x8dが出るんよ。

640 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 13:54:11 ]
ソースコードエンコーディング絡みなら SyntaxError が出るはず



641 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 14:03:33 ]
こんなprintの段階でググる能力すらないのが終わってる
どうしても答えが欲しいなら別言語に移ったほうがよさそう
恐らく、このまま甘やかすとこのスレに日記帳のように書き込まれる

642 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 14:20:06 ]
cythonのことよく知らなくて変なレスつけちゃった
>>634はスルーしてね

>>637のとおり、CPythonでコード書くときには\rを落としとけってことなのね

groups.google.com/group/pinoy-python-users/browse_thread/thread/f558512bdf42134b
> Just remember to replace CR/LF endings in Windows to LF. Use Notepad+
> +'s Edit > EOL Conversion to convert line-endings or else Cython will
> argue about invalid characters when compiling.

643 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 14:21:01 ]
訂正。CPythonじゃなくてcython

644 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 14:57:16 ]
PyQt4を試してるんですが
Qt4(C++)の方でQHogehogeクラスを継承して定義したQHagehageクラスを
PyQt4から使用するにはどのような使い方をすればよいのでしょうか?

645 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 14:59:19 ]
PyQTは糞なので
WxPythonかGTK使ってください。

646 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 15:09:31 ]
おっPyQT

647 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 15:17:53 ]
おっPyQTとはどういう意味ですか?

648 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 15:30:45 ]
QHagehageをラップしたC拡張ライブラリを作らないと駄目じゃないの?

649 名前:648 mailto:sage [2010/07/11(日) 15:32:22 ]
C拡張ライブラリ => C拡張モジュール

650 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 18:03:43 ]
俺も>>644知りたいわ。



651 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 18:21:16 ]
sip使って自分で拡張モジュール作る。

652 名前:625 mailto:sage [2010/07/11(日) 21:38:48 ]
>>635
ありがとうございます

C:\Users\test>python tmp.py
b'C:\\Users\\test\\hello.pyd' (22, 23)
C:\Users\test\hello.pyd
でした

653 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 22:25:08 ]
Python3とPython2が混じってるのかな?
Python2はインストールしていない?

654 名前:デフォルトの名無しさん mailto:sage [2010/07/11(日) 23:50:12 ]
ウィンドウズのコマンドプロンプトだと↑キーを押すと以前入力した文字が入力されますが
Python Shellで、同じような事は出来ないでしょうか?

655 名前:デフォルトの名無しさん mailto:sage [2010/07/11(日) 23:56:47 ]
漏れも知りたい鯛

656 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 00:06:25 ]
IDLE だったら Options -> Keys の history-next, history-previous で Alt+n, Alt+p じゃない

657 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 00:07:19 ]
つrlwrap

658 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 00:13:30 ]
>>656,657
ありがとうございます!

659 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 00:57:43 ]
>>654
ipython便利だよ。windowsだとpyreadlineといっしょにいれるとよろし。

660 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 01:05:00 ]
>>657
横からですが
ttp://stat001.ameba.jp/user_images/ba/be/10124970142_s.jpg



661 名前:デフォルトの名無しさん [2010/07/12(月) 01:18:27 ]
ズバリtwitterクライアント作ろうと思ったら、何が必要ですか?

右も左も分からない初心者です

662 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 01:29:26 ]
189 デフォルトの名無しさん [] 2010/07/12(月) 00:13:57 ID: Be:
    Twitterクライアント
    クリップボード監視に向いてる言語は何ですか?

663 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 01:57:28 ]
お前の頭骨に入ってる塊より百段上等な脳みそ

664 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 02:14:34 ]
つ ttp://usy.jp/twitter/index.php?Twitter%20API

665 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 03:22:15 ]
Python3.12 の Windows 版で日本語を含むフォルダ内のC拡張モジュールを
インポートするスクリプトを実行するとUnicodeDecodeErrorが発生するみたい。
おそらく Python3 のバグ。
(importdl.c の _PyImport_LoadDynamicModule => _PyImport_FindExtension => PyDict_GetItemString等
=> ... => PyUnicode_DecodeUTF8 の流れで cp932 のバイト列が utf8 で変換されてエラーになる)

再現例:
D:/ほげほげ/winsound.pyd, D:/ほげほげ/a.py の状態で a.py を実行する。
winsound.pyd は Python31/DLLs のをコピー a.py の中身は import winsound のみ

666 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 03:25:36 ]
>>625 のエラーはこのせいだと思う

667 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 05:40:41 ]
>>653
混じってます
Vista HomeBasicSP1とwindows7の2台で利用していますが
VistaはCygwinの中にPython2.4と2.5が入っています。
cygwinは普段利用していなく、コマンドプロンプトを利用しています。
windows7では、最近2.7と2.6を入れました。
このエラーが起きてから入れたような気もします。定かではないですが・・・

Vista
C:\Python31 , C:\cygwin\lib\Python2.4 , C:\cygwin\lib\Python2.5
windows7
C:\Python31 , C:\Python27 , C:\Python26
こんな感じの場所にいます

668 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 06:08:14 ]
>>665
ありがとうございます
直りました

>>653
色々教えていただきありがとうございます
時間を取らせてしまって、ごめんなさい。
ここにレスするときに、ディレクトリ名が乗せられなくて、勝手に手で消してからレスしていました。
そのディレクトリ名の中に日本語が含まれていました。
申し訳ありません
一言、消していることを明記すべきでした。
b'C:\\Uers\\test\\******\\\x8d(ry
ごめんなさいごめんなさい....orz

669 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 06:50:27 ]
センスないな

670 名前:デフォルトの名無しさん [2010/07/14(水) 17:34:50 ]
クラスにメソッドを後付けすることはできますか?
継承せずに、メソッドを定義したいのですが



671 名前:デフォルトの名無しさん mailto:sage [2010/07/14(水) 20:06:45 ]
>>670
できます。
class Foo(object):
    pass
def _bar(self):
    pass
Foo.bar = _bar

672 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 01:05:22 ]
>>671
そんな簡単にできるのですね
ありがとうございました

673 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 02:18:16 ]
けどbuiltinなクラスには後付けできないという...
これって、できないようにする積極的な理由あるの?

674 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 02:21:16 ]
継承すれば済む話だろ

675 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 02:29:31 ]
builtin typeに追加できてもカオスになるだけだと思うわ

676 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 02:33:04 ]
それどこの Ruby on Rails www

677 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 02:52:55 ]
>>673
変更不可能にすることで、メモリ消費量を削減したり、呼び出しを高速化したりできる。
基本的に変更可能な属性は dict 型のオブジェクトを使って管理されているので、
その呼び出しはハッシュテーブルからの検索とかオーバーヘッドが少し大きい。

あと、基本型を弄るとどこに副作用が起こるかわからないという理由もあるな。
基本的に直接弄るんじゃなくて継承しろという方針。

678 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 03:29:16 ]
>>677
なんだ、実装上の都合なのか。

Pythonは理想追い求めるより現実的な落としどころ見つける言語だってのは知ってるけど、
それでも一貫性のなさを感じる。

679 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 03:35:59 ]
読解力のなさに絶望した

680 名前:デフォルトの名無しさん [2010/07/16(金) 05:00:38 ]
builtinクラスに後付けしたいケースってありますか?
ちょっと思いつかないな



681 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 07:36:12 ]
list.joinしたいんだろ

682 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 23:26:13 ]
file.foo = 1 はできないのに、
StringIO.StringIO.foo = 1 ができる合理的理由が見当たらない。

683 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 23:44:22 ]
>>682
ttp://mail.python.org/pipermail/python-dev/2008-February/077167.html

684 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 00:14:02 ]
>>682
お前には cStringIO をやる

685 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 14:34:23 ]
__slot__

686 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 03:35:53 ]
aiueo = input()
import aiueo

みたいに読み込むモジュールを入力して与えることって出来るの?

687 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 04:01:21 ]
Yes, we can.

688 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 05:05:59 ]
>>686
__import__()

689 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 11:49:25 ]
imp モジュールもあるよ

690 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 04:15:36 ]
質問です
dictが入れ子になってるdictの構造だけをコピーしたいのですが
copyで浅いコピーをしているつもりが、入れ子の中までは担保されません

In [2]: a = {"a":{"b":"con_b","c":"con_c"}}
In [3]: b = a.copy()
In [4]: a
Out[4]: {'a': {'b': 'con_b', 'c': 'con_c'}}
In [5]: b["a"].update({"b":"hoge"})
In [6]: b
Out[6]: {'a': {'b': 'hoge', 'c': 'con_c'}}
In [7]: a
Out[7]: {'a': {'b': 'hoge', 'c': 'con_c'}}

これを a["a"]["b"] == "con_b" としたいのですが
updateというアプローチは間違っているのでしょうか



691 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 04:37:26 ]
>>> a = {"a":{"b":"con_b","c":"con_c"}}
>>> b = a.copy()
>>> b["a"].update({"b":"hoge"})
>>> a
{'a': {'c': 'con_c', 'b': 'hoge'}}
>>>

692 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 04:40:31 ]
>>> import copy
>>> a = {"a":{"b":"con_b","c":"con_c"}}
>>> b = copy.deepcopy(a)
>>> b
{'a': {'c': 'con_c', 'b': 'con_b'}}
>>> b["a"].update({"b":"hoge"})
>>> b
{'a': {'c': 'con_c', 'b': 'hoge'}}
>>> a
{'a': {'c': 'con_c', 'b': 'con_b'}}

693 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 05:07:31 ]
>>692
おー、ありがとうございます
こういうケースはcopy.deepcopy()しないといけないんですね

694 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 05:12:43 ]
>dictが入れ子になってるdictの構造だけをコピーしたいのですが
>copyで浅いコピーをしているつもりが、入れ子の中までは担保されません

質問の仕方が変だ

695 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 10:08:58 ]
>>693
浅いコピーってのは、
b = {}
for key in a:
  b[key] = a[key]
と同じだから、この場合
b["a"] = a["a"]
ってしたことになる。ここで、 a["a"]は辞書型なのでmutable。

浅いコピーでも完全にコピーされるのは、
・要素が全部immutable(int, float, str, tupleなど)
・要素の要素、要素の要素の要素、...が全部immutable
のときのみ。
もちろん、完全にコピーされないことを知った上で大丈夫だと分かっててコピーするのはOK

要素の要素がmutableで浅いコピーがうまくいかない例:
a=(1,(2,[3,4]))
b=a
b[1][1][1]=0
print b
# ==> (1, (2, [3, 0]))
print a
# ==> (1, (2, [3, 0]))

696 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 12:32:02 ]
pythonの初心者参考本を見て、elseを使おうとしたのですが
SyntaxError: invalid syntax
というエラーが出てしまいます。何か間違ってるところがあったら教えてください。コードはこんな感じです。

color = '緑'
score = 20
if color == '赤':
bonus = 0
  
ここでelseを入れるとエラーが出ます。あとインデント幅も妙です。
参考本ので説明に使われているpythonのバージョンと今使ってるバージョンが違うので
書き方に違いがあるのかと思ってぐぐってみたんですが分かりませんでしたorz

697 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 14:26:45 ]
>>696
こんな感じで普通に動くと思うけど。
インデントは全角スペースにしてるから気をつけてね

color = '緑'
score = 20
if color == '赤':
 bonus = 0
else:
 bonus = 20
print bonus


elseの後に:を入れ忘れているんじゃないかと予想。


698 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 16:56:13 ]
>>697
if color == '赤'
bonus = 0
この後改行するとbonusの"b"と同じ列から入力するようになっていてelseを入れてみると
   bonus = 0
    else:

SyntaxError: invalid syntax
というエラーが出てしまいます。丸々コピーしてみても駄目でしたすみません。
何かすごい根本的な問題のような気がするのでこのままスルーして頂いても結構です。ありがとうございました。

699 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 17:10:01 ]
>>698
elseを打つときはデデント(インデントの反対)して
ifと同じ桁から始めなきゃだめだよ

あともし統合環境使ってるのであればPythonに慣れるまでは凍結して
シンプルなテキストエディタとコンソール(コマンドプロンプト)を使ったほうがいい

700 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 17:53:47 ]
>>699
デデントしたらできました!ありがとうございます。



701 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 20:31:18 ]
なんだ自演か

702 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 03:25:51 ]
なんだかうまい方法を思いつかない

before =[
{"id":"0","aaa":"fdafdsadafdas"},
{"id":"0","bbb":"dafdgdfagdfsg"},
{"id":"0","ccc":"dafdgdfagdfsg"},
{"id":"1","aaa":"gdfagdfsgdsaf"},
{"id":"1","bbb":"dgfagdsdaffsg"},
{"id":"1","ccc":"dadfgdfddfasg"},
{"id":"1","ddd":"dadfgdfddfasg"}
]

という要素として辞書を持ったリストを

after =[ {"id","0","aaa":"fdafdsadafdas","bbb":"dafdgdfagdfsg","ccc":"dafdgdfagdfsg"}, {"id":"1","aaa":"gdfagdfsgdsaf","bbb":"dgfagdsdaffsg","ccc":"dadfgdfddfasg","ddd":"dadfgdfddfasg"}
]

のように"id"を共通のキーにしてまとめたい
どのようにすればいいだろうか

703 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 03:50:43 ]
[dict(reduce(operator.add, map(dict.items, b))) for a, b in itertools.groupby(before, operator.itemgetter("id"))]

704 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 05:44:08 ]
>>703
動きました。いいワンライナーですね!
itertools と reduce、 まだ怖くて使ったことがないです…
自分も使いこなせるようになろう

705 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 07:22:19 ]
ワンライナーにおしこめないで判りやすくするにはこんな感じかな。
t = defaultdict(dict)
for item in before:
    t[item['id']].update(item)
after = t.values()

706 名前:デフォルトの名無しさん mailto:sage [2010/07/21(水) 05:11:58 ]
>>704
>怖くて

どういう意味?

707 名前:デフォルトの名無しさん mailto:sage [2010/07/21(水) 10:29:25 ]
でもそういう便利機能を使いこなしちゃうとあとで読みにくかったりするわな

708 名前:デフォルトの名無しさん mailto:sage [2010/07/21(水) 23:16:18 ]
>>688
出来ましたありがとうございます。

709 名前:デフォルトの名無しさん mailto:sage [2010/07/22(木) 02:24:28 ]
コンパイル済ヘルプ chm (win) 形式の日本語言語リファレンスの
新しいのはないでしょうか。
2.5 まではあったんですが。
www.python.jp/pub/doc_jp/

710 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 16:55:06 ]
tkinterの良い勉強サイトや本ってない?
可能ならば3に対応してる奴で、英語か日本語のもの



711 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:01:14 ]
あるよどっかに

712 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:29:23 ]
pythonを勉強してたんだが全く意味がわからんのでまずはプログラムのイロハを学びたいと思います

LINUXでC言語でも勉強したいと思います

713 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:32:24 ]
こう言っては何ですがプログラミング自体を諦めたほうがいいのではないでしょうか

714 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:38:39 ]
pythonで学ぶプログラム作法おすすめ

715 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:51:31 ]
どうでもいいけど、このスレに居る奴って英語読めなさそうだな

716 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:53:37 ]
英語読めれば>>714もただで読めるのにね

717 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 17:16:57 ]
#!/usr/bin/python
# -*- coding:utf-8 -*-

if __name__ == '__main__':
 print 'java-ja great!!!'

718 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 17:48:11 ]
>>717
特定されました

719 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 19:00:33 ]
classを作って、アトリビュートaを設定してるつもりなのですが
インポートしてaを開こうとするとそんなアトリビュート無いと言われます
何が間違っているのでしょうか
www.dotup.org/uploda/www.dotup.org1051891.jpg.html


720 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 19:14:35 ]
>>719
1. class は import しない。 import test としたら、 class test と全く別の test モジュールが import され、 test クラスは消え去る。
2. self.a = 0 では、クラスではなく、クラスのインスタンスに属性を追加しているので、インスタンスを作らないと a は見えない。

class test:
    def __init__(self):
        self.a = 0

t = test()
t.a




721 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 19:15:24 ]
>>719
importはモジュールを読み込み、初期化する文。
classとは関係ない。

その例だと、testという名前でクラスを定義した後に、
testというモジュールをimportしている。

722 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 19:20:46 ]
>>720,721
なるほど!ありがとうございます。



723 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 16:36:07 ]
askopenfilenameって3.0以降でどう書けばいいの?
tkFileDialogのimportの変更点も分かってないから誰か解説してくれ

724 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 17:09:13 ]
2to3.py

725 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 17:11:10 ]
neetossan.py

726 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 18:17:58 ]
助かった、tkinterも変えてくれるのね
アスキーコード云々もsitecustomize.pyに2行足しただけですんなり行った

727 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 00:34:17 ]
__init__
とか__がやたら目につくのはなぜ?
気持ち悪いんだけど

728 名前:デフォルトの名無しさん [2010/07/27(火) 01:51:47 ]
誰かいる??

729 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:00:45 ]
(゚Д゚≡゚д゚) 今ぱいスレには俺様しかいない!

730 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:00:51 ]
居ないけど何よ?



731 名前:デフォルトの名無しさん [2010/07/27(火) 02:03:38 ]
pythonでmsecまでを表示したいんですが、
何か良い方法は無いでしょうか??

例えば

2:00:44.009727 の時だと

7244.010 みたいなかんじです。

マイクロsecをとって//1000すると、9 とかになるので、
マイクロsecから丸める方法でも3桁にしたいです・・

お知恵をお貸し下さい。

732 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:07:07 ]
俺じゃ答えはわからないけど一緒に考えることなら出来るよたぶん

733 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:07:22 ]
>>731
>>> sec = 12345.12345
>>> print "%.3f" % (sec,)
12345.123


734 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:09:02 ]
python] ミリ秒まで表示させる
■[python] ミリ秒まで表示させる 00:35 ミリ秒まで表示させる -
With skill and creativeness を含むブックマーク はてなブックマーク - ミリ秒まで表示させる - With skill and creativeness ミリ秒まで表示させる - With skill and creativeness のブックマークコメントCommentsAdd Star

参考URL

import datetime
now = datetime.datetime.now()
print now.strftime("%Y%m%d%H%M%S.") + "%04d" % (now.microsecond // 1000)
→ '20081118003037.0479'

これは?
ttp://d.hatena.ne.jp/shohu33/20081117/1226936130

735 名前:デフォルトの名無しさん [2010/07/27(火) 02:11:21 ]
ありがとうございます。

datetime.datetime.now()とかで、
秒換算して取得することって出来ますか?

それと、>>733を組み合わせると、完璧の予感!

736 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:15:28 ]
>>> datetime.datetime.now()
datetime.datetime(2010, 7, 27, 2, 14, 21, 705000)

日本語が理解できない
これで秒取って、足したり引いたりじゃだめなの?

737 名前:デフォルトの名無しさん [2010/07/27(火) 02:27:16 ]

d = datetime.datetime.now()

sec = ((d.hour*60 + d.minute)*60 + d.second)

print sec
print "%.3d" % (d.microsecond // 1000)

数値型で sec.msec にするには、あと、どうしたらいいですか・・・
行き詰まってしまいました

738 名前:デフォルトの名無しさん [2010/07/27(火) 02:39:45 ]
d = datetime.datetime.now()
sec = ((d.hour*60 + d.minute)*60 + d.second)
msec ="%.3d" % (d.microsecond // 1000)
print sec + float(msec)/1000
これでいいか。

739 名前:デフォルトの名無しさん mailto:sage [2010/08/01(日) 23:52:56 ]
readで引数を細かくとったり、urllib.urlretrieveを使うことで
ダウンロードの進捗状況を知ることができるのは分かったのですが

アップロードの進行状況(POST)を知る方法は標準ライブラリでありませんか?
urllib2とかurllibを使って

740 名前:デフォルトの名無しさん [2010/08/02(月) 00:12:41 ]
windowsでeasy installを使いたいのですが、
c:\Python25\Scriptディレクトリ自体がありません
どうしたらいいでしょうか



741 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:19:55 ]
>>740
なくてもインストールできるからさっさと入れればいいだろ

742 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:26:52 ]
は?

743 名前:デフォルトの名無しさん [2010/08/02(月) 00:29:38 ]
>>739
その方法で本当にDL進捗状況がわかるのか気になる
socket使えばアップ・ダウン両方できる

744 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:30:31 ]
easy install自体が見あたらないのです
www.python.jp/Zope/download/pythoncore
ここのpython-2.5.2.msiを使用しました。

745 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:42:46 ]
>>744
そうじゃない
まずeazy_installをいれろよアホがっつってんだよカス

746 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:45:18 ]
えっ、easy installは最初から入ってるものではなかったのですか?
その方向で調べてみます
ありがとうございます。

747 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:57:01 ]
>>743
すいません後出となって申し訳ないのですが、ソケットを直接つかうの以外で
無いだろうかと探していました



748 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 01:12:31 ]
eazy_installをeazy_installでインストール出来ないのは大問題だな

749 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 01:59:53 ]
今はsetuptoolsじゃなくてdistributeだから気をつけなよ>easy_installの入手

750 名前:デフォルトの名無しさん [2010/08/02(月) 03:17:27 ]
一度タイムゾーンを設定したら
以後、時刻関係の関数は一律そのタイムゾーンで値を返してくるようにしたいのですが
そういうことできますか?



751 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 03:32:50 ]
環境変数で TZ=hoge する

752 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 20:46:35 ]
'''
プログラム超初心者です
↓のようなことをするときにbreakは書いたほうがいいのでしょうか、、、
あともっとスマートに書ける方法があったら教えてください。

ユーザーから続けて数字の入力を受け付け
合計が100に近づくまでその数値を足し続けるプログラムを書きなさい
'''
hundred = 100
value = 0
def numint(x):
  while True:
    try:
     y = raw_input(x)
     z = int(y)
    return z
    #break ←ブレイクは書いたほうがいいのでしょうか?
    except ValueError:
      print u'Error : 文字ではなく数値を入力してください'

value += numint('数値を入力してください>> ')

while value < hundred:
  print value, u'まだ足りないみたいです'
  value += numint('もっと大きな数字を入力しましょう>> ')
print value, u'合計が100以上になりました'



753 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 20:49:01 ]
また突っ込み所満載のネタを・・・

754 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 22:06:48 ]
>> 752 です
www.python.jp/Zope/intro/instant_hacking_jp
プログラムの練習に↑のInstant hacking をしていたのですが
例外処理を加えようとして pylint が到達不能code を警告していたので
どうしたもんかなぁと思って書き込みしてみたところです

ぐぐったところ while True はあまり書かない方がいいみたいなので
他の手を使ってみます、、、

while True したら break を書くものとばかり思っていたので
頭が混乱してしまいました…

755 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 00:26:47 ]
昔PHPにループからreturnするとメモリリークするというバグがあった

756 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 03:24:01 ]
>>752
質問に答えるなら、returnの後の行はどうせ実行されないのだから、breakは不要。
けれどこれ、except節はtry節が終わった直後に置かないといけないからSyntaxError出ると思うよ。

そしてお説教。
> hundred = 100
こういう名前の付け方は意味が無い。
変数は、
・いちいち書くと長ったらしい/処理を分けたいから名前をつけたい
・今後変更される可能性に備えて、名前をつけておきたい
ときに使うものだから。仮に200に変更したとき、
hundred = 200
にするわけにはいかないでしょう。
これもあんまりいい名前じゃないけど、俺ならNにしちゃうかな。

numintの引数xも、一目でxが何か分からないから問題あり。

例外が出なかったときに処理したいのなら、Pythonでは例外の後のelse節でそれができる。

N = 100
value = 0
def numint(msg):
  while True:
    y = raw_input(msg)
    try:
     z = int(y)
    except ValueError:
      print u'Error : 文字ではなく数値を入力してください'
    else:
      return z

757 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 07:03:55 ]
>>756
ありがとうございます!!! めちゃくちゃスッキリしました!!
なぜかerrorを出さずに実行できてしまっていたのでどうしよう…ってなっていたところでした

みんなのPythonを1/3ほど読み終えたところですが、変数の名前は適当でいいのかなぁとか思っていました、、、

もっと基礎を勉強したほうがいいですねorz
多謝です!!


758 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 10:08:33 ]
>>757
>みんなのPythonを1/3ほど読み終えたところですが、変数の名前は適当でいいのかなぁとか思っていました、、、

そんなことが書いてあるの!?
酷い本だ。

759 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 10:13:52 ]
今までプログラムを触ったことがないならまずはC言語からの方がいいと思う、教材の良とか質とかもあるし。
オライリーのヘッドファーストシリーズお勧め

760 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 10:15:59 ]
handred = 100は教材以前の問題じゃないだろうか。
自分の子供に「息子」という名前を付けるのと同じだ。



761 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 11:27:02 ]
なんとかjr

762 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 11:30:31 ]
handredってなに、手が赤いの?

763 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 12:40:08 ]
>>762
半分ドレッドな臭い頭のひとのことです

764 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 12:41:39 ]
>>758
いえ、変数の名前のつけ方とかはみんなのPythonには書いてなかったので、、、
読んでみた感想は、なんとなくプログラムを大雑把に理解できる感じでした
ビット演算の項でつまずいてますけどorz

変数の名前にhundredを使ったのは私ですのでみんパイは悪くないです
図書館で借りたので文句のつけようがないです、、、

>> 759
「みるみるプログラミングがわかる本」掌田津耶乃
「 C言語プログラミング入門―C99対応―」田中敏幸
[改訂新版] これからはじめるプログラミング基礎の基礎]谷尻 かおり
あたりを図書館で借りて勉強しようと思います

「エキスパートPythonプログラミング 」Tarek Ziade
「Head First JavaScript」Michael Morrison
は買ってみます





765 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 21:40:06 ]
確かに
みんパイ読んだけどちんぷんかんぷんだった
で、Cの本を適当に読んだら非常に解りやすい
やっぱプログラム初心者にパイソンはむついのかなーと何気に感じた今日この頃

766 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 21:43:43 ]
みんなのPythonは前半は実践編が無いからな〜

767 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 23:36:04 ]
Webにあるチュートリアルじゃむずいの?

768 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 00:24:30 ]
数千円でプログラミングのエッセンスが身につくと思っているとかおめでたいな。

769 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 00:28:01 ]
6千ちょいだせばなんとか
www.amazon.co.jp/dp/0262062798/

770 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 00:39:28 ]
ビッド演算で躓く子が、ポインタを理解できるのかい?



771 名前:デフォルトの名無しさん [2010/08/04(水) 00:42:50 ]
>>770
整数はbit幅が固定じゃないからcよりも理解しにくいんじゃない?

772 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 00:58:45 ]
>>770
ビッド演算とか言ってないからたぶん大丈夫だろう

773 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 01:22:47 ]
>>764
命名規約だけで大議論が起こるくらいにはネーミングは重要だよ。
Pythonの命名規約は「PEP8」でググれば出てくるから調べてみな。


774 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 09:24:20 ]
>>773
bitbucket.org/tavisrudd/pylint_etc_wrapper.py/src/tip/pylint_etc_wrapper.py
上のエラーチェックを使っているのですが、defaultにpep8を追加して使えるようにしました

「l」「0」「I」は使わない、関数名は小文字、classは先頭大文字などとても参考になります

ビット演算は否定のところでつまづいてます。
26(10) 11010(2) の否定は 100101(2) のはず?なのに
26 11010 -27 -11011
と出るので…考えれば考えるほどわからないorz
自分の書いたスクリプトが悪いのでしょうか…
スレ違いすいません、、、

775 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 09:45:37 ]
「2の補数」でぐぐれ

>>> ~26
-27

26(10) = 11010(2)
-27 = ~26(10) = 1111...(ここの1が論理的に無限に続く)...111100101(2)
これで 26 + (-27) = -1 になることを考えてみるとわかりやすい
111111 = -1
111110 = -2
111101 = -3
111100 = -4
...
100111 = -25
100110 = -26
100101 = -27

776 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 15:58:27 ]
>>775
ありがとうございます!! めちゃくちゃ助かりました!!
なんとなくですけど、理解できたような気がします!

~(not)はビットを反転させて、1の補数をとっているんですよね。
>>format(26, 'b')
11010
>> ~ 26
-27
>>format(-27, 'b')
-11011

単行演算子 - は2の補数をとるので、表示は1111..(32列)..1100101ではなく
-11011となっていたのですね!

この理解であっているでしょうか、、、


777 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 16:46:19 ]
血が牛

778 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 18:41:38 ]
>>776
format(n, 'b')はnを2進表記にした文字列を返すってだけだよ
整数の内部表現を返すわけではない

779 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:00:07 ]
一応補足しておくと b って意味は、
2進数表記の際に、頭につける 0b からきてる。
これは16進数の0xと一緒の意味。
format(num, 'b')は単純に
数字を変換、どんな物かというとb、bの意味は2進数。

780 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:04:39 ]
それは補足じゃなくて蛇足



781 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:06:23 ]
なんでbなんだ

782 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:10:20 ]
binary

783 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:14:02 ]
なんでxなんだ

784 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:25:38 ]
hexともしました

785 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 23:23:55 ]
つまり6進数か。

786 名前:デフォルトの名無しさん [2010/08/05(木) 01:01:11 ]
2進数16進数はわかるけど8進数の存在意義がよくわからん.
言語によっては数値リテラルを0から始めると8進数として扱ったり
16進数で十分じゃん

787 名前:デフォルトの名無しさん [2010/08/05(木) 01:18:52 ]
chmod 755

788 名前:786 [2010/08/05(木) 03:25:08 ]
そういえばそれは8進数だな

けどソースコードを書く上での存在意義がよくわからんのだよ>8進数
わざわざ8進数を記述する文法があるわけだから何かしら意義はあるのだろうけど

789 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 03:31:47 ]
分かった。16進だと記号が入ってウザいから

790 名前:デフォルトの名無しさん [2010/08/05(木) 03:46:54 ]
10進数のつもりが8進数でした・・・になるより記号付きの方がいいと思うんだけど



791 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 06:11:08 ]
8進数は64bitと相性が良い

792 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 06:14:00 ]
>>790
2進数 0B01234567
8進数 0O01234567
16進数 0X01234567

793 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 06:20:07 ]
>>792
このおねぼけさん

794 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 07:59:55 ]
>>793
2進数 0b01111111
8進数 0o01234567
16進数 0x01234567

795 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 08:03:08 ]
ぶっちゃけ Python から Ruby の ActiveRecord に相当するものを使いたいときって
どんな ORM があるの?
takaki-web.media-as.org/blog/archive/2007/02/19/pythonactiverecord
とか
SQLAlchemy とか
Elixir とか



796 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 14:24:33 ]
すみませんGAEでpythonいじってます。
サンプルコードにconfig.pyってのがあって、グローバル変数の初期化をしています。
そこにBASE_URL =とあってURLを設定します。

で、これだとローカルテストとデプロイでいちいちURLを変えないといけないので改造したいわけです。

しかし、grepしてみてもどこからもconfig.pyを明示的に呼び出したりしてません。
pythonはアプリケーション起動時にアプリケーションディレクトリ以下のすべてのpyファイルを読み込むのでしょうか?
だとするとself.request.urlの戻り値が期待できないタイミングだと予想されます。

requestのタイミングで毎回セットするならグローバル変数にする意味ない気がするし・・・

こんなとき、自分のドメインを調べてグローバル変数にセットする一番標準的な方法を教えていただければ幸いです。

よろしくお願いします。

797 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 17:11:34 ]
BASE_URL = os.path.split(os.path.abspath(__file__))[0]

798 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 18:00:02 ]
>>797
これはローカルのパス・・・・ですよね?

799 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 22:02:49 ]
>サンプルコード

どこの?

800 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 22:56:55 ]
「新規」という名前のフォルダを作りたいのですが以下だとダメでした。
アドバイスいただきたいです。

import os
dir_name = '新規'
os.mkdir(dir_name)




801 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 23:16:26 ]
普通に作れると思うけどソースにencoding指定がないとかだろうか

とりあえずOSとPythonのバージョン
実行形態(スクリプトとして実行、あるいは対話型シェルから等)
あとエラーメッセージとどう「ダメ」だったのかをどうぞ

802 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 23:17:17 ]
import os
dir_name = u'新規'
os.mkdir(dir_name)

803 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 23:24:16 ]
作れなかったから例外が発生すると思うのだが

804 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 23:29:18 ]
コンソールからでなくアイコンをダブルクリックで起動してるとかかも

>>801にソースコードの文字コードも追加で

805 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 23:35:08 ]
作成権限ある?

806 名前:デフォルトの名無しさん [2010/08/06(金) 04:18:42 ]
組み込み関数のソースコードを見ることはできないのでしょうか?

807 名前:デフォルトの名無しさん [2010/08/06(金) 04:56:46 ]
>>806
www.python.org/dev/

808 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 07:47:33 ]
エロリおかず用HDDが逝ってからどうでもよくなった
エロサイトのブクマ外したり内臓HDDのエロ全消去して
エロ禁&オナ禁初めて現在14日目
最近ではIVやティッシュはもちろん、テレビでもエロイ事してる人がいるから
テレビも部屋から出した。
徹底してるぜ俺

809 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 08:06:02 ]
実況乙

810 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 09:59:17 ]
>>799
すみません個人ブログなので貼れません



811 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 10:09:57 ]
なんで?

812 名前:デフォルトの名無しさん [2010/08/06(金) 10:36:01 ]
Windows XP SP3
Python 2.6.4
です。

ファイルのフルパスを受け取った文字列があります。
これを
ディレクトリパスとファイル名(拡張子なし)と拡張子名に分割し、再び結合する
というPythonプログラムはどうかけるでしょうか?

例えば
full_p_str = "D:\Dir1\Dir2\Dir3\filename.html"
のようにファイルのフルパスを受け取ってfull_p_strに格納し、
full_p_str_result = os.path.join(ディレクトリパス, 拡張子のないファイル名 + "." + 拡張子名)
のようにしたいのです。

よろしくお願いいたします。

813 名前:812 [2010/08/06(金) 10:40:33 ]
os.path.split
でフルパスをフルパス名を分割できるようですが、
ファイル名を拡張子とそうでない部分に分割するにはどうしたらよいでしょうか?

814 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 10:43:55 ]
それ専用なものは無いので正規表現をつかえばいいんじゃないですか?

815 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 10:51:56 ]
>>814
正規表現ですか。
ありがとうございます。

816 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 11:08:02 ]
>>> import os
>>> fullpath = r'D:\Dir1\Dir2\Dir3\filename.html'
>>> dirname, filename = os.path.split(fullpath)
>>> filename_wo_extension, extension = os.path.splitext(filename)
>>> os.path.join(dirname, filename_wo_extension + extension)
'D:\\Dir1\\Dir2\\Dir3\\filename.html'

>>> 'hoge.piyo.fuga.html'.rsplit('.', 1)
['hoge.piyo.fuga', 'html']

817 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 11:09:09 ]
os.path.basepath
os.path.filepath

818 名前:デフォルトの名無しさん [2010/08/06(金) 12:13:47 ]
みなさんありがとうございます。
それで解決できました!!

819 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:16:49 ]
ttp://imagepot.net/image/128106448608.jpg
このようなコードを書くと、
インデントがおかしいと言われてしまいます。

このコードでコメントを全部消して一行につなげれば
通りますが、そうなると可読性が下がってしまいます。

どうすればこのような一見して分かる可読性を維持しながら
インデントで怒られないでしょうか?

よろしくお願いいたします。

820 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:27:40 ]
#bbb から#eeeの話だよな?
+ で繋ぐ部分はインデントどうやっても構わなくなるはずなんだけど

怒られてるの違う部分じゃないの?



821 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:28:24 ]
TypeError: bad operand type for unary +

って言われます・・・。


822 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:31:44 ]
s = 'aaa' + \
 ', ' + foo + \
 ', ' + bar + \ ...

文字列リテラルだけなら

s = ('aaa'
 'bbb'
 'ccc')

823 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:32:25 ]
+ \
ですか。
ありがとうございます。

それで解決します!

824 名前:819 mailto:sage [2010/08/06(金) 12:34:57 ]
+ \
で解決するかと思ったのですが、

SyntaxError: unexpected character after line continuation character

と言われてしまいました。
各行にコメントを後ろに付けたいので、そういう場合はどうすればよいでしょうか?


825 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:46:12 ]
a = (1 +  # one
     2 +  # two
     3)  # three

826 名前:819 mailto:sage [2010/08/06(金) 12:56:08 ]
>>825
ありがとうございます。
それで完全解決いたしました。

感謝申し上げます。

827 名前:812 [2010/08/06(金) 13:05:43 ]
>>812です。

環境は
Windows XP SP3 Python 2.6.4です。

Shift-JISのファイルを読み込んでUTF-8に変換し、
そのファイルを加工した後
再びShift-JISに戻したいのですが、どのようにすればよいでしょうか?

import codecs
f = codecs.open(ファイルのフルパス,"r", "utf_8", "ignore")
とすると元のファイルがUTF-8でないと開けず、
かといって
f = codecs.open(ファイルのフルパス,"r", "shift-jis", "ignore")
とすると開いたファイルがShift-JISのままです。

どなたか解決策を教えていただけますでしょうか?


828 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 13:23:07 ]
codecsの挙動わかってる?
f = codecs.open(ファイルのフルパス,"r", "shift-jis", "ignore")
この状態でreadすればUnicode文字列として読み込まれるから普通に加工できる。書き出すときも
w = codecs.open(ファイルのフルパス,"w", "shift-jis")
とやってwriteにUnicode文字列を渡せば、shift_jisに変換して書き込んでくれる
UTF-8相当のstrにして何かやりたいならencodeメソッドなりご自由に

829 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 13:27:17 ]
似たような質問をどこかで見たぞ??

830 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 13:32:36 ]
>>828
ありがとうございます。
codecsってそういう動作なのですね。
助かりました。




831 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 17:50:32 ]
s = 'aaa' + \ # hoge
 ', ' + foo + \ # fuga
 ', ' + bar + \ # hage ...

s = 'aaa' + # hoge \
 ', ' + foo + # fuga \
 ', ' + bar + # hage \ ...

どっちもだめなのか

832 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 17:53:35 ]
>>828

f = codecs.open(ファイルのフルパス,"r", "cp932", "replace")
w = codecs.open(ファイルのフルパス,"w", "utf-8", "replace")

が良くね?


833 名前:デフォルトの名無しさん [2010/08/06(金) 19:22:15 ]
>>831
何スレか前に似たような内容を書き込んだ覚えがある
前者のような書き方は許して欲しいんだけどねぇ

834 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 23:28:38 ]
Python 2.6.4です。
<tab>単語1<tab>単語2
という形式の文字列が延々と羅列されてるtxtファイルで、
単語1の部分が以前の行で既出で重複している場合に、その行を消すにはどうしたらいいでしょう?

835 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 23:56:52 ]
>>834
もう少し具体的に

836 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 00:00:18 ]
tsvファイルからデータを読み込んで重複除去したいんでしょ
順序は維持しないとだめ?

837 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 00:08:45 ]
>その行を消す

この場合消すのは今見ている行なのか
既出で重複していた方の行なのか
あと2行じゃなくて3行以上の複数行が既出だったらどうするのかとか

838 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 00:10:08 ]
既出の単語1が単語2の位置にあっても既出とみなすのか
同じカラムのときだけ既出扱いするのか

839 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 03:51:47 ]
単語1同士の重複を処理するだけでいいなら、単純に:

fr = open("sample.txt", "r")
fw = open("output.txt","w")
catch = []

for line in fr:
 if line[1] not in catch:
  catch.append(line[1])
  fw.write(line)

840 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 08:23:23 ]
レスありがとうございます。
>>839さんの試してみます。

<tab>*STD_PAUSED<tab><tab><tab>"一時停止"
<tab>*STD_GAME<tab><tab><tab>"ゲーム"
<tab>*SYS_SHADERMODE0<tab><tab>"Auto"
<tab>*SYS_SHADERMODE1<tab><tab>"0.5"
<tab>*SYS_SHADERMODE2<tab><tab>"1.1"
<tab>*SYS_SHADERMODE3<tab><tab>"1.1"
<tab>*STD_PAUSED<tab><tab><tab>"Paused"
<tab>*STD_GAME<tab><tab><tab>"Game"

こういう感じの形式で、タブ、*から始まるタグ、不定数のタブ、"文字列"という行が延々と続いています。
上記の例だと*STD_PAUSED、*STD_GAMEのタグが重複しているので、
<tab>*STD_PAUSED<tab><tab><tab>"Paused"
<tab>*STD_GAME<tab><tab><tab>"Game"
の2行を削除したいのです。
行にあるタグが既出の場合その行を消すと言ったらいいのでしょうか。



841 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 08:52:06 ]
>>839さんのうまくいきませんでした・・・

842 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 09:25:26 ]
import sys

tags = []
for line in sys.stdin:
  tag = line.split('\t')[1]
  if not (tag in tags):
    tags.append(tag)
    print line,

C:\tmp> type src.txt | python hoge.py > dest.txt

843 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 10:00:28 ]
>>842
ありがとうございます。
ですがエラーが出てしまいます。

C:\Users\HOGE>type src.txt | python hoge.py > dest.txt
Traceback (most recent call last):
File "hoge.py", line 5, in <module>
tag = line.split('\t')[1]
IndexError: list index out of range
プロセスが、存在しないパイプに書き込もうとしました。

となります。
ここまで来たら自分でやれよ!ってレベルなんでしょうがほんとすいません・・・

844 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 10:21:48 ]
\tがない行がある
最後の行とか大丈夫か?
何行もあるなら例外処理だな

845 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 10:38:00 ]
なるほど\t(タブ)でsplitしようにもTabがねーよってエラーメッセージですか。
改行しか無い行が割とあってその最初でエラーが出てます。
他にもコメントだけの行などあるので、
行頭のタブと*付きのタグから始まらない行は例外処理したほうがよさそうですが
その処理も書けませんのでお願いします・・・

情報を後出しにしちゃってすいません。
txtファイルは5000行くらいで*付きのタグは3000種類くらいあると思います。
行によっては
<tab>*tag<tab><tab><tab>"str"
のstrが長く200文字くらいの場合もあります。

846 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 10:44:32 ]
あらほんとだ。ごめん

for line in sys.stdin:
  if not line.startswith('\t*'): continue
  tag = line.split('\t')[1]
  ...

こんな感じでひとつ

847 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 11:03:09 ]
tags = []
じゃなくて
tags = set()
とでもしたほうがいいと思うよ
ほかは同じでいいけど

毎回わざわざリニアサーチする必要は無い

848 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 11:15:28 ]
ごもっともです
痛いところをつかれたので書き直しますね

import sys

tags = set()
for line in sys.stdin:
  if not line.startswith('\t*'):
    continue
  tag = line.split('\t')[1]
  if not (tag in tags):
    tags.add(tag)
    print line,

849 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 11:30:41 ]
できました!!長々とありがとうございました!
例外の行はそのまま残したかったので以下のようにしました。

import sys

tags = set()
for line in sys.stdin:
 if not line.startswith('\t*'):
  print line,
  continue
 tag = line.split('\t')[1]
 if not (tag in tags):
  tags.add(tag)
  print line,

850 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 11:51:40 ]
The winner takes it all.



851 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 12:28:02 ]
すいませんまた質問させてください。

>>840のようなタブ、*から始まるタグ、不定数のタブ、"文字列"の形式で書かれている(例外もある)ファイルが2つあって、
例えばfile_en.txtには

<tab>*STD_PAUSED<tab><tab><tab>"pause"
<tab>*STD_GAME<tab><tab><tab>"game"

のように、file_jp.txtには

<tab>*STD_PAUSED<tab><tab><tab>"一時停止"
<tab>*STD_GAME<tab><tab><tab>"ゲーム"

となっている場合に、タグが同じところから文字列を引っ張ってくるといった処理は
どうやったらできるでしょうか。

852 名前:デフォルトの名無しさん [2010/08/07(土) 12:36:40 ]
ちったぁ自分で考えろやボケ

853 名前:デフォルトの名無しさん [2010/08/07(土) 12:48:40 ]
>>851 まず二つのファイルを1つに合わせて、ライン別に処理。
重複を見つけたらその行を " で割って文字列の部分だけ取り出す
やりたい事がわからんので違ってたらスマソ

854 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 13:14:13 ]
>>851
records_en = dict()
fields = '<tab>*STD_PAUSED<tab><tab><tab>"pause"'.split('\t')
tag, text = fields[1], fields[-1]
records_en[tag] = text

あとはがんがれ
いちいち質問してたら時間もったいないよ

855 名前:851 mailto:sage [2010/08/07(土) 14:00:09 ]
その通りです、楽しようとしすぎだ俺。
Pythonの初歩としてちょうどよさそうだから勉強がてらやってみます

856 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 14:28:31 ]
>>827
2.6以降でファイルを加工するなら、codecs.openより、ioモジュールの
io.openを使ってみるのはどうかな。
文字列とバイト列の扱いがPython3と同じでわかりやすくなっているし、
ファイルオブジェクトと同じように扱えて全改行文字サポートもある。
こっちの方が便利なんじゃないかな。

857 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 15:03:29 ]
質問する側がちゃんと質問できてればそうはならんと思う
ちょっと煽るくらいで情報引き出さないと想定できる問題点が多すぎて回答できないとかどうなのよ?

質問者は
素人判断で問題点を想像してそれを根拠に質問するな
大本の判断材料からすでに間違ってることが多すぎる
素直に最終的にやりたい事と現状どうなってるかを明確書け

858 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 15:17:36 ]
それが書ける奴なら質問しねーよバーカ

859 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 15:18:38 ]
質問者は回答するのに必要な情報を小出しながらも的確に提示し
エラーの原因を特定する能力もあったね

問題は単に丸投げしようとしてたこと

860 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 15:27:57 ]
質問者は、とりあえず
挙げた内容でわかる範囲の答えが欲しいだけ。

それで望む答えが得られなけば、掘り下げて
質問を続ける。または打ち切る。

いたって普通の2chの使い方じゃねーの。



861 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 20:12:55 ]
>>845
> \t(タブ)でsplitしようにもTabがねーよってエラーメッセージですか。
それは違う。

tag = line.split('\t')[1]

fields = line.split('\t')
tag = fields[1]
に変更すると、どの行でエラーが出るだろうか。

>>851は、俺ならこんな感じで実装するけど、こういうのって正直どうよ?
def add_dict(dic, item, value, overwrite=False):
  if overwrite or item not in dic:
    dic[item] = value

tags = dict()
for line in sys.stdin:
 if not line.startswith('\t*'):
  print line,
  continue
 line_sp = line.split('\t')
 if not (tag in tags):
    add_dict(tags, fields[1], fields[-1])

862 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 21:26:16 ]
>>834,840,851とかです。
今やってることをはっきり言うとThe Chronicles of Riddick Escape from Butcher Bayという
PCゲームの日本語化ファイルが公開されているのですが、
私が買ったThe Chronicles of Riddick Assault on Dark Athenaでそれを流用したいのです。
AoDAにはEfBBの内容も含まれているのでそのままでも一応日本語化は出来ますが完全ではありません。
なのでAoDAの字幕ファイルにうまいことEfBB日本語化の成果をマージ出来ないかとやっていたんです。

しかしいろいろいじっているとそういう作業をしなくても割と綺麗に表示されるようになってしまいました。
Pythonの勉強はまた今度だな・・・!

ちなみのこのゲーム
store.steampowered.com/app/9860/

863 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 21:49:08 ]
リディックって映画で見たような。なつかしす
つかほかのゲームでもPythonはよく使うから勉強続けなさいYO

864 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 23:39:10 ]
Pythonの悩みはjava-jaがなんとかしてくれるよ。

865 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 01:13:46 ]
以下のアドレス、

yasu1987.blogspot.com/2010/06/simple-twitter-bot-on-google-app-engine.html

から落としてきたソースをパスとユーザー名だけ書き換えてGAEにupすると以下のようなエラーが出ます。
<type 'exceptions.UnboundLocalError'>: local variable 'recent_tweet' referenced before assignment
Traceback (most recent call last):

python2.5、App Engine SDK 1.3.5です。ちなみに他の、あらかじめ指定した
言葉をポストするだけのプログラムはちゃんと動きました。どこをチェックするべきでしょうか。

866 名前:デフォルトの名無しさん [2010/08/09(月) 01:51:26 ]
>local variable 'recent_tweet' referenced before assignment
ローカル変数「recent_tweet」に値が代入されるまえに参照されています.

recent_tweetまわりを確認

867 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 02:03:49 ]
板違い
hibari.2ch.net/test/read.cgi/php/1267057923/

868 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 03:13:22 ]
>>866
ありがとうございます。ほぼいじり始めたばかりなので理解があやふやなのですが、
「recent_tweet」は def run(name, pswd, search_term): の中で初めて出現し、
36行目で出現と同時にs.textが代入されています。値が代入される前に参照されていると
言うことはないように思うのですが…

>>867
最初、webプログラミングのあるスレで聞いてたんですが
いくらなんでもレベルが低いかな、と思ったのでこちらで…
エラーメッセージもpythonに一般的なことかと思ったので。
GAEに本質的に関わることは向こうで聞くつもりですがダメでしょうか?

869 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 03:20:38 ]
半年ROMってろ

870 名前:デフォルトの名無しさん [2010/08/09(月) 03:25:48 ]
くだらない質問スレなんだからpython関係ならとりあえずいいっしょ
だから>>868ぐらいでいいんでねーの?



871 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 03:52:24 ]
>>865
そのコードだと、statusが空もしくはRTから始まるデータが1つもないときに
recent_tweetが初期化されない。

872 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 03:53:38 ]
# for s in status:
# if s.text.startswith("RT"):
# recent_tweet = s.text
# break
# else:
# print "The following tweet would be posted by hand, so skipped it."
# print "Tweet: " + s.text.encode('utf8')
# print
#
# print "Recent Tweet: "+recent_tweet.encode('utf8')

status の中で s.text.startswith("RT") が 真 のものがひとつもなければ
referenced before assignment になるだろう

873 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 03:55:08 ]
かぶった(笑
しかもこんな時間に orz

874 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 04:50:49 ]
>>871
>>872
あ、そうか…なるほど。ありがとうございます。
つまりfor文の前にrecent_tweetに適当なダミーの値でも入れておけばいいですか?
作法としてはどうすべきなんでしょうか。

875 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 06:06:48 ]
python 的にはこんなんでどうか

for s in status:
   if s.text.startswith("RT"):
      recent_tweet = s.text
      break
   else:
      print "The following tweet would be posted by hand, so skipped it."
      print "Tweet: " + s.text.encode('utf8')
      print
else:
  recent_tweet = 'None'
     
print "Recent Tweet: "+recent_tweet.encode('utf8')


876 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 23:47:14 ]
ちょっと力を貸して欲しいんですけど
linuxでbash scriptからpython scriptを起動しようとしてます。

すると、print()行でIOErrorが出てpython scriptは終了しちゃうんです。
IOError: [Errno 5] Input/output error

terminalで実行すると問題ないので、出力先が無いためのエラーだと
思うんですが、print()行を消さなくちゃ解決できない問題でしょうか?

877 名前:デフォルトの名無しさん mailto:sage [2010/08/10(火) 02:27:23 ]
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

878 名前:デフォルトの名無しさん [2010/08/10(火) 02:53:46 ]
print関数だよな?

def print(*args, **keys): pass
で関数を上書き

879 名前:デフォルトの名無しさん mailto:sage [2010/08/10(火) 07:11:15 ]
printは関数じゃなくね?3系列ならできるんだろうか
import sys
sys.stdout = open('bbbb, 'a')
print "aaa bbbb ccccc"
的なものではどうだろうか



880 名前:デフォルトの名無しさん mailto:sage [2010/08/10(火) 11:29:32 ]
もしくは起動するときに >/dev/null しておけ。



881 名前:876 mailto:sage [2010/08/10(火) 12:32:24 ]
>>878, 879
確かに上書きできませんでした。
879はログを作るってことですよね。

IOError現象は初めて気づいたのですが、
結局アウトプット先を明示する処理を挟まないと
エラーになるってことなんですかね。

そこらへん自動でやってくれる方法があるものだと
思い込んでました。

なぜかバックグラウンドでプログラムが落ちまくるので
変だなーと思ってました。

>>880
自分も/dev/nullでイケるかと思ってたんですが
なぜか、同じ結果になりました。

882 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 02:30:44 ]
>>875
ありがとうございます!ダミーでもよさそうでしたけど
そっちの方が綺麗なのでそうします。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<217KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef