くだすれPython(超初心者用) その6
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/01/28(木) 22:43:01もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、
お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>950 辺りで
前スレ
くだすれPython(超初心者用) その5
http://pc12.2ch.net/test/read.cgi/tech/1256350845/
関連スレ
Pythonのお勉強 Part35
http://pc12.2ch.net/test/read.cgi/tech/1253535109/
0002デフォルトの名無しさん
2010/01/28(木) 22:47:32"['c', 'c']"
これを cc っていう文字列リテラルで表示したいです。
何を使用すればいいでしょうか。
0003デフォルトの名無しさん
2010/01/28(木) 23:05:46乙です
>>2
"".join(eval(x))
これでいいんじゃね?
0004デフォルトの名無しさん
2010/01/29(金) 00:13:05ありがとうございます。できました。
0005デフォルトの名無しさん
2010/01/29(金) 03:28:150006デフォルトの名無しさん
2010/01/29(金) 17:08:13s = reduce(lambda a,b: a + b, x)
0007デフォルトの名無しさん
2010/01/29(金) 17:38:160008デフォルトの名無しさん
2010/01/29(金) 23:17:48python:2.6.2 (32bit)
py2exe:py2exe-0.6.9.win32-py2.6
の環境下で
"icon_resources": [(1,"pyico")]
として作成したプログラムファイルのアイコンがデフォルトのアイコンとなってしまいます。
このプログラムをXPのPCにコピーするとちゃんと指定したアイコンで表示されます。
この環境でもアイコンが見れるようにするにはどうすればいいでしょうか?
0009デフォルトの名無しさん
2010/01/29(金) 23:53:550010デフォルトの名無しさん
2010/01/30(土) 20:07:18path=〜〜#削除したいディレクトリのパス
この時、path以下を(ファイルを含め)全て削除するにはどうしたらよいでしょうか?
os.removedirs(path)としてみましたが、
File "C:\Python2x\lib\os.py", line 170, in removedirs
rmdir(name)
WindowsError: [Error 145] ディレクトリが空ではありません。: '〜〜'
と言われてしまいます。
よろしくお願い申し上げます。
0011デフォルトの名無しさん
2010/01/30(土) 20:14:17ファイルも含めて再帰的に削除するか、
出来合いのものを使う
http://docs.python.org/library/shutil.html#shutil.rmtree
0012デフォルトの名無しさん
2010/01/30(土) 21:09:09ご教示の
shutil.rmtree
で行けました。
ttp://www.python.jp/doc/release/lib/module-shutil.html
これですね。
ありがとうございます。
0013デフォルトの名無しさん
2010/01/31(日) 13:44:17Lib/encodings/ms932.py
http://paste.bradleygill.com/index.php?paste_id=28762
募集:Byte配列のアンパックのきれいなやり方
スレ違いな気もするが反省はしていない
0014デフォルトの名無しさん
2010/02/01(月) 03:17:50テキスト読み始め数日…
クラスってのがいまいちピンと来ないんですが、わかりやすく言うと(例えると)
どんな感じっすか?
0015デフォルトの名無しさん
2010/02/01(月) 03:46:26http://www.nicovideo.jp/watch/sm9515208
クラス=型紙
オブジェクト=ぬいぐるみ
0016デフォルトの名無しさん
2010/02/01(月) 16:17:55個人的には、クラスに限らず、超初心者がいきなりわかりやすい一言表現とか比喩に触れても
まず意味はわからないし、場合によっては逆に混乱するんじゃないかと思ってる。
そういうのは、具体的なことがそこそこ手に付いてきた段階で、それらを頭の中で束ねる発想として
力を発揮するもので、まずは説明を読んでコード書いて……の繰り返しに専念すべきじゃないかな。
0017デフォルトの名無しさん
2010/02/01(月) 20:07:39おれは未だにclassがなんで必要なのかイマイチ
分からないけど、classつかってるよ。
0018デフォルトの名無しさん
2010/02/01(月) 20:33:55クラスについて知る
↓
なんかよく分からんが怪しいオブジェクト指向本とか頼りに使い始める
↓
デザパタとか覚えて無駄に使いまくる
↓
(Java的なきっちりとした)クラス指向に疲れてくる
↓
再利用を狙うんなら関数オブジェクトとかでもいいし、
ポリモーフィズムならダックタイピングでもいいし、
クラス指向が唯一の解ってわけでもない、とか気づく
↓
それでもOpenCV2.0のC++実装とかnumpyとかそれなりに便利だし
オブジェクトも捨てたもんじゃねえかなとか思い出す ←いまここ
0019デフォルトの名無しさん
2010/02/02(火) 09:54:19変数をまとめて管理できたら便利じゃね
→リスト
変数やリストや辞書や関数をまとめて管理して一発アクセスできたら便利じゃね?
→複雑な辞書
複雑な辞書作っちゃったけど、この構造使い回したい
→クラス
0020デフォルトの名無しさん
2010/02/02(火) 10:42:13なんにせよクラスとか意識しないで書いていいと思う。
変数散らかって不便だなーなんか読みにくいなって思ったら調べてみるといいんじゃないかなあ
0021デフォルトの名無しさん
2010/02/02(火) 15:39:32class のありがたみがわかるのってフレームワークとか自作するときくらいじゃないかな
0022デフォルトの名無しさん
2010/02/02(火) 15:41:19Python の class って辞書で作れるような
0023デフォルトの名無しさん
2010/02/02(火) 15:43:47シングルトンならモジュール化だけでなんとかなるんだろうけど
インスタンスを幾つも生成したかったら結局クラスを使うことになるよ
0024デフォルトの名無しさん
2010/02/02(火) 22:00:28class Hasher:
def __init__(self,n,o):
ABC = o
def abc_hash(n):
if hash(self,n) == ABC:
print('-'*40)
return True
elif hash != ABC:
print('-'*40)
return False
def re_hash(self):
return n
a = Hasher
HasherクラスにHasher('検査する文字列',ハッシュ値のオブジェクト)
を渡してBOOL値を返したいのですが
ha = Hasher(abc, -1600925533)
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'abc' is not defined
ha = Hasher('abc', -1600925533)
ha
<__main__.Hasher instance at 0x18f46bc0>
ha.abc_hash()
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 5, in abc_hash
NameError: global name 'self' is not defined
どうすれば良いんでしょうか
0025デフォルトの名無しさん
2010/02/02(火) 22:21:17def __init__(self, n, o):
self.n = n
self.o = o
def abc_hash(self):
if id(self.n) == self.o:
print('-'*40)
return True
elif self.n is not self.o:
print('-'*40)
return False
>>> ha = Hasher('abc', 31544672)
>>> ha.abc_hash()
----------------------------------------
True
ハッシュ値がどうたらは置いといてコンテキスト乱れまくってるぞ
0026デフォルトの名無しさん
2010/02/03(水) 00:21:24それはそうと、pythonでメンバ使いたかったら
selfを第一引数にしてself.hogeだ
0027デフォルトの名無しさん
2010/02/03(水) 07:26:59ttp://codepad.org/
長いソースを貼るときはここへ!
ってテンプレートに入れようぜ。
0028デフォルトの名無しさん
2010/02/03(水) 10:40:370029デフォルトの名無しさん
2010/02/03(水) 19:28:28閲覧側でdat読めば問題ない。
0030デフォルトの名無しさん
2010/02/05(金) 00:15:56Jane StyleのReplaceStr.txtを書き換え。。
<rx2>\s & nbsp; msg //(&n間スペース削除)
おぉ見やすい。なんで俺今まで気づかなかったのか。
他の専ブラでも出来るのかな?
普通のブラウザはGreaseMonkey使えたらできそうだな。
・・・と思って書いてみら出来た。Firefoxで成功。
// ==UserScript==
// @name Show top space of 2ch
// @namespace *
// @include http://*.2ch.net/*
// ==/UserScript==
(function(){
var nodes = document.getElementsByTagName("dd");
for(var i = 0; i < nodes.length; i++){
var after = nodes[i].cloneNode(true);
var msg = after.innerHTML;
msg = msg.replace(/\s/g, "& nbsp;"); //(&n間スペース削除)
after.innerHTML = msg;
nodes[i].parentNode.replaceChild(after, nodes[i]);
}
})();
0031デフォルトの名無しさん
2010/02/05(金) 00:25:05どうすればいいのかアドバイスお願いします。
Portable Python 1.1 - based on Python 3.0.1
PyScripter v1.9.9.6
0032デフォルトの名無しさん
2010/02/05(金) 00:27:000033デフォルトの名無しさん
2010/02/06(土) 02:32:210034デフォルトの名無しさん
2010/02/06(土) 08:49:220035デフォルトの名無しさん
2010/02/06(土) 14:04:08判定するにはどうすればいいでしょうか?
0036デフォルトの名無しさん
2010/02/06(土) 15:36:17これではいかんのですか。実行してしまったらいかんのかな
0037デフォルトの名無しさん
2010/02/06(土) 15:50:43os.environ['PATH']
0038デフォルトの名無しさん
2010/02/06(土) 17:11:18which foo ; echo $?
0039デフォルトの名無しさん
2010/02/06(土) 17:16:580040デフォルトの名無しさん
2010/02/06(土) 20:03:540041デフォルトの名無しさん
2010/02/07(日) 00:15:03でできました。ありがとうございます。
0042デフォルトの名無しさん
2010/02/07(日) 11:58:42target_str = open("hoge.cpp").read()
で取得したtarget_strを対象とし、
hoge.cppのC++のコメントに一致する部分にマッチするところを
全て抜き出しリストにして欲しいです。
////////////////C++のコメント/////////////////////////////
//でコメント導入を示し、行末までがコメントになります。
var = 42; // この部分がコメント
また/*と*/で囲むと、複数行コメントになります。
/*この部分がコメント。*/
/*この部分がコメントです。
この部分もコメントです。
この部分もコメントです。
*/
/* */の中に/* */の対を入れることは出来ません。/*の後に再び/*が来ても、それはコメントの一部と思われるため、無視。一方、最初に出現した*/でコメントは終わりと取られます。
/* コメントを /* 入れ子 */ にすることはできません。*/ ← error!!
ttp://www.icepp.s.u-tokyo.ac.jp/~sakamoto/education/atlasj/cplusplus/l1.html
より引用・改変。
0043デフォルトの名無しさん
2010/02/07(日) 12:45:37comment = re.compile(r'(?<=//)[^\n]*|(?<=/\*).*?(?=\*/)', re.M|re.S)
a = '''
//////////////////////comment1/////////////////
var = 43; // comment2
/* comment3
comment4
*/
/* comment5 */'''
comment.findall(a)
=>
['////////////////////comment1/////////////////',
'',
' comment2',
' comment3\ncomment4\n',
' comment5 ']
004443
2010/02/07(日) 12:49:42/* foo // bar */
foobar */
は "foobar" までコメントになるけど
実際gccで試してみたらエラーだな
0045デフォルトの名無しさん
2010/02/07(日) 12:52:000046デフォルトの名無しさん
2010/02/07(日) 12:57:20cout << "/* comment? */" << endl; とかもある
0047デフォルトの名無しさん
2010/02/07(日) 13:05:01re.compile(r'(//[^\n]*$)|(/\*.*?\*/)', re.M | re.S).findall(target_str)
0049デフォルトの名無しさん
2010/02/07(日) 13:28:37> 42のコメントの定義だと
> /* foo // bar */
> foobar */
> は "foobar" までコメントになるけど
ならないだろ。
42のコメントの定義でも。
> 実際gccで試してみたらエラーだな
無論そうだろう。
005042
2010/02/07(日) 13:40:01確かに
/* // */
のようなケースについては記述をしていませんでした。
C++のプリプロセッサは基本的に前から見ていくので、
最初に出現したコメントが優先されます。
(//を無条件で優先するということはありません。)
従ってご指摘の通り、
/* foo // bar */
foobar */
は最初の/*を見た瞬間から*/が出現しない限り全て無視する(コメント扱いする)こととなります。
よってC++プリプロセッサは//を見ても何とも思わずコメント扱いを続け、
その後最初に */を見た瞬間にコメント扱いを終了します。
よって
"foobar" までコメントになるのでははなく、
/* foo // bar */だけがコメントとなりfoobar */の部分でコンパイルエラーとなります。
(当方、g++, VC++, dmcで確認しましたが全て同じ動作でした。)
005142
2010/02/07(日) 13:45:20ttp://uploader.rgr.jp/src/up1912.jpg
このような扱いです。
緑の部分がコメントで、
黒がコメントでない部分です。
0052デフォルトの名無しさん
2010/02/07(日) 13:55:080053デフォルトの名無しさん
2010/02/07(日) 15:02:50import re
a = '''
//////////////////////comment1/////////////////
var = 43; // comment2
/* comment3
comment4
*/
/* comment5 */
" /* comment6 */ "'''
comment_and_string = re.compile(r'(?<=//)[^\n]*|(?<=/\*).*?(?=\*/)|"[^\n]*"', re.M|re.S)
[ x.group(0) for x in comment_and_string.finditer(a) if x.group(0) and x.group(0)[0] != '"']
re.scannerでparser書いた方がわかりやすいかも
005442
2010/02/07(日) 15:07:51正規表現で一気にやらず、処理を分けるかparserを書くことにします。
ありがとうございました。
0055デフォルトの名無しさん
2010/02/07(日) 15:12:56comment_and_string = re.compile(r'(?<=//)[^\n]*|(?<=/\*).*?(?=\*/)|"[^\n"]*"', re.M|re.S)
シングルクォーテーションとダブルクォーテーションの区別が付きにくいフォントだと
かなり終わってる
0056デフォルトの名無しさん
2010/02/07(日) 15:19:110057デフォルトの名無しさん
2010/02/07(日) 15:21:13釣られてどうする
荒れるからやめろよ
0058デフォルトの名無しさん
2010/02/07(日) 15:22:48ttp://ostermiller.org/findcomment.html
ここでも結局
Does not support multi-line comments
とかなっているね。
しかも、文字列の中にあるのは除外すべきなのに対応できていない。
0059デフォルトの名無しさん
2010/02/07(日) 15:28:410060デフォルトの名無しさん
2010/02/07(日) 15:43:05俺は持っていないが、
さすがに文字列中のコメントには対応できていないんじゃないか?
(文字列の中にあるのは除外すべきってやつ。)
0061デフォルトの名無しさん
2010/02/07(日) 16:03:320062デフォルトの名無しさん
2010/02/07(日) 16:06:480063デフォルトの名無しさん
2010/02/07(日) 16:07:14006460
2010/02/07(日) 16:10:01やっぱり
Does not support multi-line comments状態だね。
0065デフォルトの名無しさん
2010/02/07(日) 16:17:30>ある人達が一つの問題に直面した時,彼らは「ああ、正規表現を使えばいいのか.」と考えた。今彼らは二つの問題を抱えている。
>- Jamie Zawinski
0066デフォルトの名無しさん
2010/02/07(日) 16:17:58由来が由来だから仕方ないけど、文字列処理だけPythonicに書けないってのがなんかなぁ……
正規表現の代替って無いもんだろうか
0067デフォルトの名無しさん
2010/02/07(日) 16:22:23行コメント、複数行コメントと文字列リテラルが絡むとregular languageの範囲を超えて
context free languageになるから、それようの構文解析器が必要になる。
構文解析ライブラリを使って自分で解析するか、 Pygments みたいなライブラリを
再利用するべし。
0068デフォルトの名無しさん
2010/02/07(日) 16:28:47# Perl用
s#/\*[^*]*\*+([^/*][^*]*\*+)*/|//[^\n]*|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#defined $2 ? $2 : ""#gse;
うえっぷ
0069デフォルトの名無しさん
2010/02/07(日) 16:30:45Pythonらしいのは、やはり、自作パーサだろう
http://inforno.net/articles/2008/08/08/sexp-parser-in-python-re-scanner
まぁ55みたいに文字列とコメントにマッチさせて、文字列除いてもいいけど
0070デフォルトの名無しさん
2010/02/07(日) 16:32:51英語かっこいい
何で日本人はこう気の利いたこと言えないの?
劣等民族だから?
0071デフォルトの名無しさん
2010/02/07(日) 16:34:02英語かっこいいって、お前中学生かよw
0072デフォルトの名無しさん
2010/02/07(日) 17:01:36俺は正規表現厨氏ねって思ってるから安心して
0073デフォルトの名無しさん
2010/02/07(日) 17:03:400074デフォルトの名無しさん
2010/02/07(日) 17:21:470075デフォルトの名無しさん
2010/02/07(日) 17:35:36/* test
char *hoge = " */ ";
*/
0076デフォルトの名無しさん
2010/02/07(日) 17:54:44それ >>74 でも失敗するな
0077デフォルトの名無しさん
2010/02/07(日) 19:21:19先読みを使ってるせいで
複数行コメントの終端を表すスラッシュがマッチ後も消費されないから
単一行コメントのスラッシュとしても使われてしまう
ってことか。なるほど。
>>75
それコンパイルできる?
gccだとエラーになった
0078デフォルトの名無しさん
2010/02/07(日) 20:53:280079デフォルトの名無しさん
2010/02/07(日) 22:01:14/* test
char *hoge = " */ ";
*/
は
/* test
の/*を見たところからコメント扱いを続けるため。
char *hoge = " */ ";
*/
は
";
*/
だけが残される。
よってコンパイルエラー。
0080デフォルトの名無しさん
2010/02/08(月) 13:53:50僅かな時間を見つけて
>>25
ありがとうございます
is notですか...
参考になります
一致しない時に返すという条件を定義するんですね
あと__init__とかって組み込み型を継承しないと使えない特殊メゾットなんですね
>ハッシュ値がどうたらは置いといてコンテキスト乱れまくってるぞ
混乱してました。英語のリファレンス読んだり、日本語の読んだりして
あと僕が思い描いていた処理とは少し違うようです
でもとてもいいヒントになりました
http://codepad.org/Nxv7UZul
こんな感じです
>>26
覚えておきます...
メンバってメンバ関数のことですよね
調べてみます
>>27
すいませんでした
今度から活用させていただきます
あと最近Pythonと文法が似ている(と誰かが言っていた)JSにも挑戦中です
ブロック体で表現する以外にthisだとかvarだとか...
Pythonでも;を付ける癖が...
ありがとうございました
0081デフォルトの名無しさん
2010/02/08(月) 19:53:13それに、varをはじめとするスコープの仕組みもだいぶ異なる。
JavascriptとPythonで似ているところといえば、
ジェネレータとか、関数がオブジェクトとか、ある程度使いこなせてる人が「便利だな」と感じる部分。
だから生半可な気持ちで掛け持ちすると火傷しそうな気がする。
0082デフォルトの名無しさん
2010/02/08(月) 20:11:34そうかな?
0083デフォルトの名無しさん
2010/02/08(月) 20:53:21PythonとJSの文法を似てると言うのなら、CもJavaもRubyもHaskellも似てるうちに入る。
以後その誰かの言うことは信用するな。
0084デフォルトの名無しさん
2010/02/08(月) 21:57:49Pythonのモジュールシステムが便利すぎるだけだが
0085デフォルトの名無しさん
2010/02/08(月) 22:11:400086デフォルトの名無しさん
2010/02/08(月) 22:11:580087デフォルトの名無しさん
2010/02/08(月) 22:13:05いや、頑張らなくていいから w
0088デフォルトの名無しさん
2010/02/08(月) 23:40:34index()は左から探し、rindex()は右から探して最初にヒットしたものを返す。
>>a = "test"
>>a.index("t") == 1
True
>>a.rindex("t") == 3
True
0089デフォルトの名無しさん
2010/02/09(火) 00:40:430090質問
2010/02/09(火) 02:15:16Pythonのバージョン: Stackless Python 2.6.4
という環境で
http://www.riverbankcomputing.co.uk/software/pyqt/download
からPyQt-Py2.6-gpl-4.7-1.exeをダウンロードしてインストールしました。
そして実行すると以下のようなエラーが出ました。
> cat QTHello.py
import sys
from PyQt4.QtGui import *
app = QApplication(sys.argv)
button = QPushButton("Hello World", None)
button.show()
app.exec_()
> python QTHello.py
Traceback (most recent call last):
File "QTHelloWorld.py", line 2, in <module>
from PyQt4.QtGui import *
MemoryError
悩みましたが解決方法がわからず、
皆さんのお力をお借りしたいと思い、
質問させていただきます。
0091デフォルトの名無しさん
2010/02/09(火) 02:32:19Python 2.5
そのソースのままで動いた
64bit 環境では知らん
関係ないかもしれないけど
from PyQt4.QtGui import *
をやめて下のように書いたらどうなりますか?
import sys
import PyQt4.QtGui as QtGui
app = QtGui.QApplication(sys.argv)
button = QtGui.QPushButton('Hello, work', None)
button.show()
app.exec_()
0092デフォルトの名無しさん
2010/02/09(火) 04:12:370093デフォルトの名無しさん
2010/02/09(火) 05:13:270095デフォルトの名無しさん
2010/02/09(火) 11:15:110097質問
2010/02/09(火) 11:50:04PyQTのソースを弄ってまでStackless Python上で使い続ける気が無かったので、
普通のPython上で実行してみたところ正常に実行できました。
ありがとうございました。
0098デフォルトの名無しさん
2010/02/09(火) 11:52:40俺もそろそろ64bitに移行したいが、こういうトラブルが怖い
0099デフォルトの名無しさん
2010/02/09(火) 12:00:480100デフォルトの名無しさん
2010/02/09(火) 12:48:46PyQtというかSIPが行儀の悪い拡張をしているのが問題。
0101デフォルトの名無しさん
2010/02/09(火) 15:36:570102デフォルトの名無しさん
2010/02/10(水) 08:35:212:
3: spams = [ "spam", "egg", "ham" ]
4: for i in spams:
5: if i != spam
6: print "spam"
7: print i
8: print "SPAM! SPAM! SPAM!"
ネットで拾った文で適当に動かしてみてるのですが5行目がおかしいみたいで動きません
どういじるべきなんでしょうか?
0103デフォルトの名無しさん
2010/02/10(水) 09:11:25if i == "spam":
なんじゃねの?
0104デフォルトの名無しさん
2010/02/10(水) 09:15:36ありがとうございます
0105デフォルトの名無しさん
2010/02/14(日) 12:41:31↑こういう前後にアンダーバー2つついてるものの名前教えろや
0106デフォルトの名無しさん
2010/02/14(日) 12:49:470107デフォルトの名無しさん
2010/02/14(日) 12:53:510108デフォルトの名無しさん
2010/02/14(日) 15:37:50if boolean_flag :
〜ここ〜
print 'bbb'
print 'ccc'
###################################################
上のソースにて、〜ここ〜の部分に何か入れて、
このプログラムを終了してしまいたいのですが、
どうすればいいでしょうか?
boolean_flagがTrueの時にプログラムを終了したいということです。
よろしくお願い申し上げます。
0109デフォルトの名無しさん
2010/02/14(日) 15:38:240110デフォルトの名無しさん
2010/02/14(日) 15:52:12ありがとうございます。
0111デフォルトの名無しさん
2010/02/14(日) 15:59:580112デフォルトの名無しさん
2010/02/14(日) 16:37:12"hogehoge"
という文字列が含まれているかを調べるにはどうすればいいのでしょうか?
if s.includes("hogehoge") :
みたいなことをしたいのですが。
よろしくお願い申し上げます。
0113デフォルトの名無しさん
2010/02/14(日) 16:43:56print('s contains "hogehoge"')
0114デフォルトの名無しさん
2010/02/14(日) 16:45:10if "hogehoge" in s:
これでできるのですか。
ありがとうございます。
助かりました。
0115デフォルトの名無しさん
2010/02/14(日) 17:06:42みたいなフィルタ書けると嬉しいな
0116デフォルトの名無しさん
2010/02/14(日) 17:09:550117デフォルトの名無しさん
2010/02/14(日) 23:04:37他の動作中プロセスに割り込みするにはシグナルしかないの?
WindowsにはUSR1とかない?から、違う方法使いたい。
0118デフォルトの名無しさん
2010/02/15(月) 16:24:29http://codepad.org/rYcyP8as
質問なのですが、Pythonを記述する作法見たいのが書かれているサイトはありませんか
英語でもいいです
0119デフォルトの名無しさん
2010/02/15(月) 16:33:55http://www.python.org/dev/peps/pep-0008/
http://oldriver.org/python/pep-0008j.html
Google Python Style Guideとか
ttp://google-styleguide.googlecode.com/svn/trunk/pyguide.html
ttp://works.surgo.jp/translation/pyguide.html
0120デフォルトの名無しさん
2010/02/15(月) 16:40:50どうもです
0121デフォルトの名無しさん
2010/02/16(火) 00:57:22Python2.6.4 Windows X86-64をインストールし、Path、PATHEXTの設定を
行いました。
しかし、拡張子.pyのファイルをPythonで開くことができません。
正確には一瞬ウィンドウが開くのですが、瞬時に閉じてしまいます。
Python自体は正常に動作します。
どのように対処すれば良いでしょうか?
初心者以前の質問で申し訳ありませんが、助言をお願いします。
0122デフォルトの名無しさん
2010/02/16(火) 01:02:310123デフォルトの名無しさん
2010/02/16(火) 01:04:43右クリックしてidle上で実行しる。
0124デフォルトの名無しさん
2010/02/16(火) 01:05:48スクリプトの最後でraw_inputを使う
0126デフォルトの名無しさん
2010/02/16(火) 02:48:35何か上手い例えとかありましたらご教授頂きたいです。
例)
"""Print a Fibonacci series up to n."""
def fib(n):
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
最後はprintでなく、returnでないといけないのでしょうか?
returnの意味が…orz
0127デフォルトの名無しさん
2010/02/16(火) 03:22:080128デフォルトの名無しさん
2010/02/16(火) 03:38:55http://en.literateprograms.org/Fibonacci_numbers_(Python)
・return はひとつだけ値を返したいとき
・yield は for in 構文で複数の値を返したいとき
でおk
print はデバック用に確認するためのみに使うべきもの (conoleに出力logファイルに出力)
0129デフォルトの名無しさん
2010/02/16(火) 03:44:43回答ありがとうございます。初心者なのでちょっと理解しかねる部分もありますが(滝汗
そもそも「値を返す」って日常生活では使わない言葉ですよね(汗
日常的な言語で表現するとしたら?
計算なりの結果を最終的に表示するって感じですか?
0130デフォルトの名無しさん
2010/02/16(火) 03:52:58それでいうと、お釣りが「値を返す」って事になる
0131デフォルトの名無しさん
2010/02/16(火) 04:05:20日常じゃ、関数なんて言葉使わないだろう。それと同じで、日常じゃ返すなんて言葉を使わない。
例えば、
a= 1+1
の場合、1+1の計算が行われることによって、2に置き換えられ、
a=2
と同じ意味になる。
def twice(x):
return x*2
a=twice(3)
は、twice(3)が6を返す=6に結果を置き換えるので、
a=6
と同じ意味になる。
def p_twice(x):
print x*2
の場合、何もreturnしてない=何も返してない。
何も返さなかったときの動作は言語によって違うが、Pythonの場合は、Noneが返される。
結果、
a=p_twice(3)は、p_twice(3)がNoneを返す、つまりNoneに置き換えるので
a=None
と同じ意味になる。
全然違うでしょ?
0132デフォルトの名無しさん
2010/02/16(火) 04:08:35関数を使ったときに、その結果を変数に入れて
合計を求めたり、逆順にしてみたり色々弄れる
>>> a = fib(100)
>>> sum(a)
232
>>> a[::-1]
[89, 55, 34, 21, 13, 8, 5, 3, 2, 1, 1]
日常的だとPDFじゃなくてExcelでほしいとか?
0133デフォルトの名無しさん
2010/02/16(火) 04:08:38おまいさんみたいなのにはみんなして触らないように心掛けるもんだが、
あえて言っておくと
ヒント:関数
0134デフォルトの名無しさん
2010/02/16(火) 06:12:48とてもわかりやすかったです。
置き換える。
意味がわかりました。
面倒な質問に付き合って頂いてすみませんでした。
ありがとうございました。
…またお願い致します(汗
0135デフォルトの名無しさん
2010/02/16(火) 20:00:14www.python.jpのドキュメントなどを見てやってます
あとで分からなくなったりしたときのためにやったことをソースとして残しておきたいと思うのです
インタプリタで実行したコマンドをスクリプトにして保存する(というか実行したことをテキストかなにかで残しておく)ことは可能なんでしょうか?
日本語が所々おかしいところありますがよろしくおねがいします
0136デフォルトの名無しさん
2010/02/16(火) 20:10:36man script
0137デフォルトの名無しさん
2010/02/16(火) 20:10:41標準のインタプリタの代わりにIPythonを使って、 %logstart を使うとログが取れるよ。
他の方法だったら、 screen を使うとかかな。
0138デフォルトの名無しさん
2010/02/16(火) 20:29:490139デフォルトの名無しさん
2010/02/16(火) 21:50:22http://codepad.org/UYVxK3uW
質問なのですが、Pythonのモジュール使い方をサンプルソース付きで解説しているブログとかありませんか
英語でもいいです
0140デフォルトの名無しさん
2010/02/16(火) 22:03:20次の方どうぞ
0141デフォルトの名無しさん
2010/02/16(火) 22:50:59ActiveState, PyMOTW
0142デフォルトの名無しさん
2010/02/17(水) 18:06:30>>141
ありがとうございます
0143デフォルトの名無しさん
2010/02/17(水) 20:29:59>>136 さん
>>137 さん
>>138 さん
お礼がおそくなりました
自分で読み直しても理解しにくいような文章に迅速な対応わざわざご回答ありがとうございました。
また来るかもしれないのでその時はよろしくおねがいします
0144デフォルトの名無しさん
2010/02/19(金) 02:02:51import hashlib
hashlib.md5("c:\test.exe").hexdigest()
だと文字列"c:\test.exe"のMD5値が得られてしまいます。。。
0145デフォルトの名無しさん
2010/02/19(金) 03:18:32hashlib.md5(open("c:\test.exe").read()).hexdigest()
0146デフォルトの名無しさん
2010/02/19(金) 03:29:560147デフォルトの名無しさん
2010/02/19(金) 03:42:350148144
2010/02/19(金) 03:49:32>>145
ありがとうございます。
でも、欲しい値が得られません><
f.read()で全部読み込めてない気がするんですが。。。
ちなみに、これの値です。
http://www.aimp.ru/index.php?do=download
0149デフォルトの名無しさん
2010/02/19(金) 04:05:32open(r"c:\test.exe", "rb").read()
0151デフォルトの名無しさん
2010/02/19(金) 04:23:19h = md5.md5()
f = open('main.cpp', 'rb')
while True:
b = f.read(4096)
if not b:
break
h.update(b)
f.close()
print h.hexdigest()
0152デフォルトの名無しさん
2010/02/19(金) 11:30:25それはさておき
> このメソッドを繰り返して呼び出す操作は、それぞれの呼び出し時の
> 引数 arg を結合したデータを引数として一回の呼び出す操作と同等に
> なります: つまり、m.update(a); m.update(b) は m.update(a+b) と同等です。
メモリ気にして小分けに渡してupdateしてるの
こういう説明されると意味無しに思えて嫌だ
0153デフォルトの名無しさん
2010/02/19(金) 19:25:510154デフォルトの名無しさん
2010/02/19(金) 23:07:19listbox内のアイテムをget()で取得するときに<Button-1>だと一つ前に選択
していたアイテムを取得してしまいます。
これをクリックしたアイテムを取得するようにするにはどのようにすればできますか。
<Double-Button-1>ではなくButton-1>でお願いします。
0155デフォルトの名無しさん
2010/02/20(土) 14:02:140156デフォルトの名無しさん
2010/02/20(土) 14:48:060157デフォルトの名無しさん
2010/02/20(土) 14:56:280158デフォルトの名無しさん
2010/02/20(土) 15:38:590159デフォルトの名無しさん
2010/02/20(土) 16:11:56def count_width(s):
import unicodedata
return sum(2 if c in "FWA" else 1 for c in s)
0160>>159
2010/02/20(土) 16:14:350161デフォルトの名無しさん
2010/02/20(土) 19:55:020162>>159
2010/02/22(月) 02:06:18sum(2 if unicodedata.east_asian_width(c) in "FWA" else 1 for c in s)
だ。
0163デフォルトの名無しさん
2010/02/22(月) 02:48:210164デフォルトの名無しさん
2010/02/22(月) 21:02:36読みやすさ&分かりやすさ優先。
・・・ってことぐらい常識だと思うぜ。
0165デフォルトの名無しさん
2010/02/22(月) 21:21:44人間に向けて書くものだって誰かお偉いさんが言ってたな
0166デフォルトの名無しさん
2010/02/22(月) 21:35:160167デフォルトの名無しさん
2010/02/22(月) 21:50:23その人は今はお偉いさんじゃなくて
ホームレスになっちゃってたりしませんか?
0168デフォルトの名無しさん
2010/02/22(月) 22:13:44これくらいならぎりぎりPythonicに含まれると思うぞ。
0169デフォルトの名無しさん
2010/02/22(月) 22:17:19まあ、な。
0170デフォルトの名無しさん
2010/02/22(月) 22:44:430171デフォルトの名無しさん
2010/02/22(月) 22:47:21while True:
処理
i += 1
という無限ループがちょっとカッコ悪いので、for i in 〜の形で書きたいんだけど、なにかいい方法ありますか?
0172デフォルトの名無しさん
2010/02/22(月) 22:52:210173デフォルトの名無しさん
2010/02/22(月) 23:04:08import itertools
for i in itertools.count(0):
処理
0174デフォルトの名無しさん
2010/02/23(火) 00:30:46ありがとう。
>>172
使いたいこともあるのですよ。
0175デフォルトの名無しさん
2010/02/23(火) 01:14:01無限ループなんだからループカウンタを作る必要なくね?と思ったらbreakするまで値を1増やし続けるプログラムを想定してるのか
個人的には目にわかりやすいから普通にwhileでやったほうがよさそうな気もするけど
0176デフォルトの名無しさん
2010/02/23(火) 09:44:55generator
0177デフォルトの名無しさん
2010/02/24(水) 17:59:05del(test[row,:])
としたところ
ValueError: Can't delete array elements.
となってしまいます。どのようにしたらその行を
削除することができるのでしょうか?
0178デフォルトの名無しさん
2010/02/24(水) 18:39:29del test[row]
0179デフォルトの名無しさん
2010/02/24(水) 19:36:53from Numeric import *
import Numeric
import math
import sys
from scipy import gplt
from scipy import*
import sys,string
import time
test=zeros((4,2),typecode=Int,savespace=1)
rowcount=0
for line1 in range(2):
for line2 in range(2):
test[rowcount,0]=line1
test[rowcount,1]=line2
rowcount=rowcount+1
for row in range(4):
if test[row,0] ==1 and test[row,1]==1:
print row,test[row]
del test[row]
こんな感じで記述していて、一応実験的に最後の[1,1]を消そうと
思っています。
どなたかご指導お願いいたします。
0180デフォルトの名無しさん
2010/02/24(水) 19:48:260181デフォルトの名無しさん
2010/02/24(水) 22:24:37[i for i in range(2,8),[nums for nums in range(2,50)]]])\
ワンラインで素数の計算をしたいのですが
無名関数への複数の値の引き渡しがまだ良く解りません
Pythonic的には少し複雑ですがlambdaを使いたいです
使うと分かりますね、無名関数の良さが
0182デフォルトの名無しさん
2010/02/24(水) 22:39:29[i for i in range(2,8),[nums for...
この時点で意味不明。i for i のリスト内包をどこで閉じるの?
filter 使うのは、まず filter 使わずにシーケンスできてからにしたほうが
いいと思うよ。
0183デフォルトの名無しさん
2010/02/24(水) 22:42:440184デフォルトの名無しさん
2010/02/24(水) 22:43:07関数型言語スレならともかくここはPythonスレなので読む気も起こらないが
0185デフォルトの名無しさん
2010/02/24(水) 22:47:21いや、 [i for i in range(2,8), [nums for nums in ...]] って本当にしたいんだとすると、
[range(2,8), [nums for nums in ...]] と同じだから、 i for i が何のためにあるのか
意味がわからなくなるから、リスト内包を本当はどこで閉じたかったのかを確認したかったんだ。
よく見ると [nums for nums in range(2,50)] も range(2,50) と同じだから、全く無意味に
リスト内包使ってるんだな、 >>181 は。
0186デフォルトの名無しさん
2010/02/24(水) 22:48:16結論: ワンライナーを書くのは、まず複数行でやりたいことが書けるようになってから。
0188デフォルトの名無しさん
2010/02/24(水) 22:58:06複数行で出来るからワンライナーで書こうと思いましたが確かにその通りですね
nums = range(2, 50)
for i in range(2, 8):
nums = filter(lambda x: x == i or x % i, nums)
ありがとうございます
0189デフォルトの名無しさん
2010/02/24(水) 23:18:360190デフォルトの名無しさん
2010/02/24(水) 23:49:240191デフォルトの名無しさん
2010/02/25(木) 00:09:08テストしたか?
0192デフォルトの名無しさん
2010/02/25(木) 00:14:38この内容なら2と8forで回さなくても良い気がする
0193デフォルトの名無しさん
2010/02/25(木) 00:55:53それ、numに再代入しちゃってるよね。再代入しちゃうワンライナーなら
そこから作っても良いけど、いきなり>>181みたいのは無いだろ。
ワンライナーじゃなくて、>>181っぽいロジックのコードを書かないと。
0194デフォルトの名無しさん
2010/02/25(木) 02:48:010195デフォルトの名無しさん
2010/02/25(木) 02:57:26numpy とどうちがうの?
0196デフォルトの名無しさん
2010/02/25(木) 13:49:57バージョンの方ですが2.6.4と3.1.1があるみたいですがどちらをインストールすればいいでしょう
0197デフォルトの名無しさん
2010/02/25(木) 13:56:000198デフォルトの名無しさん
2010/02/25(木) 14:07:34とても楽しみでうずうずします
0199デフォルトの名無しさん
2010/02/26(金) 02:08:19これはどうだろうワンライナーでlambda使ってる
filter(lambda n: all(n%x!=0 for x in range(2,n)), range(2,50))
0200デフォルトの名無しさん
2010/02/26(金) 02:18:55おもしろい方法を思いついたしかも超anti-pythonic
きっとhaskell使いとかなら普通に使ってる
(lambda x,r,f: x == 8 and r or f(x+1, filter(lambda y: y%x!=0, r), f)) \
(2,
range(2,50),
lambda x,r,f: x == 8 and r or f(x+1, filter(lambda y: y%x!=0, r), f)
)
0201デフォルトの名無しさん
2010/02/26(金) 02:25:06(lambda x,r,f: x == 8 and r or f(x+1, filter(lambda y: y==x or y%x!=0, r), f)) \
(2,
range(2,50),
lambda x,r,f: x == 8 and r or f(x+1, filter(lambda y: y==x or y%x!=0, r), f)
)
0202デフォルトの名無しさん
2010/02/26(金) 10:42:06質問していたものです。時間が出来たのでもう一度トライしたくなりある程度調べました。
ttp://examples.oreilly.com/9780596529321/ の nmf.pyでの問題です。
発生原因はこの関数で間違いないと思います。">"の行はデバッグのために加えました。
NaNとNaNは比較してもイコールにならないことを利用してプログラムを止めてます。
他にも if h.any() != h.any(): と if w.any() != w.any(): も書いてますがここでは止まりません。
(.any()の使い方は良く分かっていません。インタプリタがこう書けというので書きました。)
def difcost(a,b):
dif=0
for i in range(shape(a)[0]):
for j in range(shape(a)[1]):
# Euclidean Distance
dif+=pow(a[i,j]-b[i,j],2)
> print a[i,j] ,b[i,j] ,dif
> if dif!=dif:
> return dif
return dif
何回かやりましたが結果はiterは3で必ずNaNが出るようです。
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>>
なぜかwh(一回前のwとhの積です)の方に急にnanがでるようです。これでなにか分かりませんでしょうか。
0203デフォルトの名無しさん
2010/02/26(金) 10:50:27dif=0
k = 0
for i in range(shape(a)[0]):
for j in range(shape(a)[1]):
# Euclidean Distance
k+=1
dif+=pow(a[i,j]-b[i,j],2)
print k,':' ,a[i,j] ,b[i,j] ,dif
if dif!=dif:
return dif
return dif
で実行してみました。結果はk=585で毎回止まるようです。メモリ系のバグでしょうか。
ubuntuもあるのでそちらでも試して見ます。
577 : 0 0.0121184608179 81.0386182152 577 : 0 0.0164147052137 91.5984888312 577 : 0 0.0292418437414 79.7176242734
578 : 0 0.0508183707462 81.041200722 578 : 0 0.0496066791031 91.6009496538 578 : 0 0.0733880158902 79.7230100743
579 : 0 0.0257723893872 81.041864938 579 : 0 0.0274640804479 91.6017039296 579 : 0 0.0441988852923 79.7249636157
580 : 0 0.0193929967783 81.0422410264 580 : 0 0.0304702331206 91.6026323647 580 : 0 0.0250509068254 79.7255911637
581 : 0 0.136879372348 81.0609769889 581 : 0 0.13911625497 91.6219856971 581 : 0 0.155482865404 79.7497660851
582 : 0 0.0558954001978 81.0641012847 582 : 0 0.0732634782209 91.6273532343 582 : 0 0.0667560238416 79.7542224518
583 : 0 0.0431843749592 81.0659661749 583 : 0 0.0296703213474 91.6282335623 583 : 0 0.0374581954731 79.7556255682
584 : 0 0.0525606269812 81.0687287944 584 : 0 0.0382979828685 91.6297002978 584 : 0 0.0666638480736 79.7600696369
585 : 0 nan nan 585 : 0 nan nan 585 : 0 nan nan
>>> >>> >>>
0204デフォルトの名無しさん
2010/02/26(金) 10:52:14585回で止まっている様子を3つ横に並べて書いたのですが、スペースが消えて
わけが分からなくなってしまいました。申し訳ございません。
0205デフォルトの名無しさん
2010/02/26(金) 11:13:11NumPyの配列は、0で除算しても ZeroDivizionError にならないで inf (無限) になる。
pow(a[i,j] - b[i,j], 2) してるけど、 inf - inf は NaN になるから、この結果も NaN
PythonのバグでもNumPyのバグでもないね。
factorize という関数は >>202 が突っ込んだデータに対応できないというだけ。
0206デフォルトの名無しさん
2010/02/26(金) 11:14:41http://www.google.co.jp/search?hl=ja&source=hp&q=%E9%9B%86%E5%90%88%E7%9F%A5%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0+python
『集合知プログラミング』には誤植がいっぱいのようです
0207デフォルトの名無しさん
2010/02/26(金) 11:18:30環境は
windowsXP python2.6 numpy-1.4.0-win32-superpack-python2.6.exe
あとUbuntuがpython 2.6.4 numpy-1.3.0です。
0208デフォルトの名無しさん
2010/02/26(金) 11:23:190209208
2010/02/26(金) 12:10:49元の論文が
http://hebb.mit.edu/people/seung/papers/nmfconverge.pdf
だそうですが、(10)の式で大なりが出てくる辺りがポイントでしょうか。
全くすれ違いですね。失礼しました。
0210デフォルトの名無しさん
2010/02/26(金) 13:38:450211デフォルトの名無しさん
2010/02/26(金) 14:14:35http://oreilly.com/catalog/errataunconfirmed.csp?isbn=9780596529321
これに載ってないか見てみるといいかも
> Non-Negative Matrix Factorization is well defined only
> when there all no all-zero rows and columns.
0212デフォルトの名無しさん
2010/02/26(金) 20:35:31>>200
>>201
ありがとうございます
すごすぎて何をやっているのか正直良く解りませんが後で解析してみます
あと皆さんのおかげでなんとか超初心者から初心者に昇格できそうです
本当にありがとう、では
0213デフォルトの名無しさん
2010/02/26(金) 23:48:17optparse (=コマンドラインオプション解析) を使う際
日本語のヘルプメッセージを表示するのは難しいでしょうか?
Unicodeでヘルプメッセージ文を書いてしまったら
DOS窓=ShiftJISコードで日本語を表示するコンソール上で
日本語が文字化けしてしまいそうですが…
メッセージをコンソールに出力する際には必ずUnicode→SJIS変換を行う
といった指定ができればなんとかなるのかなと想像したのですが
どうすればそういうことができるのかもさっぱりわからず…
かといって、optparse 相当を「車輪の再発明」するのも馬鹿馬鹿しいですし…
何か手はないものでしょうか?
0214213
2010/02/27(土) 00:21:00今試したら、u" " でメッセージを指定したら
そのまま日本語で表示されました
2.6.4 の optparse は、
Windows + DOS窓でのSJIS表示に対応していたのか…
知らなかった…
0215デフォルトの名無しさん
2010/02/27(土) 00:54:22>といった指定ができればなんとかなるのかなと想像したのですが
reload(sys)
sys.setdefaultencoding('cp932')
ttp://python.matrix.jp/tips/string/encoding.html
0216デフォルトの名無しさん
2010/02/27(土) 02:29:44本当にありがとうございます。
0217デフォルトの名無しさん
2010/02/27(土) 04:05:33僕はhttp://www.pythonweb.jp/を見て勉強しています
みなさんは見ているサイトブログ等ありますか?
0218デフォルトの名無しさん
2010/02/27(土) 04:30:14u"" で書いた方が「Unicode」ね。
ソースコードをUnicodeで保存していても、 "あいう" とかしたら、それはPythonにとってはバイト列。
cp932じゃないバイト列を標準出力に出したら、cp932のバイト列を期待しているコンソールは当然文字化けする。
print u"あいう" なら、Pythonは出力するときにUnicodeを出力先のエンコーディングにエンコードしようとしてくれる。
ただし、出力先がファイルだったりするとエンコーディングが判らない。なので、
import codecs
writer = codecs.getwriter('cp932')(sys.stdout)
みたいにすると、 print >>writer, u"あいう" は cp932 に変換されて sys.stdout に書かれる。
0219デフォルトの名無しさん
2010/02/27(土) 04:33:27w
0220デフォルトの名無しさん
2010/02/27(土) 07:57:00> Pythonは出力するときにUnicodeを出力先のエンコーディングにエンコードしようとしてくれる。
Perlではそのへん全然やってくれなかったので
てっきりPythonもそうなのかと思い込んでました
賢いというか、気がきくやつですね…>Python
少し惚れましたとです
0221デフォルトの名無しさん
2010/02/27(土) 12:45:41その論文は非負値行列因子分解する手法を提案したものだが
matplotlibスレでも言及されているように
コード自体はLS法を忠実に実装しているので
205の言うとおり、君が扱っているデータが
与えている因子数とマッチしないデータだったというだけ
もう少し詳しく書くと
ゼロ除算が発生することが問題なので
コード中の "hd" "wd" の要素がゼロになった時点で負け確定
なので
"w" にすべての要素がゼロの行が含まれる
"h" にすべての要素がゼロの列が含まれる
のいずれかの条件を満たした場合に失敗する
確認すべきは、diffcost内の計算ではなく "w" と "h" 自身
0222デフォルトの名無しさん
2010/02/27(土) 23:54:47str = f.readlines()
これで hoge.txt をUTF-8で開いて内容をstrにコピーすることができますよね。
ところがhoge.txtがUTF-8では扱えない変な文字を含んでいる場合、
File "C:\Python2x\lib\codecs.py", line 674, in readlines
return self.reader.readlines(sizehint)
File "C:\Python2x\lib\codecs.py", line 583, in readlines
data = self.read()
File "C:\Python2x\lib\codecs.py", line 472, in read
newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 4105-4107: invalid data
というエラーになってしまいます。
これを、強制的に開かせることはできませんでしょうか?
よろしくお願い申し上げます。
0223222
2010/02/27(土) 23:56:26それ以外でできますでしょうか?
「UTF-8では扱えない変な文字」を扱える文字コードは不明とします。
(ユーザーがUTF-8のつもりで突っ込んできたHTMLを想定しているので)
どうかよろしくお願い申し上げます。
0224デフォルトの名無しさん
2010/02/28(日) 00:05:21じゃだめ?
0225デフォルトの名無しさん
2010/02/28(日) 00:05:49ignoreなんてあるのですね。
ありがとうございます。
0226デフォルトの名無しさん
2010/02/28(日) 01:20:53w
これをコンソールから実行すると正常に値が返りますが、mod_pyhton上からだと
ValueError: time data 'Sat Feb 27 13:29:58 +0000 2010' does not match format '%a %b %d %H:%M:%S +0000 %Y'
となります。
何か特殊なことが必要なのでしょうか?
0228デフォルトの名無しさん
2010/02/28(日) 07:00:070229デフォルトの名無しさん
2010/02/28(日) 09:26:49なるほど。ではhd wd がゼロになる直前の値が一番ましと
割り切るしかないのですね。もっとvに0が少ないもので
試してみます。ありがとうございました。
0230デフォルトの名無しさん
2010/02/28(日) 09:53:170231デフォルトの名無しさん
2010/02/28(日) 13:59:12これはどこかまずいでしょうか?
0232デフォルトの名無しさん
2010/02/28(日) 14:18:41>>226じゃないけど、おそらくビルトインオブジェクトであるstrに代入しているところだと思う。
別に__builtins__.strを参照すれば元に戻せるけど。
0233デフォルトの名無しさん
2010/02/28(日) 14:20:15>>226 でも >>232 でもないけど、 readlines() は(文字列が入った)リストを
返すのに、文字列が入っていると誤解させる変数名を使っているのも
気になるな。
0234231
2010/02/28(日) 14:50:11strという変数名は避けるべきなのですね。
理想的には
str_listとかにすべきということでしょうか。
0235デフォルトの名無しさん
2010/02/28(日) 14:56:39コンソールは(None, None)、mod_pythonは('ja_JP', 'UTF-8')でしたので
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')した結果、解決ができました。
失礼しました。
0238デフォルトの名無しさん
2010/02/28(日) 17:27:02>>226 でも >>232 でも >>233 でもないけど、
f = codecs.open("hoge.txt", "r", "utf_8")
で codecs をかましてるんだったら
f.readlines() は str (バイト列)のリストではなく unicode 文字列のリストが入ってると期待されるので、
ustrs = f.readlines()
みたいな感じで受けるのが良いのかもしれない
0239デフォルトの名無しさん
2010/02/28(日) 23:22:56read()が抜けてる。
codecs.open()も4つ目の引数で 'ignore' 指定できるよね。
readlines()なんかしないで forループにかけたりした方が素直な気がするけど。
0240231
2010/02/28(日) 23:26:04'ignore'フラグを利用して今回は解決できました。
どうもありがとうございました。
0241デフォルトの名無しさん
2010/03/01(月) 02:19:070242デフォルトの名無しさん
2010/03/02(火) 21:31:020243デフォルトの名無しさん
2010/03/02(火) 22:41:010244デフォルトの名無しさん
2010/03/04(木) 10:39:41a=array([3,6,4,1,9,5,2,8,7,5,1,6])
a.shape=(4,3)
print a
で
a[[3 6 4]
[1 9 5]
[2 8 7]
[5 1 6]]
のような配列を作成した時、真中の列のソートとともに
行も移動させる方法を教えていただけないでしょうか?
↓こんな感じに
[[5 1 6]
[3 6 4]
[2 8 7]
[1 9 5]]
0245デフォルトの名無しさん
2010/03/04(木) 10:57:040246デフォルトの名無しさん
2010/03/04(木) 12:52:460247デフォルトの名無しさん
2010/03/04(木) 13:37:080248デフォルトの名無しさん
2010/03/04(木) 14:42:33なるほど
ありがとうございます
0249デフォルトの名無しさん
2010/03/04(木) 14:56:44>>> a=array([3,6,4,1,9,5,2,8,7,5,1,6])
>>> a.shape=(4,3)
>>> ind = argsort(a, axis=0)
>>> ind[:,1]
array([3, 0, 2, 1])
>>> a[ind[:,1]]
array([[5, 1, 6],
[3, 6, 4],
[2, 8, 7],
[1, 9, 5]])
0250デフォルトの名無しさん
2010/03/04(木) 15:18:43numpy+PyCUDAとか覚えないといかんかな。
「Python?遅くね?」
とか言っている奴が泡を吹く。
0251デフォルトの名無しさん
2010/03/04(木) 18:18:040252デフォルトの名無しさん
2010/03/06(土) 22:16:16メモ張に「print "Hello world"」と書いて拡張子pyで保存しました
ダブルクリックで起動させるのですが、すぐに窓が閉じて結果がわかりません
助けてください
0253デフォルトの名無しさん
2010/03/06(土) 22:19:050254デフォルトの名無しさん
2010/03/06(土) 23:31:440255デフォルトの名無しさん
2010/03/07(日) 04:13:24暗号化してファイルに保存するのは安易すぎますか?
0256デフォルトの名無しさん
2010/03/07(日) 06:12:470257デフォルトの名無しさん
2010/03/07(日) 11:45:40複数のアカウントを暗号化して、それを1つのパスワードで管理するなら
手間は減らせる。
でなければ都度入力させる方が安全。
0259デフォルトの名無しさん
2010/03/07(日) 20:56:57│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0260デフォルトの名無しさん
2010/03/07(日) 20:59:20[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import oppai
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named oppai
>>>
0261デフォルトの名無しさん
2010/03/07(日) 21:21:00[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import sex
File "<stdin>", line 1
SyntaxError: not a chance
>>>
0262デフォルトの名無しさん
2010/03/07(日) 21:23:37くらえっ
>>> import this
0263デフォルトの名無しさん
2010/03/07(日) 22:19:38またモジュール一覧などがみれるサイトはありますか?
0264デフォルトの名無しさん
2010/03/07(日) 22:36:32http://www.python.jp/doc/release/lib/lib.html
http://docs.python.org/modindex.html
オヌヌメ
http://www.python.jp/pub/doc_jp/Python25.chm
0265デフォルトの名無しさん
2010/03/07(日) 22:39:14今日pythonを一通り理解したばっかでまだまだ全然わかんない‥
初心者用のお題とかありますか?
0266デフォルトの名無しさん
2010/03/07(日) 22:42:14hello world
0267デフォルトの名無しさん
2010/03/07(日) 22:42:25ドラマで使われてたやつらしいけど
local_netっていうモジュールが実際にあるわけじゃないから
(誰かが真似て作ってるかもしれないけど)
ここで聞いても意味ないと思うよ
>>265
チュートリアルのコードの部分を中心に読むとか
説明でわからないところは調べるか飛ばすかここで聞けばおk
0268デフォルトの名無しさん
2010/03/07(日) 22:54:00どの言語でも同じ。まずは何に使うか、だね。
でも一通り理解したって凄いね。
漏れなんか半月やってるのに未だに良く分からん。
ドキュメントの見方が。結局ライブラリのソース拝んでる。
0269デフォルトの名無しさん
2010/03/07(日) 22:57:54>>267
どおりでググっても出ない訳ですか
自分でつくったってことですね
>>268
本当に基本的な事ですよ
クラスの書き方とか
イテレータとかめんどいのは覚えてないし
0270デフォルトの名無しさん
2010/03/07(日) 23:01:29>>264
オヌヌメが開けないんですが
0271デフォルトの名無しさん
2010/03/07(日) 23:04:54漏れの場合はGoogle DATA APIを扱いたくてなんとなくPythonになったので
参考にはならないが、
今までに他の言語で作ったものがあれば、それを
この言語に移植してみるのも勉強になると思う。
違いが分かる。
たとえば
ttp://code.google.com/p/piwate/wiki/PythonFileIOTips
こんな感じ。
0272デフォルトの名無しさん
2010/03/07(日) 23:08:00無難に電卓ですかね?
だとするとTkinter と wxpythonどっちがいいですか?
>>270ブロックを解除したら開けました
0273デフォルトの名無しさん
2010/03/08(月) 00:50:26作りたいものを作ればいい。
0274デフォルトの名無しさん
2010/03/08(月) 01:20:10電卓程度ならTkinterで良いと思うよ
0275デフォルトの名無しさん
2010/03/08(月) 03:56:24ttp://python.matrix.jp/projects/wxPython/caluculator.html
0277デフォルトの名無しさん
2010/03/08(月) 18:18:01右も左もわからないなら、チュートリアルを読んでCUIのプログラムを書いてみる
http://www.python.jp/doc/nightly/tut/tut.html
wxPythonはここが解りやすいかも
http://www.harukaze.net/~haruka/wxpython/index.html
0279デフォルトの名無しさん
2010/03/08(月) 19:00:440280デフォルトの名無しさん
2010/03/08(月) 19:37:52ハムを食べて何が悪いんですか
0282デフォルトの名無しさん
2010/03/08(月) 20:45:58まぁなんだ、最初は自分のアドレスにちまちま送るぐらいにしとけ。
宛先如何に関わらず、大量に発信するとISPにマークされる。
対策:
・インターネットに負荷を掛けないよう、ゆっくり送る
・沢山のISPに分散して実装し、それぞれから少しづつ送信する
補足:
・逆引き可能なドメインでないと拒否されることがある。
・ホワイトリスト/ブラックリストに載っているドメインだと拒否されることがある。
・相手ごとに同意が必要(携帯の場合。サイトで同意を取り、アドレスを教えてもらう)
・クリーニングされてないメールアドレスを使った場合
携帯キャリアが送信をブロックすることがある。
・一度に沢山送ると携帯キャリアはブロックする。
なお、その閾値は公表されてない。冒険するか、無難なスピードにしておくこと。
0284デフォルトの名無しさん
2010/03/08(月) 22:32:57たとえば
(./a.py)
import b
class a_class:
def __init__(self):
b_class()
a_class()
(./b.py)
import a
class b_class:
def __init__(self):
return
のようなコードではNameError: global name 'b_class' is not definedとエラーになってしまいます.
ひとつのファイルに書けばいい話なのですが、
それぞれのクラスが巨大になってきてファイルを分割したい欲求に駆られました
よろしくお願いします
0285デフォルトの名無しさん
2010/03/08(月) 22:58:33def __init__(self, title, description, duedate, addeddate=None)
これのaddeddate=Noneってどういうこと?
0286デフォルトの名無しさん
2010/03/08(月) 23:13:02クラスのガワだけ定義して置いて、
後から代入すればいいんじゃね?
試してないけど。
チュートリアルの9.4いろいろな注意点辺り。
代入したらそのインスタンスのみに効くような気がしなくもないが
よくわからん自分で試してみてくれ。
0287デフォルトの名無しさん
2010/03/08(月) 23:33:51b.b_class
という意味じゃなくて?
0288デフォルトの名無しさん
2010/03/08(月) 23:48:05失礼しました
./a.pyのb_class()はb.b_class()が正しいです.
エラーメッセージも正しくは
AttributeError: 'module' object has no attribute 'b_class'
です.恥ずかしい・・・
>>286
C言語で宣言文のみ先に読み込ませるようなことでしょうか?
pythonでのサンプルコードがパッと思いつかないのでもうちょっと勉強してみます.
0289デフォルトの名無しさん
2010/03/08(月) 23:52:401) import b を、 def __init__(self) の中に入れる。
2) a_class() とインスタンスを作る部分をさらに別モジュールに分ける。
3) b.py で import a を止める
0290284
2010/03/09(火) 00:21:00ありがとうございます.
2)までの手順でエラーなく実行できました.
import bを関数内部に書くことで
import aを行っている最中にb.pyを読まないようにする,
という理解でいいんですよね?
0291デフォルトの名無しさん
2010/03/09(火) 00:34:06そうですね。
でも、相互参照しているのはやはりモジュールを分割するときの切り口が悪いかもしれないです。
0292デフォルトの名無しさん
2010/03/09(火) 02:03:20a_class()のインスタンス化する場所に問題があると思う。
importってのは、実質的にそのスクリプトを丸ごと実行しているので、
グローバルなスコープに書かれたコードはimport時に実行されてしまう。
0293デフォルトの名無しさん
2010/03/09(火) 03:06:19inの意味がわかりません
xにrange(1,10)を入れるということでしょうか
0294デフォルトの名無しさん
2010/03/09(火) 03:14:110295デフォルトの名無しさん
2010/03/09(火) 03:20:06ご丁寧にありがとうございます
もう一つなんですが度々出てくるinについて教えていただけないでしょうか
0296デフォルトの名無しさん
2010/03/09(火) 03:26:19はhogeという集まりから一つずつ取り出してxに入れろよボケナスという意味です
0297デフォルトの名無しさん
2010/03/09(火) 03:33:32それじゃちょっとニュアンスが違うよ。
hogeという集まりから一つずつ取り出してxに入れろよハゲ
って感じかと。
0298デフォルトの名無しさん
2010/03/09(火) 03:33:410299デフォルトの名無しさん
2010/03/09(火) 03:34:530300デフォルトの名無しさん
2010/03/09(火) 03:44:580301デフォルトの名無しさん
2010/03/09(火) 04:00:28inは文脈によって意味が異なる。
というより、for-inで1つの構文なので、forの後のinは他のinとは意味が違う。
for以外のinはここに書いてある。
ttp://www.python.jp/doc/release/lib/typesseq.html
ttp://www.python.jp/doc/release/lib/types-set.html
ようするに、a in bは「bの中にaが含まれるか?」という条件式。
'a' in 'abc'はTrue、'd' in 'abc'はFalseになる。
0302デフォルトの名無しさん
2010/03/09(火) 04:06:04なるほどかゆいところに手が届きました
ありがとうございます
0303デフォルトの名無しさん
2010/03/09(火) 06:25:18ふと、
ランダムに値を返すイテレータ作ったら面白そうな気がした。
0304デフォルトの名無しさん
2010/03/09(火) 13:43:17こうですか?わかりません ><
import random
class randomIter(object):
def __iter__(self):
return self
def next(self):
return random.randint(0,100)
if __name__ == '__main__':
ra = randomIter()
for x in ra:
print x
0305デフォルトの名無しさん
2010/03/09(火) 13:50:12を用いてarrayでからの2次元配列を作成し、
[2,5,3]
[9,1,7]
[8,4,6]
を順に加えながら配列の大きさを拡大していく方法を
教えていただけないでしょうか?
0306デフォルトの名無しさん
2010/03/09(火) 14:03:31arrayじゃないとだめなの?
0307デフォルトの名無しさん
2010/03/09(火) 14:56:030308デフォルトの名無しさん
2010/03/09(火) 15:07:18そう言えば、list から array への変換ってデータをコピーするのかな?
OpenCVの vector<*> から cv::Mat への変換はデータのコピーをしないけど
numpyではどうなってるのだろう。
0309デフォルトの名無しさん
2010/03/09(火) 18:08:14n=a[i]
for j in range(n):
a=n[0]
b=n[1]
:
z=n[]
ある値を格納するとき委は変数を指定しなければなりませんが、
上のようなとき(イメージ)にnの数によって変数を作成していく方法ってありますか?
nの長さによって変数を増やすのはどうやればできますか?
0310デフォルトの名無しさん
2010/03/09(火) 18:12:34グローバル変数なら可能。メンバ変数などでも可能。
ローカル変数なら不可能。
関数は関数オブジェクトを生成する時にローカル変数一覧が決定されるので、
動的にローカル変数を増やすことができない。
そもそも、何をやりたいの?
絶対、配列か辞書を使う方が賢いよ。
0311デフォルトの名無しさん
2010/03/09(火) 19:28:28仮に n が 100 だった場合 100 番目の変数にはどうやってアクセスするんだ
バラバラに展開した変数と目的の値の対応を覚えておくのは大変じゃないか
いずれにしろ別の方法を探したほうがいいと思うよ
普通はリストのまま使ったほうがいい
>>> board = [[0, 0, 0], [0, 1, 0], [0, 0, 0]]
>>> board[1][1]
1
>>> board[0][0] = 1
>>> board
[[1, 0, 0], [0, 1, 0], [0, 0, 0]]
0312デフォルトの名無しさん
2010/03/09(火) 20:49:45デフォルト引数と呼ばれ、引数を指定しなかったとき=以降の値が引数として扱われる。例えばこんな感じ:
>>> def foo(bar=123):
... return bar
...
>>> foo(456)
456
>>> foo()
123
ちなみに、デフォルト引数は関数を定義した時にしか評価されないので以下のようにはしないこと:
>>> import time
>>> def report(now=time.time()):
... print now
...
>>> report()
1268135316.33
>>> report()
1268135316.33
0313デフォルトの名無しさん
2010/03/10(水) 13:23:36良いのかな?
pywin32が最初からインストールされているし、GUIのパッケージマネージャが
付いてくるらしいし。
0314デフォルトの名無しさん
2010/03/10(水) 13:39:180315デフォルトの名無しさん
2010/03/10(水) 13:45:07featuresを見たらPyPMってビルド済みパッケージを落とせるマネージャや
pywin32やCOMが最初から付いてくるようだし
Windowsユーザには特に良さそうなんだが
0316デフォルトの名無しさん
2010/03/10(水) 14:07:290317デフォルトの名無しさん
2010/03/10(水) 14:24:47それともいつもの荒らしか
0318デフォルトの名無しさん
2010/03/10(水) 14:32:300319デフォルトの名無しさん
2010/03/10(水) 14:36:360320デフォルトの名無しさん
2010/03/10(水) 14:43:340321デフォルトの名無しさん
2010/03/10(水) 16:40:110322デフォルトの名無しさん
2010/03/10(水) 16:50:05いくら標準ライブラリが充実しても、外部ライブラリが要らない言語なんてないだろ。
0323デフォルトの名無しさん
2010/03/10(水) 16:51:090324デフォルトの名無しさん
2010/03/10(水) 16:57:48あえてActivePythonを選ぶ理由はない
あとActivePythonいれたらTkinterがインポートできなくなった
速攻で元に戻した
0325デフォルトの名無しさん
2010/03/10(水) 17:07:340326>>325
2010/03/10(水) 17:21:47ActivePython が CPython とバイナリ互換をうたってるから、互換性がすごく高いと
思ってたけど、そんな問題もあるのね。
>>325
俺は setup.py bdist_wininst やってアンインストールできるようにしているけど、
やっぱりGUIでPyPIを探してパッケージをインストールできるツールがあったほうが
いいと思う。特にWindowsの初心者プログラマ向けに。
PyGameとかあるんだし、素人向けの開発環境が簡単に構築できるようになったら
Pythonの魅力がもっと広がると思うんだ。
0327デフォルトの名無しさん
2010/03/10(水) 17:42:00だとしたら、pywin32がデフォルトでインストールされている以外はあまり
旨みが無いなぁ。
0328デフォルトの名無しさん
2010/03/10(水) 19:10:16file.close()
としたとき、もう一度fileをファイル名を使わずにopenする方法ってありますか?
宜しくお願いします。
0329デフォルトの名無しさん
2010/03/10(水) 19:21:300330デフォルトの名無しさん
2010/03/10(水) 20:15:10いいと思う。
なるほど作ったら面白そうな気がした
ありがとうございます
0331デフォルトの名無しさん
2010/03/10(水) 20:24:40今はPerlにすべてにおいて負けてる
0332デフォルトの名無しさん
2010/03/10(水) 20:36:090333デフォルトの名無しさん
2010/03/10(水) 20:42:270334デフォルトの名無しさん
2010/03/10(水) 20:45:090335デフォルトの名無しさん
2010/03/10(水) 20:57:06本スレでは歯が立たないからだろう。
それにしても他の言語と比較するならちゃんと両方例示して欲しいもんだ。
ま、そんなことも出来ない程度の奴等なのかもな。
0336デフォルトの名無しさん
2010/03/10(水) 21:11:56上位互換かなと思ったんだけどorz
0337デフォルトの名無しさん
2010/03/10(水) 21:18:07具体的にどんなエラーになってるの?
同じ Python twitter が現在 Python 2.5 なら動いているの?
Twitter側の変更のせいで動かなくなっている可能性は無い?
0338デフォルトの名無しさん
2010/03/10(水) 21:22:58なんでわざわざpython-twitterなんて地雷を踏むんだ?
普通はtweepyやtwythonだろう。
0339デフォルトの名無しさん
2010/03/10(水) 21:30:300340デフォルトの名無しさん
2010/03/10(水) 21:30:36mkdir python2.6
touch /usr/include/python2.6/pyconfig.h
したらイケたorz
0342デフォルトの名無しさん
2010/03/10(水) 21:33:45実は python-dev or python-devel をインストールしていないとか?
python-twitter って拡張モジュール使うん?使わないのに pyconfig.h を参照する??
0344デフォルトの名無しさん
2010/03/10(水) 21:38:45simplejson使ってるみたい
0345デフォルトの名無しさん
2010/03/10(水) 22:23:17python-twitterは2.6未対応、文字数をバイト数でカウントするので日本語で問題有り、
ごく一部のAPIしか使えない、作者も更新やめてほったらかし。
tweepy、twythonはそのままでも2.6対応している。
今からやるならtweepyが一番いいんじゃない?まだ情報は少ないと思うが。
0346デフォルトの名無しさん
2010/03/10(水) 22:38:37GAEでPython使ってwebアプリ構築する事にしたんですが(ここで意見あれば是非)、IDE使うべきかemacs使うか悩んでます。
emacsはもう10年近く触って無いんでちょこっと面倒ですが、慣れた時の便利さは分かってるつもりです。(現在Mac使い)
IDEはeclipse考えてます。
皆さん意見お願いします。
0347デフォルトの名無しさん
2010/03/10(水) 22:53:13emacsのキーバインドを忘れてるならeclipseでいいんじゃない
0349デフォルトの名無しさん
2010/03/10(水) 23:02:28ありがと〜
昔はemacs上でメールから何から完結してたけど今は違うからね、eclipseにするわ
こういう時に2chは頼りになるね。初pythonなんで今後も宜しくお願いします。
0350デフォルトの名無しさん
2010/03/10(水) 23:16:280351デフォルトの名無しさん
2010/03/11(木) 00:15:45def __init__(self, addeddate=None)
の=Noneってどういうことなんでしょうか?
0352デフォルトの名無しさん
2010/03/11(木) 00:17:45>>312で答えてくれてるぞ
0353デフォルトの名無しさん
2010/03/11(木) 00:18:41うわあああああ
きづかなかった
ほんとすいません
0355デフォルトの名無しさん
2010/03/11(木) 00:21:49ありがとうございます
すごいわかりやすいです
つまりその例だと関数を定義した時の時間しか表示されないってことですね?
0356デフォルトの名無しさん
2010/03/11(木) 01:13:35default={}
とかは俺も未だにうっかりする事があるので注意
0357デフォルトの名無しさん
2010/03/11(木) 02:05:59数字/文字列/True/False/タプル以外の初期値はdefault=Noneにする習慣つけるといいよ。
関数内で
if default is None:
default = なんたらかんたら
ってする。
そのまま指定できる型でも、変に指定するよりも関数内で指定した方が処理がわかりやすくなることもある。
意図的に
_nonlocal_vars={}
って引数を付けて、その仕組みを悪用するという技もあるとかないとか……
便利だけどよくないってことで、python3からはnonlocalキーワードが追加されたよ。
0358デフォルトの名無しさん
2010/03/11(木) 03:50:10for i in ["a","b","c"]: print i でいいんだろうけど
要素の順番によって挙動を変えたいときってどうすればいいんですか
たとえば、今は次のように書いてるけど
l=["a","b","c"]
for i in range(len(l)): print i, l[i]
なんか見苦しく感じているのです
0359デフォルトの名無しさん
2010/03/11(木) 03:55:34とりあえず、下のコードと同じことは
l = ["a", "b", "c"]
for i, j in enumerate(l): print i, j
こういうふうにできる
0360デフォルトの名無しさん
2010/03/11(木) 03:55:420361デフォルトの名無しさん
2010/03/11(木) 04:26:300362デフォルトの名無しさん
2010/03/11(木) 09:03:12うわ、これ初めて知った。
無意識のうちにNone使ってたから、やらかしたことはなかったが。
0363デフォルトの名無しさん
2010/03/11(木) 09:37:060364デフォルトの名無しさん
2010/03/11(木) 12:11:41ん?どういうこと?シーケンスリテラルを初期値にするなってこと?
0365デフォルトの名無しさん
2010/03/11(木) 12:46:53拡張型ならあまり考えないでも問題にならない事が多いけど
class Hoge(object):
a = []
の.aがHogeの所有でHoge()の所有でないのと同じ
リストや辞書はそのまま書き換える事が多いので
うっかりするとデフォルト引数にアイテムが貯まって行っちゃう
0366デフォルトの名無しさん
2010/03/11(木) 13:28:57も危険?
0367デフォルトの名無しさん
2010/03/11(木) 13:34:39>>> def hoge(default=[]):
... default.append('hoge')
... return default
...
>>> hoge(range(3))
[0, 1, 2, 'hoge']
>>> hoge()
['hoge']
>>> hoge()
['hoge', 'hoge']
0368デフォルトの名無しさん
2010/03/11(木) 14:14:55知ってて利用するのはあり?
それとも可読性が下がるからだめ?
0369デフォルトの名無しさん
2010/03/11(木) 14:24:210370デフォルトの名無しさん
2010/03/11(木) 14:49:36なしとはいわないけどclassにして__call__実装しろ
0371デフォルトの名無しさん
2010/03/11(木) 16:04:45む。これは気を付けないと。
教えてくれてサンクス。
0372デフォルトの名無しさん
2010/03/11(木) 20:27:06if default is None:
default = []
default.append('hoge')
return default
こう書かないといけないのか
0373デフォルトの名無しさん
2010/03/11(木) 21:02:01def v(*args,**kwds):
def w(default=None):
if default is None:
default = []
default.append("hoge")
return default
return w
return v
@u
def h():
print("hello")#実行されない
h(range(10))
>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'hoge']
0374デフォルトの名無しさん
2010/03/11(木) 21:05:48@u(range(10))#多分ここの数字は何でもいい
引数を与えないと動かないでした
連投スマソ
0375デフォルトの名無しさん
2010/03/11(木) 21:10:51何やってんだろ
でも引数渡さないと動かない
スレ汚し失礼
0376デフォルトの名無しさん
2010/03/11(木) 21:13:31呼び出すたびにデフォルト値を生成するデコレータを作りたい?
0377デフォルトの名無しさん
2010/03/11(木) 21:21:23ムシャムシャしてやったから無視していいです
0378デフォルトの名無しさん
2010/03/11(木) 23:01:51addeddate = datetime.now
ってどういう意味ですか?
0379デフォルトの名無しさん
2010/03/11(木) 23:23:20具体的にはaddeddateがNoneとか空リストとかFalseそのものだったとき。
0380デフォルトの名無しさん
2010/03/11(木) 23:26:46なるほどありがとうございます
0381デフォルトの名無しさん
2010/03/12(金) 23:48:110382デフォルトの名無しさん
2010/03/13(土) 15:08:33os.walk(path).next()
以外の方法ってありますか?
0383デフォルトの名無しさん
2010/03/13(土) 15:17:140384デフォルトの名無しさん
2010/03/13(土) 20:03:130385デフォルトの名無しさん
2010/03/13(土) 22:55:31ありがとうございます。
0386デフォルトの名無しさん
2010/03/14(日) 12:33:360387デフォルトの名無しさん
2010/03/14(日) 12:38:010388デフォルトの名無しさん
2010/03/14(日) 12:41:31外部ライブラリを使いたい or 使うかもしれないのであれば2.6の方が無難
0389デフォルトの名無しさん
2010/03/14(日) 12:48:313.x系で弾かれる書式は、2.6でも警告されるから
2.6でも自然と互換性のある書き方を採用しているだろうし
ただ、文字列周りは混乱するかもしれない
http://d.hatena.ne.jp/fgshun/20090901/1251818730
0390デフォルトの名無しさん
2010/03/14(日) 12:54:582.6から勉強始めることにしました
非常に参考になりました
ありがとうございます!
0391デフォルトの名無しさん
2010/03/14(日) 13:07:02テンプレに載ってなかったので貼り
Dive Into Python 3 日本語版
http://diveintopython3-ja.rdy.jp/
Python 3.x向けだけど、その点を割引いても読む価値がある
0392デフォルトの名無しさん
2010/03/14(日) 13:48:49まとめwikiがない
0393デフォルトの名無しさん
2010/03/14(日) 13:56:27ttp://python.rdy.jp/
0394デフォルトの名無しさん
2010/03/14(日) 16:16:27いまいち分からなくて
0395デフォルトの名無しさん
2010/03/14(日) 18:43:560396デフォルトの名無しさん
2010/03/14(日) 22:32:37あと有名所はpy2exe
どちらもググれば大量に実行例がヒットする
0397デフォルトの名無しさん
2010/03/14(日) 22:37:58こんどcx_Freezeも使ってみよう。
0398デフォルトの名無しさん
2010/03/14(日) 23:02:10最新版取って来いってのがなぁ・・・
0399>>394
2010/03/14(日) 23:14:432.6に対応してないのが多いので困ってました
0400デフォルトの名無しさん
2010/03/14(日) 23:17:37Python2.6に対応していないのって、あまり気にしないでいいよ。
俺もpy2exeをPython2.6で利用しているし。
msvcrtは別にインストールしてもらう必要があるけど。
0401>>394
2010/03/14(日) 23:20:53そうなんですか!有難うございます
webアプリがpythonで作れるってしったんですがwebアプリがいまいちなんのことか理解できないです
0402デフォルトの名無しさん
2010/03/14(日) 23:23:350403デフォルトの名無しさん
2010/03/14(日) 23:40:34msvcrtもsetup.pyに書いておけばいいのに
0404デフォルトの名無しさん
2010/03/14(日) 23:41:42http://pc11.2ch.net/test/read.cgi/php/1267057923
http://pc11.2ch.net/test/read.cgi/php/1267094290
0405400
2010/03/14(日) 23:48:00WinSxS でググってみて。
setup.py に msvcr9.dll を書くだけじゃダメだって判るから。
まじめに解決しようとしたら、Windowsプログラミングでは避けて通れないmanifest
を扱う必要があるんだけど、それが面倒だから「VC Runtime再配布可能パッケージ
をインストールして」とかで逃げる。
0406デフォルトの名無しさん
2010/03/15(月) 00:28:47setuptools+py2exeで一つのディレクトリにまとめる事はできるけど考えるのめんどくさいのでmsvcr入れろになる
しかしインストーラのファイル名が全部vcredist_x86.exeとかMSは何考えてんだ
0407デフォルトの名無しさん
2010/03/15(月) 00:38:27やれやれだぜ
0408デフォルトの名無しさん
2010/03/15(月) 00:39:010409デフォルトの名無しさん
2010/03/15(月) 00:42:490410デフォルトの名無しさん
2010/03/15(月) 01:02:54ヴァージョンが2.xと3.xがありますがどちらを選べばいいんでしょうか?
特徴などあればあわせて教えていただきたいです。
0411デフォルトの名無しさん
2010/03/15(月) 01:12:102.xと3.x
プログラムの学習目的
2.xと3.x
0412デフォルトの名無しさん
2010/03/15(月) 01:14:012から3への橋渡しである2.6。
ほとんどのサードパーティ製ライブラリが利用できるし、3への移行も簡単。
0413デフォルトの名無しさん
2010/03/15(月) 01:15:42現時点で情報が多くて、皆が使っている(と思われる)のは2.X系列なので
そっちが無難だと思うよ
ライブラリが揃っているという意味で、実用的でもあるしね
0414デフォルトの名無しさん
2010/03/15(月) 01:18:55皆さん即レスありがとうございます。
2.6にしてみようと思います。
0415デフォルトの名無しさん
2010/03/15(月) 01:54:32マジか!?
どこに書いてあった?
0416デフォルトの名無しさん
2010/03/15(月) 02:43:440417デフォルトの名無しさん
2010/03/15(月) 11:51:20>3への移行も簡単。
善良な市民に嘘を教えるなよボケ。
0418デフォルトの名無しさん
2010/03/15(月) 11:55:55問題を解決できるんだよな。
暗黙に壊れるより明示的にエラーになるという方針が嬉しい。
文字列と数値の間で暗黙に型変換されるような言語だったら、Python2から3へ
みたいなアップグレードへの対応は気が狂うと思う。
php4からphp5への移行とかどんな感じだったんだろう?
ほとんどのアプリ、フレームワークが、移行をあきらめて新規に作り直したんじゃ
無いだろうか。
0419デフォルトの名無しさん
2010/03/15(月) 12:20:19Python 2.6用に書かれたプログラムはpython -3でエラーが出なくなるまで修正した後、2to3で普通にPython 3用のコードになるけどこれでも簡単ではない?
0420デフォルトの名無しさん
2010/03/15(月) 13:43:56Dive Into Python3 の chardet モジュール移行を読むと良いよ。
b"foo"[0] が文字列から数値に変わってたりする。
0421デフォルトの名無しさん
2010/03/15(月) 13:52:40それぐらいでしょ?-3オプションで訂正されないのは。
0422デフォルトの名無しさん
2010/03/15(月) 13:56:45辞書の .keys() がリストではなくviewオブジェクトを返すようになったけど、
リストを期待しているコードは動かなくなる。
これも -3 じゃ検出できない。
-3 オプションや 2to3 でできるのは静的に自明な部分だけで、動的解析が
必要なものは検出できないよ。
0423デフォルトの名無しさん
2010/03/15(月) 14:19:380424デフォルトの名無しさん
2010/03/15(月) 14:32:15http://bitbucket.org/loewis/django-3k/
0425デフォルトの名無しさん
2010/03/15(月) 14:42:570426デフォルトの名無しさん
2010/03/15(月) 14:44:38dict.keys()は2to3でlist(dict.keys())のように修正されるから良いじゃないの?
0427デフォルトの名無しさん
2010/03/15(月) 15:01:48import gtk
とやってもないと言われてしまいます
どうすればいいでしょうか
0428デフォルトの名無しさん
2010/03/15(月) 15:20:450429デフォルトの名無しさん
2010/03/15(月) 15:44:42の中のgtk-2.0とpygtkとついたファイルを4つ
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packagesに移したら
サンプルのプログラムが動きました
ありがとうございました
0431デフォルトの名無しさん
2010/03/15(月) 17:59:32Google DocumentsやGmailみたいなのがWebアプリ
ショッピングカートとか機能性を有する物。
動的ページを吐き出すのが目的のwikiや2chはアプリという概念からはズレてる気がする。
0432>>394
2010/03/15(月) 18:18:53いまいち分かんないんだけど見るだけじゃなくて何か機能があるって事ですか?
cx_freezeとpy2exeインストールからつまづくんですが
0433>>394
2010/03/15(月) 18:44:39ただ使い方が
0434>>394
2010/03/15(月) 18:50:29先に爪を切ってきます
0436デフォルトの名無しさん
2010/03/15(月) 20:17:21http://tinyurl.com/yfcuycc
0437デフォルトの名無しさん
2010/03/15(月) 22:27:570438デフォルトの名無しさん
2010/03/15(月) 22:28:27os.remove()とかos.renameが
WindowsError: [Error 123] ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。:
ってなっちゃうんですが、解決法はありますか?
0439デフォルトの名無しさん
2010/03/15(月) 22:41:33>>> open(ur'C:\うにこーど.txt', 'wb').write('fugafuga')
>>> open(ur'C:\うにこーど.txt', 'rb').read()
'fugafuga'
0440デフォルトの名無しさん
2010/03/15(月) 22:48:52os.remove()やos.rename()にちゃんとunicodeでパスを渡せば問題はない
strだとダメだな
0441デフォルトの名無しさん
2010/03/15(月) 22:54:55def members(self):
この @property てなんですか?
0442438
2010/03/15(月) 22:57:05for f in os.walk(path).next()[2]:
os.remove(f)
こんな感じのことがしたいんですが
strからunicodeに変換する方法はどうすればよいのでしょう?
0443デフォルトの名無しさん
2010/03/15(月) 23:01:49不便だけど os.listdir は UNICODE 対応なのでそっち使うとか
0444デフォルトの名無しさん
2010/03/15(月) 23:02:17os.walk() に渡している path が str だから、戻ってくるのもstrになる。
unicode で path を渡せば、ちゃんとunicodeでファイル名が帰ってくる。
0445デフォルトの名無しさん
2010/03/15(月) 23:06:03@が付くのはデコレータ
@propertyの使い方はいわゆるgetter
class MyClass(object):
_a = 100
_b = 100
@property
def total(self):
return self._a * self._b
c = MyClass()
print c.total
0446デフォルトの名無しさん
2010/03/15(月) 23:07:56>>443は無視しておくれ
0447438
2010/03/15(月) 23:13:28ようやく>444の意味がわかりました。
ありがとうございました。
0448デフォルトの名無しさん
2010/03/15(月) 23:14:200450デフォルトの名無しさん
2010/03/15(月) 23:40:340451デフォルトの名無しさん
2010/03/15(月) 23:43:440452デフォルトの名無しさん
2010/03/16(火) 01:10:49JmEditorやPyScripterなどが出てきたんですが、開発が止まっていたりして何を選べばいいのかさっぱりです。
よければ使っているものを教えてください。
0453デフォルトの名無しさん
2010/03/16(火) 01:17:550454デフォルトの名無しさん
2010/03/16(火) 01:18:380455デフォルトの名無しさん
2010/03/16(火) 01:24:380456デフォルトの名無しさん
2010/03/16(火) 10:23:41俺はvim使ってるが、万人に勧められる代物じゃないなぁ……
エディタは自分にあってるかどうかが重要なので、無料で使えるものでよさそうなのをとりあえず使ってみたら?
Pythonの場合、インデントの設定が詳細にできることは、必須条件。
エディタによっては自動インデントがお節介でスペースとタブの混ざったインデントにしてくれるものもあるが、
Pythonではそれやられると致命的だから、そんな設定は初めからないか、無効にできるものがいい。
0457デフォルトの名無しさん
2010/03/16(火) 10:34:04vimとemacs以外に何をおすすめして良いのか判らん。
0458デフォルトの名無しさん
2010/03/16(火) 10:55:460459デフォルトの名無しさん
2010/03/16(火) 11:17:04ありがとうございました!
本屋で見てきます!!
0460デフォルトの名無しさん
2010/03/16(火) 11:37:16Webアプリ編のデコレーターの説明はすごく分かりづらかった気がする。
素直に初めてのPython買っておけばいいと思うけど。
0461デフォルトの名無しさん
2010/03/16(火) 11:59:240462デフォルトの名無しさん
2010/03/16(火) 12:04:11テキストエディタっぽくて良いな。ちゃんとファイルのエンコーディングも
設定できる。
PythonWin は今時MDIだと古くさく見える。PyScripterはどうだっけ?
IDEとしては、Pydev が盤石で、eclipse 重いという人は Eric かPyScripterだな。
0463デフォルトの名無しさん
2010/03/16(火) 12:17:08俺が使ってるのは、PyScripterとEmEditorのフリー版。
PyScripterは、無限ループのスクリプトを実行させるとそのままIDEも
フリーズして強制終了しないといけなくなるとかの問題があるけど
統合環境の便利さと起動/動作の軽さは優秀。
EmEditorはそのままだとタブを使われるから、設定を変更して
スペースにする必要がある。
0464デフォルトの名無しさん
2010/03/16(火) 12:34:36EmEditor はPythonのシンタックスハイライトに対応していますか?
あと、ファイルのエンコーディングでcp932とutf-8(bom無し)に対応していますか?
PyScripterは、たぶんRpycをインストールして、コードを別プロセスで動かすように
設定すればIDEが落ちなくなるはず。
0465デフォルトの名無しさん
2010/03/16(火) 12:46:050466デフォルトの名無しさん
2010/03/16(火) 12:53:000467デフォルトの名無しさん
2010/03/16(火) 14:12:13良く書けてる本だと思うよ
フレームワークの情報を期待すると肩すかしを食らうかもしれないが(w
0468452
2010/03/16(火) 16:21:24eclipseは昔使ったことがあるので、とりあえずPydevを入れてみたいと思います。
0469デフォルトの名無しさん
2010/03/16(火) 19:35:10本の中で自作してるんだっけ?
0470デフォルトの名無しさん
2010/03/17(水) 23:39:02みなさん何使いますか?
私は os.startfile か subprocess.popen あたりを使ったんですが、
普通は何を使うものでしょうか?
0471デフォルトの名無しさん
2010/03/17(水) 23:54:31それでいいんじゃね?
0472デフォルトの名無しさん
2010/03/18(木) 01:22:44は?
0473デフォルトの名無しさん
2010/03/19(金) 02:50:35これ一通りやってみました
次は何をすれば良いですか?
0474デフォルトの名無しさん
2010/03/19(金) 02:57:13すきなもん作ればいいじゃん
0475デフォルトの名無しさん
2010/03/19(金) 03:46:19プログラミング言語は道具だ。
つまり、君の質問は、包丁の使い方一通り覚えて千切りと短冊切りできるようになったけど
次は何をすればいいの?って質問と同じだ。
そんな答え辛い質問ではあるが、
じゃあみじん切りに挑戦したら?に対応する答えは、じゃあクラスに挑戦してみたら?
じゃあカレーでも作ってみたら?に対応する答えは、自前でソートの実装してみたら?
にあたる。
0476デフォルトの名無しさん
2010/03/19(金) 04:14:39pythonでCGIをやってみるとか
perlやphpで書かれたお気に入りのスクリプトをpythonに移植してみるとか。
GUIの2chブラウザ作るとか
0477デフォルトの名無しさん
2010/03/19(金) 07:55:25そこ日本語の文字列のところの説明がめちゃくちゃだな
0478デフォルトの名無しさん
2010/03/19(金) 09:01:47VIPだからゆるしてやれ
0479デフォルトの名無しさん
2010/03/20(土) 01:04:24ありがとうくだすれ!
0480デフォルトの名無しさん
2010/03/20(土) 09:15:46http://code.google.com/edu/languages/google-python-class/
0481デフォルトの名無しさん
2010/03/20(土) 09:22:22Python Exercisesってのが面白そうだね
ライセンスも原著作者のクレジットだけ示せばいいらしいし
宿題スレにでも持ち込んでやってみるかな
0482デフォルトの名無しさん
2010/03/20(土) 13:24:350483482
2010/03/20(土) 13:41:220484デフォルトの名無しさん
2010/03/20(土) 14:28:12Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "fltk/__init__.py", line 31, in <module>
_fltk = swig_import_helper()
File "fltk/__init__.py", line 23, in swig_import_helper
import _fltk
ImportError: No module named _fltk
どうすればいいでしょうか
0485デフォルトの名無しさん
2010/03/20(土) 15:17:32自決しました
0486デフォルトの名無しさん
2010/03/20(土) 17:29:38ちょw死ぬなw
In [15]: for i in l:
print i
....:
....:
1
2
3
4
In [17]: l=[1,2,3,4]
In [18]: for i in l:
print i
if i < 3:
l.remove(i)
....:
....:
1
3
4
なんで2が出ないのですか?
0488デフォルトの名無しさん
2010/03/20(土) 20:35:32>>> for i in l:
print i, l
if i < 3:
print l
l.remove(i)
1 [1, 2, 3, 4]
[1, 2, 3, 4]
3 [2, 3, 4]
4 [2, 3, 4]
>>> l=[1,2,3,4]
>>> for i in l[:]:
print i, l
if i < 3:
print l
l.remove(i)
1 [1, 2, 3, 4]
[1, 2, 3, 4]
2 [2, 3, 4]
[2, 3, 4]
3 [3, 4]
4 [3, 4]
0489デフォルトの名無しさん
2010/03/20(土) 20:36:29http://www.python.jp/doc/2.5/ref/for.html のいちばんした
0490デフォルトの名無しさん
2010/03/20(土) 21:28:49代入してxを宣言しなくても怒られないのは何でだろう。
そういうもんだと使ってたけど、ふと思うと気になってくる。
0491デフォルトの名無しさん
2010/03/21(日) 00:15:26俺は慣習的にiを使う事が多いけどな。
0492デフォルトの名無しさん
2010/03/21(日) 00:41:01かな。個人的に i は極力使わないようにしてる
0493デフォルトの名無しさん
2010/03/21(日) 00:50:40HaskellやCloujureで推奨されてるみたいだし
enumerateでインデックス取ってくるときは i か idx を使うな
0494デフォルトの名無しさん
2010/03/21(日) 01:08:12小指と薬指のキーは嫌い、特に下段w
0495デフォルトの名無しさん
2010/03/21(日) 01:10:56SSKで右小指も
0496デフォルトの名無しさん
2010/03/21(日) 01:14:07一日使っただけでEmacs小指になって捨てた。
元々指が軟弱なのかも知れないが俺は短足、短指、短小と3拍子揃ったイケメン
0497デフォルトの名無しさん
2010/03/21(日) 01:14:11× SSK
○ SKK
0498デフォルトの名無しさん
2010/03/21(日) 01:19:32メモメモφ(_ _)
0499デフォルトの名無しさん
2010/03/21(日) 01:21:24俺は逆にCtrl+のショートカットで出来ることを
カーソルキーやファンクションキー、DEL、BS
あまつさえHOME、ENDを使わなきゃならない
ってことになるのが苦痛だなぁ
0500デフォルトの名無しさん
2010/03/21(日) 01:23:29それは同意だな
Emacsの2ストロークも苦痛だが
0501デフォルトの名無しさん
2010/03/21(日) 01:26:56明示的に代入(もっとPython風に言うと、名前への値の束縛)をしなくてもいいのは、
for x in l自体がxに値を束縛するって意味を含んでいるから。
def func()だって、funcに関数を束縛するって意味だから、funcに前もって代入しなくてもいい。
俺も>>492のいう単数形 in 複数形を心がける事が多いなぁ。
iは、ループカウンタとしての使い方、値はどうでもよくて回数のみが重要なときと
リストなどのインデックスとして使うときは極力使い、そうでないときは極力使わないようにしてる。
インデックスとしての利用はなんとなくPythonらしくない気がするので避けてるけど、その方が楽そうなときは無理には避けない。
0502デフォルトの名無しさん
2010/03/21(日) 01:33:24思考が止まるから深く考えた事無いや
0503デフォルトの名無しさん
2010/03/21(日) 01:38:302ストロークはタイプ自体は苦痛じゃないけど
数が多すぎて覚えられないのが苦痛だな
いや、別に、良く使うやつだけ覚えておけばいいんだけど
あと、右AltはIME切り替えに割り当ててるんで
Alt+左手キーがムチャクチャ押しにくいw
Python関係なさすぎ
>>501
単数形 in 複数形スタイルは時に自分の英語力の無さに絶望することになる
『dataの単数形ってなんだっけ?』みたいな
0504デフォルトの名無しさん
2010/03/21(日) 01:40:100505デフォルトの名無しさん
2010/03/21(日) 01:45:25タイプ量も増えちゃうし
俺は data という単語自体を敬遠するようになったw
0506デフォルトの名無しさん
2010/03/21(日) 02:22:020507デフォルトの名無しさん
2010/03/21(日) 03:16:060508デフォルトの名無しさん
2010/03/21(日) 03:44:56いや、それは無いだろ・・・え、マジ?
0509デフォルトの名無しさん
2010/03/21(日) 04:01:530510デフォルトの名無しさん
2010/03/21(日) 04:04:580511デフォルトの名無しさん
2010/03/21(日) 04:52:010512デフォルトの名無しさん
2010/03/21(日) 09:43:530513デフォルトの名無しさん
2010/03/21(日) 11:44:450514デフォルトの名無しさん
2010/03/21(日) 11:49:00ところでおまいら補償と保証と保障の区別はつきますか
0515デフォルトの名無しさん
2010/03/21(日) 11:49:320516デフォルトの名無しさん
2010/03/21(日) 11:59:110517デフォルトの名無しさん
2010/03/21(日) 12:02:35どの質問?
0518デフォルトの名無しさん
2010/03/21(日) 12:10:56>>484
未だに解決してない
0519デフォルトの名無しさん
2010/03/21(日) 12:14:110520デフォルトの名無しさん
2010/03/21(日) 12:20:300521デフォルトの名無しさん
2010/03/21(日) 13:15:32>>484
http://sourceforge.net/projects/pyfltk/
からダウンロードしたバイナリなら大丈夫だけど
0522デフォルトの名無しさん
2010/03/21(日) 13:35:15俺も一回、解決しますた!とか言われたわ
0523デフォルトの名無しさん
2010/03/21(日) 14:47:450524デフォルトの名無しさん
2010/03/21(日) 16:11:26pyFltk-1.1.5のディレクトリに移動して、python setup.py build;python setup.py install
を実行してインストールしました
site-packagesにfltkディレクトリとpyFltk-1.1.5-py2.6.egg-infoが生成されました
インタラクティブシェルで
>>> import fltk
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "fltk/__init__.py", line 31, in <module>
_fltk = swig_import_helper()
File "fltk/__init__.py", line 23, in swig_import_helper
import _fltk
ImportError: No module named _fltk
>>521
駄目でした
0525デフォルトの名無しさん
2010/03/21(日) 16:38:130526デフォルトの名無しさん
2010/03/21(日) 16:41:59えぇー。おかしいね
C:\Python26\Lib\site-packages\fltk\_fltk.pyd が存在するか
C:\Python26\Lib\site-packages\fltk をカレントディレクトリにして python 起動させて
>>> import _fltk
できるか
0527デフォルトの名無しさん
2010/03/21(日) 16:51:58>>526
>C:\Python26\Lib\site-packages\fltk\_fltk.pyd が存在するか
_fltk.soの存在をfltkディレクトリに確認しています
>C:\Python26\Lib\site-packages\fltk をカレントディレクトリにして python 起動させて
>>>> import _fltk
>できるか
>>> import _fltk
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(./_fltk.so, 2): no suitable image found. Did find:
./_fltk.so: mach-o, but wrong architecture
なんでー
0528デフォルトの名無しさん
2010/03/21(日) 16:59:350529デフォルトの名無しさん
2010/03/21(日) 17:21:35Windowsの場合だったらWindows版PythonかCygwin版Pythonかまで先に言っておかないと。
0530デフォルトの名無しさん
2010/03/21(日) 17:23:50依存関係の解決に失敗してるとかみたいね
0531デフォルトの名無しさん
2010/03/21(日) 18:24:22新規ファイルで有効にする方法はあるんでしょうか?
それとtabを押してもインデントが有効にならないんですがこれもどうすればいいでしょうか?
OSはwin7 32bitです。
0532デフォルトの名無しさん
2010/03/21(日) 18:30:06xyzzy Part16
http://pc12.2ch.net/test/read.cgi/win/1209098133/
xyzzyの使い方が分からぬやし 励ましあえ その12
http://pc12.2ch.net/test/read.cgi/software/1226425897/
0533デフォルトの名無しさん
2010/03/21(日) 18:34:060534デフォルトの名無しさん
2010/03/21(日) 19:15:48./_fltk.so: mach-o, but wrong architecture
0535デフォルトの名無しさん
2010/03/22(月) 00:13:53def fg(**kwargs):
return
dict={ u'いち':1}
print dict[ u'いち']
d={ u'y':2 }
print fg(x=1,**d)
python2.6.4です.
上記のコードで前者のprintはちゃんと1を出力しますが,
後者はTypeError: fg() keywords must be stringsというエラーが出てしまいました.
コード内の文字列をすべてUnicode型に統一したいのですが、
この場合はどう変更したらいいでしょうか?
0536デフォルトの名無しさん
2010/03/22(月) 01:08:06どうしても使いたいのならPython 3.xにすればいい
0537デフォルトの名無しさん
2010/03/22(月) 01:11:590538デフォルトの名無しさん
2010/03/22(月) 01:14:53まずFLTKを単体で入れてみたら?
Building and Installing FLTK Under UNIX and MacOS X
http://www.fltk.org/documentation.php/doc-1.1/intro.html
0539デフォルトの名無しさん
2010/03/22(月) 01:17:44http://bugs.python.org/issue4978
0540デフォルトの名無しさん
2010/03/22(月) 01:25:32『キーワード引数をユニコードにする必要性がわからん』
って書いてるね
0541デフォルトの名無しさん
2010/03/22(月) 07:28:10return
0542535
2010/03/22(月) 08:43:18>>536
欧米で作成されたコードの日本語対応をしようとしてまして、
辞書にUnicode型が使えないとなると、ほぼ全部書き直しになってしまうのです。
Python3.xも検討しましたが、使用しているライブラリが対応していませんでした・・・
>>537,539,540
ありがとうございます。
2.6.5にしたところ動作しました。
Guido氏のコメントによると、自分のやろうとしていることは実は相当外道なのでしょうか。
0543デフォルトの名無しさん
2010/03/22(月) 10:25:14なんで?
0544デフォルトの名無しさん
2010/03/22(月) 10:26:27外道かどうかはともかく
相当設計が間違ってると思う
0545デフォルトの名無しさん
2010/03/22(月) 10:32:08昔Windowsのとあるプログラムが、日本語化で、/ALL というオプションが /全 という
漢字オプションにされたというおそろしい話を思い出すのだが。
0546デフォルトの名無しさん
2010/03/22(月) 10:54:25dictをキーワード付き引数リストとして渡す関数の方では
キーワードにUnicode型を期待していないはず
辞書のキーにはUnicode型が使えるが
キーワード付き引数のキーワードにはUnicodeが使えない
ってところで、542がなんで困ってたのかさっぱりわからん
まぁ、2.6.5になって解決したならいいけど
0547デフォルトの名無しさん
2010/03/22(月) 11:37:22間違いじゃないね。
もちろん、英語じゃない単語を使うことはPEP8では推奨されず、標準ライブラリでは利用されないけど。
0548デフォルトの名無しさん
2010/03/22(月) 11:40:100549535
2010/03/22(月) 11:46:59あるスクリプト(ゲームスクリプトのようなもの)を構文解析してそれに応じて処理をするようなプログラムなのですが、
元のプログラムはそのスクリプトが英語で書かれていると仮定して作られているため.
日本語を書けるようにしたい、というのがそもそもの動機です.
元のプログラムでは、日本語で書けるべきtokenを辞書のキーとして用いているので、
辞書にUnicode型が使えないと困るわけです。
ただ>>535のように、辞書を引数として渡しているところでエラーが発生していたため、
対処法を質問した次第です.
>>546
ようやく理解できたような気がします.
そもそも自分はキーワード引数というものを理解していないことに気づきました.
要するにキーワード引数を使わないようにすべての関数を変更していったらよいのでしょうか?
>>535では fg(**kwargs) ---> fg(args) みたいに
0550デフォルトの名無しさん
2010/03/22(月) 11:52:370551デフォルトの名無しさん
2010/03/22(月) 12:09:35この場合問題は「キーワード引数」ではなく、「可変引数」で
たんに関数に辞書を渡したいだけなら、可変引数なんて必要なくて
辞書をそのまま渡せばいい。
fg(**kwargs)は、fg(foo=1,hoge='hoge)のようにして呼び出すための構文。
そういう関数の呼び方をしないなら、使う必要はない。
0552デフォルトの名無しさん
2010/03/22(月) 14:05:48551が書いてるみたいに辞書を展開しないでそのまま渡すのなら
関数の内部で辞書の値を辞書のキーと同じ名前の変数に割り当てるか
もしくは、キー名の変数を使っているところで辞書を参照するようにする
例えば以下のような関数では
show(x=0, y=0):
print("X:%s, Y:%s" % (x, y)
前者の場合
show2(point):
for k in point.keys():
exec('%s = %d' % (k, point[k]))
print("X:%d, Y:%d" % (x, y))
前者の場合
show3(point):
print("X:%d, Y:%d" % (point['x'], point['y']))
0553デフォルトの名無しさん
2010/03/22(月) 14:07:09どっちも前者になってるw
0554デフォルトの名無しさん
2010/03/22(月) 14:43:26細かい修正の仕方まで教えてくださってありがとうございます.
特にshow2の書き方は参考になりました.
本当にありがとうございました.
0555デフォルトの名無しさん
2010/03/22(月) 15:03:500556デフォルトの名無しさん
2010/03/22(月) 15:27:48ちょっと不安になったんで念のために
execは注意して使わないと危ないぞ
exec('%s = %d' % (k, v))
の時に 'k' の内容が
import os; os.rmdir('*');x
とかだと目も当てられない
0558デフォルトの名無しさん
2010/03/23(火) 20:15:09googleで「python urllib」で検索
ありがとうございます
ですが、私が言ったのはライブラリを検索する方法です
今回でいうurllibが分からなかった場合で
0560デフォルトの名無しさん
2010/03/23(火) 20:48:06ttp://www.python.jp/doc/release/lib/lib.html
すいませんありがとうございました
0562デフォルトの名無しさん
2010/03/24(水) 11:54:27sort(cmp=lambda x:???) の使い方がよくわかりません(これを使うのがスマートなのでしょうか)
たとえば、
Class Point(object):
def __init__(self,x,y):
self.x=x
self.y=y
triangle=[ Point(0,0),Point(2,4),Point(2,2) ]
このtriangleの要素を Pointクラスのyで昇順にしたいです
0563デフォルトの名無しさん
2010/03/24(水) 12:06:21ただし、これだとyが同じ時の順番が未定義。
yが同じ時にはx順で並べたいなら
sort(points, key=lambda p:(p.y, p.x))
0564デフォルトの名無しさん
2010/03/24(水) 12:08:450565デフォルトの名無しさん
2010/03/24(水) 12:12:170566デフォルトの名無しさん
2010/03/24(水) 12:12:520567デフォルトの名無しさん
2010/03/24(水) 12:21:31ありがとうございます!
lambdaで設定したkeyをフラグにして取り出すんですね
0568デフォルトの名無しさん
2010/03/24(水) 17:52:39# coding=utf-8
from Tkinter import *
root=Tk()
buff=StringVar()
buff.set("")
label=Label(root,textvariable=buff)
label.pack()
# コールバック関数の生成
def make_cmd(n):
return lambda : buff.set('button %d pressed' % n)
# ボタンの生成
for x in range(4):
button=Button(root,text="Button %d" % x, command=make_cmd(x))
button.pack()
root.mainloop()
�@これのStringVar()とはどのようなものでしょうか?
�Aそれとlambdaをここで使うわけは何でしょうか?
0570デフォルトの名無しさん
2010/03/24(水) 22:10:551. 要するにLabelのテキストを簡単に設定するためのプロパティオブジェクト
configure すればいいけどこれ使う方が簡単
2. 使わなくてもいい。単にボタン4つ分のイベントハンドラを書くのが面倒だったと思われる
すいませんプロパティオブジェクトとconfigureは私のpython本には乗っていないので良く分からないです
0572デフォルトの名無しさん
2010/03/24(水) 22:40:24ttp://epydoc.sourceforge.net/stdlib/Tkinter.StringVar-class.html
でも読んだら。
英語ですか
見た所簡単そうな感じなので頑張って見ます
0574デフォルトの名無しさん
2010/03/25(木) 05:46:561 の StringVar は、StringVar の中身を変更すると
StringVar と対応付けられたウィジェットも自動で書き換わるという仕組み
以下を対話型プロンプトから試してみて
>>> from Tkinter import *
>>> root = Tk()
>>> svar = StringVar()
>>> b = Button(text='', textvariable=svar)
>>> b.pack()
>>> svar.set('Hello')
>>> svar.set(u'こんにちは')
2 は簡単そうに見えるけど実は相当難しい(クロージャってやつ)
ボタンの生成時に make_cmd(x) を実行しているのがポイントで、
make_cmd の返り値である無名関数はボタンを生成したときの番号( 0, 1, 2, 3 )を記憶している
わけわかんなかったら次みたいに素直に書くのもあり
def button0_onclick(): ...
def button1_onclidk(): ...
0575デフォルトの名無しさん
2010/03/25(木) 08:43:31実は簡単
0576デフォルトの名無しさん
2010/03/25(木) 08:49:04どこが難しいのやら
0577デフォルトの名無しさん
2010/03/25(木) 08:51:08やっぱりクロージャですか
ありがとうございます
一つ目がよく分かんないです‥
0580デフォルトの名無しさん
2010/03/25(木) 19:27:08今のありがちなツールキットなら、label.textみたいにプロパティで
アクセスさせるのが普通だし
Tkだと、何の変哲も無いただの変数を
label .foo -textvariable foo_value
みたいにして、ウィジットと紐付けることができるんよ
一旦紐付けると、それ以後、変数foo_valueの値を書き換えれば自動的に
ウィジットに転送されるし、逆もまた行われる
tkinterのStringVarはそれをエミュレートするためのクラスね
tkほどエレガントとは言えんけど、原理は同じ
なるほどありがとうございます
0582デフォルトの名無しさん
2010/03/25(木) 21:59:51lambda x: x とか result[k] = result.get(k, 0) + 1 あたりはもっといい書き方ないですかね。
def count_by(iterable, func = lambda x: x):
result = {}
for e in iterable:
k = func(e)
result[k] = result.get(k, 0) + 1
return result
0583デフォルトの名無しさん
2010/03/25(木) 22:14:33src/
path.py
hoge.py
huge.py
のようなファイル構成で、path.pyに
ROOTPATH ="D :/python/"
と記述し、hoge.pyやhuge.pyから、
import path
filePath = path.ROOTPATH
というように利用するつもりなのですが、
ローカルでは動くのに、WSGI上ではエラーとなってしまいます。
解決方法をご存知の方はご教示願います。
0584デフォルトの名無しさん
2010/03/25(木) 22:18:31あとsys.pathの確認
0585583
2010/03/25(木) 22:32:12レスありがとうございます。
職場で作業しているので今はバックトレースを貼れません。すみません。
sys.pathについてググってみましたが、
http://www.python.jp/doc/2.5/inst/search-path.html
こちらのサーチパスの変更作業が必要という認識で問題なさそうですか?
今からちょっと環境用意して試してみます。
0586デフォルトの名無しさん
2010/03/25(木) 22:33:180587デフォルトの名無しさん
2010/03/25(木) 22:46:54カラムごとに数値の合計値を出力したいと考えています。
特定のカラムであれば,
i = 0
for line in open('test.tsv').readlines():
item = string.split('\t')
if item[0].isdigit():
i += int(item[0])
print i
で大丈夫なのですが、
複数のカラムの場合はどのようにすればよいでしょうか?
0588デフォルトの名無しさん
2010/03/25(木) 22:52:42collections.defaultdictを使うといいんじゃないかな
0589デフォルトの名無しさん
2010/03/25(木) 23:02:09単に合計値をリストに格納すればいい
こんな感じでいいんじゃないの
sums = []
for line in open('test.tsv'):
cols = line.split('\t')
if len(cols) > len(sums):
sums += [0] * (len(cols) - len(sums))
for i, col in enumerate(cols):
try:
sums[i] += int(col)
except ValueError:
pass
for sum in sums:
print sum
0590デフォルトの名無しさん
2010/03/25(木) 23:19:08tsv = [map(int, line) for line in csv.reader(open("tsv.tsv","r"), csv.excel_tab)]
print map(sum, zip(*tsv))
0591デフォルトの名無しさん
2010/03/25(木) 23:19:35>>> from collections import defaultdict
>>> def count(iterable):
... result = defaultdict(int)
... for item in iterable:
... result[item] += 1
... return result
...
>>> x = ["foo", "bar", "baz", "foobar"]
>>> count(len(y) for y in x)
defaultdict(<type 'int'>, {3: 3, 6: 1})
Python 2.7 なら collections.counter というそのものズバリなものが追加されるけどね。
return lambda x: n * x
>>> foo10 = foo(10)
>>> foo10(100)
1000
>>> foo5 = foo(5)
>>> foo5(11)
55
これのfoo(10)ではnにセットしているのですか?
それともxにセットしているのですか?
0594デフォルトの名無しさん
2010/03/26(金) 19:46:30foo10 = foo(10)
foo10(100)の100がx
0595デフォルトの名無しさん
2010/03/26(金) 21:23:38ありがとうございます
ただ理屈がわからない‥
0597デフォルトの名無しさん
2010/03/26(金) 22:20:10どうわからないのか書いておくれ
0598デフォルトの名無しさん
2010/03/26(金) 22:53:10foo(10)の10はnなのはわかるべ?
で、関数def foo(n):
の戻り値が「lambda x: n * x」でnに10を入れると、
foo10っていう変数には
lambda x: 10 * x
が代入される。
これは
def foo10(x):
return 10 * x
と同じだと思ってよろし
0599デフォルトの名無しさん
2010/03/26(金) 23:24:22これだと実行していない lambda の中身が一部評価されてることになるぞ
0600デフォルトの名無しさん
2010/03/26(金) 23:36:230603デフォルトの名無しさん
2010/03/27(土) 18:58:32がんばるぞ〜。
0604デフォルトの名無しさん
2010/03/27(土) 23:53:160605デフォルトの名無しさん
2010/03/28(日) 00:14:570606デフォルトの名無しさん
2010/03/28(日) 00:32:35地元の図書館に寄贈しろよ
Book Offとかで売ったってしれてるだろ
0607デフォルトの名無しさん
2010/03/28(日) 00:42:050608デフォルトの名無しさん
2010/03/28(日) 00:58:49俺が寄贈した技術本は既に棚に並んでいない。
0609デフォルトの名無しさん
2010/03/28(日) 01:04:240610デフォルトの名無しさん
2010/03/28(日) 01:06:040611デフォルトの名無しさん
2010/03/28(日) 01:12:02古い技術書はブックオフ
これでおk
0612デフォルトの名無しさん
2010/03/28(日) 01:13:120613デフォルトの名無しさん
2010/03/28(日) 01:14:00それと読みたいのに無いなら
すぐにも購入希望を出したほうが全員の利益になる。
0614デフォルトの名無しさん
2010/03/28(日) 01:15:41それはない
0615デフォルトの名無しさん
2010/03/28(日) 13:24:06あれ買うぐらいならこれ読んだ方がためになると思う。
http://www.python.org/doc/essays/ppt/sd99east/index.htm
0616デフォルトの名無しさん
2010/03/28(日) 16:53:43何か凄い特長でもあれば考えてもよいが、思いつかない。
PerlとかPHPの方が情報も書籍も多いと思われ。
0617デフォルトの名無しさん
2010/03/28(日) 16:58:140618603
2010/03/28(日) 17:39:52>>605
みなさん凄いです。
早くそうなりたいです。
N88-BASICならある程度いろいろ出来るんですが…現在、変数と組み込み型のとこです。
0619デフォルトの名無しさん
2010/03/28(日) 17:52:260620デフォルトの名無しさん
2010/03/28(日) 18:03:330621デフォルトの名無しさん
2010/03/28(日) 18:07:40あるね
小学生の頃に借りた動物図鑑にはカエルの小さいヤツが干からびて挟まってた。
0622デフォルトの名無しさん
2010/03/28(日) 18:35:390623デフォルトの名無しさん
2010/03/28(日) 18:45:08例えば2×2のときに、
>>> a = [[0] * 2] * 2
とするとうまく動きません。
0624デフォルトの名無しさん
2010/03/28(日) 18:50:460626デフォルトの名無しさん
2010/03/28(日) 19:29:38>>> print(dir(sys.os))
のように、コマンドの実行結果をファイル出力したいんですが可能でしょうか?
0627デフォルトの名無しさん
2010/03/28(日) 20:32:35入門書レベルならdive into python 3
ttp://diveintopython3-ja.rdy.jp/index.html
ただ、Python2やってた人には冗長かもしれない。
英語でもいいなら、公式ドキュメントとかpepとかそのへんがいいんじゃないかなぁ。
あと、3は専用スレあるからそっち池
http://pc12.2ch.net/test/read.cgi/tech/1235050215/
0628デフォルトの名無しさん
2010/03/28(日) 20:44:48ファイルオブジェクトへの書き込みなら
print >>fileobj, dir(sys.os)
だけど、まだ開いてないならややめんどくさく、
with open("filename.txt", "w") as f: print >> f, dir(sys.os)
0629デフォルトの名無しさん
2010/03/28(日) 21:02:46サンクス
2もやったことないから3から挑戦してみる
0630デフォルトの名無しさん
2010/03/29(月) 10:01:30信者がウザいのが問題なのかな?
0631デフォルトの名無しさん
2010/03/29(月) 10:54:01前の版は定番で広く読まれてるよ
0632デフォルトの名無しさん
2010/03/29(月) 11:11:380633デフォルトの名無しさん
2010/03/29(月) 11:35:04初めてな人は2から始めた方がいいよ。
3は情報少ないし、ライブラリも対応していないのが多い。
0634デフォルトの名無しさん
2010/03/29(月) 12:00:22すぐにWebアプリ作って公開したいとか、即戦力を求めるならライブラリの充実した2
とりあえずかんたんなスクリプティングから始めたいというなら、互換性を維持するための
種々の問題と無縁で将来のスタンダードになる3
0635デフォルトの名無しさん
2010/03/29(月) 12:06:390636デフォルトの名無しさん
2010/03/29(月) 13:01:13>とりあえずかんたんなスクリプティングから始めたいというなら、互換性を維持するための
>種々の問題と無縁で将来のスタンダードになる3
簡単なスクリプティングのまま2〜3年過ごすのってどんな自宅警備員ですか?
0637デフォルトの名無しさん
2010/03/29(月) 13:05:290638デフォルトの名無しさん
2010/03/29(月) 15:57:063で始めると足りない機能とかライブラリとか気付いたときに
2に乗り換えるとなると余計面倒なことになると思うし
だからといって3の環境が整うのを待つのも微妙
なので今の段階では2から始めて置く方が無難なんだよね
2で分かってれば3になっても苦労しないと思う
逆は大変だよ
0639デフォルトの名無しさん
2010/03/29(月) 15:58:070640デフォルトの名無しさん
2010/03/29(月) 16:22:22634は非モテ。
0641638
2010/03/29(月) 16:29:27はじめて2chで褒められた (*・ω・*)
今回は初歩的な質問です
例えば
def f(x):
return x * 2
という関数を作ったときに、returnをつけなければならない理由は何でしょうか?
また
def print_a():
print "クルミポンチオ"
のときにreturnを付けない理由は何でしょうか?
今一返り値がよく分からないんです
0643デフォルトの名無しさん
2010/03/29(月) 17:57:48関数の呼びだし元で、返り値を利用するときはreturnで値を返す。
ようは、計算したらreturnってことですか?
0645デフォルトの名無しさん
2010/03/29(月) 18:11:18def func1():
return 'hello world'
def func2():
print 'hello world'
modori = func1()
print modori
func2()
0646デフォルトの名無しさん
2010/03/29(月) 18:13:40x += 1
yield x
みたいなのもなかったっけか
0647デフォルトの名無しさん
2010/03/29(月) 18:15:48例えば、「このゴミ捨てといて」と頼む場合は、捨てたゴミは返してもらう必要がないので
返り値はいらない。
「この書類にサインして」と頼む場合は、サインされた書類を返して貰う必要がある。
その関数に、どういう役割をもたせるかの問題。
0648デフォルトの名無しさん
2010/03/29(月) 18:18:48そのごみ捨てといてがprint文に当たる訳ですか
関数やらprintを使ったらreturnはいらないってことですか
0650デフォルトの名無しさん
2010/03/29(月) 18:23:230651デフォルトの名無しさん
2010/03/29(月) 18:25:05... x = 0
... while True:
... yield x
... x += 1
...
>>> counter()
<generator object at 0x01ACBCD8>
>>> counter()
<generator object at 0x01ACBCB0>
>>> counter()
<generator object at 0x01ACBD00>
>>> counter().next()
0
>>> counter().next()
0
>>> counter().next()
0
>>> c = counter()
>>> c.next()
0
>>> c.next()
1
>>> c.next()
2
>>> c.next()
3
>>> c.next()
4
0652デフォルトの名無しさん
2010/03/29(月) 18:28:10> という関数を作ったときに、returnをつけなければならない理由は何でしょうか?
xを受け取ってそれを2倍した計算結果をわざわざ捨てて
呼び出し側にNoneを返す関数なんて使い物にならないから
> のときにreturnを付けない理由は何でしょうか?
後者はその恥ずかしい文字列を出力さえしてくれればいいのでreturnしていない
0653デフォルトの名無しさん
2010/03/29(月) 18:37:21関数の中身がどうなっているか(printを使ったか)ではなく、
その関数が結果を返す必要があるかどうか。
例えば、「2chのスレッドを読み込む」という関数は、ダウンロードしてきた
スレッドの内容を返す必要がある。
「2chのスレッドに書き込む」という関数は、特に何も返す必要がない。
どちらも似たような処理だが、役割が違う。
0655デフォルトの名無しさん
2010/03/29(月) 19:07:39いわゆるFizzBuzz問題を解いてください
print x
if x % 3 ==0:
print "Fizz"
elif x % 5 ==0:
print "Buzz"
ここまでできたが3と5の両方の倍数ってどうやって表現するのかわかりません
まだまだアマチュアですね
てかちげえwww
0657デフォルトの名無しさん
2010/03/29(月) 20:54:56if x % 15 == 0:
print "FizzBuzz"
か
if x % 3 == 0 and x % 5 == 0:
print "FizzBuzz"
お好きな方をどうぞ
補足
andはhoge and hogeの二つの条件に当てはまった時
orはhoge or hogeのどちらか一方が当てはまったとき
それって、3と5の公倍数でしたっけ?
9とか10も入ると思ってたんですが
これってそんなに難しくないですよね?
0659デフォルトの名無しさん
2010/03/29(月) 21:24:070660デフォルトの名無しさん
2010/03/29(月) 21:29:57if文の外で必ず通るところにprint xが書いてあるから
123Fizz45Buzzになりそうだけど
出来なくはないかも知れませんね
覚えてればの話ですけど
0662デフォルトの名無しさん
2010/03/30(火) 00:36:44def print_a():
print "クルミポンチオ"
return None
返値を使うか使わないかは呼び出し側次第。
0663デフォルトの名無しさん
2010/03/30(火) 03:20:500664デフォルトの名無しさん
2010/03/30(火) 09:04:10確かにreturnがない関数の戻り値を見るとNoneだけど、
なーんかしっくりこない。
pythonでは「何も返さない関数」=「Noneしか返さない関数」だけど、やっぱりしっくりこない。
実行したときの結果が同じに見えるとき、その処理の中身の違いが分からない程度の学習段階だと、
とりあえずもうちょっと先に進んでみろ、と言っておきたい。
関数に引数渡したり、関数を沢山使う場面に出くわすようになったら、意味が全然違うことに気付くはず。
0665デフォルトの名無しさん
2010/03/30(火) 09:23:35なんで省略=return Noneがおかしいのか分からん
0666デフォルトの名無しさん
2010/03/30(火) 09:39:16関数オブジェクトを利用するコードが書きやすいんだよな。
あと、動的型付け言語だと、関数が戻り値を呼び出すのかどうかが
実行時まで判らないから、本当に戻り値の無い関数があると
その扱いが難しい。
0667デフォルトの名無しさん
2010/03/30(火) 10:55:30...
>>> a() == None
True
こうなるから間違ってなさそうだけどな
0668デフォルトの名無しさん
2010/03/30(火) 11:08:57>>> def hoge():
... 1234 + 5678
...
>>> dis.dis(hoge)
2 0 LOAD_CONST 3 (6912)
3 POP_TOP
4 LOAD_CONST 0 (None)
7 RETURN_VALUE
0669デフォルトの名無しさん
2010/03/30(火) 11:28:16もちついてください
超初心者用スレでそんな低レベルの話されたらパニックになる人が最低1人は出ます
漏れです
0670デフォルトの名無しさん
2010/03/30(火) 11:53:250671デフォルトの名無しさん
2010/03/30(火) 11:54:410672デフォルトの名無しさん
2010/03/30(火) 11:56:470673デフォルトの名無しさん
2010/03/30(火) 11:59:350675デフォルトの名無しさん
2010/03/30(火) 12:47:55for x in range (1,101):
y = x
if x % 3 == 0 :
y = "Fizz"
if x % 5 == 0 :
y = "Buzz"
if x % 15 == 0 :
y = "FizzBuzz"
print y
0676デフォルトの名無しさん
2010/03/30(火) 13:19:59>>671-672とかだったら発狂してた
0677デフォルトの名無しさん
2010/03/30(火) 14:31:29Ruby ヒドすwwww
0678デフォルトの名無しさん
2010/03/30(火) 14:34:58print '12fizz4buzzfizz78fizzbuzz'
0679デフォルトの名無しさん
2010/03/30(火) 14:38:180680デフォルトの名無しさん
2010/03/30(火) 14:42:44学生に課題だすと必ずそういう解答するお調子者がいるんだよなぁ
0681デフォルトの名無しさん
2010/03/30(火) 14:50:44>省略=return selfだったら良かったのにと思うことはある
これが噂のRuby脳か。
yを使うのかー
なるほど
0683デフォルトの名無しさん
2010/03/30(火) 14:53:330684デフォルトの名無しさん
2010/03/30(火) 15:01:17出たな一行野郎
0685デフォルトの名無しさん
2010/03/30(火) 15:06:21for x in xrange(100): print m[x%15]
0686デフォルトの名無しさん
2010/03/30(火) 15:06:30これよりもっと酷いのがここに
ttp://foma-zakki.cocolog-nifty.com/zakki/2007/05/python_fizzbuzz_ed8f.html
0687デフォルトの名無しさん
2010/03/30(火) 15:07:53マップ型使えといわれてるだろ
0688デフォルトの名無しさん
2010/03/30(火) 15:09:08それ、間違ってる
0689デフォルトの名無しさん
2010/03/30(火) 15:09:24省略=self は ruby じゃないだろ
0690デフォルトの名無しさん
2010/03/30(火) 15:09:39try:
num_of_input = input("Input number of values: ")
i = 0
vals = []
while i < num_of_input:
val = input("Input value #" + `i` + ": ")
if val >= 100: raise "TooBig"
vals.append(val)
i = i + 1
print "The following values are user inputs:"
for val in vals:
print val
except "TooBig":
print "The value is too big!!"
これってどうゆうこと?コピペしても実行できないorz
0691デフォルトの名無しさん
2010/03/30(火) 15:12:11ttp://python.rdy.jp/wiki.cgi?page=FizzBuzz
0692デフォルトの名無しさん
2010/03/30(火) 15:13:09どこからコピペしてきたのか知らないけど
`i` はたぶん 'i' か "i"
あと実行はコマンドプロンプトから行ってエラーメッセージ貼ってね
0693デフォルトの名無しさん
2010/03/30(火) 15:14:16そういう英語がおかしいコードは読まなくてもよい。
0694692
2010/03/30(火) 15:18:06>>690
#!/usr/bin/env python
try:
num_of_input = input("Input number of values: ")
i = 0
vals = []
while i < num_of_input:
val = input("Input value #" + `i` + ": ")
if val >= 100:
raise "TooBig"
vals.append(val)
i = i + 1
print "The following values are user inputs:"
for val in vals:
print val
except "TooBig":
print "The value is too big!!"
インデントが狂ってたよ
ポップアップかソースで
0695デフォルトの名無しさん
2010/03/30(火) 15:26:38インデントの位置がわからない…
0696デフォルトの名無しさん
2010/03/30(火) 15:28:47python 2.6 だと文字列例外が取り除かれてるみたい
raise "TooBig" とかできなくなってる
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class TooBig(Exception):
pass
try:
num_of_input = input("Input number of values: ")
i = 0
vals = []
while i < num_of_input:
val = input("Input value #" + `i` + ": ")
if val >= 100: raise TooBig()
vals.append(val)
i = i + 1
print "The following values are user inputs:"
for val in vals:
print val
except TooBig:
print "The value is too big!!"
一応こんなふうにすればなる
0697デフォルトの名無しさん
2010/03/30(火) 15:32:590698デフォルトの名無しさん
2010/03/30(火) 15:38:01例外クラスのExceptionを継承するってことデスか
0699デフォルトの名無しさん
2010/03/30(火) 15:42:520700デフォルトの名無しさん
2010/03/30(火) 15:44:56文字列例外ではなくクラス例外を使わなければいけないということ
Exception クラスを継承しているのはユーザが定義する例外はそうすべきだと書いてあったから
http://www.python.jp/doc/2.5/lib/module-exceptions.html
0701デフォルトの名無しさん
2010/03/30(火) 15:45:270702デフォルトの名無しさん
2010/03/30(火) 15:50:36ttp://codepad.org/
使えとあれほど!
0703デフォルトの名無しさん
2010/03/30(火) 15:50:47だってパターンマッチがないんだからしょうがないないじゃん
0704デフォルトの名無しさん
2010/03/30(火) 15:50:54将来的には物理演算とグラフィカルな表示をするプログラムを作りたいです。
0705デフォルトの名無しさん
2010/03/30(火) 15:52:07その用途なら間違いなくC#でしょ。
0706704
2010/03/30(火) 15:56:05ちなみに理由は何故ですか?
物理演算用のライブラリでも用意されてるんですか?
0707デフォルトの名無しさん
2010/03/30(火) 16:09:39しかし、そんならC/C++でCUDA/PhisyXでも修行しなさいって
ことになるか。
0708704
2010/03/30(火) 16:40:46強いて言えば習得できるスピードを重視してます
0709デフォルトの名無しさん
2010/03/30(火) 16:48:550710デフォルトの名無しさん
2010/03/30(火) 17:23:46Pythonを選ぶのなら、その手の処理は丸投げ可能なライブラリを使うか、
自分でC拡張を書いたほうがいいな
0711704
2010/03/30(火) 17:36:02これ以上はスレチになりそうなので他所に行きます
答えてくださった方々、ありがとうございました
0712デフォルトの名無しさん
2010/03/30(火) 20:10:31自己参照返しはメソッドチェーン作るときのお決まりのパターン。
Pythonじゃあんまりメソッドチェーン使わないけど
Rubyはメソッドチェーンだらけだし。
0713デフォルトの名無しさん
2010/03/30(火) 20:15:440714デフォルトの名無しさん
2010/03/30(火) 20:34:11そんなのは分かってるよ
あほか
0715デフォルトの名無しさん
2010/03/30(火) 20:49:24手癖によるけど
0716デフォルトの名無しさん
2010/03/30(火) 21:45:560717デフォルトの名無しさん
2010/03/30(火) 22:17:22Pythonで値が返るのは、基本的に(selfではなく)「新たな値を返す」ケースだね
文字列もそう
self返しはあまり見ないな
0718デフォルトの名無しさん
2010/03/30(火) 22:32:020719デフォルトの名無しさん
2010/03/31(水) 01:31:090720デフォルトの名無しさん
2010/03/31(水) 01:48:51type(obj)
0721デフォルトの名無しさん
2010/03/31(水) 07:33:470722デフォルトの名無しさん
2010/03/31(水) 09:56:35俺もそう思ったが、Python 3.xでは正解のようだ。
0723720
2010/03/31(水) 10:15:13old-type-classなんて使うな!って思うけど・・・
ダサいけど、 obj.__class__ を使の方が汎用的なのか?
0724デフォルトの名無しさん
2010/03/31(水) 10:25:262.5.x, 2.6.x でも__future__で全部new style classにして欲しいな。
つい忘れる事がある。
0726デフォルトの名無しさん
2010/03/31(水) 13:47:560727デフォルトの名無しさん
2010/03/31(水) 21:05:030728デフォルトの名無しさん
2010/03/31(水) 21:33:03まだWindows版しか使ってないから分からない。
0729デフォルトの名無しさん
2010/03/31(水) 22:15:51つける必要はない
0730デフォルトの名無しさん
2010/04/01(木) 02:36:52*n*xにも持っていくなら書いた方がいいかもね
書かなくても python hoge.py で動くよ
#!/usr/bin/env python
この書きかたが多いみたいだけどこれを嫌う人もいるらしい
#!/usr/local/bin/ptyhon
自分でインストールしたらなこんな感じ
#!/usr/bin/python
元々インストールされてたのを使うならこんな感じ
どっちみちポータビリティ考えてプログラム書いておかないといけないから
ここだけ変えて動くってもんでもないことは意識しておいたほうがいいよ
0731デフォルトの名無しさん
2010/04/01(木) 07:42:03ttp://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Python_Interpreter
因みに #!/usr/bin/env の問題についてはこのへん
ttp://ya.maya.st/d/200606c.html#d20060625
結局どう書いても環境依存するので無難な書き方ってのは無い。自分の環境で動くように書いとけばいいよ
0732デフォルトの名無しさん
2010/04/02(金) 00:05:09で十分。あとは setup.py をきちんと書いておくこと。
python setup.py install するときに、自動的に書き換えられるから。
0733デフォルトの名無しさん
2010/04/02(金) 10:09:400734デフォルトの名無しさん
2010/04/02(金) 13:10:11自己ファイル読むしかないですか?
0735デフォルトの名無しさん
2010/04/05(月) 16:28:240736デフォルトの名無しさん
2010/04/05(月) 16:35:21print u'%-16s%-16s%-16s%-16s' % ('Destination', 'Netmask', 'Gateway', 'Metric')
for i in win32com.client.Dispatch('WbemScripting.SWbemLocator').ConnectServer().ExecQuery('Select * From Win32_IP4RouteTable'):
print u'%-16s%-16s%-16s%-16s' % (i.Destination, i.Mask, i.NextHop, i.Metric1)
0737デフォルトの名無しさん
2010/04/05(月) 17:18:230738デフォルトの名無しさん
2010/04/08(木) 01:13:11出来ればIRCやチャットなんかでリアルタイムで参加できるといいんですが。
PyjugとかいうところはIRCもうやってないみたいだし。ここやhatenaのブログ群しかわからんです。
オンラインで一人でやっていく場合、何かいい手助けがあれば教えてください。おながいします。
0739デフォルトの名無しさん
2010/04/08(木) 06:50:00そんなものはない。英語を勉強するか諦めるかどっちか選べ。
0740デフォルトの名無しさん
2010/04/08(木) 06:50:12あんまついーとされてないけど。。
0741デフォルトの名無しさん
2010/04/08(木) 06:54:310742デフォルトの名無しさん
2010/04/08(木) 06:57:15マジレスすると最近はGAE周りに
初心者に手取り足取り教えてくれる
親切な人たちが集まっているようだ
GoogleAppEngine hack-a-thon
でググってみてくれ
0743738
2010/04/08(木) 07:56:47やはりそうですか、前にPython勉強しようとして挫折したのもそこからだった気がします。
調べたんですがなかった。今仰るとおり英語で勉強中です。
>>740
サンクスちょっと見てみます。
>>742
マジレスありがとうございます。やはり日本語コミュニティはありがたい手助けになると思うので、熱心にググってみますです。
0744デフォルトの名無しさん
2010/04/08(木) 08:48:370745デフォルトの名無しさん
2010/04/08(木) 09:00:03Webのアーカイブを見れば分かると思うけど、メーリングリストで質問すれば親切に答えてくれるよ。
0746デフォルトの名無しさん
2010/04/08(木) 09:39:29足りない状況ですね。
初心者が気兼ねなく質問するのは、活気が戻るので大歓迎です。
0747デフォルトの名無しさん
2010/04/08(木) 09:51:42厨房の妄想が作り出した幻想だ。
0748デフォルトの名無しさん
2010/04/08(木) 11:28:19自分で作るという手もあるぜ
0749デフォルトの名無しさん
2010/04/08(木) 13:41:59http://www.cometeo.com/room/GdiVpDEF/
0750デフォルトの名無しさん
2010/04/08(木) 15:46:43なにすればいいの?
0751デフォルトの名無しさん
2010/04/08(木) 15:54:15URLがttp://www.pythonchallenge.com/pc/def/0.html
謎の画像
というか専用スレがあるよ
Python Challengeをやろう!
http://pc12.2ch.net/test/read.cgi/tech/1175919288/
0752デフォルトの名無しさん
2010/04/08(木) 15:54:52誘導サンクス
0753デフォルトの名無しさん
2010/04/08(木) 15:55:520754デフォルトの名無しさん
2010/04/08(木) 16:54:230755デフォルトの名無しさん
2010/04/08(木) 18:07:180756デフォルトの名無しさん
2010/04/08(木) 18:09:22* 公式マニュアル>ライブラリリファレンス
* PyPI
0757デフォルトの名無しさん
2010/04/08(木) 18:45:03ライブラリリファレンスも使いにくいし
0758デフォルトの名無しさん
2010/04/08(木) 19:58:14import ImageGrab
ImageGrab.grab().save('hage.png')
だけで出来るとは気付かなかった
0759デフォルトの名無しさん
2010/04/09(金) 04:40:44│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0760デフォルトの名無しさん
2010/04/09(金) 08:16:35みんなエディタ何使ってるの?TT
0761738
2010/04/09(金) 10:20:41irc://irc.2ch.net/python
0762デフォルトの名無しさん
2010/04/09(金) 14:49:52秀丸
0763デフォルトの名無しさん
2010/04/09(金) 18:19:390764デフォルトの名無しさん
2010/04/09(金) 18:21:560765デフォルトの名無しさん
2010/04/09(金) 18:23:520766デフォルトの名無しさん
2010/04/09(金) 19:05:200767デフォルトの名無しさん
2010/04/09(金) 19:10:07そんなのある?
0768デフォルトの名無しさん
2010/04/09(金) 19:33:530769デフォルトの名無しさん
2010/04/09(金) 20:14:27f = cgi.FieldStorage()
if f.has_key('HTTP_X_DCMGUID'):
print f['HTTP_X_DCMGUID'].value
と書いてもダメのようです
0770デフォルトの名無しさん
2010/04/09(金) 20:23:350771デフォルトの名無しさん
2010/04/09(金) 20:25:23dev = detect({'HTTP_USER_AGENT':os.getenv('HTTP_USER_AGENT'),'HTTP_X_DCMGUID':os.getenv('HTTP_X_DCMGUID')})
iid = dev.guid
0772デフォルトの名無しさん
2010/04/09(金) 20:38:37771さんヒントありがとう
import os
dev = os.getenv('HTTP_X_DCMGUID')
print dev
0773デフォルトの名無しさん
2010/04/09(金) 20:41:530774デフォルトの名無しさん
2010/04/09(金) 23:00:23やりたいことはxpでコマンドラインが扱えるツールを扱ったり
webからファイルをダウンロードするようなものを作ろうと思ってます
0775デフォルトの名無しさん
2010/04/09(金) 23:14:22とりあえずこれでいい
http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi
しかしいつの間にかテンプレ消えてんじゃねーか
◆関連リンク
Python の Home Page
http://www.python.org/
Python 日本語ドキュメント - Pythonistaのお友達
http://www.python.jp/doc/release/
最新版直リン - 2.Xが推奨。3.Xはライブラリやドキュメントが使えないことも
http://www.python.org/download/
Python のコーディングガイド PEP8
http://www.python.org/dev/peps/pep-0008/
Python のコーディングガイド PEP8 - 日本語訳
http://www.oldriver.org/python/pep-0008j.html
日本語文字列コード問題まとめ
http://python.matrix.jp/tips/string/encoding.html
インタラクティブモードのエンコード
http://python.matrix.jp/tips/compatibility/interact_encoding.html
0776デフォルトの名無しさん
2010/04/09(金) 23:20:04( ・ω・) �d�d
/ ~つと)
0777デフォルトの名無しさん
2010/04/09(金) 23:22:52Pythonの文字化け対策:sys.setdefaultencodingの謎
http://hain.jp/index.php/tech-j/2008/01/07/Python%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91
実行時にdefaultencodingを変更する
http://d.hatena.ne.jp/perezvon/20070715/1184469534
0778デフォルトの名無しさん
2010/04/10(土) 00:28:18おおらかでいいな
0779デフォルトの名無しさん
2010/04/10(土) 00:32:250780デフォルトの名無しさん
2010/04/10(土) 00:35:03モジュール書く時はsys.getdefaultencoding()に関係なく動くようにしたい思った春
0781デフォルトの名無しさん
2010/04/10(土) 00:36:59そういう初歩的なことはどうでもいいから
さっさとファイル入手力のやり方が知りたいんだが
ヘルプにもどこにもそこのリンクには書いていないじゃないか
別に本格的にやるわけじゃないんだから
要所だけわかりゃいいんだよ
0782デフォルトの名無しさん
2010/04/10(土) 00:40:18がんばってね
0783デフォルトの名無しさん
2010/04/10(土) 07:47:09pyファイルにファイルドロップしようとしても無理だし
ランチャに登録してパス渡しても無理なんだけど
コンパイルしなきゃだめなの?
0784デフォルトの名無しさん
2010/04/10(土) 08:12:500785デフォルトの名無しさん
2010/04/10(土) 08:31:30print argvs
こうやってるんだけどさ、pyファイルのパスしか格納されてないんだよね
0786デフォルトの名無しさん
2010/04/10(土) 08:40:21なぜかわからないがipy.exeに対してやらなきゃならないのか
ipy.exe test.py readme.txt
0787デフォルトの名無しさん
2010/04/10(土) 08:48:46それはともかく
> こうやってるんだけどさ、pyファイルのパスしか格納されてないんだよね
ドロップしたファイルのパスがargv[1]に入らないってことか
なんかWindowsのコンソールは関連付けやパイプで妙な挙動をすることがあるから
変だなと思ったら>>786みたいに明示的にインタプリタに食わせるといいよ
0788デフォルトの名無しさん
2010/04/10(土) 09:37:39お、スレチでしたか
ともかくありがとう
0789デフォルトの名無しさん
2010/04/10(土) 11:22:06これでいいやん
0790デフォルトの名無しさん
2010/04/10(土) 11:35:540791デフォルトの名無しさん
2010/04/10(土) 13:23:370792デフォルトの名無しさん
2010/04/10(土) 16:16:30何度も何度もshift-jisに変更させやがって
変換なしで文字列操作できないのかよ
0793デフォルトの名無しさん
2010/04/10(土) 16:20:320794デフォルトの名無しさん
2010/04/10(土) 16:22:31馬鹿には使えません
0795デフォルトの名無しさん
2010/04/10(土) 16:36:36言語が糞なんだろうが
いちいちエラー吐きやがってよ
0796デフォルトの名無しさん
2010/04/10(土) 16:39:47⊂⌒( ・ω・) はいはいわろすわろす
`ヽ_っ⌒/⌒c
⌒ ⌒
0797デフォルトの名無しさん
2010/04/10(土) 16:55:44今度はソースのセーブすらできなくなってるし
そりゃ過疎るわなこんな糞言語
0798デフォルトの名無しさん
2010/04/10(土) 17:35:46⊂⌒( ・ω・) はいはいわろすわろす
`ヽ_っ⌒/⌒c
⌒ ⌒
0799デフォルトの名無しさん
2010/04/10(土) 17:37:50⊂(#・д・) わろすって言ってんだろ!!
/ ノ∪
し―-J |l| |
人ペシッ!!
__
\ \
 ̄ ̄
0800デフォルトの名無しさん
2010/04/10(土) 18:39:01入力時にdecodeして出力時にencodeするだけでいいのに。
0801デフォルトの名無しさん
2010/04/10(土) 18:39:580802デフォルトの名無しさん
2010/04/10(土) 19:25:05>はあ?他の言語なら何も考えずに処理できるぞ
まちがったまま勝手に処理されても気付かない
(=文字化けしたり)ってことはCのヌルポと同じだよ
Javaみたいにヌルポを教えてくれるかどうかの違い
0803デフォルトの名無しさん
2010/04/10(土) 19:34:19ていうか悪態つくような子に触らないで
0804デフォルトの名無しさん
2010/04/10(土) 19:45:38⊂(#・д・) ヌルポって言ってんだろ!!
/ ノ∪
し―-J |l| |
人ペシッ!!
__
\ \
 ̄ ̄
0805デフォルトの名無しさん
2010/04/10(土) 22:37:57しかしそれくらいで500エラー出すかね、厳しい言語だね
0806デフォルトの名無しさん
2010/04/10(土) 22:45:09もうちょっと弱い型付けの言語でも探せば?
0807デフォルトの名無しさん
2010/04/10(土) 23:23:45馬鹿には使えません
0808デフォルトの名無しさん
2010/04/10(土) 23:36:55url="http://yutori7.2ch.net/test/read.cgi/ana/1270636640/"
lines=urllib.urlopen(url).readlines()
if os.path.exists("img") != True:
os.mkdir("img")
def getTitle(line):
return line[7:len(line)-9]
imgurls=[]
def getIMGurls(line):
strs=line.split()
for str in strs:
if re.search("ttp://blog-imgs",str) != None:continue
if re.search(".jpg",str) != None:
imgurls.append(str)
for line in lines:
if re.match("<title>",line) != None:
title= getTitle(line).decode("shift-jis")
if re.search("\.jpg",line) != None:
getIMGurls(line)
for imgurl in imgurls:
if re.match("ttp",imgurl) != None:imgurl="h"+imgurl
dest="img\\"+os.path.basename(imgurl)
urllib.urlretrieve(imgurl,dest)
time.sleep(1)
0809デフォルトの名無しさん
2010/04/10(土) 23:49:263年位前に漏れも同じの作ったわw
0810デフォルトの名無しさん
2010/04/10(土) 23:54:34めんどくさいから俺がどうにかする気はないが、シンプルにしたいのなら。
正規表現使う必要性があんまり分からん。それにもし使うなら文字列取り出しまでやっちゃえばいいのに。
そうするとgetTitle関数は不要になるか、タイトルにマッチするかどうかも盛り込んだ関数になるんじゃないかなぁ。
getIMGurls関数は、グローバル変数のimgurlsに依存してる時点であんまり処理の分割って役目を果たせていないのだから、
1回しか使わないのであれば関数にする必要ないんじゃないかなぁ。
あと、一度imgurlsに入れてから処理しなおさなくても、その場で処理してしまってもいいように思えるが。
0811デフォルトの名無しさん
2010/04/10(土) 23:59:11まるでPHPを見ているようだ
0812デフォルトの名無しさん
2010/04/11(日) 00:34:36エラーを出してくれる方が親切だろ。
しかし、その割には変数の宣言は必要ない。
厳しいのか緩いのかよくわからん謎仕様。
0813デフォルトの名無しさん
2010/04/11(日) 00:48:11強い動的型付けが謎仕様なの?
0814デフォルトの名無しさん
2010/04/11(日) 01:53:260815デフォルトの名無しさん
2010/04/11(日) 02:32:46英語なら無料
ttp://www.freenetpages.co.uk/hp/alan.gauld/
0816デフォルトの名無しさん
2010/04/11(日) 03:33:06漏れは >>805 じゃないけど
python 学び始めた頃は文字列操作の度に
なんでこんなに例外ばっかり・・・と思ってた
unicode と (encoded) str の違いを理解して
例外の出る理由が判ったあとは考えかたが変わった
いいかげんな文字列処理で文字化けしてても動く言語
→どこにバグがあるか判らないけどとりあえず動くからプログラムに間違いがあっても放置
python の場合
→ちゃんと問題のある場所でエラーが出るからバグ修正が楽
0817デフォルトの名無しさん
2010/04/11(日) 03:56:11lines=urllib.urlopen(url).readlines()
title=""
dir=""
for line in lines:
if re.match("<title>",line):
title= line[7:len(line)-9].decode("shift-jis")
dir="d:\\img\\"+title+"\\"
if os.path.exists(dir) != True:
os.mkdir(dir)
else:
strs=line.split(">")
for str in strs:
m=re.search(r"ttp://.+\.jpg",str)
if m:
filename=title+"_"+os.path.basename(m.group(0))
print filename
try:
if os.path.exists(dir+filename) != True:
urllib.urlretrieve("h"+m.group(0),dir+filename)
print "success "+filename
else:
print "exists "+filename
finally:
print ""
raw_input("ダウンロード完了")
quit()
0818デフォルトの名無しさん
2010/04/11(日) 04:41:270819デフォルトの名無しさん
2010/04/11(日) 07:02:08* 行からタイトルを探す作業は一度見つかったら残りの行については探さなくて済むはず
* os.mkdirの引数は\で終端する必要は無い
* if not os.path.exists(dirname): と書くとすっきり
* strは組み込み関数にもあるのでできれば使わない
* (urllibはkeep-alive(ぐぐって)に対応してなかったような気がする)
あとはHTMLからリンクを抜き出す正規表現を勉強してみたり
HTMLでなくDATにアクセスするようにするともっとすっきり書けると思う
strs=line.split(">")のあたりはいかにも苦し紛れだ
0820デフォルトの名無しさん
2010/04/11(日) 07:03:050821デフォルトの名無しさん
2010/04/11(日) 09:47:06独学でやっているので動けばいいかなぐらいで妥協しがちだけど
こういう意見は非常に参考になります
思い切って意見聞いて正解でした
ありがとうございました
0822デフォルトの名無しさん
2010/04/11(日) 10:43:31HTMLから持ってくるなら
HTMLParser使えよ....
0823デフォルトの名無しさん
2010/04/11(日) 14:19:420824デフォルトの名無しさん
2010/04/11(日) 14:37:040825デフォルトの名無しさん
2010/04/11(日) 15:00:530826デフォルトの名無しさん
2010/04/11(日) 15:07:00・目的を考える。
・ターゲット考える。
それから開発
0827デフォルトの名無しさん
2010/04/11(日) 15:08:35・2chで聞いて誰かが作ってくれるかどうか確認する
0828デフォルトの名無しさん
2010/04/11(日) 15:52:26>>817に使うケースは99%ないなw
0829デフォルトの名無しさん
2010/04/11(日) 16:32:08おまえら、なんでこんな時間に書き込みできるわけ?
普通の人なら学校や会社があるはずなんだけど
このことを知った親は悲しむぞ?
もっと、現実を見ようぜ。
0830デフォルトの名無しさん
2010/04/11(日) 16:33:190831デフォルトの名無しさん
2010/04/11(日) 16:45:490832デフォルトの名無しさん
2010/04/11(日) 17:04:08化石レベル。
コピペを知ったばかりのリアル厨房と思われ。
0833デフォルトの名無しさん
2010/04/11(日) 17:08:530834デフォルトの名無しさん
2010/04/11(日) 17:58:030835デフォルトの名無しさん
2010/04/11(日) 18:23:100836デフォルトの名無しさん
2010/04/11(日) 18:27:060837デフォルトの名無しさん
2010/04/11(日) 18:29:440838デフォルトの名無しさん
2010/04/11(日) 20:03:12│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0839デフォルトの名無しさん
2010/04/14(水) 12:47:48買った方いらしたらどんなもんか教えてください。
0840デフォルトの名無しさん
2010/04/14(水) 13:48:403DCGのソフトのスクリプトがpythonになるので手をつけたいんですけど
0841デフォルトの名無しさん
2010/04/14(水) 13:50:27たぶん本でPython学んだ人って少ないと思うよ
0842デフォルトの名無しさん
2010/04/14(水) 14:02:03最初の言語にPythonはやめとけ
VisualC#2008 Expressを落として、
「プログラムを作ろう! Microsoft Visual C♯2008 Express Edition 入門 (DVD付) (マイクロソフト公式解説書」
とか買ってみなさい。
0843デフォルトの名無しさん
2010/04/14(水) 14:27:53Pythonは最初の言語としても優れている。
WindowsでGUIアプリを作るところから始めたいのなら、C#から始めるのが正解だと思うけど、
>>840は別の目的があるのでPythonから始めたのでOK。C#はお門違い。
0844デフォルトの名無しさん
2010/04/14(水) 14:58:23教育用言語由来であるPythonがもっとも得意とする分野だと思うがどうか
本ははじパイでいいんじゃない
ちと高くて厚いけど
0845デフォルトの名無しさん
2010/04/14(水) 15:24:25昔とちがって今はネットの情報で充分だよ
0846デフォルトの名無しさん
2010/04/14(水) 15:27:520847デフォルトの名無しさん
2010/04/14(水) 20:37:070848デフォルトの名無しさん
2010/04/14(水) 20:39:260849デフォルトの名無しさん
2010/04/14(水) 20:48:170850デフォルトの名無しさん
2010/04/14(水) 20:56:590851デフォルトの名無しさん
2010/04/14(水) 21:16:190852デフォルトの名無しさん
2010/04/14(水) 21:17:040853デフォルトの名無しさん
2010/04/14(水) 21:43:040854デフォルトの名無しさん
2010/04/14(水) 21:50:430855デフォルトの名無しさん
2010/04/14(水) 21:56:02判らずに使ってると滅茶苦茶に見えるのは確かだな
0856デフォルトの名無しさん
2010/04/14(水) 22:05:160857デフォルトの名無しさん
2010/04/14(水) 22:30:240858デフォルトの名無しさん
2010/04/14(水) 22:56:06くやしいのう
(AAry
0859デフォルトの名無しさん
2010/04/14(水) 22:56:590860デフォルトの名無しさん
2010/04/14(水) 22:59:07もう結構です
0861デフォルトの名無しさん
2010/04/14(水) 23:20:53さようなら。たびのひと。またおたちよりください。
0862デフォルトの名無しさん
2010/04/15(木) 00:05:33判らずに使ってるとも何も・・・
UTF-8以外の環境で、 u"あいうえお" ってしてみ?
0863デフォルトの名無しさん
2010/04/15(木) 00:31:370864デフォルトの名無しさん
2010/04/15(木) 00:35:00IDLEの問題と言いにくいのは事実だが、code.pyの問題でもないな。
http://bugs.python.org/issue1542677
http://bugs.python.org/issue5911
IPythonも同じ問題を抱えている。
0865デフォルトの名無しさん
2010/04/16(金) 01:47:00この言語から学べるものって何もないが
このソフト使うのってコマンドラインツール
を利用するときぐらいしかないわ
0866デフォルトの名無しさん
2010/04/16(金) 02:03:110867デフォルトの名無しさん
2010/04/16(金) 08:49:59ドキュメント見てもわけわかりません・・・
0868デフォルトの名無しさん
2010/04/16(金) 09:41:51ttp://lab.hde.co.jp/2008/02/pythonlogging.html
0869デフォルトの名無しさん
2010/04/16(金) 11:12:51言語から本気で何かを学び取りたいなら、
コンピュータそのものを学びたいならアセンブラかC
コンピュータサイエンス的なものを学びたいなら、LispかMLかHaskell
だと思うんだ。
けど、そういう言語こそ2番目以降でいい。
0870デフォルトの名無しさん
2010/04/16(金) 11:29:42あとはちと古いがPascalなんかも
真面目に取り組みたいなら>>869の言うとおり
0871デフォルトの名無しさん
2010/04/16(金) 11:32:59矯正ギプスみたいな感じがする
0872デフォルトの名無しさん
2010/04/16(金) 12:17:33環境が十分に整ってないと思う。
あと、初心者がモチベーションを維持していくには、絵や音が出た方が
いいと思うけど、Pythonでそれをするのは面倒なんだよね。
そういう点では、入門としてはSmallBasicが最高の環境だね。
文法がBASICなのがイマイチだが。
0873デフォルトの名無しさん
2010/04/16(金) 14:11:32環境が十分に整ってないと思う。
あと、初心者がモチベーションを維持していくには、レン鯖にCGIを置いたり
Webサービスを簡単に利用できたほうがいいけれど、
SmallBasicでそれをするのは面倒なんだよね。
そういう点では、入門としてはPerlが最高の環境だね。
リファレンス周りで他の言語に乗り換える奴が続出するけどね。
0874デフォルトの名無しさん
2010/04/16(金) 14:24:590875デフォルトの名無しさん
2010/04/16(金) 14:32:370876デフォルトの名無しさん
2010/04/16(金) 14:44:000877デフォルトの名無しさん
2010/04/16(金) 14:53:590878デフォルトの名無しさん
2010/04/16(金) 15:22:52でも、
ttp://cgkit.sourceforge.net/maya_tutorials/intro/
のTake 4とかみたら「なんだこれ」と思った。
0879デフォルトの名無しさん
2010/04/16(金) 16:13:45音は出ないけど、turtleモジュールとかはどうだろう。標準で付いてくるし、Pythonのソースコードを落とせばデモで遊べる。
音を出したいんだったらpygame辺りか。
0880デフォルトの名無しさん
2010/04/16(金) 17:27:570881デフォルトの名無しさん
2010/04/16(金) 17:33:500882デフォルトの名無しさん
2010/04/16(金) 18:47:220883デフォルトの名無しさん
2010/04/16(金) 18:58:12だから安心してWhitespaceにGUIライブラリを実装するといい
0884デフォルトの名無しさん
2010/04/16(金) 19:37:46import re
s = win32com.client.Dispatch('SAPI.SpVoice')
vs = s.GetVoices()
voicename = ['DTalker_Taro', 'MSSam', 'MSMary', 'MSMike', 'LHKENJI', 'LHNAOKO']
voice = {}
for i in xrange(vs.Count):
v = vs.Item(i)
for n in voicename:
if re.match(r'^(.*)(%s)' % n, v.Id):
voice[n] = v
s.Voice = voice['LHNAOKO'] if 'LHNAOKO' in voice else voice['MSSam']
s.Rate = 5
s.Speak(u'これはPythonでSpeech APIを制御してしゃべらせています。どうでしょうか。', 1)
s.WaitUntilDone(30000)
s.Speak(u'二つ目の文です。', 2)
0885デフォルトの名無しさん
2010/04/16(金) 19:42:30時間待ち? が寂しいんだが。
スピーチ終了を知らせるイベントとか無いの?
0886デフォルトの名無しさん
2010/04/16(金) 20:31:330887デフォルトの名無しさん
2010/04/16(金) 20:34:52460-
0888デフォルトの名無しさん
2010/04/16(金) 20:40:35知識として持っててあたりまえのことを質問する馬鹿が増えた
0889デフォルトの名無しさん
2010/04/16(金) 21:48:02自分が利口になったからだ!
って考えれば末広がりんぐ
0890デフォルトの名無しさん
2010/04/16(金) 23:22:28お前さん、なんかかっこいいな
0891デフォルトの名無しさん
2010/04/17(土) 01:25:570892デフォルトの名無しさん
2010/04/17(土) 16:23:39Python本体は2.6や3.0を使って、チュートリアルは2.5のものを読むのでも大丈夫ですか?
なんかチュートリアルが一番コンパクトにまとまってるみたいなので、入門にそれを使いたいんです。
0893デフォルトの名無しさん
2010/04/17(土) 16:26:200894デフォルトの名無しさん
2010/04/17(土) 16:57:382.5と2.6は大して変わってないので気にしなくていい。
0895デフォルトの名無しさん
2010/04/17(土) 17:21:562.5をやればいいと思うよ
多くのチュートリアルサイトも2.5以前のものが多いし
つまらないところでいちいち詰まるよりは効率的
どっちみち英語読めない奴は糞プログラマだしな
0896デフォルトの名無しさん
2010/04/17(土) 18:49:37loggingは拡充されてた希ガス。configfileから読み込む辺りが。
0897デフォルトの名無しさん
2010/04/17(土) 20:05:10listのindexでは該当項目がないとエラーになりますが、
count等でまずは該当項目があるかチェックするのが普通のやり方なのでしょうか?
またcount以外でやる方法がありましたら教えていただけないでしょうか?
0898デフォルトの名無しさん
2010/04/17(土) 20:13:43要素リスト内にあるかどうかを調べたいのなら、単に
if x in [1,2,3]:
とかでいいよ
0899デフォルトの名無しさん
2010/04/17(土) 20:14:11簡単でしょ?
0900デフォルトの名無しさん
2010/04/17(土) 20:14:39indexがなかったらデフォルト値を使うような処理ならdictを検討した方がいい
あえて例外素通りさせるのもあり
0901デフォルトの名無しさん
2010/04/17(土) 20:32:01なるほどif文でも調べられるのですね。
まだチュートリアルで
0902デフォルトの名無しさん
2010/04/17(土) 20:33:37がんがれ
if文というより、in演算子の機能だよ
>>> 4 in [1,2,3]
False
>>> 1 in [1,2,3]
True
0903デフォルトの名無しさん
2010/04/17(土) 20:34:00>>898-900
なるほどif文でも調べられるのですね。
まだチュートリアルでtryまでいってなかったので、気づきませんでした。
親切に教えていただきありがとうございました。
0904デフォルトの名無しさん
2010/04/17(土) 20:37:55なるほどin演算子でtrue,falseも返ってくるのですね。
in演算子はlistとかの中身を送るだけなのかと思っていました。
勉強になりました。ありがとうございます。
0905デフォルトの名無しさん
2010/04/18(日) 01:04:54>in演算子はlistとかの中身を送るだけなのかと思っていました。
細かい話なので、混乱するようなら今は覚えてなくてもいいけど、
for x in lsのinのことを言っているのなら、それはin演算子じゃあないよ。
for文がfor ... inの形式で書くことになってて、ここでのinはfor文の一部。
in演算子と偶然同じ単語が使われてるだけね。
0906デフォルトの名無しさん
2010/04/18(日) 02:11:56とかして一定の大きさの配列確保してから代入して使ってた
0907デフォルトの名無しさん
2010/04/18(日) 08:57:32import threading
class TestA(threading.Thread):
def __init__(self, name):
threading.Thread.__init__(self)
self.name = name
def run(self):
cnt = 0
while True:
print cnt, self.name
cnt += 1
time.sleep(1)
def testB(s):
for i in xrange(5):
print i, s
time.sleep(1)
for i in xrange(3):
TestA('testA %d' % i).start()
threading.Thread(target=testB, args=('testB %d' % i, )).start()
これで testB が全部終了したときに
TestA の方が自動で終了するようにしたいのですが
どう書けば良いのでしょうか?
0908デフォルトの名無しさん
2010/04/18(日) 20:43:04for文のinは違うのですね。
for文のinがまさしくin演算子だと思っていたから勉強になりました。
ありがとうございます。
0909デフォルトの名無しさん
2010/04/19(月) 11:07:03RSSはUTF-8で書かれているのですが、コマンドプロンプトで実行すると漢字だらけで文字化けしているようです。
うまく表示するにはどうしたらいいのでしょうか?
0910デフォルトの名無しさん
2010/04/19(月) 11:50:17より高速に処理するにはどう記述したら良いでしょうか?
i = 0
path = '/hoge/'
files = os.listdir(path)
del_list = []
while i < len(files):
File = path + files[i]
j = i + 1
while j < len(files):
File_check = path + files[j]
if os.path.getsize(File) == os.path.getsize(File_check):
del_list.append(File_check)
j = j + 1
for del_file in del_list:
os.remove(del_file)
0911デフォルトの名無しさん
2010/04/19(月) 12:05:290912デフォルトの名無しさん
2010/04/19(月) 12:08:28まあ勉強用ということならいいけど
0913デフォルトの名無しさん
2010/04/19(月) 12:09:00ありがとうございます!
さっそく試してみます
0914デフォルトの名無しさん
2010/04/19(月) 12:11:12つ、checksum 値。
e.g.) md5sum, sha1sum
0916デフォルトの名無しさん
2010/04/19(月) 12:28:10Python 2.X系と仮定しての話だけど
日本語WindowsのデフォルトのコードページはCP932という奴で、
UTF-8とは違うエンコーディングになるので、UTF-8なバイト列を
そのまま表示しようとしたら、当然文字化けになる
Windowsのコードページにあったエンコーディングに変換するには
Pythonでは'mbcs'というエンコーディング名を使う
sにデータが入ってるとして
u = s.decode('utf-8') # str->unicode変換
u.encode('mbcs', errors='ignore') # unicode->str変換
のようなことをやるとよいよ
運がよければ上だけで印字できる(print uとかやれば)
それでダメなら下で、再度strに変換する
0917デフォルトの名無しさん
2010/04/19(月) 13:43:23print u'おちんちんびろーんwwwww'
みたいにユニコード文字列にするのでは駄目なの
0918デフォルトの名無しさん
2010/04/19(月) 13:44:46RSSフィードみたいなのをプログラムの外から読み込むのと
ソースに書き込むリテラルは全然違う話だぞ
0919デフォルトの名無しさん
2010/04/19(月) 18:12:31Windowsのエンコードを取得するとcp932なのに、
mbcsと指定しないとコケるのはなんとかならんのだろうか?
import locale
console_encode = locale.getpreferredencoding()
間違い?
0920デフォルトの名無しさん
2010/04/19(月) 18:14:370921デフォルトの名無しさん
2010/04/19(月) 18:32:19じゃあどーすんの?
0922デフォルトの名無しさん
2010/04/19(月) 20:02:32C#なら何もしなくてそのまま表示できるのに
0923デフォルトの名無しさん
2010/04/19(月) 20:54:38RSSはxmlだから、xmlのライブラリに突っ込んでやって、そこから値を取り出せば、
デコードされてunicodeになって帰ってくる。
unicode文字列をそのまま print したら、コンソールのエンコーディングにエンコード
されるから文字化けしない。
>>922
C#でも、ダウンロードしたバイナリをそのまま標準出力に流したら化けるだろうが。
言語の問題じゃなくて、処理フローの問題だよ。
0924デフォルトの名無しさん
2010/04/20(火) 19:01:56print("Type integer, each followed by Enter; or just Enter to finish");
total=0;
count=0;
while True:
line=input("integer:")
if line:
try:
number=int(line);
except ValueError as err:
print(err);
continue;
total+=number;
count+=1;
else :break;
if count:
print("count=",count,"total=",total,"mean=",total/count);
これで最後にEnterだけ押したら最後の行のが出力されるはずなんですが、
なぜかEnter押しても
invalid literal for int() with base 10: ' '
となります。どうしてでしょうか。わかる方教えてください。
0925デフォルトの名無しさん
2010/04/20(火) 19:19:27line=input()の後にline = line.strip()ってつけてみてもだめかなぁ?
0926デフォルトの名無しさん
2010/04/20(火) 19:42:14ありがとうございます!載ってる答え通りになりました。
が、参考書のソースコードがこれ間違ってるってことになるんですかね。。
0927デフォルトの名無しさん
2010/04/20(火) 19:44:390928デフォルトの名無しさん
2010/04/20(火) 20:05:57申し訳ないです。本は「Python3 プログラミング徹底入門」
バージョンは3.0で、開発環境はEclipseのPyDEVのバージョン1.5.6です。
0929デフォルトの名無しさん
2010/04/20(火) 20:42:22本に書いてあるとおりの結果になると思う
コマンドプロンプトや仮想端末から実行してみて
line = line.strip()がなくても望みの結果が得られるようならEclipse+PyDevが怪しい
0930デフォルトの名無しさん
2010/04/20(火) 23:42:280931デフォルトの名無しさん
2010/04/21(水) 01:31:430932デフォルトの名無しさん
2010/04/21(水) 05:55:520933デフォルトの名無しさん
2010/04/21(水) 05:57:260934デフォルトの名無しさん
2010/04/21(水) 06:02:490935デフォルトの名無しさん
2010/04/21(水) 07:22:17素直にC#でやればいいのに
0936デフォルトの名無しさん
2010/04/21(水) 07:23:31PHPをC++化するOSSツール「HipHop for PHP」、Facebookがベータ版を公開 | 情報・通信:カテゴリー別新着一覧 | nikkei BPnet 〈日経BPネット〉
ttp://www.nikkeibp.co.jp/article/news/20100204/208938/
これに相当するPython版ってありませんか?
0937デフォルトの名無しさん
2010/04/21(水) 07:46:410938デフォルトの名無しさん
2010/04/21(水) 09:31:05全く同じものはないけど、Cython, unladen-swallow, PyPy-JIT
0939デフォルトの名無しさん
2010/04/21(水) 12:12:12コマンドプロンプトから実行したら望みの結果がでてしまいました。。。
ってことは開発環境周りが怪しいってことですね・・・
0940デフォルトの名無しさん
2010/04/21(水) 17:54:00Python command Lineで実行すると正常にプログラムが動き、Pyscripterで実行→実行すると
decoding Unicode is not supportedとエラーをはきます。
文字列コードの変換がおかしいのかなと、文字列コード変換を別々にやらせるように修正。
今度は逆に、Pyscripterでは正常に動くのはいいんですが、Pythonのcommand lineでは動かなくなります。
可能性としては何かありますか?
0941デフォルトの名無しさん
2010/04/21(水) 18:01:330942デフォルトの名無しさん
2010/04/21(水) 18:16:54とにかくさ、慣れるまで非効率的でも癖のないエディタを使うべきだと思うよ
もしくは併用するとか
大抵のテキストエディタはランチャ登録機能備えているしね
0943デフォルトの名無しさん
2010/04/21(水) 18:20:10了解です。いろいろとエディタ探しの旅に出てみますね。
ありがとうございます。
0944デフォルトの名無しさん
2010/04/21(水) 18:52:32何をしてエラーが出たのかくらい説明しないと答えようがない。
文字を出力したのか入力したのか、スクリプトを実行したのかシェルで入力したのか、
質問するには情報がなさすぎ。
0945デフォルトの名無しさん
2010/04/21(水) 19:06:46print u'日本語'.encode('hogehoge')
print u'日本語'
print '日本語'
と混在して出力させてると
>>940 の状態が起きそうな気がする
0946デフォルトの名無しさん
2010/04/21(水) 19:58:57すみません。スクリプトを実行したときで文字を入力したときです。
>>945さんの言うように混在してます。
0947デフォルトの名無しさん
2010/04/21(水) 20:03:400948デフォルトの名無しさん
2010/04/21(水) 20:19:070949デフォルトの名無しさん
2010/04/21(水) 20:25:420950デフォルトの名無しさん
2010/04/21(水) 20:28:00ここで昔話するな
0951デフォルトの名無しさん
2010/04/21(水) 23:22:350952デフォルトの名無しさん
2010/04/22(木) 01:23:32ぐぐったらその本に書いてあるサンプルが公開されてたからら見てみたけど
お前が勝手に
if not line: break
削ったせいじゃねーかwwwwww
0953デフォルトの名無しさん
2010/04/22(木) 08:50:00スレッドBを先に作って、start()しない。
スレッドAの最後で、スレッドB.join()する。
スレッドB.start()する。
0954デフォルトの名無しさん
2010/04/22(木) 09:25:52threading.Thread.__init__(self)
の次の行に
self.setDaemon(True)
0955デフォルトの名無しさん
2010/04/22(木) 20:59:49''はFalseだが' 'はTrueだぞ
0956デフォルトの名無しさん
2010/04/22(木) 21:30:02そのスペースはどっから沸いたんだよwwwwwwww
0957デフォルトの名無しさん
2010/04/22(木) 21:30:43>>955 ◯
0958デフォルトの名無しさん
2010/04/22(木) 21:35:23一行で
http://stackoverflow.com/questions/2530387/
why-eclipse-pydev-print-output-look-strange-with-two-strings
0959デフォルトの名無しさん
2010/04/23(金) 08:50:40同じ環境に3.1インストールしても問題ないんでしょうか?
0960デフォルトの名無しさん
2010/04/23(金) 08:51:150961デフォルトの名無しさん
2010/04/23(金) 08:55:23即答ありがとうございます
3.1入れてみます
0962デフォルトの名無しさん
2010/04/23(金) 09:06:02優しさと弱さの区別が付かないのが、チョウセンヒトモドキ
0963デフォルトの名無しさん
2010/04/23(金) 10:52:170964デフォルトの名無しさん
2010/04/23(金) 11:05:37タプルの何がわからんかもわからん
たぶんタプルの存在意義がわからん
使い方とか具体例だしてわかりやすく教えれ
おねがいします
0965デフォルトの名無しさん
2010/04/23(金) 11:20:35最初の一回しか初期化出来ないのがタプル
0966デフォルトの名無しさん
2010/04/23(金) 11:24:420967デフォルトの名無しさん
2010/04/23(金) 11:26:230968デフォルトの名無しさん
2010/04/23(金) 11:28:52{(1, 2): 'moge', 1: 'hage', 2: 'hige', ('a', 'b'): 'mage', 'hoge': 'fuga'}
>>> {'hoge':'fuga',1:'hage',2:'hige',(1,2):'moge',('a','b'):'mage',[1,2]:'a'}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list objects are unhashable
0969デフォルトの名無しさん
2010/04/23(金) 11:33:00>>> sorted((3,2,1))
[1, 2, 3]
>>> (3,2,1).sort()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'sort'
0970デフォルトの名無しさん
2010/04/23(金) 11:35:480971デフォルトの名無しさん
2010/04/23(金) 12:04:21どうゆうときに使えばいいんだろう?
誕生日のデータとか固定されてて変更しないようなデータのときはタプル?
0972デフォルトの名無しさん
2010/04/23(金) 12:27:090973デフォルトの名無しさん
2010/04/23(金) 12:32:02mutableなオブジェクト全般に言えることだけど
listを安易にリターンすると、listの中身を弄られて壊される可能があるから
気をつけてね
return xs[:]
のようにコピーをリターンするのなら問題ないし
弄られていいのなら問題ないけど
tupleのようなimmutableな型なら、そういう心配はもともとない
0974デフォルトの名無しさん
2010/04/23(金) 12:57:50おおまかだけど認識できた
ありがとう
0975デフォルトの名無しさん
2010/04/23(金) 13:16:41ちょっと初心者には難しいね。
基本的には複数の値をひとまとめにするにはタプルを使っておけばいい。
ライブラリでリストを指定されたときだけリストで。
リストでできることは大抵タプルでもできる。
ただ、中身を頻繁に書き換えるような使い方だと、タプルでは効率が悪くなるだけで。
0976デフォルトの名無しさん
2010/04/23(金) 13:33:00横断的に関数・ライブラリのリファレンスを検索するには
どこで検索すればいいんでしょう?
http://docs.python.org/ の Quick Search では
例えば pycurl の情報が出ないし、何よりドキュメントが貧弱で
もう少しまともなのがあればと思って質問しました。
0977デフォルトの名無しさん
2010/04/23(金) 13:34:10http://www.python.org/dev/peps/pep-0008/
http://oldriver.org/python/pep-0008j.html
Google Python Style Guideとか
ttp://google-styleguide.googlecode.com/svn/trunk/pyguide.html
ttp://works.surgo.jp/translation/pyguide.html
┌─┐
│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0978デフォルトの名無しさん
2010/04/23(金) 13:39:29http://pc12.2ch.net/test/read.cgi/tech/1271996751/
0979デフォルトの名無しさん
2010/04/23(金) 13:53:570980デフォルトの名無しさん
2010/04/23(金) 20:40:58「あるウィンドウの中身に BMPファイルから書き込む」
ことは出来たのですが
逆の
「あるウィンドウの中身を BMPファイルに書き出す」
のが ImageWin ではうまく出来ないようで
他にそれらしいモジュールとかも見つからないのですが
PIL では出来ないのでしょうか?
0981デフォルトの名無しさん
2010/04/23(金) 21:22:27なんでPILにこだわるの?
GetDIBits()で取れない?
そういうのは期待していない?
0982デフォルトの名無しさん
2010/04/23(金) 21:27:29最後の手段でそれは考えていますが
自分で一通り作ったあとに
車輪の再発明とかだったらショックなので orz
0983デフォルトの名無しさん
2010/04/23(金) 22:19:310984デフォルトの名無しさん
2010/04/24(土) 00:25:300985デフォルトの名無しさん
2010/04/24(土) 07:49:30>>924からわいてきてるじゃん。
> invalid literal for int() with base 10: ' '
>>952の
if not line: break削ったのが原因って指摘は、
>>924の
if line:
# ...
else :break
をちゃんと読んでいたらわいてこない発想。
0986デフォルトの名無しさん
2010/04/24(土) 08:53:10wxPython で作った pnl (=wx.Panel) に書いた画像は取得&保存できた
from wx.lib.colourchooser.canvas import BitmapBuffer
import wx
bb = BitmapBuffer(width, height, wx.Colour(0, 0, 0))
bb.Blit(0, 0, width, height, wx.WindowDC(self.pnl), 0, 0)
bmp = bb.GetBitmap()
bmp.SaveFile(u'できたよ.png', wx.BITMAP_TYPE_PNG)
ちなみに Win32API を使うとこんな感じになるみたい
ttp://www.sm.rim.or.jp/~shishido/wincap.html
0987デフォルトの名無しさん
2010/04/24(土) 09:21:280988デフォルトの名無しさん
2010/04/24(土) 11:26:00C#なら2行でできる処理だな
0989デフォルトの名無しさん
2010/04/24(土) 12:55:540990デフォルトの名無しさん
2010/04/24(土) 14:15:03できました!!
ありがとうございました!!!
0991デフォルトの名無しさん
2010/04/24(土) 17:41:030992デフォルトの名無しさん
2010/04/24(土) 17:48:24http://pc12.2ch.net/test/read.cgi/tech/1271996751/
0993デフォルトの名無しさん
2010/04/24(土) 17:48:53おまえの環境だけが遅いのかもしれんが
0994デフォルトの名無しさん
2010/04/24(土) 17:49:220995デフォルトの名無しさん
2010/04/24(土) 17:49:55http://pc12.2ch.net/test/read.cgi/tech/1271996751/
0996デフォルトの名無しさん
2010/04/24(土) 17:52:39http://pc12.2ch.net/test/read.cgi/tech/1271996751/
0997デフォルトの名無しさん
2010/04/24(土) 18:05:16くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
0998デフォルトの名無しさん
2010/04/24(土) 18:05:38くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
0999デフォルトの名無しさん
2010/04/24(土) 18:06:24くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
1000デフォルトの名無しさん
2010/04/24(土) 18:06:36くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。