くだすれPython(超初心者用) その7
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/04/23(金) 13:25:51もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、
お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>950 辺りで
前スレ
くだすれPython(超初心者用) その6
http://pc12.2ch.net/test/read.cgi/tech/1264686181/
関連スレ
Pythonのお勉強 Part37
http://pc12.2ch.net/test/read.cgi/tech/1268467168/
0002デフォルトの名無しさん
2010/04/23(金) 13:35: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
┌─┐
│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0003デフォルトの名無しさん
2010/04/23(金) 13:36:11とりあえずこれでいい
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
0004デフォルトの名無しさん
2010/04/23(金) 13:37:23( ・ω・) �d�d
/ ~つと)
777 デフォルトの名無しさん [sage] 2010/04/09(金) 23:22:52 ID: Be:
>>775
Pythonの文字化け対策: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
778 デフォルトの名無しさん [sage] 2010/04/10(土) 00:28:18 ID: Be:
>>775にいたるまでテンプレ消えても誰も指摘しなかったのかw
おおらかでいいな
0005デフォルトの名無しさん
2010/04/25(日) 05:40:240006デフォルトの名無しさん
2010/04/25(日) 23:39:22のとき
['ab', 'cd', 'ef', 'gh']
みたいに2文字ずつ切り出すには
どう書くのがスマートですか?
0007デフォルトの名無しさん
2010/04/25(日) 23:49:25map(operator.add, it, it)
0008デフォルトの名無しさん
2010/04/26(月) 01:08:12ググたけどもうお手上げ
0009デフォルトの名無しさん
2010/04/26(月) 01:14:070010デフォルトの名無しさん
2010/04/26(月) 01:25:51環境は?
0011デフォルトの名無しさん
2010/04/26(月) 07:31:09>>7のは上手いなぁ。それよりも愚直にはなるが、
[s[2*n:2*n+2] for n in range(len(s)/2)]
って方法もある。
0012デフォルトの名無しさん
2010/04/26(月) 07:57:40インタラクティブシェル開くと言語バーが消えてしまうんっすよね
だからalt+半角/全角にしても切り替わってくんない
0013デフォルトの名無しさん
2010/04/26(月) 09:01:34設定が米国語になってましたorz
にぽん語にして再起動したら入力でけるようになりました
おさわがせいたしましたぁ
0014デフォルトの名無しさん
2010/04/26(月) 12:18:59びっくりしたあと納得した
0015デフォルトの名無しさん
2010/04/26(月) 12:37:35端的だけどすぐには思いつかないから、分かりやすいかは微妙に感じる
operator.add() って引数全部足すのかと思ってたらもちろん違った
3つだったらこんな感じか
map(lambda *a: ''.join(i for i in a if i), *(it, ) * 3)
ワンライナーだな―これは
0016デフォルトの名無しさん
2010/04/26(月) 12:51:48*2はダサイから、
[s[n:n+2] for n in xrange(0, len(s), 2)] かな。
他には、 [t + u for t, u in zip(s[::2], s[1::2])] とか、
map(operator.add, s[::2], s[1::2]) とか
でも、 >>7 はイテレータの神
0017デフォルトの名無しさん
2010/04/26(月) 12:54:47びっくりしたあと納得した
0018デフォルトの名無しさん
2010/04/26(月) 14:42:47re.findall('..', s)
でもいいよ
0019デフォルトの名無しさん
2010/04/26(月) 15:12:020020デフォルトの名無しさん
2010/04/26(月) 16:09:21Pythonは関数の引数の呼び出し順は決まってるん?
0021デフォルトの名無しさん
2010/04/26(月) 16:37:46>>7のことを言っているのなら、何か誤解していると思う
func(expr1, expr2)
CやPythonのような正格な言語では、式expr1, expr2が評価されてから
funcが呼ばれる
expr1とexpr2のどちらが先に評価されてかは(少なくともCでは)決まっていないので、
それに依存するプログラムは邪悪とされる
>>7の場合、式it, itをmap()に渡しているので、iteratorオブジェクトitが
そのままmap()に渡るだけなので、上の問題とは無関係なことに注意して欲しい
勿論map()の実装には依存しているけどね
0022デフォルトの名無しさん
2010/04/26(月) 16:52:35map(operator.add, it, it)
のことなら
左のitが先に評価されて右のitが後から評価されているからこそ
それがmapでうまく処理される訳で
右が先で左が後なら正しい結果にならないでしょ?
0023デフォルトの名無しさん
2010/04/26(月) 16:53:29iteratorオブジェクトitがそのままmap()に渡るだけなので
002421
2010/04/26(月) 16:59:54言葉が足りなかったかな
it.next()を評価して、itから値を取り出すのは「map()の中」なんだよ
勿論左の引数から先に値を取り出すようにmap()が実装されていなければ
望みの結果にはならないけど、
関数の引数として渡した式が、関数を呼ぶ前にどういう順序で評価されるかが
不定である、という問題とは関係が無いわけさ
0027デフォルトの名無しさん
2010/04/26(月) 22:24:43ウヒョー
0028デフォルトの名無しさん
2010/04/26(月) 22:38:26002927
2010/04/26(月) 22:53:46003011
2010/04/26(月) 23:38:19lambdaでも可変長引数とれたんだ。知らなかった、ありがとう。
>>16
そういやrangeってステップ指定できたなぁ。いつも必要なときに忘れるんだ
0031デフォルトの名無しさん
2010/04/27(火) 06:06:44ただ>>15だけ試してみたけど
なんでそうなるのか分からなかったので、
初心者にも分かるように教えてもらえませんか?
map(lambda *a: ''.join(i for i in a if i), *(it, ) * 3)
0032デフォルトの名無しさん
2010/04/27(火) 06:12:00このスレ知らないことがたくさんでてきて勉強になります。
ただ>>15だけ試してみたけど
なんでそうなるのか分からなかったので、
初心者にも分かるように教えてもらえませんか?
よく分かっていない部分
1. map(lambda *a: ''.join(i for i in a if i), *(it, ) * 3)
は構文的に通るのに
print i for i in aが通らない理由
2. map(lambda *a: ''.join(i for i in a), *(it, ) * 3)
ではダメな理由
3. 処理が行われる順番
4. *(it, ) * 3はどんな意味?
以上です。よろしくお願いします。
0033デフォルトの名無しさん
2010/04/27(火) 06:57:262.nextじゃなくてforの場合はStopIterationにならないから
if i はいらないんじゃないの
3.括弧の中からっぽい
4.同じ1つのイテレータの入ったタプルを展開
自分も初心者なんで適当
0034デフォルトの名無しさん
2010/04/27(火) 06:58:224.同じ1つのイテレータが3つ入ったタプルを展開
003534
2010/04/27(火) 07:24:12map(lambda *a: ''.join(a), *(it, ) * 3)
これでも同じ結果になるような気がするんですが、
間違っていますか
003634
2010/04/27(火) 07:28:08lambdaは*aで、タプルの引数としてイテレータから3つ要素を取ってきてそのままjoinに渡すんですよね
間違っているのかどうかわからん
003715
2010/04/27(火) 09:25:241. 引数に渡すときは()を省略してジェネレータ表記に出来る
2. 余りが出たときのため。例外出すかこういう風に処理するかは場合によるよね
3. どこのこと?
4. >>33の通り
>>33 for は StopIteration で終了してるよ
003834
2010/04/27(火) 09:50:31引数がタプルになるのは、星があるときだけでしたね
ジェネレータの括弧が省略可能ってことか
forは裏でStopIterationをtry exceptみたいな感じか
>>33は適当すぎましたね
すみません
003934
2010/04/27(火) 09:54:44引数のタプルがどうとかは言えないんだった
0040デフォルトの名無しさん
2010/04/27(火) 10:45:49it=iter('abcdefgh');map(lambda *a: a, *(it,)*3)
---> [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', None)]
004140
2010/04/27(火) 10:54:06map(lambda a,b: (a,b), range(3), range(5))
---> [(0, 0), (1, 1), (2, 2), (None, 3), (None, 4)]
0042デフォルトの名無しさん
2010/04/27(火) 11:22:420043デフォルトの名無しさん
2010/04/27(火) 11:31:110044デフォルトの名無しさん
2010/04/27(火) 11:55:37F5でモジュールを起動してチェックしてるのですが、出てきたウィンドウを閉じると次回起動させる時に
Exception in Tkinter callback
中略
AttributeError: ModifiedInterpreter instance has no attribute 'interp'
とでて一度IDLEを閉じてから起動させるハメになります。
自分に何か足りないんだと思いますがいい方法はないものでしょうか?
004544
2010/04/27(火) 13:04:110046デフォルトの名無しさん
2010/04/27(火) 13:14:47004744
2010/04/27(火) 13:40:02ttp://www.python.jp/doc/2.4/lib/node701.html
のサンプルコードでできました。
最初は最下段のroot=Tk() , root.destroy()かと思ったけどself.quitな予感も…。
今色々試してます。
0048デフォルトの名無しさん
2010/04/27(火) 13:43:120049デフォルトの名無しさん
2010/04/27(火) 13:48:132.5 だけどうちはもんだいない
005044
2010/04/27(火) 13:57:27ありがとうございます。調べてみます。
>>49
マジすか。
普通にウインドウの×ボタン押して閉じてたりdestroyだけした時にこうなるので何かの記述が足りないのかなと。
self.quitだと全部閉じちゃうしなーorz
0051デフォルトの名無しさん
2010/04/27(火) 14:01:32誰かに調べてもらったほうがいいと思うぞ
Tcl/Tk, Tkinter, IDLE と登場人物が多くて切り分けるのが大変だし
005244
2010/04/27(火) 14:20:30より下記コードを引用(不要部分は削除)
from Tkinter import *
class App(Frame):
def init(self):
b = Button(self, text="Bye", command=self.cmd_clicked)
b.pack(side=TOP)
def cmd_clicked(self):
self.master.destroy()
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.init()
if __name__ == "__main__":
app = App()
app.mainloop()
このコード(他もですが)でウインドウの×ボタンで閉じた場合とdestroyした場合にもう一度起動する時に>>44のエラーがでてモジュールを起動できません。
OS:Ubuntu9.10 64bit
Python2.6
0053デフォルトの名無しさん
2010/04/27(火) 14:31:410055デフォルトの名無しさん
2010/04/27(火) 14:43:21オウム返ししてると返事もらえなくなるぞ
0056デフォルトの名無しさん
2010/04/27(火) 15:00:22別ウインドウを出すコードは、WindowsのIDLEから実行すると
おかしくなることが多いね。
普通のコマンドライン版から試してみるといいかも。
matplotlibとかturtleとかはIDLEだと駄目でコマンドラインだといける。
0057デフォルトの名無しさん
2010/04/27(火) 15:04:14app = App()
を消して
app.mainloop()
だけにして動かすと動くと思うよww
005844
2010/04/27(火) 15:33:47今2.5も入れてやってみましたが同じく失敗しました。
何が違ったんでしょう…
>>55
調べましたがimport→reloadのではないですよね?
私の勘違いだと思いますがPython Shellを閉じてもう一度だと本末転倒なので…
>>56
おぉ!一気に楽になりました!
本当にありがとうございます。
005932
2010/04/27(火) 19:26:30答えてくれてありがとうございます。
色々勉強になりました。
ジェネレータ表記はよく分かってなかったので、
これを気に勉強します。
また分からないことがあったらよろしくおねがいします。
0060デフォルトの名無しさん
2010/04/27(火) 19:45:07IDLEを -n オプションをつけた状態で起動したら (Shell に No Subprocess と表示)
そのエラーがでたけど、つけない場合エラーはでなかったよ
006144
2010/04/28(水) 09:43:38ショートカットを確認したら確かに -nと付いていたので消したら治りました。
ありがとうございます。
今作ってるのが一段落したら何故こうなったのかも調べてみたいと思います。
勉強になりました。
0062デフォルトの名無しさん
2010/04/28(水) 14:22:23name 'operator' is not defined
>>18も同じく定義してないってエラーが
何かimportせにゃならんとかですか?
>>15は動きました
0063デフォルトの名無しさん
2010/04/28(水) 14:29:08import operator
>>18は
import re
が必要
0064デフォルトの名無しさん
2010/04/28(水) 14:38:18ありがとうごいます
0065デフォルトの名無しさん
2010/04/28(水) 16:57:280066デフォルトの名無しさん
2010/04/28(水) 17:07:23それぞれをパラパラ読んで後者を借りてきた。これでGWにCでやったアルゴリズムをpythonで書き直したりしようと思う
情報がかなり薄いけど、不満があるとすればそこじゃなく、変数にやたらと l を使って、わざわざコメントで「←これは小文字のエル」と注意してること
0067デフォルトの名無しさん
2010/04/28(水) 17:29:38適当なテキストファイルに書き写したんだけど
データに改行があった場合、\nを削除しても勝手に改行される
どうすればいい?
あと、変数の中身をraw文字には出来ないの?
0068デフォルトの名無しさん
2010/04/28(水) 17:42:10吹いたww
何その糞本w
0069デフォルトの名無しさん
2010/04/28(水) 17:50:540070デフォルトの名無しさん
2010/04/28(水) 19:52:58ダウンロードであればファイルオブジェクトをread(1000)とかでループすることで知ることができるようですが
アップロードの場合がわかりません
0071デフォルトの名無しさん
2010/04/28(水) 20:05:28\x0D\x0A じゃなくて
\x0D だけのところを消さないといけない
0072デフォルトの名無しさん
2010/04/28(水) 20:07:07どうやってアップロードをしているのか書いてくれないと答えようがないぞ
0073デフォルトの名無しさん
2010/04/28(水) 20:33:420074デフォルトの名無しさん
2010/04/28(水) 23:21:21ありがとうございます
でも結局良くわからなくて、別の方法で回避しました
ごめんなさい
0075デフォルトの名無しさん
2010/04/29(木) 00:41:23getdefaultencoding()は'mbcs'のWindows環境
みんなのPythonで勉強しているのですが、コード内部ではなるべくユニコードをってところでつまづいています。
csvファイルの1列目に日本語タグがある為、csv.reader()でユニコードへ変換しつつ取り込もうとすると
リストには対応していないとエラーになり…
open()でreadlines()を使いunicode()でユニコード化しても、リストのインデックス取り出しが1文字ずつになり不便に…
csv.reader()みたいにコンマ区切りにする方法か、csv.reader()でユニコード変換する方法はないのでしょうか;
それともユニコード化は別処理で考えたほうがいいのかなぁ…
0076デフォルトの名無しさん
2010/04/29(木) 01:12:49csvパーサの本体はCで実装されてて、かつstr(char*)を期待してるみたいなんで、
その時点でunicodeにするのは無理
stream = codecs.getreader('cp932')(open('foo.csv'))
みたいなのをcsv.reader()に渡すことは可能ではあるが、
csvパーサに渡るときに、どのみちstrに変換される
なので、uniocdeにしたければ自分で変換すると良いよ
row = [ col.decode('cp932') for col in row ]
程度で済む話だ
0077デフォルトの名無しさん
2010/04/29(木) 11:26:57糞だな
こういうあホガイるから Python3 での決断が必要になったんだろうな
0078デフォルトの名無しさん
2010/04/29(木) 12:40:59http://www.nichibun.ac.jp/YoukaiCard/C0410695-000.shtml
この沼は昔大沼で、岸に弁天堂があり、沼は祭につかうホガイという飯びつのような形であった。
若宮八幡宮造営に際し、社殿が落成するころ、むし立ての赤飯が入っているホガイが毎日沼から
現れ、働いている人々がいくら食べても尽きなかったという。
0079デフォルトの名無しさん
2010/04/29(木) 14:01:180080デフォルトの名無しさん
2010/04/29(木) 14:02:05ありがとうございます。
自分で変換する方法でいきますね。
0081デフォルトの名無しさん
2010/04/30(金) 00:26:51ファイルinput.txtがあります。
input.txtの中身は
WINDOWS, WINDOWS CE(9X系およびNT系は最新版、WINDOWS 3.1およびMS-DOSは旧版のみ)
MACINTOSH(OS 9以前およびOS X以降ともに)
各種UNIX
LINUX(LINUX STANDARD BASE3.2で標準仕様となった)
PLAN 9(PYTHON 3.Xは未移植)
PALMOS
S60
JAVAプラットフォーム (JYTHON)
.NET FRAMEWORKプラットフォーム (IRONPYTHON)
です。
このinput.txtの書く行に対して, 各英単語の先頭だけを大文字にする処理をしたいのですが、
適当な標準関数などありますでしょうか?
よろしくお願い申し上げます。
0082デフォルトの名無しさん
2010/04/30(金) 00:55:49次の方どうぞ
0083デフォルトの名無しさん
2010/04/30(金) 00:57:10無理だったけど(Os, Ironpython, .Net になる)せっかく書いたので
# coding: sjis
import re
for line in open('input.txt', 'rb'):
line = line.decode('sjis')
line = re.sub(ur'\b([A-Z(][A-Z]+)', lambda m: m.group(0).title(), line)
print line,
0084デフォルトの名無しさん
2010/04/30(金) 01:00:32ありがとうございます。
いただいたコードで大分良くなります。
本番用のテキストに適用して、微妙なヵ所は手動で直します。
大変助かりました。
0085デフォルトの名無しさん
2010/04/30(金) 01:09:52x=f.readlines()
myfunction(x)
の様にxを使用した後、もうxはこれから先 一切 使用しないのですが、
fooが巨大なファイルであるとき、メモリ上にx(が指す先のメモリ領域)が残っている
と物理メモリを圧迫しそう(正確にはプロセス毎の領域ですが。)なので、
GCをxに対して発動させる事はできますでしょうか?
実際には上の状況に限らず、一般的に
変数xが巨大なデータ過ぎて、でももう使わない等という時に
そのメモリ領域を開放したいのです。
C++で長年プログラミングしていると無駄なメモリ領域を明示的に開放する
処理を書きたくなってくるのです。
よろしくお願い申し上げます。
0086デフォルトの名無しさん
2010/04/30(金) 01:18:12import re
def shuffle(xs, ys):
while True:
yield xs.next()
yield ys.next()
toks = iter(re.split(r'(\W+)', open('input.txt').read()))
print ''.join(shuffle((x.capitalize() for x in toks), toks))
008786
2010/04/30(金) 01:20:51その場合は、open('input.txt').read()を
codecs.getreader('cp932')(open('input.txt')).read()とでもしてね
0088デフォルトの名無しさん
2010/04/30(金) 01:25:04Pythonはリファレンスカウントなので、xは誰も参照してなければすぐ消される
が、C++プログラマなら知ってるだろうが、Pythonプロセスのヒープにメモリが
返却されたからと言って、OSにメモリが返却されるとは思わないほうがいい
readlines()で一気に全行読む必要は本当にあるの?
0089デフォルトの名無しさん
2010/04/30(金) 01:26:23ありがとうございます。
活用させていただきます。
0090デフォルトの名無しさん
2010/04/30(金) 01:28:13>物理メモリを圧迫しそう(正確にはプロセス毎の領域ですが。)なので、
とか
>実際には上の状況に限らず、一般的に変数xが巨大なデータ過ぎて、
とか言っているようだが。
詳細は本人が来るまで知らん。
0091デフォルトの名無しさん
2010/04/30(金) 01:32:53それだと
you're the best.
が
You're The Best.
になってほしいのに
You'Re The Best.
になってしまわないか?
009285
2010/04/30(金) 01:35:46>>90
ありがとうございます。
xを指していた先を指している他のオブジェクトが存在していない時、
明示的にそのメモリを破棄する方法が無いとしても、
参照カウント方式でしたら、
x = None
とすればそれだけでGCが発動してくるって理解でよろしいでしょうか?
0093デフォルトの名無しさん
2010/04/30(金) 01:38:11いや通常そんな必要は無い
xがローカル変数で、その参照をreturnするなどしなければ、
普通はその関数から抜けるなどすれば、すぐGCされる
明示的に消したい時は
del x
0094デフォルトの名無しさん
2010/04/30(金) 01:39:03ああ、そういうケースまでは真面目に考えてない
0095デフォルトの名無しさん
2010/04/30(金) 01:41:45削除するっていう操作はどうすれば可能でしょうか?
0096デフォルトの名無しさん
2010/04/30(金) 01:45:200097デフォルトの名無しさん
2010/04/30(金) 01:51:11ありがとうございます。
009985
2010/04/30(金) 02:02:20前半のコード
f=open("foo")
x=f.readlines()
myfunction(x)
後半のコード
の形をしている時、C++では{}でくくる事によって
明示的にスコープを新たに作る事ができました。
すなわちC++ライクに擬似コードを書くと
前半のコード
{
File_type f=open("foo") ;
Line_type x=f.readlines() ;
myfunction(x) ;
}
後半のコード
とすれば、{で新しいスコープに入り制御が}に達した瞬間に
ローカル変数であるfとxのデストラクタが発動します。
0100デフォルトの名無しさん
2010/04/30(金) 02:03:49例えば
前半のコード
if True :
File_type f=open("foo") ;
Line_type x=f.readlines() ;
myfunction(x) ;
後半のコード
のように意味のないifブロックをわざと作ってみても、
そのifを脱出した後の後半のコードの部分でも x や f が有効なようです。(ですよね?)
まあPythonを使っていてメモリがどうとか言う方がおかしい(センス無い or C++に毒されすぎ)のかもしれませんが。
0101デフォルトの名無しさん
2010/04/30(金) 02:05:26Pythonでスコープを作りたければ、明示的にdefで関数にするしかないけど
その例なら、単に
myfunction(f.readlines())
と書けばすぐ回収されると思うよ
0102デフォルトの名無しさん
2010/04/30(金) 02:07:05ああなるほど、確かに一時的にxを用意する必要はありませんでした。
0103デフォルトの名無しさん
2010/04/30(金) 02:22:080104デフォルトの名無しさん
2010/04/30(金) 02:30:47行位置だけ覚えて、要求されたら
ファイルから行を遅延fetchするようなクラスを書くのが理想
0105デフォルトの名無しさん
2010/04/30(金) 12:08:200106デフォルトの名無しさん
2010/05/01(土) 04:01:37del x
0107デフォルトの名無しさん
2010/05/01(土) 04:05:13前半のコード
def block():
File_type f=open("foo") ;
Line_type x=f.readlines() ;
myfunction(x) ;
block()
後半のコード
0108デフォルトの名無しさん
2010/05/02(日) 12:40:33print 1
print data
for index in range(len(data)-1, -1, -1):
yield data[index]
print 2
reverse("golf")
print 3
と言うのを試してみたのですが、
何故かprint 1, print dataが表示されません。
(2,3は表示されます。)
理由が分からないのですが、教えていただけないでしょうか?
0109デフォルトの名無しさん
2010/05/02(日) 13:27:56yieldがあるから呼ばれてない
for inとか明示的に.next()を呼ぶとかlist()とかに渡すとか
ジェネレータを使う処理をしないとダメ
0110デフォルトの名無しさん
2010/05/02(日) 13:28:29reverse("golf")は、ただgenerator objectを返すだけで
その中身はまだ実行されないんだよ
g = reverse("golf")
g.next()
のように、next()呼ぶと、yield一回分中身が実行されて、yield式の値が
返る
まあ普通は単に
for x in reverse("golf"):
print x
みたいに書いて、next()を自分で明示的に呼ばないことが多いが
0112デフォルトの名無しさん
2010/05/02(日) 14:16:30ちなみに、もし後じゃなくて今表示したいなら、こういう方法もある。
def reverse(data):
def gen():
for index in range(len(data)-1, -1, -1):
yield data[index]
print 1
print data
return gen()
0113デフォルトの名無しさん
2010/05/02(日) 14:17:54def reverse(data):
def gen():
for index in range(len(data)-1, -1, -1):
yield data[index]
print 1
print data
return gen()
0115デフォルトの名無しさん
2010/05/03(月) 02:14:01seq.index(max(seq))だと無駄がありそうなので
よりいい方法があれば教えてください
0116デフォルトの名無しさん
2010/05/03(月) 02:25:58>>> from operator import itemgetter
>>> max(enumerate([2,5,3,4]), key=itemgetter(1))[0]
1
0117デフォルトの名無しさん
2010/05/03(月) 09:59:120118デフォルトの名無しさん
2010/05/03(月) 16:30:04恥ずかしいんですが、クラスってなんだろう。
0119デフォルトの名無しさん
2010/05/03(月) 18:01:110120デフォルトの名無しさん
2010/05/03(月) 20:15:080121デフォルトの名無しさん
2010/05/04(火) 00:28:20痛いだけだからな
0122デフォルトの名無しさん
2010/05/04(火) 00:40:030123デフォルトの名無しさん
2010/05/04(火) 00:50:380124デフォルトの名無しさん
2010/05/04(火) 01:19:51dir/
hoge.py
package/
__init__.py
piyo.py
fuga.py
とあって、hoge.py の中で
import package.piyo
としてpiyoをインポートしています。さらに piyo.py の中で
import .fuga
としてfugaをインポートしているのですが、この形だと
piyo.pyを直接実行したときに、
ValueError: Attempted relative import in non-package
と怒られます。
hoge.pyとpiyo.pyどちらを実行した場合でも、正常にインポート出来る
ようにするには、どのようなインポート文を書いたらいいのでしょうか?
0125デフォルトの名無しさん
2010/05/04(火) 01:28:030126デフォルトの名無しさん
2010/05/04(火) 01:45:12import fuga
だとhoge.py実行時に
ImportError: No module named base
というエラーが出てしまいます。
0127デフォルトの名無しさん
2010/05/04(火) 02:00:170128デフォルトの名無しさん
2010/05/04(火) 02:29:570129デフォルトの名無しさん
2010/05/04(火) 03:43:400130デフォルトの名無しさん
2010/05/04(火) 04:03:25from package import piyo
としてpiyoをインポート
さらに piyo.py の中で
from . import fuga
0131デフォルトの名無しさん
2010/05/04(火) 13:07:46だと
ValueError: Attempted relative import in non-package
といわれます。sys.pathについては、ディレクトリ移動したときに
変更が必要になりそうなので使わないようにしてましたが
最終手段として考え直してみます。
0132124
2010/05/04(火) 13:19:54スレは継続してチェックさせていただくので、なにかいい方法があればお願いします。
ありがとうございました。
0133デフォルトの名無しさん
2010/05/04(火) 13:40:39python -m package.piyo
ってやってる?
0134デフォルトの名無しさん
2010/05/04(火) 14:13:470135デフォルトの名無しさん
2010/05/04(火) 14:21:18おぺvbs炭
0136デフォルトの名無しさん
2010/05/04(火) 16:47:00つかプログラミング自体超初心者
django使ってwebアプリ作ろうとしているのですが
views.pyの行数がドンドン増える。
サイト配下のアプリを複数にするべきですか?
それともアプリ一つで長いviews.pyでOK?
アホな事聞いてごめん
0137デフォルトの名無しさん
2010/05/04(火) 17:59:13django使ったこと無いからどんなもんかは分からないが、
一般にファイルの行数がどんどん増えるような実装はしない。
メンテナンスが大変になるから。
容易さにつられて、本来とは違う使い方してるんじゃないの?
0138デフォルトの名無しさん
2010/05/04(火) 18:20:38models.pyでデータベースに格納するデータを
views.pyで処理を
urls.pyでURLを
それぞれ管理するんだけど、今は"ユーザ登録"っていう一つの処理を
views.pyにそれぞれ書いて(defによる宣言)いってる。
つまり"ユーザ削除"とか"ユーザ変更"やその他各種情報に関する処理毎に
関数作ってそれをurls.py経由で読み出すって感じなんだ。
サイト配下のアプリ毎に分ければ、すっきりはするんだけど、アプリ間でのリレーションとかも気にしないといけないから、皆どうしてるんだろうなぁと。
views.pyを分割する事も出来るみたいだけど...
0139デフォルトの名無しさん
2010/05/04(火) 18:28:12MVCフレームワークのコントローラみたいに機能ごとにアプリで分けるのが恐らく普通
0140デフォルトの名無しさん
2010/05/04(火) 18:32:10http://www.python.jp/doc/release/tut/node8.html
views.pyと同じディレクトリにuserviews.pyとか置いて、from userviews import *とかするの
0141デフォルトの名無しさん
2010/05/04(火) 18:53:04http://pc11.2ch.net/test/read.cgi/php/1156612854/
0142デフォルトの名無しさん
2010/05/05(水) 01:33:42バージョンは2.5以降ということで、いいのですよね?
ttp://www.python.jp/doc/2.5/tut/node8.html
ttp://dmsolutions.jp/wp/python/package/
らへん見る限りは、合ってる気がしますが…
0143デフォルトの名無しさん
2010/05/05(水) 03:38:44>>140 参考になりました。ありがとー
>>141 あっちは過疎ってるぽいすね
0144デフォルトの名無しさん
2010/05/05(水) 10:15:37│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0145デフォルトの名無しさん
2010/05/05(水) 12:47:00Pythonスクリプトを直接実行するときは、普通shebangじゃないの
少なくともUnix likeな環境で、スクリプトをそんな風に実行する人は
いないと思うけど
0146デフォルトの名無しさん
2010/05/05(水) 20:51:55http://www.python.org/dev/peps/pep-0366/
2.5だと__name__を使うしかないが2.6だと修正されてると思う
0147デフォルトの名無しさん
2010/05/05(水) 21:08:16shebangを使うようなコマンドとして直接実行されることを目的としているファイルは、
そもそもパッケージに入れたりしないよ。
__name__ が '__main__' になってしまうから、例えばどこかで import package.piyo したら、
同じモジュールを別の名前で2重にロードすることになってしまう。
モジュールをスクリプトとして実行する場合は、 Python -m モジュール名 ってする。
例えば、 python -m doctest とするとdoctestができたり、 -m cProfile とか、いろいろ例がある。
モジュール内の main() などを関数をコマンドとして直接起動できるようにしたい場合は、
ブートストラップとなるスクリプトを手動で別に用意するか、setuptoolsの機能を使って
ブートストラップを自動生成する。
0148デフォルトの名無しさん
2010/05/05(水) 21:14:28だったら os.system("python hogehoge") で起動すればいいんだお
簡単だお
0149デフォルトの名無しさん
2010/05/05(水) 22:26:390150デフォルトの名無しさん
2010/05/06(木) 07:59:37import re
data = ur"""1
998.7 1003.1 -- -- -- 6.0 10.9 1.8 36 16 2.6 4.8 北西 9.4 北西 6.9 -- -- 晴後一時曇 快晴
2
1014.6 1019.1 -- -- -- 7.0 12.1 2.7 43 24 2.5 5.0 北西 9.4 北北西 9.0 -- -- 快晴 晴後曇"""
for rec in [reduce(lambda r,(i,v): r + [v] if i in [0,5] else r,
enumerate(line.split()),
[])
for line in
data.split('\n') if not re.search('^\d{1,2}$', line)]:
print rec[0], "\t", rec[1]
分からない事があるので教えてください。
上記のr,i,v変数がよく分かっておりません。
動きから想像するとrは[]で
iはenumerate(line.split())の0,1,2…
vはenumerate(line.split())の998.7,1003,1…
となるような気がするのですが
私のイメージでは
lambdaの引数はenumerate(line.split())の値なので
0,1,2…のシーケンシャルな値と998.7,1003.1等のdataから作成される値
で構成されているのかなと思っていたので
ちょっと分からなくなってしまいました。
お手数ではございますが、解釈の仕方を教えていただけないでしょうか?
0151デフォルトの名無しさん
2010/05/06(木) 08:40:500152デフォルトの名無しさん
2010/05/06(木) 12:38:300153デフォルトの名無しさん
2010/05/06(木) 17:56:51そのコードは1行に詰め込み過ぎなので、要素ごとに分解してみれば分かるかと。
あと、lamdaの部分を適当な関数にして、r, i, vをprintさせてみるとか。
0154デフォルトの名無しさん
2010/05/06(木) 18:21:11reduce()のことは知ってるの?
reduce(f, xs, init)は、ループで書くと
acc = init
for x in xs:
acc = f(acc, x)
のような計算を行う
accの初期値はinitで、計算の結果が次々に積まれていくので、
「累積変数」「アキュミュレーター」と呼ばれる
そのコードで言うと、rは累積変数で、
(i, v)にはenumerate(line.split())の要素が最初から順番に渡されることになる
iはenumerateで付加された0からはじまるindex
vのほうが、line.split()で得られる実際のデータ(スペース区切りの語)だね
0155デフォルトの名無しさん
2010/05/07(金) 04:57:40どうよ?
0156デフォルトの名無しさん
2010/05/07(金) 09:37:43なるほど、ありがとうございました。
0157デフォルトの名無しさん
2010/05/07(金) 20:28:520158デフォルトの名無しさん
2010/05/09(日) 12:25:11grg
とか
greagerag
とか適当にコマンドを打ったら、
/usr/bin/python: can't find '__main__.py' in '/usr/share/command-not-found'
と表示されるようになってしまったんですが、これ一体なんなんでしょう??
どなたか教えていただけると嬉しいです。
0159158
2010/05/09(日) 12:28:14command not found と出るようになりました。
bashrc見てみたのですが、変な記述は見当たりません。
どなたかおたすけください。。
0160158
2010/05/09(日) 12:41:26で解決しました。
どうやら打ったコマンドが見つからない時に「sudo apt-get install 〜〜〜」すれば
そのコマンドが使えるようになるよって教えてくれるpythonのプログラムがあったのですが、
python2.6を一回全部アンインストールした時にそのプログラムも削除されてしまっていたのが原因だったようです。
失礼いたしました。
0161デフォルトの名無しさん
2010/05/11(火) 00:23:58背景を黒にしたり文字の色を変えたりってのはtkinterなどのGUIの領域でしょうか?
なにか特別なものをimportすること無しに文字の色変えるなんてことは可能でしょうか?
0162デフォルトの名無しさん
2010/05/11(火) 00:35:58OSのバージョン
ツールのバージョン
環境を書けと教わらなかったか?
0163デフォルトの名無しさん
2010/05/11(火) 07:01:18http://www.shido.info/py/tkinter12.html
http://www.geocities.jp/m_hiroi/light/pytk03.html
この辺?
0164デフォルトの名無しさん
2010/05/11(火) 14:45:31例えば"東京"でググったら↓のURLになる
http://www.google.co.jp/search?hl=ja&q=%E6%9D%B1%E4%BA%AC&btnG=%E6%A4%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=&gs_rfai=
これを代わりに
http://www.google.co.jp/search?hl=ja&q=東京&btnG=%E6%A4%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=&gs_rfai=
でやっても同じ結果になる
python使って下の方のURLで開きたいんだけど
いい方法ある?
0165デフォルトの名無しさん
2010/05/11(火) 14:48:44>>> urllib.quote(u'東京'.encode('utf8'))
'%E6%9D%B1%E4%BA%AC'
とかすれ
0166デフォルトの名無しさん
2010/05/11(火) 14:51:020167デフォルトの名無しさん
2010/05/11(火) 14:52:030168デフォルトの名無しさん
2010/05/11(火) 14:55:13http://pc12.2ch.net/test/read.cgi/tech/1236529563/
0169デフォルトの名無しさん
2010/05/11(火) 15:05:59それ以外に方法があれば、それはpythonの話になるからこっちに書いたのですが
マルチとみなされたようでしたら、すみませんでした
0170デフォルトの名無しさん
2010/05/11(火) 15:19:38OS、環境など垣根なしの普遍的な質問かと考えましたもので
winxp、python2.6ですが、回答に何か影響あるでしょうか?
>>163
どもです
GUIか。。。どれでいこうか検討します
wxなあ。。。
0171デフォルトの名無しさん
2010/05/11(火) 15:23:43なんの背景なのか>>161からはわからないから環境を聞かれてるんだよ
コマンドプロンプトの背景色なのか、Tkinterで出したウインドウの背景色なのか
それともそれ以外なのか
0172デフォルトの名無しさん
2010/05/11(火) 15:28:10この時点で少なくともtkinterは消えるわけで
0173デフォルトの名無しさん
2010/05/11(火) 15:35:070174デフォルトの名無しさん
2010/05/11(火) 15:36:51OSに限定せずテキスト周りの色変更は可能か否かを聞きたかったのです
0175デフォルトの名無しさん
2010/05/11(火) 16:16:410176デフォルトの名無しさん
2010/05/11(火) 16:44:59例えば、IDLEとかです
0177デフォルトの名無しさん
2010/05/11(火) 17:07:56訂正
IDLEで実行して出力されるshell上にて現状出力されるのは青一色かと思いますが
それをこの文字は黄、この文字は赤、この文字の背景は黒など変更出来るものか
どうかってことです
0178デフォルトの名無しさん
2010/05/11(火) 17:08:510179デフォルトの名無しさん
2010/05/11(火) 17:09:52Options -> Configure -> Hilights
0180デフォルトの名無しさん
2010/05/11(火) 17:25:23解答者の質低すぎねえか?ww
解答者はとりあえず>>1嫁www
0181デフォルトの名無しさん
2010/05/11(火) 17:53:59それだとshell stdoutで変更できてもさらにその中身を細かく変更はできないですね
とりあえず意思疎通の仕方が難しいんだと言うことはよく分かりました
つまらない水掛け論になりそうなんで去ります さようなら
0182デフォルトの名無しさん
2010/05/11(火) 18:53:350183デフォルトの名無しさん
2010/05/11(火) 18:56:420184デフォルトの名無しさん
2010/05/11(火) 19:28:31そもそもの原因だな
0185デフォルトの名無しさん
2010/05/11(火) 19:41:30みんなは分かったの?
0186デフォルトの名無しさん
2010/05/11(火) 19:45:16どうしても説明が足りなかったりその道筋が正しいと
勝手な解釈をしてしまう傾向がある
一方で回答者はあれかもしれないこれかもしれないと
変に気を回しすぎるため質問者がどこで詰まっているかを
深読みすればするほどエスパーするのが面倒になる
0187デフォルトの名無しさん
2010/05/11(火) 21:26:510188デフォルトの名無しさん
2010/05/11(火) 21:55:14勝手な想像だが、Pythonでの文字出力に
色々色を付けたいってことじゃね?
【テンプレ】
PC ASUS Eee PC 4G-X (eMobile契約)
OS WindowsXP Professional
Tool Python 2.6 + IDLE
環境 2DK
質問 (40字以内)
検索 ぐぐる × やふー ×
OKWave × 発言小町 △
0189デフォルトの名無しさん
2010/05/11(火) 22:31:05from ctypes import *
from ctypes.wintypes import *
GetStdHandle = windll.kernel32.GetStdHandle
GetStdHandle.argtypes = [c_int]
GetStdHandle.restypes = c_int
SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute
SetConsoleTextAttribute.argtypes = [c_int, c_int]
SetConsoleTextAttribute.restypes = c_int
SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition
SetConsoleCursorPosition.argtypes = [c_int, c_int]
SetConsoleCursorPosition.restypes = c_int
def cursor(h, y, x):
SetConsoleCursorPosition(h, (y << 16) | (x & 0x0000FFFF))
def conattr(h, bg, fg):
SetConsoleTextAttribute(h, (bg << 4) | (fg & 0x0F))
def puts(s):
sys.stdout.write(s)
def cls(h, t, b, l, r, c):
for j in xrange(t, b):
for i in xrange(l, r):
cursor(h, j, i)
puts(c)
def beep():
puts('\a')
h = GetStdHandle(-11)
cls(h, 0, 25, 0, 80, '.')
conattr(h, 1, 13)
cursor(h, 12, 30)
puts('abc')
cursor(h, 24, 0)
beep()
0190デフォルトの名無しさん
2010/05/13(木) 09:08:55みんpy買って読んでるけど意外にもわかりにくいな、この本
オレが頭悪いだけなんだろうなw
なんかオススメの入門書ってある?
0191デフォルトの名無しさん
2010/05/13(木) 09:12:52こだわらなくていい。オブジェクト指向信者はうざいだけなので。
0192デフォルトの名無しさん
2010/05/13(木) 09:15:29無理に湧かそうとしなくてもいいから安心すれ
Pythonでは名前空間や属性って考え方のほうがよっぽど大事だ
0193デフォルトの名無しさん
2010/05/13(木) 09:31:09無名の日本人が書いた本とIBMのサイトで記事を書いたりPythonの講習を何年間も行っている人が書いた本とどちらが良いと考えられるかは分かるんじゃない?
0194デフォルトの名無しさん
2010/05/13(木) 09:43:16前者ですねわかります
0195デフォルトの名無しさん
2010/05/13(木) 10:01:430196デフォルトの名無しさん
2010/05/13(木) 12:06:39ごめんなさい
超初心者なもんで勉強のしかたすらわからなくて…
無理にオブジェクト指向にこだわらなくてもいいんですな
0197デフォルトの名無しさん
2010/05/13(木) 15:47:33名無しのチンカスの言うことを信じる奴は居るの?
0198デフォルトの名無しさん
2010/05/13(木) 15:53:19そう、動いて読めればいいんですよ
0199デフォルトの名無しさん
2010/05/13(木) 18:51:39むしろPythonなんて、ほとんどのライブラリがオブジェクト指向だから
自然に覚えられないかな?
っていうより、オブジェクト指向でないものを知らないから、逆に
オブジェクト指向が何なのか分からないというのはあるかもしれんが。
0200デフォルトの名無しさん
2010/05/13(木) 21:12:25っていうと、クラスとメソッドがオブジェクト指向と考えている人が混乱するなw
0201デフォルトの名無しさん
2010/05/14(金) 00:53:070202デフォルトの名無しさん
2010/05/14(金) 19:06:490203デフォルトの名無しさん
2010/05/14(金) 20:51:270204デフォルトの名無しさん
2010/05/14(金) 22:25:240205デフォルトの名無しさん
2010/05/15(土) 05:41:08非オブジェクト指向から考えるといいよ。
例えば住所録の入ったcsvを読み込んで、XMLを吐き出すプログラムをライブラリを使わないで作る場合を考えると、
非オブジェクト指向だと
array = CSV読み込み(fileName)
addressList = アドレスリスト変換(array)
xml = XML生成(addressList)
書き込み(xml)
見たいにメインの入り口を作って、サブルーチンを作っていく感じになる。
またサブルーチンも、必要に応じてもっと細かいサブルーチンに分割していく。
単純明快で分かりやすく、短時間でちょっとしたツールを作るときは大抵このやり方になる。
まずはこのやり方を覚えてからオブジェクト指向の本を読めば、何が違うのかわかると思うよ。
0206デフォルトの名無しさん
2010/05/15(土) 08:08:09横からですまんがありがとう。つかマジ感謝
なんかこーなんだかあと少しで分かりそうな気がする
ちなみにそのXML吐き出すプログラムをオブジェクト指向でやるとするとどんな感じになるんでしょう?
救いの一手をざっくりでおねがいしまする
0207デフォルトの名無しさん
2010/05/15(土) 09:36:59# CSVを読み込んで任意のインスタンス変数に格納
xml = Foo(fileName)
# CSVを変換し任意のインスタンス変数に格納
Foo.アドレスリスト変換()
# XMLを生成して任意のインスタンス変数、self.xmlに格納
Foo.XML生成()
# 処理が終わったFoo.xmlを参照
書き込み(Foo.xml)
みたいな感じで処理を一つのクラスにまとめたりする
こういうのはコーダーによって違うからコード書いたり読んだりした方がいい
0208デフォルトの名無しさん
2010/05/15(土) 10:07:170209デフォルトの名無しさん
2010/05/15(土) 10:08:270210デフォルトの名無しさん
2010/05/15(土) 11:04:42「こうあるべき」って理論から来てるんじゃなくて「こうできたら便利だよね」から来てる。
そこらへんを知らずに、いきなり「犬がワン、猫がニャー」の説明をされても分かるわけが無い。
まずはある程度プログラム組めるようになってからだと、すんなり受け入れられる。
そういう意味で>>205の考え方はすごくわかりやすい。
0211デフォルトの名無しさん
2010/05/15(土) 13:44:59設計は人それぞれだけど、1つ例を挙げるなら
addressList = AddressList(fileName)
xml = addressList.toXML()
xml.write(outputFileName)
こんな感じかな。
住所録っていう実在するもの(エンティティという)に対応したクラスを作って、
そのクラスに必要な操作を追加していく、って感じ。
プログラムの規模が大きくないと、メリットがあまり無いうえ、設計がキモで、
設計によって良いプログラム(再利用性が高い)にも糞にもなりうる。
他に継承やオーバーライドというキーワードがあるので調べておこう。
多少分かったら、次はポリモーフィズムやデザインパターンを勉強するといい。
これがオブジェクト指向が何たるを理解するための最短ルートだと思う。
0212デフォルトの名無しさん
2010/05/15(土) 15:47:59そういう気持ち悪いレスするから食わず嫌いがでるんだろ。
0213デフォルトの名無しさん
2010/05/15(土) 15:55:09皆さん感謝
いやもうほんとなんか今ちょっと自分の中で何か分かりそうな
のどから手が出そうな感じになってます
これ見ながら参考書なんぞ片手にコード書きまくることにしまする
0214デフォルトの名無しさん
2010/05/15(土) 16:10:06デザパタはあくまでJavaのものだしなぁ。
C++とかじゃわりと使えるけど、Python的には使えないのも多い。
ポリモーフィズム(多態性)を継承によるものじゃなく、同じ方法でできるかどうかにまで拡張したのがダックタイピングだね。
オーバーライドは、Pythonみたいに変数(やメソッド名)が名前の束縛に過ぎず、ダックタイピングな考え方の言語では
特別なことしてるってよりはむしろ、普通の代入と同じ。
オブジェクト指向って言葉自体が抽象的なものだから、これがオブジェクト指向だ!ってのはない。
けど重要なのは、処理とデータをまとめてしまうこと、似たことは同じ方法でできるようにすること、
似たものを作るには、違う部分だけを作り直せばいいということ。
0215デフォルトの名無しさん
2010/05/15(土) 16:19:18この世界じゃ、横文字の単語が普通に使われてるから、知らないと
苦労するだけだよ。
しかも単語を日本語に直せば分かりやすくなるわけじゃないし。
↓みたいになっても分かりやすくはならないし、一般に使われていない
単語を使っても後々混乱するだけだよ。
住所録っていう実在するもの(実体という)に対応した級を作って、
その級に必要な操作を追加していく、って感じ。
算譜の規模が大きくないと、利点があまり無いうえ、設計がキモで、
設計によって良い算譜(再利用性が高い)にも糞にもなりうる。
他に継承や覆しという重要単語があるので調べておこう。
多少分かったら、次は多態性や設計類型を勉強するといい。
これが物指向が何たるを理解するための最短経路だと思う。
0216デフォルトの名無しさん
2010/05/15(土) 16:25:560217デフォルトの名無しさん
2010/05/15(土) 16:44:39Pythonでは構造体やレコード型が無いし、そういうの使いたい時は
クラスだ
(まあ最近はnamed tupleってのがあるけど)
クラスはデータだけでなくデータの操作/手続きを一緒に持てるから、
そうしたほうが自然な手続きは一緒に持たせましょうというだけのことだ
逆に言えば、関数で構わないものは関数でいいんだよ
Pythonで必要も無いのにOOPにこだわる意味はゼロ
0218デフォルトの名無しさん
2010/05/15(土) 21:07:52煽りにも親切
0219デフォルトの名無しさん
2010/05/15(土) 21:56:400220デフォルトの名無しさん
2010/05/15(土) 23:13:38犬がワン猫がニャーは翻訳しようがない
どちらがいいかと問われたら前者を推す
0221デフォルトの名無しさん
2010/05/16(日) 03:32:450222デフォルトの名無しさん
2010/05/16(日) 12:32:050223デフォルトの名無しさん
2010/05/16(日) 16:36:54まさにCOBOL!
0224デフォルトの名無しさん
2010/05/16(日) 18:09:100225デフォルトの名無しさん
2010/05/16(日) 22:43:25def testR():
return random.randint(1, 100)
class Test():
random.seed()
aaa = random.randint(1, 100)
a = testR()
b = testR()
c =Test.aaa
d =Test.aaa
print testR()
print testR()
print testR()
print a
print b
print testR()
print '-------'
print Test.aaa
print c
print d
print Test.aaa
seed()について質問です
def:今までseed置いてましたが今外してみると4つとも違う数字を吐く
初期化は不要ということでしょうか?
class:色んな所にseed置きましたがどの印字も同じ結果
(実行する度に違う乱数を吐く)
4つの結果を違うものにしたい場合何処にseedを置けば良いのでしょう
というかそもそも初期化の考え方が間違ってるのでしょうか?
0226デフォルトの名無しさん
2010/05/16(日) 22:45:40def testR():
____return random.randint(1, 100)
class Test():
____random.seed()
____aaa = random.randint(1, 100)
インデントはこんな感じってことで
0227デフォルトの名無しさん
2010/05/16(日) 23:17:49randomはimportするときにrandom.seed()も実行されてるから初期化は不要
0228デフォルトの名無しさん
2010/05/16(日) 23:30:09そうでしたか
classのほうはclassを理解できてないからってことですかね
何から手を付けたらいいのかすら分からない状態でして
0229デフォルトの名無しさん
2010/05/17(月) 15:05:59キーが全て整数の辞書dがあるとします。
ここでもしfor i in d:とやった場合、iにはキー値が小さい順に入る事が保証されてますか?
0230デフォルトの名無しさん
2010/05/17(月) 15:20:35試せば分かるだろ
0231デフォルトの名無しさん
2010/05/17(月) 15:53:540232デフォルトの名無しさん
2010/05/17(月) 17:15:38順序関係が欲しいならsorted()に渡すなりなんなりする
2.7/3.1にはodictだかOrderedDictだかが入るらしい
0233デフォルトの名無しさん
2010/05/17(月) 17:29:150234デフォルトの名無しさん
2010/05/17(月) 17:33:480235デフォルトの名無しさん
2010/05/17(月) 17:51:38順序保持する辞書のように使えることに意義があったんじゃないのか
本物が出てきたらお役ごめんだろう
と思うんだが素敵な使い方があるのかもしれない
0236デフォルトの名無しさん
2010/05/17(月) 18:08:58保証なしでしたか。
試してみたら順番に出てきたっぽかったので・・・
また別件なんですが、リスト内包で、例えば[str(i) for i in range(10)]とやると、このiは内包の外に出てきちゃうんですね。
内包はスコープ作ってくれた方が良いのに。
for i in...とやってるfor分の中でうっかりこんなことしたらおかしくなりました。
0237デフォルトの名無しさん
2010/05/17(月) 18:20:16228です
となるとseedというのはどういう時に使うのでしょう?
毎度違う乱数を得たいときに使うものだと思ってたのですがこの考え方は間違ってるのでしょうか?
なお、その後継承して新しいクラスを作って実行すればどうにか違う結果が出ました
どうにも遠回りな感じがするのですがこれ以外に解法はないんでしょうか
0238デフォルトの名無しさん
2010/05/17(月) 18:32:56横だが
> となるとseedというのはどういう時に使うのでしょう?
同じseedを与えると乱数を発生させたときにいつも同じ値が返る。
>>> import random
>>> random.seed(100)
>>> random.randint(1, 100)
15
>>> random.seed(200)
>>> random.randint(1, 100)
5
>>> random.seed(100)
>>> random.randint(1, 100)
15
>>> random.seed(200)
>>> random.randint(1, 100)
5
0239デフォルトの名無しさん
2010/05/17(月) 19:07:300240デフォルトの名無しさん
2010/05/17(月) 19:17:20具体例
0241デフォルトの名無しさん
2010/05/17(月) 19:17:31自分もそのつもりでいたんですが
>>225において書いた通り
seedを置かなくてもdef testR():は呼び出す度に違う数字を返します
(自分はずっとseed置いて毎回初期化してるつもりでいました)
一方class Test():は何度呼び出しても同じ数字を返してきます
seedの置き場所がまずいのかそもそもなにか根本的に間違ってるのか
seed()はシステム時計から値をとるなら呼び出す度に違う数字になるかと思うのですが
0242デフォルトの名無しさん
2010/05/17(月) 19:18:38Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> d = dict()
>>> d['a'] = 100
>>> d['z'] = 200
>>> d['b'] = 300
>>> d.keys()
['a', 'z', 'b']
('A`)
0243デフォルトの名無しさん
2010/05/17(月) 19:59:48>>> d['c'] = 400
>>> d.keys()
['a', 'c', 'z', 'b']
0244デフォルトの名無しさん
2010/05/17(月) 20:07:18>>241
randomが生成する乱数の列は「決定論的」
例えばseed(1)で初期化したrandomは毎回同じ数列を返す
>>> import random
>>> random.seed(1)
>>> for i in range(10): print random.randint(1, 100),
...
14 85 77 26 50 45 66 79 10 3
>>> random.seed(1)
>>> for i in range(10): print random.randint(1, 100),
...
14 85 77 26 50 45 66 79 10 3
あとクラスの中の文はクラスオブジェクト生成時に「一度」実行される
>>> class Foo(object): print 'in Foo'
...
in Foo
>>> Foo()
<__main__.Foo object at 0x02567490>
>>> Foo()
<__main__.Foo object at 0x0256EF90>
0245デフォルトの名無しさん
2010/05/17(月) 20:19:08なるほど
非常にわかり易い解説ありがとうございます。感謝
0247デフォルトの名無しさん
2010/05/17(月) 21:50:11文献も大事だけどウェブ上のほうが噛み砕いた説明をしてくれてる人が多いから初心者にもわかりやすい
0248デフォルトの名無しさん
2010/05/17(月) 22:11:44仕事で使うわけではないから、諦めるのもありなんだけど・・・ただセンスないだけか・・・
まだ学習不足?
0249デフォルトの名無しさん
2010/05/17(月) 22:34:340250デフォルトの名無しさん
2010/05/17(月) 22:35:42○○作りたいって思いついたらライブラリカジってなれればいつの間にか身についてる
0251デフォルトの名無しさん
2010/05/17(月) 22:42:23趣味ならますますそうだわ
自分のペースで何作ってもいいんだから
本なんて読んでる暇があったら何か作ればいいのに
0252デフォルトの名無しさん
2010/05/17(月) 23:00:24センスが悪いと自分にレッテルを貼るのはやれることを全部やってからにしる
役に立つプログラムを書いてる連中だって
本一冊読んですぐ書けるようになったわけじゃないんだ
0253248
2010/05/17(月) 23:01:28とっても参考になりました。
ありがとうございます。
基本的なルールだけは身につけて、あとはライブラリで頑張ります。
趣味なのでゆっくりじっくりとやってみます。
0254デフォルトの名無しさん
2010/05/17(月) 23:01:500255デフォルトの名無しさん
2010/05/17(月) 23:08:410256デフォルトの名無しさん
2010/05/18(火) 00:06:280257デフォルトの名無しさん
2010/05/18(火) 00:26:23自分もみんパイは意味がわからなかったスw
多分著者にセンスがないw
ウェブ上で調べてみんパイ見て自分なりの解釈をする→自分なりにみんパイを元にいろいろ試してみる
を繰り返してボカァなんとか理解してきました
実際に何か作ってみたいんですけどねぇ・・・どんなことができるのかが分からないのが初心者でもアルんですw
0258デフォルトの名無しさん
2010/05/18(火) 00:50:45>>250みたいにとりあえず手を動かした方が早い
別に汚くても目的が達成できればいい
0259デフォルトの名無しさん
2010/05/18(火) 00:57:430260デフォルトの名無しさん
2010/05/18(火) 13:05:22pygameなんか関数で作ってたけどクラスにした方が早かった
0261デフォルトの名無しさん
2010/05/18(火) 14:55:50Python以前の話ではないでしょうか。
0262デフォルトの名無しさん
2010/05/18(火) 17:08:15namedtupleは順序付き辞書の代わりじゃなくて、構造体の代わりだろ……
0263デフォルトの名無しさん
2010/05/18(火) 23:27:44こんな支離滅裂でまとまってない本が売れてる意味がわからん
日本語の文法おかしすぎすし
0264デフォルトの名無しさん
2010/05/18(火) 23:56:53たのしいRubyと同じサイズの版型でソフトバンクから出したから
0265デフォルトの名無しさん
2010/05/18(火) 23:59:58評価されてるように見えるのは
著者の自作自演だからw
0266デフォルトの名無しさん
2010/05/19(水) 00:26:04>日本語の文法おかしすぎすし
>日本語の文法おかしすぎすし
>日本語の文法おかしすぎすし
>日本語の文法おかしすぎすし
>日本語の文法おかしすぎすし
>日本語の文法おかしすぎすし
0267デフォルトの名無しさん
2010/05/19(水) 00:27:170268デフォルトの名無しさん
2010/05/19(水) 00:29:480269デフォルトの名無しさん
2010/05/19(水) 00:40:40そんなに>日本語の文法おかしすぎ寿司を連発しなくてもいいですよw
日本語の文法→おかしすぎ寿司で…まぁいいや
アホは揚げ足と言葉遊びの区別がつかんのだろうからw
そんなこと指摘されると思ってなかったから度肝抜かれた感100ですわw
0270デフォルトの名無しさん
2010/05/19(水) 00:42:040271デフォルトの名無しさん
2010/05/19(水) 00:44:420272デフォルトの名無しさん
2010/05/19(水) 01:21:19誰か1人が頑張ってFUDしているようにしか見えない。
0273デフォルトの名無しさん
2010/05/19(水) 01:23:43以上をremoveメソッドで味わってください
0274デフォルトの名無しさん
2010/05/19(水) 01:24:450275デフォルトの名無しさん
2010/05/19(水) 01:42:130276デフォルトの名無しさん
2010/05/19(水) 01:48:480277デフォルトの名無しさん
2010/05/19(水) 02:01:440278デフォルトの名無しさん
2010/05/19(水) 13:25:14>以上をremoveメソッドで味わってください
日本語がジューシーすぎる。
0279デフォルトの名無しさん
2010/05/19(水) 20:09:580280デフォルトの名無しさん
2010/05/19(水) 20:28:49for f, i in zip(foo, range(len(foo))):
print f, i
enumerate使うとスッキリする
0281デフォルトの名無しさん
2010/05/19(水) 23:01:480282デフォルトの名無しさん
2010/05/19(水) 23:14:36俺は>>280じゃないけど
>>280のコードをenumerate使って書き直すとスッキリ書けるよ、ということだよ
0283デフォルトの名無しさん
2010/05/20(木) 19:05:33利用サーバー:さくらインターネット プレミアム(さくら質問スレよりここへ来ました。)
SSH接続して、サイトマップを生成しています。(cronでも毎日一回実行)
<こちらを参考にしました>http://senrioka-info.net/0_google_sitemap/sitemap_generator.htm
python sitemap_gen.py --config=config.xml
ところが、冒頭に警告メッセージが出るようになりました。ただし、サイトマップは生成できます。
sitemap_gen.py:65: DeprecationWarning: the md5 module is deprecated; use hashlib instead import md5
「md5モジュールは非推奨で、代わりにhashlibを使いなさい」ということだと思うのですが、
具体的にどうすればよいのでしょうか?
確かに、sitemap_gen.pyの65行目には、import md5とあります。
今までずっと気付きませんでしたが、
過去のcronメールを見ると、2009/6/25以降からずっとこの警告メッセージが冒頭につくようになっていました。
サーバーの仕様が変わったのかもしれませんが、よく分かりません。
サイトマップ自体の生成に問題はないような気もしますが、警告が毎回出るのはすっきりしません。
よろしくお願いします。
0284デフォルトの名無しさん
2010/05/20(木) 19:21:42md5.new(...).digest() -> hashlib.md5(...).digest()
-> の左を右に変えればたぶん動く
よくわかんなかったら親切な人がパッチくれるのを待って
0285デフォルトの名無しさん
2010/05/20(木) 19:25:05ですべて解決
0286デフォルトの名無しさん
2010/05/20(木) 19:39:53hashlibとmd5じゃnewの引数がぜんぜん違う
0287デフォルトの名無しさん
2010/05/20(木) 20:07:17問題は解決されないけど、とりあえずエラーをしかとする方法
http://stackoverflow.com/questions/879173/how-to-ignore-deprecation-warnings-in-python
0288デフォルトの名無しさん
2010/05/20(木) 20:23:17md5.new = md5.md5
を追加
0289デフォルトの名無しさん
2010/05/20(木) 21:21:190290デフォルトの名無しさん
2010/05/23(日) 23:07:10できればフォントサイズだけでも大きくしたいんですが…
0291デフォルトの名無しさん
2010/05/28(金) 09:40:270292デフォルトの名無しさん
2010/05/28(金) 11:59:53名前が無効になることは別問題だな。
デストラクタがやりたいなら少々面倒だが、with statement という構文がある。
名前束縛を消したいならちょっと上で出てる del を明示的に使うしかないかな。
Pythonのスコープはグローバルと関数内ローカルの2つしか無かったと思う。
(クラスメンバはどうだったか忘れた)。
少なくともブロック全てがスコープになるC++と同じにはできない。
0293デフォルトの名無しさん
2010/05/29(土) 12:10:430294デフォルトの名無しさん
2010/05/29(土) 13:29:38re.search = 'uhouho'
のように書くとモジュールの中身を破壊できてしまいますが、こういう仕様なんですか?
ちょっと怖いです。
0295デフォルトの名無しさん
2010/05/29(土) 13:52:550296デフォルトの名無しさん
2010/05/29(土) 17:29:12Pythonの現行プロセスのみだよ、それが有効なのは。
reload すれば元に戻る。
0297デフォルトの名無しさん
2010/05/29(土) 18:55:40モジュールオブジェクトが属性の書き換えを禁止してないだけ
すんなの一言で済むから妙な実装しなかっただけだと思ってる
0298デフォルトの名無しさん
2010/05/29(土) 19:25:24どこが「怖い」のか良く分からない
自分で外部モジュールをインポートしておきながら、
事故やミスでそのモジュールの属性を上書きするようなコードを記述することは
無いと思うんだが
意図的だとして、そういうこと(モンキーパッチ)が「出来る」のは普通に便利だぞ
例えばeventletは、そうやって組み込みのソケットやそれを利用するライブラリに
実行時パッチを当てて、ソケット操作を非同期でコルーチン上で実行するように
している
0299デフォルトの名無しさん
2010/05/29(土) 19:40:540300デフォルトの名無しさん
2010/05/30(日) 03:30:300301デフォルトの名無しさん
2010/05/30(日) 09:38:500302デフォルトの名無しさん
2010/05/30(日) 10:11:40dir() # NameError
0303デフォルトの名無しさん
2010/05/30(日) 18:34:52Ubuntu10.04なんだけど
最初 django-admin.py startproject xxxx が実行できなくて
しょうがないから PATH 通して実行したんだけど
今度は作成したプロジェクトフォルダで manage.py runserver ってやっても
実行できない
これって何が原因なの?Pythonスレで聞くような事じゃ無いのかもしれないけど
なんか設定必要?
0304デフォルトの名無しさん
2010/05/30(日) 18:47:170305デフォルトの名無しさん
2010/05/30(日) 19:06:16どんなエラーが出てるか略さずに書いた方がいいよ
0306デフォルトの名無しさん
2010/05/30(日) 19:08:32Pythonルートとsite-packagesのPATH通して.pyに関連付けしてあるか確認しろ
0307デフォルトの名無しさん
2010/05/30(日) 19:31:33過剃ってるけど
【Python】Webフレームワーク Djangoスレ Part1
http://pc11.2ch.net/test/read.cgi/php/1156612854/
0308デフォルトの名無しさん
2010/05/30(日) 19:33:21まぁpygameよりはマシか
0309デフォルトの名無しさん
2010/05/30(日) 22:41:15質問するときには、「エラー」とか「動かない」とかだけじゃだめ。
実際に実行したコマンドと、表示されたエラーメッセージをそのままコピペして。
0310デフォルトの名無しさん
2010/05/30(日) 23:58:34おすすめの解説サイトなどございませぬでしょうか。
わたくしは、Blenderのコマンドをどうやって調べるのかすら知らない程の初心者ですが
宜しくお願い致します。
0311310
2010/05/31(月) 00:04:40blenderのスレに行って自己解決しました↓↓
何も考えずにレスしてしまってごめんなさい↓↓
0312デフォルトの名無しさん
2010/05/31(月) 00:08:060313デフォルトの名無しさん
2010/05/31(月) 00:08:270314デフォルトの名無しさん
2010/05/31(月) 00:10:530315デフォルトの名無しさん
2010/05/31(月) 00:13:54←→←
キー入力ミス!
0316デフォルトの名無しさん
2010/05/31(月) 00:17:380317デフォルトの名無しさん
2010/05/31(月) 00:21:36蘭のプランター、なんつって
0318デフォルトの名無しさん
2010/05/31(月) 10:33:57何それかっこいいいいいいいいいい!!!!!!!!!!!!
0319デフォルトの名無しさん
2010/05/31(月) 17:03:55最初に打つ基本的なコードを幾つか教えてください!
0320デフォルトの名無しさん
2010/05/31(月) 17:12:530321デフォルトの名無しさん
2010/05/31(月) 17:43:18やって見ました!!もう感動です!
ありがとうございます。
0322デフォルトの名無しさん
2010/05/31(月) 19:16:09a[0][0] = 1
print a
実行結果
[[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]
これが納得いきません
普通の2次元配列なら[0][0]の要素だけが1になるはずだし
*で単純にコピーされてるなら全部1になるはずですよね?
0323デフォルトの名無しさん
2010/05/31(月) 19:24:19aはリストのリストであって2次元配列ではないし
*はディープコピーは行わないから、そうなるんだよ
0324デフォルトの名無しさん
2010/05/31(月) 19:27:07>>> a[0][0].append(1)
>>> print a
[[[1], [1], [1], [1], [1]], [[1], [1], [1], [1], [1]], [[1], [1], [1], [1], [1]], [[1], [1], [1], [1], [1]], [[1], [1],
[1], [1], [1]]]
0325デフォルトの名無しさん
2010/05/31(月) 19:53:190326323
2010/05/31(月) 20:20:25それ、本質的には以下と同じだよ
a = 0
b = a
a = 1
(bは0のまま)
a = [ 0 ]
b = a
a[0] = 1
(b[0]は1になる)
a = [ 0 ]
b = a
a = [ 1 ]
(bは変わらず)
0327デフォルトの名無しさん
2010/05/31(月) 20:29:28a -> [ b, b, b, b, b ]
b -> [ c, c, c, c, c ]
c -> 0
こうなってるのが、
a -> [ b, b, b, b, b ]
b -> [ d, c, c, c, c ]
c -> 0
d -> 1
こうなる
0328デフォルトの名無しさん
2010/05/31(月) 20:35:50これでよくね?
0329デフォルトの名無しさん
2010/05/31(月) 21:12:470330デフォルトの名無しさん
2010/05/31(月) 21:17:30>>> x
[set([]), set([]), set([]), set([]), set([])]
>>> x[0].add(1)
>>> x
[set([1]), set([1]), set([1]), set([1]), set([1])]
0331デフォルトの名無しさん
2010/05/31(月) 21:26:38b = [[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
これ使います
0332デフォルトの名無しさん
2010/05/31(月) 21:27:37numpy超オススメ
無理に標準のlistでやることないよ
0333デフォルトの名無しさん
2010/05/31(月) 22:06:58Pythonは全て参照渡し
変更不能オブジェクトなら>>322の(a[0][0] = 1)とかできないから
問題が起きないだけ
0334デフォルトの名無しさん
2010/05/31(月) 23:49:090335デフォルトの名無しさん
2010/05/31(月) 23:50:390336デフォルトの名無しさん
2010/06/01(火) 00:00:53それどこに書いてあったのか教えてくれ
intに収まる範囲なら即値でやってると思うんだが
0337デフォルトの名無しさん
2010/06/01(火) 00:06:110338デフォルトの名無しさん
2010/06/01(火) 01:11:47上の話でなんとなく理解した気でいたが
>>>a = [[0] * 5] * 5
>>>a[3][4]=5
>>>a
[[0, 0, 0, 0, 5], [0, 0, 0, 0, 5], [0, 0, 0, 0, 5], [0, 0, 0, 0, 5], [0, 0, 0, 0, 5]]
なんでこーなるのかが分からん
list index out of rangeならまだ何となく納得出来るんだが
0339デフォルトの名無しさん
2010/06/01(火) 01:30:300340デフォルトの名無しさん
2010/06/01(火) 01:54:53>>>a = [[0] * 5] * 5
↓
>>>b = [0] * 5
>>>a = [b] * 5
>>>a[3][4]=5
↓
>>>b[4] = 5
0341デフォルトの名無しさん
2010/06/01(火) 04:10:32なんか混乱したけどなんかわかってきた!
>>340
なるほど納得トン
なんかややこしいなあw
結論としては俺もnumpy入れるわ
0342デフォルトの名無しさん
2010/06/01(火) 04:23:540343デフォルトの名無しさん
2010/06/01(火) 09:28:05チュートリアルの和訳や書籍「初めてのPython」を読み始めてから
いろいろ調べてみますと、Pythonに関わらず言語の習得前には
C言語の習得が基本のような気がしてきました。
遙か以前、学生の頃購入し挫折したC言語の入門書を開いてみたのですが、
どの程度までC言語を勉強したあとPythonに移行すれば良いのでしょう?
Python等はメモリ管理や変数の型など、C言語に比べ自動化されて
便利になっているが、初心者はC言語によるPCの動作原理を知っておけと言う
意味だと解釈しているのですが・・・
0344デフォルトの名無しさん
2010/06/01(火) 09:50:40PCのリソース関連だったり基本的な仕組みくらいは知っておいた方がいい
もしC言語やってからPythonに挑みたいなら、構造体あたりまでは学習した方がいい。
なぜならそこら辺まではPythonにも似てる所が結構あるし、C言語より使い易くて感動したりできる。
0345デフォルトの名無しさん
2010/06/01(火) 10:35:14なるほど、構造体ですか。
手持ちの入門書の最終章一つ前が構造体の章でした。
とりあえずC言語の入門書一冊分を読んで理解できてから
Pythonを勉強してみようと思います。
レスありがとうございました。
0346デフォルトの名無しさん
2010/06/01(火) 14:45:32それで静的型付けでポインタもあるCの学習は最適
でもPHPやJavascriptの方が見た目はCっぽい
0347デフォルトの名無しさん
2010/06/01(火) 16:07:370348デフォルトの名無しさん
2010/06/01(火) 17:45:02「プログラミング言語C」
この一冊マスターしとけばオケ。
0349デフォルトの名無しさん
2010/06/01(火) 17:49:250350デフォルトの名無しさん
2010/06/01(火) 18:22:240351デフォルトの名無しさん
2010/06/01(火) 18:45:43使えないより使えた方がいいし、たまに応用の知識も得られてお得
0352デフォルトの名無しさん
2010/06/01(火) 20:37:42いきなりPythonで良いと思うが
Cも理解出来ないような頭じゃ
遅かれ早かれPythonでも挫折するだろうな
0353デフォルトの名無しさん
2010/06/01(火) 20:43:520354デフォルトの名無しさん
2010/06/01(火) 20:58:14K&Rを初心者に勧めるのはやめたほうがよさげ。
あれの場合Unixの知識まで必要になるし、内容も初心者向けではない。
0355デフォルトの名無しさん
2010/06/01(火) 21:05:04オレもCから入ることにする
0356デフォルトの名無しさん
2010/06/01(火) 21:23:06昨日の>>322のような問題は、他言語経験者なら簡単に理解できるだろう
(ポインタや参照型、といった概念を通して)
でもPythonでプログラミングに触れる本物の初心者が理解するには、
Lispの本でよく出てくるconsセルのボックス表記みたいな図を通して
Pythonの変数とオブジェクトのモデルを理解させる必要があるように思う
そういうしっかりした学習ルートが無いのなら、確かに他の言語から入ったほうが
近道かも知れないね
0357デフォルトの名無しさん
2010/06/01(火) 21:27:35Cで「コンピュータ・アーキテクチャ」を知っておくというのならお勧めできるのだが。
『プログラムはなぜ動くのか』という本にあるような事柄を知るためにね。
まあ、PythonとCを並行して勉強するのが理想なのかもしれない。
0358デフォルトの名無しさん
2010/06/01(火) 21:27:460359デフォルトの名無しさん
2010/06/01(火) 21:42:18その辺りのことは、
『初めてのPython』http://www.amazon.co.jp/dp/4873113938
の「6章 ダイナミックな型付け」に図も含めて詳しく書かれてあった。
0360デフォルトの名無しさん
2010/06/01(火) 21:45:01こういう風にやたらと改行するやつなんなの?
0362デフォルトの名無しさん
2010/06/01(火) 22:12:25ありがとう、その辺がちゃんと書いてあるんなら、問題ないかも知れないね
0363デフォルトの名無しさん
2010/06/01(火) 23:43:470364デフォルトの名無しさん
2010/06/02(水) 02:49:21空行が多いのは、ほぼ携帯と思っていい
0365デフォルトの名無しさん
2010/06/02(水) 02:53:48|::::|:::::::├――┤:::::::l::::::::::|
|:::」.ィ ┴――┴‐- L::::::::|
|´ : | , -‐ 、 ‐- 、| `T ト、 ありゃー
l: : : |{ じ じ }: : :V::::::} 解説サイトとうとう死んじゃったのか・・・
〃!: : | ー ー | i: : }_/
/ |:i ; | u ' jイ : ハ
l:ト、:ト . ^TTIト .イ/: /: :ヽ
| ヾ ィ>イl川´}∨∠ェー ´
_.. ヘ ヽ 川||/ ハー- ._
, ィ''´ } ンrtく { /ヽ
/ l 、\ {_/ |o| \_} / ,
{、 l >--\ |o| 、 ,′ 、
ハ_} / _二ヽ \ Ll V/ ヽ
{ / -- 、ン‐ヘ {i __}
に7 ‐ァ-一'’_¨二\二二¨ `Y⌒ヾ_-―‐ノ
// /ヽ、<´ ミ=三ゝ=ミ `>ノ ノ `ヽ |
0366デフォルトの名無しさん
2010/06/02(水) 08:57:19間接参照の概念の理解という点に関しては、、Cが一番理解しづらい(というか面倒くさい)と思う。
ポインタの本はいっぱい出てるのに間接参照の本が出てるのは見たことがない。
ポインタには余計な機能がいっぱいついてる分、理解しづらい側面があるんだろう。
0367デフォルトの名無しさん
2010/06/02(水) 15:06:090368デフォルトの名無しさん
2010/06/02(水) 16:12:12そういう意味でアセンブラからやった方が早いぜと考える人は多いかも知れんね
別にCから入るのも「無理」ではないけど
Cの場合は具体と抽象の両面を理解する必要がある
0369デフォルトの名無しさん
2010/06/02(水) 17:30:130370デフォルトの名無しさん
2010/06/02(水) 18:11:59まあ、たしかに電子系・組み込み系の人なら普通はCからだろうね。
あと、段階的にカリキュラムを進めていける大学の授業とか
(それでもあのMITとかでも最近はPythonから教えるみたいだけど)。
それにしても、(超?)初心者用にしては厳しすぎる
コメントが多いなあこのスレって。
こんなんじゃ>>353みたいなのに客を取られてしまうぞ。
0371デフォルトの名無しさん
2010/06/02(水) 18:16:14初心者以外がここで暇つぶしてるんでしょ
0372デフォルトの名無しさん
2010/06/02(水) 18:20:310373デフォルトの名無しさん
2010/06/02(水) 18:36:440374デフォルトの名無しさん
2010/06/02(水) 18:37:52小 u // ̄> ´  ̄  ̄ `ヽ Y , ´ ) u え
学 b L_ / / ヽ b |
生 y / ' ' i y マ
ま が / / く !? ジ
で 許 l ,ィ/! / /l/!,l /厶,
だ さ i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ
よ れ l | |_|_|_|/| / /__!__ |/!トi i/-- 、 レ!/ / ,-- レ、⌒Y⌒ヽ
ね る _ゝ|/'/⌒ヽ ヽト、|/ '/ ̄`ヾ 、ヽト、N'/⌒ヾ ,イ ̄`ヾ,ノ!
l の 「 l ′ 「1 /てヽ′| | | 「L! ' i'ひ} リ
は ヽ | ヽ__U, 、ヽ シノ ノ! ! |ヽ_、ソ, ヾシ _ノ _ノ
-┐ ,√ !  ̄ リ l !  ̄  ̄ 7/
レ'⌒ヽ/ ! | 〈 _人__人ノ_ i く //!
人_,、ノL_,iノ! /! ヽ r─‐- 、 「 L_ヽ r─‐- 、 u ノ/
/ / lト、 \ ヽ, -‐┤ ノ キ 了\ ヽ, -‐┤ //
ハ キ { / ヽ,ト、ヽ/!`hノ ) モ |/! 「ヽ, `ー /) _ ‐'
ハ ャ ヽ/ r-、‐' // / |-‐ く | > / / `'//-‐、 /
ハ ハ > /\\// / /ヽ_ ! イ ( / / // / `ァ-‐ '
ハ ハ / /! ヽ レ'/ ノ > ' ∠ -‐  ̄ノヽ /
{ i l ! / フ / -‐ / ̄/〉 〈 \ /!
0375デフォルトの名無しさん
2010/06/02(水) 18:38:28お前こそ2ch初心者か?ここは合わなさそうだな、さっさと出て行け。
0376370
2010/06/02(水) 19:13:12そうか。教えてくれてありがとう。
>>375
すまん。書き込み内容が寒い、ここに合わないことは確かだ。
いや、初心者ではないのだが久々だったので。
さっさと出て行くことにする。どうか、これ以上荒れないように頼む。
0377デフォルトの名無しさん
2010/06/02(水) 19:21:570378デフォルトの名無しさん
2010/06/02(水) 19:52:55オライリーの初めてのPythonのほうがまだ意味が解る
0379デフォルトの名無しさん
2010/06/02(水) 21:28:290380デフォルトの名無しさん
2010/06/02(水) 21:32:21じゃあこれは嘘書いてるの?
The actual parameters (arguments) to a function call are introduced
in the local symbol table of the called function when it is called; thus,
arguments are passed using call by value (where the value is always
an object reference, not the value of the object).
http://docs.python.org/tutorial/controlflow.html
0381デフォルトの名無しさん
2010/06/02(水) 21:58:12文脈的に、どうみても関数呼び出しとは何の関係も無い話だったから
「全ての型が参照型である」というつもりの話なんだろうと
スルーしてたな俺は
関数呼び出しは参照渡しか値渡しかで言えば勿論値渡しが正しいけど
参照型の値渡しって独特だから
call by sharingとかいう呼び方もあるみたいだね
ttp://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing
0382デフォルトの名無しさん
2010/06/02(水) 23:28:380383デフォルトの名無しさん
2010/06/03(木) 03:54:110384デフォルトの名無しさん
2010/06/03(木) 13:05:530385デフォルトの名無しさん
2010/06/03(木) 13:31:58map(add, it, it)
>it.next() + it.next()
ab
cd
ef
gh
>StopIteration
どこに参照がでてくるの?
0386デフォルトの名無しさん
2010/06/03(木) 13:49:20['ab', 'cd', 'ef', 'gh']
>>> map(operator.add, iter('abcdefgh'), iter('abcdefgh'))
['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg', 'hh']
0387デフォルトの名無しさん
2010/06/03(木) 13:51:17>>383ではないが
itと、mapに渡ってくる第2、第3実引数が同じオブジェクトインスタンスを
「参照」してるから、そういう動きになるんだろ
0388デフォルトの名無しさん
2010/06/03(木) 15:05:05この程度なら小学生でもわかるだろうし、いちいち意識してたらやってられんぞ
0389デフォルトの名無しさん
2010/06/03(木) 15:26:350390デフォルトの名無しさん
2010/06/03(木) 21:55:360391デフォルトの名無しさん
2010/06/03(木) 23:52:05そう思っていた時期が(ry
0392デフォルトの名無しさん
2010/06/04(金) 00:43:40reader = csv.reader(file("a.csv", "rb"))
for name, body in reader:
print name, body
csvモジュールを使ってcsvファイルからデータを読み込んでprintするプログラムですが、
130行以上のファイルだと下記のエラーが出ます。
ValueError: too many values to unpack
130行以上のcsvファイルの場合はどう対処すればいいんでしょうか?
0393デフォルトの名無しさん
2010/06/04(金) 00:51:580394デフォルトの名無しさん
2010/06/04(金) 00:55:08for row in readerみたいに一つの変数で受けて len でチェックすれば?
0395デフォルトの名無しさん
2010/06/04(金) 01:29:10ありがとうございます。
ちゃんと確認したらcsvファイルの130行目のデータが間違った形式になってました。
直したら問題なく処理できました。
0396デフォルトの名無しさん
2010/06/04(金) 07:50:000397デフォルトの名無しさん
2010/06/04(金) 08:33:110398デフォルトの名無しさん
2010/06/04(金) 09:29:19そんな顔真っ赤にすんなよw
0399デフォルトの名無しさん
2010/06/04(金) 12:11:330400デフォルトの名無しさん
2010/06/04(金) 12:37:18だからといって強引に流れに絡めるのは低脳Ruby厨に違いない
0401デフォルトの名無しさん
2010/06/05(土) 09:41:090402デフォルトの名無しさん
2010/06/05(土) 10:37:160403デフォルトの名無しさん
2010/06/05(土) 11:17:540404デフォルトの名無しさん
2010/06/05(土) 12:11:18そこから400近くなるまで、ずっと出てこなかったのに?
関連してる話が出てきたら、前の方で出た良レスを引っ張ってくるのはごくごく当たり前のこと。
0405デフォルトの名無しさん
2010/06/05(土) 12:53:070406デフォルトの名無しさん
2010/06/05(土) 14:14:00お前自分で言ってることがおかしいってわかってるんだろw
それともあれか>>385あたりの理解できずに文句いわれた人?
だったら完全にお門違いだろ
>>399
別に馬鹿な流れじゃない
むしろ今こそ馬鹿な流れだ
0407デフォルトの名無しさん
2010/06/05(土) 14:29:010408デフォルトの名無しさん
2010/06/05(土) 14:38:050409デフォルトの名無しさん
2010/06/05(土) 14:40:270410デフォルトの名無しさん
2010/06/05(土) 14:50:45天下のググるが使ってるって本当なのかと疑いたくなる
0411デフォルトの名無しさん
2010/06/05(土) 14:54:340412デフォルトの名無しさん
2010/06/05(土) 15:08:500413デフォルトの名無しさん
2010/06/05(土) 15:10:520414デフォルトの名無しさん
2010/06/05(土) 15:11:330415デフォルトの名無しさん
2010/06/05(土) 15:29:570416デフォルトの名無しさん
2010/06/05(土) 19:24:400417デフォルトの名無しさん
2010/06/05(土) 19:26:51まあ気にするな
0418デフォルトの名無しさん
2010/06/05(土) 19:37:240419デフォルトの名無しさん
2010/06/05(土) 19:43:270420デフォルトの名無しさん
2010/06/05(土) 19:49:29なつかしいな
0421デフォルトの名無しさん
2010/06/07(月) 00:42:26idle ではコード補完が利いたり効かなかったりするんですけど
pygame. の後に候補が出てほしい
わかるひとおしえてください
0422デフォルトの名無しさん
2010/06/08(火) 18:21:06def get_location():
if self.is_gps:
str = 'これはGPS'
else:
str = 'これはGPSなし'
return str
def is_gps(self):
list = ('841SHs','942SH','943SH')
return self.model in list
のような関数を内蔵したクラスを外部から呼んでmodelに'V801'を代入してからget_location()を呼ぶと
これはGPSって言われます。なにかまずいことやってますでしょうか?教えてください。
よろしくお願いします。
0423デフォルトの名無しさん
2010/06/08(火) 18:22:240424デフォルトの名無しさん
2010/06/08(火) 18:39:22self.is_gps 関数オブジェクトなので True
self.is_gps を呼びたいのなら self.is_gps()
ほかの言語使えるなら公式チュートリアルお勧め
0425デフォルトの名無しさん
2010/06/08(火) 20:20:30うあああ ありがとうございます!! 文化の違いってほんとたいへんですね・・・
0426デフォルトの名無しさん
2010/06/08(火) 20:24:490427デフォルトの名無しさん
2010/06/08(火) 22:12:150428デフォルトの名無しさん
2010/06/08(火) 22:26:400429デフォルトの名無しさん
2010/06/08(火) 22:26:560430デフォルトの名無しさん
2010/06/08(火) 23:13:020431デフォルトの名無しさん
2010/06/08(火) 23:26:01関数そのものもないから。
さすが Python 初心者スレだなw
0432デフォルトの名無しさん
2010/06/08(火) 23:59:10楽しそうだね
0433デフォルトの名無しさん
2010/06/09(水) 01:40:13Python 初心者スレなんてないから。
0434デフォルトの名無しさん
2010/06/09(水) 07:32:250435デフォルトの名無しさん
2010/06/09(水) 08:50:110436デフォルトの名無しさん
2010/06/09(水) 09:13:00初心者向きのスレで誤情報はホント勘弁して欲しいんですけど
0437デフォルトの名無しさん
2010/06/09(水) 09:40:240438デフォルトの名無しさん
2010/06/09(水) 12:09:41>>431は俺も何言ってるか分からない。Rubyの話なのか?
0439デフォルトの名無しさん
2010/06/09(水) 12:25:100440デフォルトの名無しさん
2010/06/09(水) 16:06:39迷惑だし不愉快だわ
飯食って屁こいてとっとと寝ろ
0441デフォルトの名無しさん
2010/06/09(水) 20:06:580442デフォルトの名無しさん
2010/06/10(木) 00:58:46他のIDない板でも、あった方が良いって話題は必ず出る
0443デフォルトの名無しさん
2010/06/10(木) 02:16:22細かいことなので、初心者のうちは気にしなくていい。
>>431の内容についてまともに答えるなら、
呼び出し可能オブジェクトって名前だったかどうかはさておき、オブジェクトの後ろに()って付けて__call__メソッド呼び出せるオブジェクトはいくらでもある。
関数だって所詮、__call__メソッドを持ってるオブジェクトにしか過ぎないって意味では、純粋な関数なんてない。
ということなんだけど、細かいことは詳しくなるにつれて自然についてくる。
0444デフォルトの名無しさん
2010/06/10(木) 02:20:080445デフォルトの名無しさん
2010/06/10(木) 03:58:070446デフォルトの名無しさん
2010/06/10(木) 08:31:16友達いないだろ?
0447デフォルトの名無しさん
2010/06/10(木) 10:26:250448デフォルトの名無しさん
2010/06/10(木) 12:44:29rssで取得したデータなんですが、titleの中を日本語にパースする方法がわかりません。
<item>
<title>kabuwakitahama: イラン人たちが国内で
覚醒剤を製造していた
というニュース。警察
の話では終戦直後はと
もかくその後国内では
製造されていないとい
うことです。でも私が
昔覚醒剤について取材
した時には国内で製造
していました。国内で
の製造はないと信じて
いるためいつまでも根
絶出来ないのでは。株
以外の話でした。</title>
0449デフォルトの名無しさん
2010/06/10(木) 13:47:190450デフォルトの名無しさん
2010/06/10(木) 15:06:14そのままでいいみたいでした。
"北"ってそのままマルチバイトなんですね
0451デフォルトの名無しさん
2010/06/10(木) 17:16:03どういう事か分からんです
0452デフォルトの名無しさん
2010/06/10(木) 17:32:020453デフォルトの名無しさん
2010/06/10(木) 20:13:310454デフォルトの名無しさん
2010/06/14(月) 23:35:09Python-2.6.5/Lib/ctypes/__init__.py
383 if _os.name in ("nt", "ce"):
384
385 class WinDLL(CDLL):
386 """This class represents a dll exporting functions using the
387 Windows stdcall calling convention.
388 """
389 _func_flags_ = _FUNCFLAG_STDCALL
Python-2.6.5/Modules/_ctypes/callproc.c
777 #if defined(MS_WIN32) && !defined(MS_WIN64) && !defined(_WIN32_WCE)
778 if ((flags & FUNCFLAG_CDECL) == 0)
779 cc = FFI_STDCALL;
780 #endif
みたいな感じでcygwinでSTDCALLなWin32API呼出しはできないようにされてる風に見えるのですが
>>> import ctypes
>>> user32 = ctypes.CDLL('user32.dll')
>>> user32.MessageBoxW(0, u'波浪ワールド', u'てすと',0,0)
で呼び出せています。
私のPCはメッセージボックスを表示させるたびに死へと近づいてるのでしょうか?
それとも私の知らないなにかが良きに計らってくれて安全が保たれてるのでしょうか?
教えてください
0455デフォルトの名無しさん
2010/06/15(火) 14:04:580456デフォルトの名無しさん
2010/06/15(火) 16:59:39win版だと普通にエラーでるよ
0457デフォルトの名無しさん
2010/06/15(火) 18:20:230458デフォルトの名無しさん
2010/06/15(火) 19:36:410459デフォルトの名無しさん
2010/06/15(火) 19:56:440460デフォルトの名無しさん
2010/06/15(火) 23:26:300461デフォルトの名無しさん
2010/06/17(木) 19:37:150462デフォルトの名無しさん
2010/06/18(金) 07:58:23java-jaと似てる。
0463デフォルトの名無しさん
2010/06/18(金) 08:16:18I said don't make User's Group were slepted in Japan
0464デフォルトの名無しさん
2010/06/18(金) 08:20:32怪しい外人はウザいからなんとかしたほうがいいよね。
0465デフォルトの名無しさん
2010/06/18(金) 08:22:220466デフォルトの名無しさん
2010/06/18(金) 08:36:080467デフォルトの名無しさん
2010/06/18(金) 08:44:40おかしいだけで
0468デフォルトの名無しさん
2010/06/18(金) 10:39:450469デフォルトの名無しさん
2010/06/18(金) 11:39:400470デフォルトの名無しさん
2010/06/18(金) 11:41:080471デフォルトの名無しさん
2010/06/18(金) 12:05:120472デフォルトの名無しさん
2010/06/18(金) 19:33:220473デフォルトの名無しさん
2010/06/19(土) 03:50:420474デフォルトの名無しさん
2010/06/19(土) 11:09:380475デフォルトの名無しさん
2010/06/19(土) 11:47:140476デフォルトの名無しさん
2010/06/19(土) 13:05:550477デフォルトの名無しさん
2010/06/19(土) 13:39:410478デフォルトの名無しさん
2010/06/19(土) 13:41:58高学歴
0479デフォルトの名無しさん
2010/06/19(土) 13:46:09視野の狭い経験で語っちゃうとプログラマとして終わり
0480デフォルトの名無しさん
2010/06/19(土) 13:49:290481デフォルトの名無しさん
2010/06/19(土) 13:57:010482デフォルトの名無しさん
2010/06/19(土) 14:00:130483デフォルトの名無しさん
2010/06/19(土) 14:02:190484デフォルトの名無しさん
2010/06/19(土) 14:04:160485デフォルトの名無しさん
2010/06/19(土) 14:05:53http://www.ndl.go.jp/portrait/JPEG_L/423-457/s0218l.jpg
0486デフォルトの名無しさん
2010/06/19(土) 14:10:010487デフォルトの名無しさん
2010/06/19(土) 14:12:100488デフォルトの名無しさん
2010/06/19(土) 14:13:530489デフォルトの名無しさん
2010/06/19(土) 14:14:070490デフォルトの名無しさん
2010/06/19(土) 14:15:020491デフォルトの名無しさん
2010/06/19(土) 14:15:510492デフォルトの名無しさん
2010/06/19(土) 14:24:210493デフォルトの名無しさん
2010/06/20(日) 00:31:43アメリカだと(端折られて)「しんっ」になる。
イギリスなら(淡白に)「しんく」
thankは「みっつのキウイ」って感じで、
アメリカなら「さんきう」
イギリスならもちろん「さんきうい」
問題のthrillerは
アメリカなら「左様なら」みたいに「さやぅぬらー」でいい
イギリスなら「サウナなら」みたいに「さうぬあーら」
0494493
2010/06/20(日) 00:33:120495デフォルトの名無しさん
2010/06/20(日) 01:15:32linux→windowsだとpickle.loads(key)したときにこける。
_fastmathがwindowsにないのが問題みたいなんだけど、どうしたらいいかな?
・・・って書いてる途中にpycryptoのソースを覗くことを閃いた。
import Crypto.PublicKey.RSA
Crypto.PublicKey.RSA._fastmath = None
Crypto.PublicKey.RSA.generate = Crypto.PublicKey.RSA.generate_py
Crypto.PublicKey.RSA.construct = Crypto.PublicKey.RSA.construct_py
送る側のimportのところに3行追加。
_slowmathってのがあるらしいけど、インストールしたpycryptoにはなかったんで。
他に悩む人がいるかどうかわからないけど、
解決してうれしいのでとりあえず書いときます。
0496デフォルトの名無しさん
2010/06/20(日) 17:44:050497デフォルトの名無しさん
2010/06/21(月) 18:10:56かと思って覗いてみたが随分寂しいことになってるんだな
業務に携わる人達ってのはこんな所には来ないってことなんだろうか
0498デフォルトの名無しさん
2010/06/21(月) 20:45:530499デフォルトの名無しさん
2010/06/21(月) 22:53:110500デフォルトの名無しさん
2010/06/21(月) 22:54:570501デフォルトの名無しさん
2010/06/21(月) 23:17:130502デフォルトの名無しさん
2010/06/21(月) 23:19:150503デフォルトの名無しさん
2010/06/23(水) 20:59:28Python 2.6.4
です。
str1="ディレクトリのパス"
str2=".jpeg"
str3="piyo"
となっている時、
str1の中およびそのサブディレクトリ以下のファイルで、
ファイル名がstr2で終わる物、ファイル名にstr3が含まれる物
を一気に削除するようなpythonプログラムは
どう書けばよいでしょうか?
str3の方はファイルを1つずつ回って、
if str3 in ファイル名 :
で行けそうですが、str2はどうすればよいでしょうか。
よろしくお願い申し上げます。
0504503
2010/06/23(水) 21:13:560505デフォルトの名無しさん
2010/06/23(水) 21:15:47if ファイル名.endswith(str2):
0507デフォルトの名無しさん
2010/06/25(金) 05:41:58内部的に C++ の例外が投げられます。
python で C++ の例外を適切に catch するにはどうしたら良いのでしょうか。
try:
hoge()
except HisEception, e:
print e
とすると、
~~~~~~~~ (C++ exception)
のように表示されて、そのまま abort します。
try:
hoge()
except:
pass
だと問題ないのですが。
0508デフォルトの名無しさん
2010/06/26(土) 10:01:54適切な例外ならC++側で例外を拾って、Pythonの例外でくるんで返す。
ttp://www.python.jp/doc/release/ext/errors.html
0509デフォルトの名無しさん
2010/06/26(土) 20:32:14>内部的に C++ の例外が投げられます。
って書いてあるのに・・・
0510デフォルトの名無しさん
2010/06/26(土) 22:07:471. C++製Python用モジュールとPythonインタプリタの間に1つ噛ませて
そちらでC++例外を処理して、Python例外にする。
2. PythonインタプリタをC++の例外を処理できるように改造する。
0511デフォルトの名無しさん
2010/06/26(土) 22:33:17それで問題なくなるならPythonも例外を投げてるはずなんだけど、何投げてる?
それか、諦めてexcept:で受けてしまうのがいいのかも。
0512デフォルトの名無しさん
2010/06/27(日) 03:09:43空の関数でも、コンパイラはインデントで判断できるのでは?
0513デフォルトの名無しさん
2010/06/27(日) 03:26:30モジュールと呼んでいいのでしょうか?
それとも他のプログラムから読み込まれることを前提としたファイルのみがモジュールでしょうか?
0514デフォルトの名無しさん
2010/06/27(日) 09:26:420515デフォルトの名無しさん
2010/06/27(日) 09:35:42最初大変だったけど、慣れてしまえばどってことない。
デモが便利で助かる。webにもサンプルいっぱい落ちてるし。
0516デフォルトの名無しさん
2010/06/27(日) 09:39:44Blender.exeのフォルダにGANGu.dllを入れてBlender.exe中でそれを使うスクリプトを使うと
pyのパス line 15 in <module>
import GANGu
Import Error : No module named GANGu
と出ます。これはGANGu.dllのパスが間違っていて見れないと言う意味でしょうか?
Python25です。どうすればできますか?
0517デフォルトの名無しさん
2010/06/27(日) 10:20:41tkinterだとdndできないんだ・・
参考にさせてもらいます
0518デフォルトの名無しさん
2010/06/27(日) 11:05:49スクリプトと同じ場所に置いとけ
0519デフォルトの名無しさん
2010/06/27(日) 12:58:30一行で書ける
0520デフォルトの名無しさん
2010/06/27(日) 13:10:58def func1(hoge):
fuga
def func2(hoge):
def func3(hoge):
hige
どうだろう
0521デフォルトの名無しさん
2010/06/27(日) 15:10:260522デフォルトの名無しさん
2010/06/27(日) 15:57:52Pythonはどの程度できるのか
Webプログラミングって具体的にはどんなことがしたいのか
そういうこと書かないとまともな答えは返ってこないと思うよ
0523デフォルトの名無しさん
2010/06/27(日) 16:05:37そうですね。
まだちょっと勉強不足なので>>521は
無視して下さい。
ありがとうございました
0524デフォルトの名無しさん
2010/06/27(日) 17:54:460525デフォルトの名無しさん
2010/06/27(日) 18:07:54みんなのパイソン webアプリ編
0526デフォルトの名無しさん
2010/06/28(月) 16:49:57/usr/local/に配置して、
一般ユーザで実行したら、
pycファイルが生成される時に問題になりますよね。
pycファイルが生成されるディレクトリは一般ユーザにも書き込み可にしておくのでしょうか?
それともrootで一度全部実行してpycファイルを生成しておくのでしょうか?
0527デフォルトの名無しさん
2010/06/28(月) 19:05:39事前にコンパイルするもの。
python -m compileall /path/to/lib
で、再帰的にコンパイルできるはず。
0528デフォルトの名無しさん
2010/06/28(月) 22:42:12ならない
毎回pycが作られずに実行されるだけ
0529デフォルトの名無しさん
2010/06/29(火) 01:11:200530デフォルトの名無しさん
2010/06/29(火) 01:14:123-5年後
0531デフォルトの名無しさん
2010/06/29(火) 04:04:15>>528
よく分かりました
ありがとうございました。
0532デフォルトの名無しさん
2010/06/29(火) 06:53:28去年も同じこと聞いた。
来年も同じこと聞くのかな。
0533デフォルトの名無しさん
2010/06/29(火) 07:17:260534デフォルトの名無しさん
2010/06/29(火) 07:20:140535デフォルトの名無しさん
2010/06/29(火) 08:47:09ちゃんと前進しているよ。
PyQt、CherryPy、Cython、lxml、docutils、etc... がPython3対応しているし、
今年のGSoCでもいろいろな有名プロダクトがPython3対応プロジェクトを
上げてるし、Python2最後となるPython2.7のリリース目前で、すでに開発者
MLはPython3への移行をどうやって加速するかの話題で一杯。
0536デフォルトの名無しさん
2010/06/29(火) 08:48:5010年後くらいに登場して、15年後くらいに普及するんじゃない?
0537デフォルトの名無しさん
2010/06/29(火) 09:49:310538デフォルトの名無しさん
2010/06/29(火) 09:52:120539デフォルトの名無しさん
2010/06/29(火) 23:04:530540デフォルトの名無しさん
2010/06/30(水) 12:34:00おれも自分のプログラムをいくつか、3.1で動くようにしてみた。
が、やってみて、ふと思ったのは、3.1に対応するメリットって
なんだろう?ってこと。
3.1で欲しい機能のほとんどは、2.xにバックポートされてるし、
対応ライブラリもとぼしいのにって考えたら、何のためにやって
んのか、よくわからなくなってしまった…
0541デフォルトの名無しさん
2010/07/01(木) 00:16:33でも、それは2.7で終わりで、これからは新しい機能はPython3にしか導入されない。
New GIL はPython3.2から搭載されるし、unladen swallowで開発されたLLVM JITは
Python 3.3 で configure オプションになるべくPython3用に開発が継続している。
0542デフォルトの名無しさん
2010/07/02(金) 10:46:13これは
context.Dr7とconditionで論理和をとり、その値をcontext.Dr7に
代入してさらに((available * 4)+16)分だけ左にビットシフトするという
意味ですよね?
0543デフォルトの名無しさん
2010/07/02(金) 10:55:520544デフォルトの名無しさん
2010/07/02(金) 11:07:12context.Dr7 |= condition << ((available * 4) + 16)
は
context.Dr7 = context.Dr7 | condition << ((available * 4) + 16)
と等価
<< と | の優先順位は << のほうが先なので
condition を avaialbe * 4 + 16 で左シフトしてから
context.Dr7 と論理和とって context.Dr7 に代入するって意味
0545544
2010/07/02(金) 11:08:050546デフォルトの名無しさん
2010/07/02(金) 11:11:21サーセン;; c言語ちょっとかじったレベルで挑戦してます;;
>>544
ああ なるほど優先順位が高いんですね ありがとうござます><
0547デフォルトの名無しさん
2010/07/03(土) 00:07:02結果的に正しいけど、
context.Dr7 = context.Dr7 | (condition << ((available * 4) + 16))
とした方がいいと思うよ。
a *= 2+1 と等価なのは、
a = a * 2+1 じゃなく
a = a * (2+1) だから。
0548デフォルトの名無しさん
2010/07/03(土) 00:09:55a *= 2 + 1
で言いと思うぞ
っつーかここらは C でも同じはずなんだが
0549デフォルトの名無しさん
2010/07/03(土) 00:48:13高級言語だとそこまで需要高くないと思うし、関数かメソッドで十分じゃね?
0550デフォルトの名無しさん
2010/07/03(土) 00:51:46ちょwちゃんと嫁w
0551デフォルトの名無しさん
2010/07/03(土) 00:58:48さすがに
a *= 2 + 1
を
a = a * 2 + 1
と解釈するアホはおらんだろ
0552デフォルトの名無しさん
2010/07/03(土) 01:00:08なんでSQLにビット演算子入れなかったんだろう
0553デフォルトの名無しさん
2010/07/03(土) 01:30:34的外れなレスだな。
0554デフォルトの名無しさん
2010/07/03(土) 01:33:49じゃあ
context.Dr7 |= condition < ((available * 4) + 16)
だったら?
0555デフォルトの名無しさん
2010/07/03(土) 01:39:22>>544
0556デフォルトの名無しさん
2010/07/03(土) 01:49:38え?ほんとに?
0557デフォルトの名無しさん
2010/07/03(土) 01:58:00class context:
Dr7=7
condition=100
available=0
context.Dr7 |= condition < ((available * 4) + 16)
# ==> context.Dr7 = 7
context.Dr7 = context.Dr7 | condition < ((available * 4) + 16)
# ==> context.Dr7 = False
0558デフォルトの名無しさん
2010/07/03(土) 03:34:10止め方がわからないと無限ループに入ったときに為す術がないので聞きたいです。
0560デフォルトの名無しさん
2010/07/03(土) 20:00:30Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
import cairo
File "C:\Python26\lib\site-packages\cairo\__init__.py", line 1, in <module>
from _cairo import *
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
???
0561デフォルトの名無しさん
2010/07/03(土) 20:33:38どうやってインストールしたかぐらいは書け。
0562デフォルトの名無しさん
2010/07/03(土) 21:17:09どこが???なんだ
0563デフォルトの名無しさん
2010/07/03(土) 21:21:390564デフォルトの名無しさん
2010/07/03(土) 21:30:210565デフォルトの名無しさん
2010/07/03(土) 21:33:110566デフォルトの名無しさん
2010/07/03(土) 23:07:57python2.6.5を使っていて、pycairoを使おうとしまして
「pycairoモジュールについて http://python.matrix.jp/modules/pycairo.html」
ここのインストーラへのリンクが切れてたりするので、適当にpy2.6用を探してきました↓
http://sourceforge.jp/projects/sfnet_ecell/downloads/Third-party%20Packages/Windows/pycairo-1.8.8.win32-py2.6.exe/
http://sourceforge.jp/projects/sfnet_ecell/downloads/Third-party%20Packages/Windows/pygtk-2.16.0.win32-py2.6.exe/
gtkのインストールは
gtk+-bundle_2.20.0-20100406_win32でで、
http://kyle-in-jp.blogspot.com/2009/03/pycairowindows.html
ここの
pkg-config --cflags gtk+-2.0
このコマンドを実行しただけなんですが、普通にインスコしないと駄目なんでしょうか
バージョンのミスマッチとかですか?一体どうすればいいのやら
0567デフォルトの名無しさん
2010/07/03(土) 23:22:130568デフォルトの名無しさん
2010/07/03(土) 23:25:11_cairo.dllも入ってるはずなのに、どういうわけか入ってないって内容のエラー。
身に覚えがないなら、よそからpycairo拾ってきたらいいと思う。
0569デフォルトの名無しさん
2010/07/04(日) 00:57:190570568
2010/07/04(日) 01:57:39ごめん。俺が間違ってた。
>>568なら
ImportError: No module named _cairo
って出るはずだな。
0571デフォルトの名無しさん
2010/07/04(日) 08:06:15そのdllがあればいいんですか?
0572デフォルトの名無しさん
2010/07/04(日) 23:41:32何度も読み返し、丸二日自力で考えたのですが、どうしても書いてある意味が分かりません。
特に”実際のデータ”、”実体”が何なのか分かりません。
結局”初期化メソッド”、”インスタンス”とは何なのでしょうか?
datetime.date(2030,4,14)
ところで、dateはデータ型の名前そのものですが、見方を変えると、datetimeが持っているdateという関数のようにも解釈できます。
つまり、ある型”の実際のデータ”を用意するには、その型と同じ名前のメソッドを呼び出せばいいのです
この”型と同じメソッド”の事を、特に初期化メソッドと呼びます。また、このように生成されたデータ型の”実体”の事を、特に、インスタンスと呼びます。
0573デフォルトの名無しさん
2010/07/05(月) 00:24:31さっさと捨てろ
0574デフォルトの名無しさん
2010/07/05(月) 00:41:35まあその本はさっさと投げ捨ててプログラム書いてみた方が早いよ
0575デフォルトの名無しさん
2010/07/05(月) 00:48:40ほんとはオブジェクト指向なんて、初心者のうちから叩き込まれても何が嬉しいのか分からないんだよ。
だから今はあっさり流して、いつかプログラムが自分でも結構かけるようになった日に見返して、
なるほど、そういう意味だったんだと気づけたらそれでいいのだけど。
※上級者の方へ: 以下、厳密でないのは分かっている。間違いの指摘や補足は、初心者を困らせないような前置きをしてから頼む。
君は、日付を扱いたい。
君が簡単に日付を扱えるように、Pythonの作者たちが日付を扱うための「型」としてdateを用意してくれている。
「データ型」と「型」は同じものと考えていい。
そして、date型を作るためにはどうすればいいか? datetime.dateを関数呼び出しのように使えばいい。
それが「見方を変えると、datetimeが持っているdateという関数のようにも解釈できます」の意味。
別に、makeDate()でもdateFactory()でも名前なんて何でもよかったんだけど、
Pythonでは、型の名前を関数呼び出しのようにすると型を作れる、というルールになっている。
(他にもそういうルールになってる言語も結構あるから、そこそこメジャーなルールと言えるけど)
date()を呼び出しのようにすると、Pythonでは、
1. date型を作り出す
2. date.__init__()って関数を、最初の引数に1で作り出した型、第二引数以降にdate()の引数を入れて呼び出す
ということが行われる。
ここで、date.__init__()関数は、dateを使うための準備をするための関数で「初期化メソッド」と呼ばれている。
ところで、dateがどういう風にできているのか、というのを見ると、
dateはこんな関数を持ってるよ、といった内容の「クラス定義」だけが書いてある。
実際に日付のデータを持っているのはdateそのものではなく、「date()で作り出したもの」のみ。
そういう「クラス定義」から作り出したものを「インスタンス」と呼んでおり、インスタンスが日付のデータを実際に持っている。
つまり、「クラス定義」という作り方マニュアルを使って、作り出した「実体」が「実際のデータ」を持っているインスタンス、ということだ。
……って、わっかんねーよなぁ。
0576デフォルトの名無しさん
2010/07/05(月) 01:24:420577デフォルトの名無しさん
2010/07/05(月) 02:06:04>>572
datetimeはモジュールで、その中にはdateというクラスが入っている
クラスは「呼び出し可能」であり、関数のように呼び出すことができる
呼び出すことでクラスはインスタンスを生成して返す
下はdateクラスからインスタンスd1, d2を生成し、属性の参照とメソッド呼び出しをする例
>>> import datetime
>>> d1 = datetime.date(1945, 8, 15)
>>> d2 = datetime.date(2000, 1, 31)
>>> d1.year, d2.year
(1945, 2000)
>>> d1.isoformat(), d2.isoformat()
('1945-08-15', '2000-01-31')
初期化メソッド(たぶん__init__のこと)については自分でクラス定義するようになったらわかるよ
0578デフォルトの名無しさん
2010/07/05(月) 02:10:570579572
2010/07/05(月) 02:20:25本当に本当にありがとうございます!!!
クラスやinitなどまだ勉強していない部分なので詳細は理解できませんが、中で何をやっているのか仕組みは分かってきました。
明日早いのに感動して色々調べてたらこんな時間に・・
入門用の本はやさしい書き方なのですが、自分のように論理的に納得できないと前に進めないタイプは
ちょっと難しくても詳しく書いてある本の方がいい気がしてきました。
0580デフォルトの名無しさん
2010/07/05(月) 02:23:010581デフォルトの名無しさん
2010/07/05(月) 02:54:46理由1(実装による理由)
Pythonでは名前空間がname manglingもしない単純な辞書になってるから、それをしようと思ったらすごく面倒になるし、
関数の引数に型をつけないから、引数の数でしか曖昧性を排除する手段がない。
けど、引数の数だけでいいんだったら、可変数引数をとればいいだけのこと。
理由2(ややPython信者めいた理由)
そもそもコンストラクタを複数作る必要はない。
どうせどれも似たような処理だったり、似てはいなくても共通部分が多く存在することは多い。
C++やJavaで、別のコンストラクタを呼び出すだけのコンストラクタを作ったことがある人も多いのでは?
もともとコンストラクタ(に限らず、同名の関数)を複数作らなければならないのは、
型に縛りがあることや、可変長引数が扱いにくい/扱えないことにあるので、
それが可能なPythonには、コンストラクタ(や関数)をいくつも作る必要がない。
0582デフォルトの名無しさん
2010/07/05(月) 03:22:04>>572の"初期化メソッド"ってつまり、コンストラクタの事?
0583デフォルトの名無しさん
2010/07/05(月) 03:27:02コンストラクタに複雑な引数渡すくらいならclassmethodからインスタンス返した方がいいよ
win32apiみたいなのはごめんだ
0584デフォルトの名無しさん
2010/07/05(月) 12:39:000585デフォルトの名無しさん
2010/07/07(水) 11:34:2110000回反復し、10〜100回くり返し試行するため
実行時間が数時間かかります
無駄な処理を省き8時間かかっていたものを4,5時間までに短縮できましたが
まだまだ遅すぎます。
そこでcythonなどを使おうと調べてるのですが、
解説サイトが少なく(英語読めませんごめんなさい)、使い方がほとんどわかりません
わかりやすい解説サイトもしくは使い方を教えてください。
まずは、簡単なやつから作ろうと思ってます。
その次の段階としてルーレット選択は全てcythonなどで実行できるようにしたいです。
ちなみにpython3使っていて、2.xにする気はほとんどないです。
0586デフォルトの名無しさん
2010/07/07(水) 12:21:42そのルーレット選択とかいう、Cythonで書きたいコードの元になるPythonコードを貼って。
コードを一切見せずに日本語でやりたいことだけ言われても、どう返していいかわからない。
0587デフォルトの名無しさん
2010/07/07(水) 17:11:22# 次の都市決定
def next_city(self,tau,eta):
""" 評価値計算 """
val_L = [ (tau[self.pre][omega]**self.alufa)*eta[self.pre][omega] for omega in self.omega_list ] # 未訪問評価値リスト作成
s = sum(val_L) # 評価値の合計
""" 評価値が0の時 """
if not s: # 評価値の合計が0なら
val_L = [ eta[self.pre][omega] for omega in self.omega_list ] # 距離の評価値のみでリスト作成
s = sum(val_L) # 評価値の合計更新
""" 相対値 """
val_L = [(i/s) for i in val_L] # 相対的な評価値
#s = sum(val_L) # 評価値の合計更新
""" ルーレット選択 """
tmp_sum = 0 # 合計
val_prob_L = [] # 評価値の確率リスト
for val in val_L: # 評価値リスト
tmp_sum += val # 評価値加算
#tmp_sum += val/s # 評価値加算
val_prob_L.append(tmp_sum) # 評価値確率リスト作成
self.pre = self.omega_list[bisect.bisect(val_prob_L,random.random())] # 次の都市
とりあえずはこの部分をcythonで書きたいです
tau,eta は、n*nの二次元リストです。 今、nは51です。
self.pre:現在の場所,omega未訪問の場所
eta:現在地と未訪問の場所との距離(の逆数)
あとわかりづらい部分あったら言ってください
基本的に独学なので変なコードですいません
コメントは自分でわかりやすいように書いてあるやつなので表現が間違ってることもあります
0588デフォルトの名無しさん
2010/07/07(水) 17:13:54# 次の都市決定
def next_city(self,tau,eta):
""" 評価値計算 """
val_L = [ (tau[self.pre][omega]**self.alufa)*eta[self.pre][omega] for omega in self.omega_list ] # 未訪問評価値リスト作成
s = sum(val_L) # 評価値の合計
""" 評価値が0の時 """
if not s: # 評価値の合計が0なら
val_L = [ eta[self.pre][omega] for omega in self.omega_list ] # 距離の評価値のみでリスト作成
s = sum(val_L) # 評価値の合計更新
""" 相対値 """
val_L = [(i/s) for i in val_L] # 相対的な評価値
#s = sum(val_L) # 評価値の合計更新
""" ルーレット選択 """
tmp_sum = 0 # 評価値の合計
val_prob_L = [] # 評価値の確率リスト
for val in val_L: # 評価値リスト
tmp_sum += val # 評価値加算
#tmp_sum += val/s # 評価値加算
val_prob_L.append(tmp_sum) # 評価値確率リスト作成
self.pre = self.omega_list[bisect.bisect(val_prob_L,random.random())] # 次の都市
0589デフォルトの名無しさん
2010/07/07(水) 17:46:060590デフォルトの名無しさん
2010/07/07(水) 17:50:410591デフォルトの名無しさん
2010/07/07(水) 17:53:48イギリス:シーソン
ロシア:スサン
ドイツ:サイスン
イタリア:シッスナ
フランス:スーさん
中国:シェンシゥン
韓国:サアソン
日本:なんて読むの?
0592デフォルトの名無しさん
2010/07/07(水) 18:31:220593デフォルトの名無しさん
2010/07/07(水) 21:46:26英語わからないっつってもこれくらいならなんとかなるんじゃないの?
0594デフォルトの名無しさん
2010/07/07(水) 22:02:010595デフォルトの名無しさん
2010/07/08(木) 00:01:16Pythonを選んだ理由を教えてください。
0596デフォルトの名無しさん
2010/07/08(木) 00:03:350597デフォルトの名無しさん
2010/07/08(木) 00:06:220598デフォルトの名無しさん
2010/07/08(木) 00:13:290599デフォルトの名無しさん
2010/07/08(木) 00:15:230600デフォルトの名無しさん
2010/07/08(木) 00:18:190601デフォルトの名無しさん
2010/07/08(木) 00:19:390602デフォルトの名無しさん
2010/07/08(木) 01:29:250603デフォルトの名無しさん
2010/07/08(木) 01:40:180604デフォルトの名無しさん
2010/07/08(木) 03:36:56def say_hello_to(name):
print("Hello %s!" % name)
C:\Users\test\>python C:\Python31\Scripts\cython.py hello.pyx
Error converting Pyrex file to C:
------------------------------------------------------------
...
def say_hello_to(name):
^
------------------------------------------------------------
C:\Users\test\hello.pyx:1:23: Unrecognized character
こんなエラーが出るんですがどうしたらいいですか?
0605デフォルトの名無しさん
2010/07/08(木) 07:54:04BOM付きUTF-8で書いてるんじゃない?
0606デフォルトの名無しさん
2010/07/08(木) 10:28:55ありがとうございます
どこで、BOM付きUTF-8に設定しているのかわからずに、
とりあえず、適当にエンコードしてみたら、
UTF-8 - Win(CR +LF) にしたら、同じエラー
UTF-8 - Unix(LF) にしたら通りました。
で新たなエラーが
thon setup.py build_ext --inplace
running build_ext
cythoning hello.pyx to hello.c
building 'hello' extension
error: Unable to find vcvarsall.bat
調べた結果
http://pythonlife.seesaa.net/archives/200909-1.html
>MSVCかMinGWまたはCygwin上のgccが必要となる。
とあり、MinGWは入っているので、これを利用し、
>後で判ったことだが、PythonでMinGWをdefaultで使いInstallする場合には、Python26/Lib/distutilsに
>次の内容distutils.cfgとして作成しておくと良いそうだ。今後は概ね「setup.py install」だけで大丈夫かもしれない。
>[build]
>compiler=mingw32
Python31/Lib/distutils/distutils.cfgを追加し、エラーもなくコンパイル出来ました。
import helloとし、実行した結果なんとかできました。
あとは、setup.pyの書き方がいまいち理解してないので、もう少し勉強してみます。
0607デフォルトの名無しさん
2010/07/08(木) 10:58:540608デフォルトの名無しさん
2010/07/08(木) 11:31:25----
import hello
----
C:\Users\test>python tmp.py
Traceback (most recent call last):
File "tmp.py", line 1, in <module>
import hello
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8d in position 22: unexpected code byte
対話モードだと出来るのですが、テキストで.pyを作成して実行すると上記のエラーが起きます
これは何が問題になっているのでしょうか?
C:\Users\test>python
Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import hello
>>> hello.say_hello_to()
Hello!
>>>
0609デフォルトの名無しさん
2010/07/08(木) 12:03:22emacs23使ってます
.emacs.elを書き換えて
デフォルト保存をutf-8から,utf-8-auto-unixにしたらコンパイルは問題なくなりました
0610デフォルトの名無しさん
2010/07/08(木) 20:53:18マジレスすると、numpyとmatplotlibが使いたかった
そんだけ
0611デフォルトの名無しさん
2010/07/09(金) 01:57:53エラーメッセージはちゃんと読んだ?
0612デフォルトの名無しさん
2010/07/09(金) 13:00:11ERRが返ってくるんだけど、うちだけ?
import curses
stdscr = curses.initscr()
maxy, maxx = stdscr.getmaxyx()
stdscr.addch(maxy - 1, maxx - 1, 'A')
curses.endwin()
File "bugtest.py", line 4, in <module>
stdscr.addch(maxy - 1, maxx - 1, 'A')
_curses.error: addch() returned ERR
stdscr.addstr()でも同じ。
Cからだといけるんだけど、Pythonで回避法ってある?
Python 2.5.1と2.6.1で確認済。Macです。
0613デフォルトの名無しさん
2010/07/09(金) 14:31:15Cの方は単に返り値を無視してるだけでは?
scrollokとかするとエラーでないっぽい。
0614デフォルトの名無しさん
2010/07/09(金) 14:45:27try:〜except: passでとりあえず回避。Thx。
0615デフォルトの名無しさん
2010/07/10(土) 01:09:38unicodeデコードエラー
解読出来ませんでした。
どうやったら直るのでしょうか・・・・?
文字コードをいくつか変えて実行してもダメで、どうすればいいかわからないです。
0616デフォルトの名無しさん
2010/07/10(土) 01:14:06要点は
utf8' codec can't decode byte 0x8d
と
unexpected code byte
0617名無しさん@そうだ選挙に行こう
2010/07/10(土) 12:34:54>>> repr(open('tmp.py', 'rb').read())
を実行してみて。
0618名無しさん@そうだ選挙に行こう
2010/07/10(土) 20:36:35何が原因でしょうか?
0619名無しさん@そうだ選挙に行こう
2010/07/10(土) 20:39:49コマンドプロンプトから起動してね
0620名無しさん@そうだ選挙に行こう
2010/07/10(土) 20:40:50それしかないんでしょうか
0621名無しさん@そうだ選挙に行こう
2010/07/10(土) 20:45:18というか起動はしてるんだけど
処理を終えたかエラーで止まったかでプロンプトが閉じちゃってるんだと思うよ
これ以上はwindow.pyの内容と何がしたいのか(どういう結果がほしいのか)が
わからないとなんともいえない
0622名無しさん@そうだ選挙に行こう
2010/07/10(土) 20:46:47なるほど、解決しました
0623名無しさん@そうだ選挙に行こう
2010/07/10(土) 23:55:070624名無しさん@そうだ選挙に行こう
2010/07/11(日) 00:24:470625名無しさん@そうだ選挙に行こう
2010/07/11(日) 01:26:35C:\Users\test>python tmp.py
Traceback (most recent call last):
File "tmp.py", line 1, in <module>
import hello
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8d in position 22: unexpected code byte
C:\Users\test>python
Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] onwin32
Type "help", "copyright", "credits" or "license" for more information.
>>> #utf-8 Win
>>> repr(open('tmp.py', 'rb').read())
"b'import hello\\r\\nhello.say_hello_to()\\r\\n'"
>>> #utf-8 Unix
>>> repr(open('tmp.py', 'rb').read())
"b'import hello\\nhello.say_hello_to()\\n'"
>>>
でした。
>>616
>UnicodeDecodeError: 'utf8'コーデックは位置22でバイト0x8dを解読できません: 予期していなかったコードバイト
>'utf8'コーデックはバイト0x8dを解読できません。
0x8d がどれを指してるのかが・・・
>予期していなかったコードバイト
0x8dがダメなんですよね?
utf8自体がダメなんですかね
飯食って、グレープフルーツゼリー作って、そのあと意識があれば調べてみます
0626名無しさん@そうだ選挙に行こう
2010/07/11(日) 02:18:160627625
2010/07/11(日) 02:20:59結局よくわからないです
hello.pydがいけないんですか?
この中なら\x8d は何回か出てきてます
でもそしたら、対話モードでもimport出来ないはず...?
今度こそ飯を
0628名無しさん@そうだ選挙に行こう
2010/07/11(日) 02:33:410629名無しさん@そうだ選挙に行こう
2010/07/11(日) 04:30:080630名無しさん@そうだ選挙に行こう
2010/07/11(日) 04:42:33そのためにpyscripter入れたけどダメでした
0631名無しさん@そうだ選挙に行こう
2010/07/11(日) 04:49:590632名無しさん@そうだ選挙に行こう
2010/07/11(日) 07:45:360633名無しさん@そうだ選挙に行こう
2010/07/11(日) 09:23:340634名無しさん@そうだ選挙に行こう
2010/07/11(日) 10:08:13pycじゃなくてpyd?
よくわかんないから関連ファイル全部まとめてzipでうpしてくれると話が早い
0635名無しさん@そうだ選挙に行こう
2010/07/11(日) 12:46:52対話モードと直接実行時でロードしている hello モジュールが違ってる気がする。
tmp.py で
try:
import hello
except UnicodeDecodeError as e:
print(repr(e.object), (e.start, e.end))
import os, imp
print(os.path.abspath(imp.find_module("hello")[1]))
0636名無しさん@そうだ選挙に行こう
2010/07/11(日) 12:47:380637名無しさん@そうだ選挙に行こう
2010/07/11(日) 12:51:54'\r' を読み取る事を考慮していない Cython のバグ
0638名無しさん@そうだ選挙に行こう
2010/07/11(日) 12:59:03一番最初に出会って、頻繁に出るのはBOM関連のエラーだな
たまにBOM付きじゃないとダメってのがあるけど基本なしですれば問題ない
まずBOM無しUTF-8を既定にできるエディタをさがすべき
0639名無しさん@そうだ選挙に行こう
2010/07/11(日) 13:38:55で、そのBOM関連エラーでどうやって0x8dが出るんよ。
0640名無しさん@そうだ選挙に行こう
2010/07/11(日) 13:54:110641名無しさん@そうだ選挙に行こう
2010/07/11(日) 14:03:33どうしても答えが欲しいなら別言語に移ったほうがよさそう
恐らく、このまま甘やかすとこのスレに日記帳のように書き込まれる
0642名無しさん@そうだ選挙に行こう
2010/07/11(日) 14:20:06>>634はスルーしてね
>>637のとおり、CPythonでコード書くときには\rを落としとけってことなのね
http://groups.google.com/group/pinoy-python-users/browse_thread/thread/f558512bdf42134b
> Just remember to replace CR/LF endings in Windows to LF. Use Notepad+
> +'s Edit > EOL Conversion to convert line-endings or else Cython will
> argue about invalid characters when compiling.
0643名無しさん@そうだ選挙に行こう
2010/07/11(日) 14:21:010644名無しさん@そうだ選挙に行こう
2010/07/11(日) 14:57:16Qt4(C++)の方でQHogehogeクラスを継承して定義したQHagehageクラスを
PyQt4から使用するにはどのような使い方をすればよいのでしょうか?
0645名無しさん@そうだ選挙に行こう
2010/07/11(日) 14:59:19WxPythonかGTK使ってください。
0646名無しさん@そうだ選挙に行こう
2010/07/11(日) 15:09:310647名無しさん@そうだ選挙に行こう
2010/07/11(日) 15:17:530648名無しさん@そうだ選挙に行こう
2010/07/11(日) 15:30:450649648
2010/07/11(日) 15:32:220650名無しさん@そうだ選挙に行こう
2010/07/11(日) 18:03:430651名無しさん@そうだ選挙に行こう
2010/07/11(日) 18:21:160652625
2010/07/11(日) 21:38:48ありがとうございます
C:\Users\test>python tmp.py
b'C:\\Users\\test\\hello.pyd' (22, 23)
C:\Users\test\hello.pyd
でした
0653名無しさん@そうだ選挙に行こう
2010/07/11(日) 22:25:08Python2はインストールしていない?
0654デフォルトの名無しさん
2010/07/11(日) 23:50:12Python Shellで、同じような事は出来ないでしょうか?
0655デフォルトの名無しさん
2010/07/11(日) 23:56:470656デフォルトの名無しさん
2010/07/12(月) 00:06:250657デフォルトの名無しさん
2010/07/12(月) 00:07:190658デフォルトの名無しさん
2010/07/12(月) 00:13:30ありがとうございます!
0659デフォルトの名無しさん
2010/07/12(月) 00:57:43ipython便利だよ。windowsだとpyreadlineといっしょにいれるとよろし。
0660デフォルトの名無しさん
2010/07/12(月) 01:05:00横からですが
ttp://stat001.ameba.jp/user_images/ba/be/10124970142_s.jpg
0661デフォルトの名無しさん
2010/07/12(月) 01:18:27右も左も分からない初心者です
0662デフォルトの名無しさん
2010/07/12(月) 01:29:26Twitterクライアント
クリップボード監視に向いてる言語は何ですか?
0663デフォルトの名無しさん
2010/07/12(月) 01:57:280664デフォルトの名無しさん
2010/07/12(月) 02:14:340665デフォルトの名無しさん
2010/07/12(月) 03:22:15インポートするスクリプトを実行するとUnicodeDecodeErrorが発生するみたい。
おそらく Python3 のバグ。
(importdl.c の _PyImport_LoadDynamicModule => _PyImport_FindExtension => PyDict_GetItemString等
=> ... => PyUnicode_DecodeUTF8 の流れで cp932 のバイト列が utf8 で変換されてエラーになる)
再現例:
D:/ほげほげ/winsound.pyd, D:/ほげほげ/a.py の状態で a.py を実行する。
winsound.pyd は Python31/DLLs のをコピー a.py の中身は import winsound のみ
0666デフォルトの名無しさん
2010/07/12(月) 03:25:360667デフォルトの名無しさん
2010/07/12(月) 05:40:41混じってます
Vista HomeBasicSP1とwindows7の2台で利用していますが
VistaはCygwinの中にPython2.4と2.5が入っています。
cygwinは普段利用していなく、コマンドプロンプトを利用しています。
windows7では、最近2.7と2.6を入れました。
このエラーが起きてから入れたような気もします。定かではないですが・・・
Vista
C:\Python31 , C:\cygwin\lib\Python2.4 , C:\cygwin\lib\Python2.5
windows7
C:\Python31 , C:\Python27 , C:\Python26
こんな感じの場所にいます
0668デフォルトの名無しさん
2010/07/12(月) 06:08:14ありがとうございます
直りました
>>653
色々教えていただきありがとうございます
時間を取らせてしまって、ごめんなさい。
ここにレスするときに、ディレクトリ名が乗せられなくて、勝手に手で消してからレスしていました。
そのディレクトリ名の中に日本語が含まれていました。
申し訳ありません
一言、消していることを明記すべきでした。
b'C:\\Uers\\test\\******\\\x8d(ry
ごめんなさいごめんなさい....orz
0669デフォルトの名無しさん
2010/07/12(月) 06:50:270670デフォルトの名無しさん
2010/07/14(水) 17:34:50継承せずに、メソッドを定義したいのですが
0671デフォルトの名無しさん
2010/07/14(水) 20:06:45できます。
class Foo(object):
pass
def _bar(self):
pass
Foo.bar = _bar
0672デフォルトの名無しさん
2010/07/16(金) 01:05:22そんな簡単にできるのですね
ありがとうございました
0673デフォルトの名無しさん
2010/07/16(金) 02:18:16これって、できないようにする積極的な理由あるの?
0674デフォルトの名無しさん
2010/07/16(金) 02:21:160675デフォルトの名無しさん
2010/07/16(金) 02:29:310676デフォルトの名無しさん
2010/07/16(金) 02:33:040677デフォルトの名無しさん
2010/07/16(金) 02:52:55変更不可能にすることで、メモリ消費量を削減したり、呼び出しを高速化したりできる。
基本的に変更可能な属性は dict 型のオブジェクトを使って管理されているので、
その呼び出しはハッシュテーブルからの検索とかオーバーヘッドが少し大きい。
あと、基本型を弄るとどこに副作用が起こるかわからないという理由もあるな。
基本的に直接弄るんじゃなくて継承しろという方針。
0678デフォルトの名無しさん
2010/07/16(金) 03:29:16なんだ、実装上の都合なのか。
Pythonは理想追い求めるより現実的な落としどころ見つける言語だってのは知ってるけど、
それでも一貫性のなさを感じる。
0679デフォルトの名無しさん
2010/07/16(金) 03:35:590680デフォルトの名無しさん
2010/07/16(金) 05:00:38ちょっと思いつかないな
0681デフォルトの名無しさん
2010/07/16(金) 07:36:120682デフォルトの名無しさん
2010/07/16(金) 23:26:13StringIO.StringIO.foo = 1 ができる合理的理由が見当たらない。
0683デフォルトの名無しさん
2010/07/16(金) 23:44:22ttp://mail.python.org/pipermail/python-dev/2008-February/077167.html
0684デフォルトの名無しさん
2010/07/17(土) 00:14:02お前には cStringIO をやる
0685デフォルトの名無しさん
2010/07/17(土) 14:34:230686デフォルトの名無しさん
2010/07/18(日) 03:35:53import aiueo
みたいに読み込むモジュールを入力して与えることって出来るの?
0687デフォルトの名無しさん
2010/07/18(日) 04:01:210688デフォルトの名無しさん
2010/07/18(日) 05:05:59__import__()
0689デフォルトの名無しさん
2010/07/18(日) 11:49:250690デフォルトの名無しさん
2010/07/19(月) 04:15:36dictが入れ子になってるdictの構造だけをコピーしたいのですが
copyで浅いコピーをしているつもりが、入れ子の中までは担保されません
In [2]: a = {"a":{"b":"con_b","c":"con_c"}}
In [3]: b = a.copy()
In [4]: a
Out[4]: {'a': {'b': 'con_b', 'c': 'con_c'}}
In [5]: b["a"].update({"b":"hoge"})
In [6]: b
Out[6]: {'a': {'b': 'hoge', 'c': 'con_c'}}
In [7]: a
Out[7]: {'a': {'b': 'hoge', 'c': 'con_c'}}
これを a["a"]["b"] == "con_b" としたいのですが
updateというアプローチは間違っているのでしょうか
0691デフォルトの名無しさん
2010/07/19(月) 04:37:26>>> b = a.copy()
>>> b["a"].update({"b":"hoge"})
>>> a
{'a': {'c': 'con_c', 'b': 'hoge'}}
>>>
0692デフォルトの名無しさん
2010/07/19(月) 04:40:31>>> a = {"a":{"b":"con_b","c":"con_c"}}
>>> b = copy.deepcopy(a)
>>> b
{'a': {'c': 'con_c', 'b': 'con_b'}}
>>> b["a"].update({"b":"hoge"})
>>> b
{'a': {'c': 'con_c', 'b': 'hoge'}}
>>> a
{'a': {'c': 'con_c', 'b': 'con_b'}}
0693デフォルトの名無しさん
2010/07/19(月) 05:07:31おー、ありがとうございます
こういうケースはcopy.deepcopy()しないといけないんですね
0694デフォルトの名無しさん
2010/07/19(月) 05:12:43>copyで浅いコピーをしているつもりが、入れ子の中までは担保されません
質問の仕方が変だ
0695デフォルトの名無しさん
2010/07/19(月) 10:08:58浅いコピーってのは、
b = {}
for key in a:
b[key] = a[key]
と同じだから、この場合
b["a"] = a["a"]
ってしたことになる。ここで、 a["a"]は辞書型なのでmutable。
浅いコピーでも完全にコピーされるのは、
・要素が全部immutable(int, float, str, tupleなど)
・要素の要素、要素の要素の要素、...が全部immutable
のときのみ。
もちろん、完全にコピーされないことを知った上で大丈夫だと分かっててコピーするのはOK
要素の要素がmutableで浅いコピーがうまくいかない例:
a=(1,(2,[3,4]))
b=a
b[1][1][1]=0
print b
# ==> (1, (2, [3, 0]))
print a
# ==> (1, (2, [3, 0]))
0696デフォルトの名無しさん
2010/07/19(月) 12:32:02SyntaxError: invalid syntax
というエラーが出てしまいます。何か間違ってるところがあったら教えてください。コードはこんな感じです。
color = '緑'
score = 20
if color == '赤':
bonus = 0
ここでelseを入れるとエラーが出ます。あとインデント幅も妙です。
参考本ので説明に使われているpythonのバージョンと今使ってるバージョンが違うので
書き方に違いがあるのかと思ってぐぐってみたんですが分かりませんでしたorz
0697デフォルトの名無しさん
2010/07/19(月) 14:26:45こんな感じで普通に動くと思うけど。
インデントは全角スペースにしてるから気をつけてね
color = '緑'
score = 20
if color == '赤':
bonus = 0
else:
bonus = 20
print bonus
elseの後に:を入れ忘れているんじゃないかと予想。
0698デフォルトの名無しさん
2010/07/19(月) 16:56:13if color == '赤'
bonus = 0
この後改行するとbonusの"b"と同じ列から入力するようになっていてelseを入れてみると
bonus = 0
else:
SyntaxError: invalid syntax
というエラーが出てしまいます。丸々コピーしてみても駄目でしたすみません。
何かすごい根本的な問題のような気がするのでこのままスルーして頂いても結構です。ありがとうございました。
0699デフォルトの名無しさん
2010/07/19(月) 17:10:01elseを打つときはデデント(インデントの反対)して
ifと同じ桁から始めなきゃだめだよ
あともし統合環境使ってるのであればPythonに慣れるまでは凍結して
シンプルなテキストエディタとコンソール(コマンドプロンプト)を使ったほうがいい
0700デフォルトの名無しさん
2010/07/19(月) 17:53:47デデントしたらできました!ありがとうございます。
0701デフォルトの名無しさん
2010/07/19(月) 20:31:180702デフォルトの名無しさん
2010/07/20(火) 03:25:51before =[
{"id":"0","aaa":"fdafdsadafdas"},
{"id":"0","bbb":"dafdgdfagdfsg"},
{"id":"0","ccc":"dafdgdfagdfsg"},
{"id":"1","aaa":"gdfagdfsgdsaf"},
{"id":"1","bbb":"dgfagdsdaffsg"},
{"id":"1","ccc":"dadfgdfddfasg"},
{"id":"1","ddd":"dadfgdfddfasg"}
]
という要素として辞書を持ったリストを
after =[ {"id","0","aaa":"fdafdsadafdas","bbb":"dafdgdfagdfsg","ccc":"dafdgdfagdfsg"}, {"id":"1","aaa":"gdfagdfsgdsaf","bbb":"dgfagdsdaffsg","ccc":"dadfgdfddfasg","ddd":"dadfgdfddfasg"}
]
のように"id"を共通のキーにしてまとめたい
どのようにすればいいだろうか
0703デフォルトの名無しさん
2010/07/20(火) 03:50:430704デフォルトの名無しさん
2010/07/20(火) 05:44:08動きました。いいワンライナーですね!
itertools と reduce、 まだ怖くて使ったことがないです…
自分も使いこなせるようになろう
0705デフォルトの名無しさん
2010/07/20(火) 07:22:19t = defaultdict(dict)
for item in before:
t[item['id']].update(item)
after = t.values()
0706デフォルトの名無しさん
2010/07/21(水) 05:11:58>怖くて
どういう意味?
0707デフォルトの名無しさん
2010/07/21(水) 10:29:250708デフォルトの名無しさん
2010/07/21(水) 23:16:18出来ましたありがとうございます。
0709デフォルトの名無しさん
2010/07/22(木) 02:24:28新しいのはないでしょうか。
2.5 まではあったんですが。
http://www.python.jp/pub/doc_jp/
0710デフォルトの名無しさん
2010/07/23(金) 16:55:06可能ならば3に対応してる奴で、英語か日本語のもの
0711デフォルトの名無しさん
2010/07/23(金) 17:01:140712デフォルトの名無しさん
2010/07/23(金) 17:29:23LINUXでC言語でも勉強したいと思います
0713デフォルトの名無しさん
2010/07/23(金) 17:32:240714デフォルトの名無しさん
2010/07/23(金) 17:38:390715デフォルトの名無しさん
2010/07/23(金) 17:51:310716デフォルトの名無しさん
2010/07/23(金) 17:53:370717デフォルトの名無しさん
2010/07/25(日) 17:16:57# -*- coding:utf-8 -*-
if __name__ == '__main__':
print 'java-ja great!!!'
0718デフォルトの名無しさん
2010/07/25(日) 17:48:11特定されました
0719デフォルトの名無しさん
2010/07/25(日) 19:00:33インポートしてaを開こうとするとそんなアトリビュート無いと言われます
何が間違っているのでしょうか
http://www.dotup.org/uploda/www.dotup.org1051891.jpg.html
0720デフォルトの名無しさん
2010/07/25(日) 19:14:351. class は import しない。 import test としたら、 class test と全く別の test モジュールが import され、 test クラスは消え去る。
2. self.a = 0 では、クラスではなく、クラスのインスタンスに属性を追加しているので、インスタンスを作らないと a は見えない。
class test:
def __init__(self):
self.a = 0
t = test()
t.a
0721デフォルトの名無しさん
2010/07/25(日) 19:15:24importはモジュールを読み込み、初期化する文。
classとは関係ない。
その例だと、testという名前でクラスを定義した後に、
testというモジュールをimportしている。
0722デフォルトの名無しさん
2010/07/25(日) 19:20:46なるほど!ありがとうございます。
0723デフォルトの名無しさん
2010/07/26(月) 16:36:07tkFileDialogのimportの変更点も分かってないから誰か解説してくれ
0724デフォルトの名無しさん
2010/07/26(月) 17:09:130725デフォルトの名無しさん
2010/07/26(月) 17:11:100726デフォルトの名無しさん
2010/07/26(月) 18:17:58アスキーコード云々もsitecustomize.pyに2行足しただけですんなり行った
0727デフォルトの名無しさん
2010/07/27(火) 00:34:17とか__がやたら目につくのはなぜ?
気持ち悪いんだけど
0728デフォルトの名無しさん
2010/07/27(火) 01:51:470729デフォルトの名無しさん
2010/07/27(火) 02:00:450730デフォルトの名無しさん
2010/07/27(火) 02:00:510731デフォルトの名無しさん
2010/07/27(火) 02:03:38何か良い方法は無いでしょうか??
例えば
2:00:44.009727 の時だと
7244.010 みたいなかんじです。
マイクロsecをとって//1000すると、9 とかになるので、
マイクロsecから丸める方法でも3桁にしたいです・・
お知恵をお貸し下さい。
0732デフォルトの名無しさん
2010/07/27(火) 02:07:070733デフォルトの名無しさん
2010/07/27(火) 02:07:22>>> sec = 12345.12345
>>> print "%.3f" % (sec,)
12345.123
0734デフォルトの名無しさん
2010/07/27(火) 02:09:02■[python] ミリ秒まで表示させる 00:35 ミリ秒まで表示させる -
With skill and creativeness を含むブックマーク はてなブックマーク - ミリ秒まで表示させる - With skill and creativeness ミリ秒まで表示させる - With skill and creativeness のブックマークコメントCommentsAdd Star
参考URL
import datetime
now = datetime.datetime.now()
print now.strftime("%Y%m%d%H%M%S.") + "%04d" % (now.microsecond // 1000)
→ '20081118003037.0479'
これは?
ttp://d.hatena.ne.jp/shohu33/20081117/1226936130
0735デフォルトの名無しさん
2010/07/27(火) 02:11:21datetime.datetime.now()とかで、
秒換算して取得することって出来ますか?
それと、>>733を組み合わせると、完璧の予感!
0736デフォルトの名無しさん
2010/07/27(火) 02:15:28datetime.datetime(2010, 7, 27, 2, 14, 21, 705000)
日本語が理解できない
これで秒取って、足したり引いたりじゃだめなの?
0737デフォルトの名無しさん
2010/07/27(火) 02:27:16d = datetime.datetime.now()
sec = ((d.hour*60 + d.minute)*60 + d.second)
print sec
print "%.3d" % (d.microsecond // 1000)
数値型で sec.msec にするには、あと、どうしたらいいですか・・・
行き詰まってしまいました
0738デフォルトの名無しさん
2010/07/27(火) 02:39:45sec = ((d.hour*60 + d.minute)*60 + d.second)
msec ="%.3d" % (d.microsecond // 1000)
print sec + float(msec)/1000
これでいいか。
0739デフォルトの名無しさん
2010/08/01(日) 23:52:56ダウンロードの進捗状況を知ることができるのは分かったのですが
アップロードの進行状況(POST)を知る方法は標準ライブラリでありませんか?
urllib2とかurllibを使って
0740デフォルトの名無しさん
2010/08/02(月) 00:12:41c:\Python25\Scriptディレクトリ自体がありません
どうしたらいいでしょうか
0741デフォルトの名無しさん
2010/08/02(月) 00:19:55なくてもインストールできるからさっさと入れればいいだろ
0742デフォルトの名無しさん
2010/08/02(月) 00:26:520743デフォルトの名無しさん
2010/08/02(月) 00:29:38その方法で本当にDL進捗状況がわかるのか気になる
socket使えばアップ・ダウン両方できる
0744デフォルトの名無しさん
2010/08/02(月) 00:30:31http://www.python.jp/Zope/download/pythoncore
ここのpython-2.5.2.msiを使用しました。
0745デフォルトの名無しさん
2010/08/02(月) 00:42:46そうじゃない
まずeazy_installをいれろよアホがっつってんだよカス
0746デフォルトの名無しさん
2010/08/02(月) 00:45:18その方向で調べてみます
ありがとうございます。
0747デフォルトの名無しさん
2010/08/02(月) 00:57:01すいません後出となって申し訳ないのですが、ソケットを直接つかうの以外で
無いだろうかと探していました
0748デフォルトの名無しさん
2010/08/02(月) 01:12:310749デフォルトの名無しさん
2010/08/02(月) 01:59:530750デフォルトの名無しさん
2010/08/02(月) 03:17:27以後、時刻関係の関数は一律そのタイムゾーンで値を返してくるようにしたいのですが
そういうことできますか?
0751デフォルトの名無しさん
2010/08/02(月) 03:32:500752デフォルトの名無しさん
2010/08/02(月) 20:46:35プログラム超初心者です
↓のようなことをするときにbreakは書いたほうがいいのでしょうか、、、
あともっとスマートに書ける方法があったら教えてください。
ユーザーから続けて数字の入力を受け付け
合計が100に近づくまでその数値を足し続けるプログラムを書きなさい
'''
hundred = 100
value = 0
def numint(x):
while True:
try:
y = raw_input(x)
z = int(y)
return z
#break ←ブレイクは書いたほうがいいのでしょうか?
except ValueError:
print u'Error : 文字ではなく数値を入力してください'
value += numint('数値を入力してください>> ')
while value < hundred:
print value, u'まだ足りないみたいです'
value += numint('もっと大きな数字を入力しましょう>> ')
print value, u'合計が100以上になりました'
0753デフォルトの名無しさん
2010/08/02(月) 20:49:010754デフォルトの名無しさん
2010/08/02(月) 22:06:48http://www.python.jp/Zope/intro/instant_hacking_jp
プログラムの練習に↑のInstant hacking をしていたのですが
例外処理を加えようとして pylint が到達不能code を警告していたので
どうしたもんかなぁと思って書き込みしてみたところです
ぐぐったところ while True はあまり書かない方がいいみたいなので
他の手を使ってみます、、、
while True したら break を書くものとばかり思っていたので
頭が混乱してしまいました…
0755デフォルトの名無しさん
2010/08/03(火) 00:26:470756デフォルトの名無しさん
2010/08/03(火) 03:24:01質問に答えるなら、returnの後の行はどうせ実行されないのだから、breakは不要。
けれどこれ、except節はtry節が終わった直後に置かないといけないからSyntaxError出ると思うよ。
そしてお説教。
> hundred = 100
こういう名前の付け方は意味が無い。
変数は、
・いちいち書くと長ったらしい/処理を分けたいから名前をつけたい
・今後変更される可能性に備えて、名前をつけておきたい
ときに使うものだから。仮に200に変更したとき、
hundred = 200
にするわけにはいかないでしょう。
これもあんまりいい名前じゃないけど、俺ならNにしちゃうかな。
numintの引数xも、一目でxが何か分からないから問題あり。
例外が出なかったときに処理したいのなら、Pythonでは例外の後のelse節でそれができる。
N = 100
value = 0
def numint(msg):
while True:
y = raw_input(msg)
try:
z = int(y)
except ValueError:
print u'Error : 文字ではなく数値を入力してください'
else:
return z
0757デフォルトの名無しさん
2010/08/03(火) 07:03:55ありがとうございます!!! めちゃくちゃスッキリしました!!
なぜかerrorを出さずに実行できてしまっていたのでどうしよう…ってなっていたところでした
みんなのPythonを1/3ほど読み終えたところですが、変数の名前は適当でいいのかなぁとか思っていました、、、
もっと基礎を勉強したほうがいいですねorz
多謝です!!
0758デフォルトの名無しさん
2010/08/03(火) 10:08:33>みんなのPythonを1/3ほど読み終えたところですが、変数の名前は適当でいいのかなぁとか思っていました、、、
そんなことが書いてあるの!?
酷い本だ。
0759デフォルトの名無しさん
2010/08/03(火) 10:13:52オライリーのヘッドファーストシリーズお勧め
0760デフォルトの名無しさん
2010/08/03(火) 10:15:59自分の子供に「息子」という名前を付けるのと同じだ。
0761デフォルトの名無しさん
2010/08/03(火) 11:27:020762デフォルトの名無しさん
2010/08/03(火) 11:30:310763デフォルトの名無しさん
2010/08/03(火) 12:40:08半分ドレッドな臭い頭のひとのことです
0764デフォルトの名無しさん
2010/08/03(火) 12:41:39いえ、変数の名前のつけ方とかはみんなのPythonには書いてなかったので、、、
読んでみた感想は、なんとなくプログラムを大雑把に理解できる感じでした
ビット演算の項でつまずいてますけどorz
変数の名前にhundredを使ったのは私ですのでみんパイは悪くないです
図書館で借りたので文句のつけようがないです、、、
>> 759
「みるみるプログラミングがわかる本」掌田津耶乃
「 C言語プログラミング入門―C99対応―」田中敏幸
[改訂新版] これからはじめるプログラミング基礎の基礎]谷尻 かおり
あたりを図書館で借りて勉強しようと思います
「エキスパートPythonプログラミング 」Tarek Ziade
「Head First JavaScript」Michael Morrison
は買ってみます
0765デフォルトの名無しさん
2010/08/03(火) 21:40:06みんパイ読んだけどちんぷんかんぷんだった
で、Cの本を適当に読んだら非常に解りやすい
やっぱプログラム初心者にパイソンはむついのかなーと何気に感じた今日この頃
0766デフォルトの名無しさん
2010/08/03(火) 21:43:430767デフォルトの名無しさん
2010/08/03(火) 23:36:040768デフォルトの名無しさん
2010/08/04(水) 00:24:300769デフォルトの名無しさん
2010/08/04(水) 00:28:01http://www.amazon.co.jp/dp/0262062798/
0770デフォルトの名無しさん
2010/08/04(水) 00:39:280771デフォルトの名無しさん
2010/08/04(水) 00:42:50整数はbit幅が固定じゃないからcよりも理解しにくいんじゃない?
0772デフォルトの名無しさん
2010/08/04(水) 00:58:45ビッド演算とか言ってないからたぶん大丈夫だろう
0773デフォルトの名無しさん
2010/08/04(水) 01:22:47命名規約だけで大議論が起こるくらいにはネーミングは重要だよ。
Pythonの命名規約は「PEP8」でググれば出てくるから調べてみな。
0774デフォルトの名無しさん
2010/08/04(水) 09:24:20http://bitbucket.org/tavisrudd/pylint_etc_wrapper.py/src/tip/pylint_etc_wrapper.py
上のエラーチェックを使っているのですが、defaultにpep8を追加して使えるようにしました
「l」「0」「I」は使わない、関数名は小文字、classは先頭大文字などとても参考になります
ビット演算は否定のところでつまづいてます。
26(10) 11010(2) の否定は 100101(2) のはず?なのに
26 11010 -27 -11011
と出るので…考えれば考えるほどわからないorz
自分の書いたスクリプトが悪いのでしょうか…
スレ違いすいません、、、
0775デフォルトの名無しさん
2010/08/04(水) 09:45:37>>> ~26
-27
26(10) = 11010(2)
-27 = ~26(10) = 1111...(ここの1が論理的に無限に続く)...111100101(2)
これで 26 + (-27) = -1 になることを考えてみるとわかりやすい
111111 = -1
111110 = -2
111101 = -3
111100 = -4
...
100111 = -25
100110 = -26
100101 = -27
0776デフォルトの名無しさん
2010/08/04(水) 15:58:27ありがとうございます!! めちゃくちゃ助かりました!!
なんとなくですけど、理解できたような気がします!
~(not)はビットを反転させて、1の補数をとっているんですよね。
>>format(26, 'b')
11010
>> ~ 26
-27
>>format(-27, 'b')
-11011
単行演算子 - は2の補数をとるので、表示は1111..(32列)..1100101ではなく
-11011となっていたのですね!
この理解であっているでしょうか、、、
0777デフォルトの名無しさん
2010/08/04(水) 16:46:190778デフォルトの名無しさん
2010/08/04(水) 18:41:38format(n, 'b')はnを2進表記にした文字列を返すってだけだよ
整数の内部表現を返すわけではない
0779デフォルトの名無しさん
2010/08/04(水) 19:00:072進数表記の際に、頭につける 0b からきてる。
これは16進数の0xと一緒の意味。
format(num, 'b')は単純に
数字を変換、どんな物かというとb、bの意味は2進数。
0780デフォルトの名無しさん
2010/08/04(水) 19:04:390781デフォルトの名無しさん
2010/08/04(水) 19:06:230782デフォルトの名無しさん
2010/08/04(水) 19:10:200783デフォルトの名無しさん
2010/08/04(水) 19:14:020784デフォルトの名無しさん
2010/08/04(水) 19:25:380785デフォルトの名無しさん
2010/08/04(水) 23:23:550786デフォルトの名無しさん
2010/08/05(木) 01:01:11言語によっては数値リテラルを0から始めると8進数として扱ったり
16進数で十分じゃん
0787デフォルトの名無しさん
2010/08/05(木) 01:18:520788786
2010/08/05(木) 03:25:08けどソースコードを書く上での存在意義がよくわからんのだよ>8進数
わざわざ8進数を記述する文法があるわけだから何かしら意義はあるのだろうけど
0789デフォルトの名無しさん
2010/08/05(木) 03:31:470790デフォルトの名無しさん
2010/08/05(木) 03:46:540791デフォルトの名無しさん
2010/08/05(木) 06:11:080792デフォルトの名無しさん
2010/08/05(木) 06:14:002進数 0B01234567
8進数 0O01234567
16進数 0X01234567
0793デフォルトの名無しさん
2010/08/05(木) 06:20:07このおねぼけさん
0794デフォルトの名無しさん
2010/08/05(木) 07:59:552進数 0b01111111
8進数 0o01234567
16進数 0x01234567
0795デフォルトの名無しさん
2010/08/05(木) 08:03:08どんな ORM があるの?
http://takaki-web.media-as.org/blog/archive/2007/02/19/pythonactiverecord
とか
SQLAlchemy とか
Elixir とか
0796デフォルトの名無しさん
2010/08/05(木) 14:24:33サンプルコードにconfig.pyってのがあって、グローバル変数の初期化をしています。
そこにBASE_URL =とあってURLを設定します。
で、これだとローカルテストとデプロイでいちいちURLを変えないといけないので改造したいわけです。
しかし、grepしてみてもどこからもconfig.pyを明示的に呼び出したりしてません。
pythonはアプリケーション起動時にアプリケーションディレクトリ以下のすべてのpyファイルを読み込むのでしょうか?
だとするとself.request.urlの戻り値が期待できないタイミングだと予想されます。
requestのタイミングで毎回セットするならグローバル変数にする意味ない気がするし・・・
こんなとき、自分のドメインを調べてグローバル変数にセットする一番標準的な方法を教えていただければ幸いです。
よろしくお願いします。
0797デフォルトの名無しさん
2010/08/05(木) 17:11:340798デフォルトの名無しさん
2010/08/05(木) 18:00:02これはローカルのパス・・・・ですよね?
0799デフォルトの名無しさん
2010/08/05(木) 22:02:49どこの?
0800デフォルトの名無しさん
2010/08/05(木) 22:56:55アドバイスいただきたいです。
import os
dir_name = '新規'
os.mkdir(dir_name)
0801デフォルトの名無しさん
2010/08/05(木) 23:16:26とりあえずOSとPythonのバージョン
実行形態(スクリプトとして実行、あるいは対話型シェルから等)
あとエラーメッセージとどう「ダメ」だったのかをどうぞ
0802デフォルトの名無しさん
2010/08/05(木) 23:17:17dir_name = u'新規'
os.mkdir(dir_name)
0803デフォルトの名無しさん
2010/08/05(木) 23:24:160804デフォルトの名無しさん
2010/08/05(木) 23:29:18>>801にソースコードの文字コードも追加で
0805デフォルトの名無しさん
2010/08/05(木) 23:35:080806デフォルトの名無しさん
2010/08/06(金) 04:18:420807デフォルトの名無しさん
2010/08/06(金) 04:56:46http://www.python.org/dev/
0808デフォルトの名無しさん
2010/08/06(金) 07:47:33エロサイトのブクマ外したり内臓HDDのエロ全消去して
エロ禁&オナ禁初めて現在14日目
最近ではIVやティッシュはもちろん、テレビでもエロイ事してる人がいるから
テレビも部屋から出した。
徹底してるぜ俺
0809デフォルトの名無しさん
2010/08/06(金) 08:06:020810デフォルトの名無しさん
2010/08/06(金) 09:59:17すみません個人ブログなので貼れません
0811デフォルトの名無しさん
2010/08/06(金) 10:09:570812デフォルトの名無しさん
2010/08/06(金) 10:36:01Python 2.6.4
です。
ファイルのフルパスを受け取った文字列があります。
これを
ディレクトリパスとファイル名(拡張子なし)と拡張子名に分割し、再び結合する
というPythonプログラムはどうかけるでしょうか?
例えば
full_p_str = "D:\Dir1\Dir2\Dir3\filename.html"
のようにファイルのフルパスを受け取ってfull_p_strに格納し、
full_p_str_result = os.path.join(ディレクトリパス, 拡張子のないファイル名 + "." + 拡張子名)
のようにしたいのです。
よろしくお願いいたします。
0813812
2010/08/06(金) 10:40:33でフルパスをフルパス名を分割できるようですが、
ファイル名を拡張子とそうでない部分に分割するにはどうしたらよいでしょうか?
0814デフォルトの名無しさん
2010/08/06(金) 10:43:550815デフォルトの名無しさん
2010/08/06(金) 10:51:56正規表現ですか。
ありがとうございます。
0816デフォルトの名無しさん
2010/08/06(金) 11:08:02>>> fullpath = r'D:\Dir1\Dir2\Dir3\filename.html'
>>> dirname, filename = os.path.split(fullpath)
>>> filename_wo_extension, extension = os.path.splitext(filename)
>>> os.path.join(dirname, filename_wo_extension + extension)
'D:\\Dir1\\Dir2\\Dir3\\filename.html'
>>> 'hoge.piyo.fuga.html'.rsplit('.', 1)
['hoge.piyo.fuga', 'html']
0817デフォルトの名無しさん
2010/08/06(金) 11:09:09os.path.filepath
0818デフォルトの名無しさん
2010/08/06(金) 12:13:47それで解決できました!!
0819デフォルトの名無しさん
2010/08/06(金) 12:16:49このようなコードを書くと、
インデントがおかしいと言われてしまいます。
このコードでコメントを全部消して一行につなげれば
通りますが、そうなると可読性が下がってしまいます。
どうすればこのような一見して分かる可読性を維持しながら
インデントで怒られないでしょうか?
よろしくお願いいたします。
0820デフォルトの名無しさん
2010/08/06(金) 12:27:40+ で繋ぐ部分はインデントどうやっても構わなくなるはずなんだけど
怒られてるの違う部分じゃないの?
0821デフォルトの名無しさん
2010/08/06(金) 12:28:24って言われます・・・。
0822デフォルトの名無しさん
2010/08/06(金) 12:31:44', ' + foo + \
', ' + bar + \ ...
文字列リテラルだけなら
s = ('aaa'
'bbb'
'ccc')
0823デフォルトの名無しさん
2010/08/06(金) 12:32:25ですか。
ありがとうございます。
それで解決します!
0824819
2010/08/06(金) 12:34:57で解決するかと思ったのですが、
SyntaxError: unexpected character after line continuation character
と言われてしまいました。
各行にコメントを後ろに付けたいので、そういう場合はどうすればよいでしょうか?
0825デフォルトの名無しさん
2010/08/06(金) 12:46:122 + # two
3) # three
0827812
2010/08/06(金) 13:05:43環境は
Windows XP SP3 Python 2.6.4です。
Shift-JISのファイルを読み込んでUTF-8に変換し、
そのファイルを加工した後
再びShift-JISに戻したいのですが、どのようにすればよいでしょうか?
import codecs
f = codecs.open(ファイルのフルパス,"r", "utf_8", "ignore")
とすると元のファイルがUTF-8でないと開けず、
かといって
f = codecs.open(ファイルのフルパス,"r", "shift-jis", "ignore")
とすると開いたファイルがShift-JISのままです。
どなたか解決策を教えていただけますでしょうか?
0828デフォルトの名無しさん
2010/08/06(金) 13:23:07f = codecs.open(ファイルのフルパス,"r", "shift-jis", "ignore")
この状態でreadすればUnicode文字列として読み込まれるから普通に加工できる。書き出すときも
w = codecs.open(ファイルのフルパス,"w", "shift-jis")
とやってwriteにUnicode文字列を渡せば、shift_jisに変換して書き込んでくれる
UTF-8相当のstrにして何かやりたいならencodeメソッドなりご自由に
0829デフォルトの名無しさん
2010/08/06(金) 13:27:170830デフォルトの名無しさん
2010/08/06(金) 13:32:36ありがとうございます。
codecsってそういう動作なのですね。
助かりました。
0831デフォルトの名無しさん
2010/08/06(金) 17:50:32', ' + foo + \ # fuga
', ' + bar + \ # hage ...
s = 'aaa' + # hoge \
', ' + foo + # fuga \
', ' + bar + # hage \ ...
どっちもだめなのか
0832デフォルトの名無しさん
2010/08/06(金) 17:53:35f = codecs.open(ファイルのフルパス,"r", "cp932", "replace")
w = codecs.open(ファイルのフルパス,"w", "utf-8", "replace")
が良くね?
0833デフォルトの名無しさん
2010/08/06(金) 19:22:15何スレか前に似たような内容を書き込んだ覚えがある
前者のような書き方は許して欲しいんだけどねぇ
0834デフォルトの名無しさん
2010/08/06(金) 23:28:38<tab>単語1<tab>単語2
という形式の文字列が延々と羅列されてるtxtファイルで、
単語1の部分が以前の行で既出で重複している場合に、その行を消すにはどうしたらいいでしょう?
0835デフォルトの名無しさん
2010/08/06(金) 23:56:52もう少し具体的に
0836デフォルトの名無しさん
2010/08/07(土) 00:00:18順序は維持しないとだめ?
0837デフォルトの名無しさん
2010/08/07(土) 00:08:45この場合消すのは今見ている行なのか
既出で重複していた方の行なのか
あと2行じゃなくて3行以上の複数行が既出だったらどうするのかとか
0838デフォルトの名無しさん
2010/08/07(土) 00:10:08同じカラムのときだけ既出扱いするのか
0839デフォルトの名無しさん
2010/08/07(土) 03:51:47fr = open("sample.txt", "r")
fw = open("output.txt","w")
catch = []
for line in fr:
if line[1] not in catch:
catch.append(line[1])
fw.write(line)
0840デフォルトの名無しさん
2010/08/07(土) 08:23:23>>839さんの試してみます。
<tab>*STD_PAUSED<tab><tab><tab>"一時停止"
<tab>*STD_GAME<tab><tab><tab>"ゲーム"
<tab>*SYS_SHADERMODE0<tab><tab>"Auto"
<tab>*SYS_SHADERMODE1<tab><tab>"0.5"
<tab>*SYS_SHADERMODE2<tab><tab>"1.1"
<tab>*SYS_SHADERMODE3<tab><tab>"1.1"
<tab>*STD_PAUSED<tab><tab><tab>"Paused"
<tab>*STD_GAME<tab><tab><tab>"Game"
こういう感じの形式で、タブ、*から始まるタグ、不定数のタブ、"文字列"という行が延々と続いています。
上記の例だと*STD_PAUSED、*STD_GAMEのタグが重複しているので、
<tab>*STD_PAUSED<tab><tab><tab>"Paused"
<tab>*STD_GAME<tab><tab><tab>"Game"
の2行を削除したいのです。
行にあるタグが既出の場合その行を消すと言ったらいいのでしょうか。
0841デフォルトの名無しさん
2010/08/07(土) 08:52:060842デフォルトの名無しさん
2010/08/07(土) 09:25:26tags = []
for line in sys.stdin:
tag = line.split('\t')[1]
if not (tag in tags):
tags.append(tag)
print line,
C:\tmp> type src.txt | python hoge.py > dest.txt
0843デフォルトの名無しさん
2010/08/07(土) 10:00:28ありがとうございます。
ですがエラーが出てしまいます。
C:\Users\HOGE>type src.txt | python hoge.py > dest.txt
Traceback (most recent call last):
File "hoge.py", line 5, in <module>
tag = line.split('\t')[1]
IndexError: list index out of range
プロセスが、存在しないパイプに書き込もうとしました。
となります。
ここまで来たら自分でやれよ!ってレベルなんでしょうがほんとすいません・・・
0844デフォルトの名無しさん
2010/08/07(土) 10:21:48最後の行とか大丈夫か?
何行もあるなら例外処理だな
0845デフォルトの名無しさん
2010/08/07(土) 10:38:00改行しか無い行が割とあってその最初でエラーが出てます。
他にもコメントだけの行などあるので、
行頭のタブと*付きのタグから始まらない行は例外処理したほうがよさそうですが
その処理も書けませんのでお願いします・・・
情報を後出しにしちゃってすいません。
txtファイルは5000行くらいで*付きのタグは3000種類くらいあると思います。
行によっては
<tab>*tag<tab><tab><tab>"str"
のstrが長く200文字くらいの場合もあります。
0846デフォルトの名無しさん
2010/08/07(土) 10:44:32for line in sys.stdin:
if not line.startswith('\t*'): continue
tag = line.split('\t')[1]
...
こんな感じでひとつ
0847デフォルトの名無しさん
2010/08/07(土) 11:03:09じゃなくて
tags = set()
とでもしたほうがいいと思うよ
ほかは同じでいいけど
毎回わざわざリニアサーチする必要は無い
0848デフォルトの名無しさん
2010/08/07(土) 11:15:28痛いところをつかれたので書き直しますね
import sys
tags = set()
for line in sys.stdin:
if not line.startswith('\t*'):
continue
tag = line.split('\t')[1]
if not (tag in tags):
tags.add(tag)
print line,
0849デフォルトの名無しさん
2010/08/07(土) 11:30:41例外の行はそのまま残したかったので以下のようにしました。
import sys
tags = set()
for line in sys.stdin:
if not line.startswith('\t*'):
print line,
continue
tag = line.split('\t')[1]
if not (tag in tags):
tags.add(tag)
print line,
0850デフォルトの名無しさん
2010/08/07(土) 11:51:400851デフォルトの名無しさん
2010/08/07(土) 12:28:02>>840のようなタブ、*から始まるタグ、不定数のタブ、"文字列"の形式で書かれている(例外もある)ファイルが2つあって、
例えばfile_en.txtには
<tab>*STD_PAUSED<tab><tab><tab>"pause"
<tab>*STD_GAME<tab><tab><tab>"game"
のように、file_jp.txtには
<tab>*STD_PAUSED<tab><tab><tab>"一時停止"
<tab>*STD_GAME<tab><tab><tab>"ゲーム"
となっている場合に、タグが同じところから文字列を引っ張ってくるといった処理は
どうやったらできるでしょうか。
0852デフォルトの名無しさん
2010/08/07(土) 12:36:400853デフォルトの名無しさん
2010/08/07(土) 12:48:40重複を見つけたらその行を " で割って文字列の部分だけ取り出す
やりたい事がわからんので違ってたらスマソ
0854デフォルトの名無しさん
2010/08/07(土) 13:14:13records_en = dict()
fields = '<tab>*STD_PAUSED<tab><tab><tab>"pause"'.split('\t')
tag, text = fields[1], fields[-1]
records_en[tag] = text
あとはがんがれ
いちいち質問してたら時間もったいないよ
0855851
2010/08/07(土) 14:00:09Pythonの初歩としてちょうどよさそうだから勉強がてらやってみます
0856デフォルトの名無しさん
2010/08/07(土) 14:28:312.6以降でファイルを加工するなら、codecs.openより、ioモジュールの
io.openを使ってみるのはどうかな。
文字列とバイト列の扱いがPython3と同じでわかりやすくなっているし、
ファイルオブジェクトと同じように扱えて全改行文字サポートもある。
こっちの方が便利なんじゃないかな。
0857デフォルトの名無しさん
2010/08/07(土) 15:03:29ちょっと煽るくらいで情報引き出さないと想定できる問題点が多すぎて回答できないとかどうなのよ?
質問者は
素人判断で問題点を想像してそれを根拠に質問するな
大本の判断材料からすでに間違ってることが多すぎる
素直に最終的にやりたい事と現状どうなってるかを明確書け
0858デフォルトの名無しさん
2010/08/07(土) 15:17:360859デフォルトの名無しさん
2010/08/07(土) 15:18:38エラーの原因を特定する能力もあったね
問題は単に丸投げしようとしてたこと
0860デフォルトの名無しさん
2010/08/07(土) 15:27:57挙げた内容でわかる範囲の答えが欲しいだけ。
それで望む答えが得られなけば、掘り下げて
質問を続ける。または打ち切る。
いたって普通の2chの使い方じゃねーの。
0861デフォルトの名無しさん
2010/08/08(日) 20:12:55> \t(タブ)でsplitしようにもTabがねーよってエラーメッセージですか。
それは違う。
tag = line.split('\t')[1]
を
fields = line.split('\t')
tag = fields[1]
に変更すると、どの行でエラーが出るだろうか。
>>851は、俺ならこんな感じで実装するけど、こういうのって正直どうよ?
def add_dict(dic, item, value, overwrite=False):
if overwrite or item not in dic:
dic[item] = value
tags = dict()
for line in sys.stdin:
if not line.startswith('\t*'):
print line,
continue
line_sp = line.split('\t')
if not (tag in tags):
add_dict(tags, fields[1], fields[-1])
0862デフォルトの名無しさん
2010/08/08(日) 21:26:16今やってることをはっきり言うとThe Chronicles of Riddick Escape from Butcher Bayという
PCゲームの日本語化ファイルが公開されているのですが、
私が買ったThe Chronicles of Riddick Assault on Dark Athenaでそれを流用したいのです。
AoDAにはEfBBの内容も含まれているのでそのままでも一応日本語化は出来ますが完全ではありません。
なのでAoDAの字幕ファイルにうまいことEfBB日本語化の成果をマージ出来ないかとやっていたんです。
しかしいろいろいじっているとそういう作業をしなくても割と綺麗に表示されるようになってしまいました。
Pythonの勉強はまた今度だな・・・!
ちなみのこのゲーム
http://store.steampowered.com/app/9860/
0863デフォルトの名無しさん
2010/08/08(日) 21:49:08つかほかのゲームでもPythonはよく使うから勉強続けなさいYO
0864デフォルトの名無しさん
2010/08/08(日) 23:39:100865デフォルトの名無しさん
2010/08/09(月) 01:13:46http://yasu1987.blogspot.com/2010/06/simple-twitter-bot-on-google-app-engine.html
から落としてきたソースをパスとユーザー名だけ書き換えてGAEにupすると以下のようなエラーが出ます。
<type 'exceptions.UnboundLocalError'>: local variable 'recent_tweet' referenced before assignment
Traceback (most recent call last):
python2.5、App Engine SDK 1.3.5です。ちなみに他の、あらかじめ指定した
言葉をポストするだけのプログラムはちゃんと動きました。どこをチェックするべきでしょうか。
0866デフォルトの名無しさん
2010/08/09(月) 01:51:26ローカル変数「recent_tweet」に値が代入されるまえに参照されています.
recent_tweetまわりを確認
0867デフォルトの名無しさん
2010/08/09(月) 02:03:49http://hibari.2ch.net/test/read.cgi/php/1267057923/
0868デフォルトの名無しさん
2010/08/09(月) 03:13:22ありがとうございます。ほぼいじり始めたばかりなので理解があやふやなのですが、
「recent_tweet」は def run(name, pswd, search_term): の中で初めて出現し、
36行目で出現と同時にs.textが代入されています。値が代入される前に参照されていると
言うことはないように思うのですが…
>>867
最初、webプログラミングのあるスレで聞いてたんですが
いくらなんでもレベルが低いかな、と思ったのでこちらで…
エラーメッセージもpythonに一般的なことかと思ったので。
GAEに本質的に関わることは向こうで聞くつもりですがダメでしょうか?
0869デフォルトの名無しさん
2010/08/09(月) 03:20:380870デフォルトの名無しさん
2010/08/09(月) 03:25:48だから>>868ぐらいでいいんでねーの?
0871デフォルトの名無しさん
2010/08/09(月) 03:52:24そのコードだと、statusが空もしくはRTから始まるデータが1つもないときに
recent_tweetが初期化されない。
0872デフォルトの名無しさん
2010/08/09(月) 03:53:38# if s.text.startswith("RT"):
# recent_tweet = s.text
# break
# else:
# print "The following tweet would be posted by hand, so skipped it."
# print "Tweet: " + s.text.encode('utf8')
#
# print "Recent Tweet: "+recent_tweet.encode('utf8')
status の中で s.text.startswith("RT") が 真 のものがひとつもなければ
referenced before assignment になるだろう
0873デフォルトの名無しさん
2010/08/09(月) 03:55:08しかもこんな時間に orz
0874デフォルトの名無しさん
2010/08/09(月) 04:50:49>>872
あ、そうか…なるほど。ありがとうございます。
つまりfor文の前にrecent_tweetに適当なダミーの値でも入れておけばいいですか?
作法としてはどうすべきなんでしょうか。
0875デフォルトの名無しさん
2010/08/09(月) 06:06:48for s in status:
if s.text.startswith("RT"):
recent_tweet = s.text
break
else:
print "The following tweet would be posted by hand, so skipped it."
print "Tweet: " + s.text.encode('utf8')
else:
recent_tweet = 'None'
print "Recent Tweet: "+recent_tweet.encode('utf8')
0876デフォルトの名無しさん
2010/08/09(月) 23:47:14linuxでbash scriptからpython scriptを起動しようとしてます。
すると、print()行でIOErrorが出てpython scriptは終了しちゃうんです。
IOError: [Errno 5] Input/output error
terminalで実行すると問題ないので、出力先が無いためのエラーだと
思うんですが、print()行を消さなくちゃ解決できない問題でしょうか?
0877デフォルトの名無しさん
2010/08/10(火) 02:27:23│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0878デフォルトの名無しさん
2010/08/10(火) 02:53:46def print(*args, **keys): pass
で関数を上書き
0879デフォルトの名無しさん
2010/08/10(火) 07:11:15import sys
sys.stdout = open('bbbb, 'a')
print "aaa bbbb ccccc"
的なものではどうだろうか
0880デフォルトの名無しさん
2010/08/10(火) 11:29:320881876
2010/08/10(火) 12:32:24確かに上書きできませんでした。
879はログを作るってことですよね。
IOError現象は初めて気づいたのですが、
結局アウトプット先を明示する処理を挟まないと
エラーになるってことなんですかね。
そこらへん自動でやってくれる方法があるものだと
思い込んでました。
なぜかバックグラウンドでプログラムが落ちまくるので
変だなーと思ってました。
>>880
自分も/dev/nullでイケるかと思ってたんですが
なぜか、同じ結果になりました。
0882デフォルトの名無しさん
2010/08/11(水) 02:30:44ありがとうございます!ダミーでもよさそうでしたけど
そっちの方が綺麗なのでそうします。
0883デフォルトの名無しさん
2010/08/12(木) 02:57:25stdoutが上流で閉じられてるが、エラーにはしたくないということかな
とりあえず__builtins__.print()にモンキーパッチでいいんじゃないかな
builtins_print = print
def myprint(*a, **w):
try:
builtins_print(*a, **w)
except:
pass
__builtins.print = myprint
こんな感じでエラーを握りつぶすものに置き換える
0884デフォルトの名無しさん
2010/08/12(木) 02:58:10ごめんそこは適当に直してw
0885デフォルトの名無しさん
2010/08/12(木) 03:27:570886デフォルトの名無しさん
2010/08/13(金) 23:10:46ウェブアプリのデバッグはどうするのがいいでしょうか?
0887デフォルトの名無しさん
2010/08/13(金) 23:13:480888デフォルトの名無しさん
2010/08/14(土) 21:05:01java-jaに質問を投げろ。ここでweb開発の質問は厳禁だカス
0889デフォルトの名無しさん
2010/08/14(土) 23:52:36pythonにsuidperlみたいなものはありますか?また、他に良い方法があればそちらもご教示お願いします。
よろしくおねがいします。
0890デフォルトの名無しさん
2010/08/15(日) 01:52:070891889
2010/08/15(日) 03:29:290892デフォルトの名無しさん
2010/08/16(月) 01:26:11こんな感じでアクセスした時にvalの値をgetするにはどうしたらいいのでしょうか?
0893デフォルトの名無しさん
2010/08/16(月) 02:25:49f = cgi.FieldStorage()
aaa = f.getvalue('val', 'no data')
0894デフォルトの名無しさん
2010/08/16(月) 09:08:55http://pythonpaste.org/webob/
0895デフォルトの名無しさん
2010/08/16(月) 12:00:520896デフォルトの名無しさん
2010/08/16(月) 23:55:370897デフォルトの名無しさん
2010/08/16(月) 23:58:360898デフォルトの名無しさん
2010/08/17(火) 00:21:090899デフォルトの名無しさん
2010/08/17(火) 03:50:07'死ね'.decode('cp932').encode('utf-8')
0900デフォルトの名無しさん
2010/08/17(火) 05:42:080901デフォルトの名無しさん
2010/08/17(火) 10:42:150902デフォルトの名無しさん
2010/08/17(火) 17:26:100903デフォルトの名無しさん
2010/08/18(水) 05:03:40遅れましたが、ヒントをありがとうございます。
その手でいこうとおもいます。
from __future__ import print_function
builtins_print = __builtins__.print
def myprint(*a, **w):
try:
builtins_print(*a, **w)
except:
pass
__builtins__.print = myprint
こんな感じにしたら思い通りになりました。
0904デフォルトの名無しさん
2010/08/19(木) 07:46:180905デフォルトの名無しさん
2010/08/19(木) 07:56:48re.findall
re.match
0906デフォルトの名無しさん
2010/08/19(木) 08:00:05import re
s = "Hello,world."
L = re.findall("H.+,|w.+\.", s)
print " ".join(L)
0907デフォルトの名無しさん
2010/08/19(木) 16:06:39環境
OS:WindowsXP バージョン:Python2.6 開発環境:エディタ+コマンドライン
やりたいと思っていること:
WEBページでHTTPの応答としては正常で HTMLのページ内に"エラーが発生しました。"
と表示されているページでエラーを検知したい。
描いたコード一部
//ヘッダの部分に下記追加
# -*- coding: utf-8 -*-
req = urllib2.Request(url)
rawdata = opener.open(req).read()
chk = re.search(u"エラーが発生しました。",rawdata)
if chk:
print("失敗")
sys.stdout.flush()
downo = open( os.path.basename(savename) ,"wb")
downo.write(rawdata)
というようなコードを書きました。この方法ではページ上のエラーが発生しましたという文字を検知できませんでした。
どなたかアドバンスをお願いできませんでしょうか?ちなみに、書き込んだhtmlファイルはUTF8で書き込まれておりました。
0908デフォルトの名無しさん
2010/08/19(木) 16:14:39re.search(u"エラーが発生しました。",rawdata.decode('utf-8'))
が必要じゃないかな
ユニコードとutf8の違いがわかってないと思われる
0909デフォルトの名無しさん
2010/08/19(木) 16:39:20見たいに書ければいいんだけどな
0910デフォルトの名無しさん
2010/08/19(木) 16:40:510911デフォルトの名無しさん
2010/08/19(木) 16:56:22http://hibari.2ch.net/test/read.cgi/tech/1274937437/
0912デフォルトの名無しさん
2010/08/19(木) 17:00:25この場合はPythonでの扱いの話なんだからそっちに行ったら余計混乱しそうだ
u""とかdecodeによって作られるユニコード文字列は、utf8とは又違う文字コードだと考とけば大体大丈夫だろう
0913デフォルトの名無しさん
2010/08/19(木) 17:05:41UnicodeとUTF8の違いわかってないですね。
調べてみました。
u指定での文字指定はUnicode型(符号化がUCS-2/4)で、UTF8とはちゃうんだよ
ってことですね。
てかそもそもの自分の勘違いはヘッダのcodingですね。
これソースを単にUTF-8で読み込みますってだけなのか。よく調べてみたら。
内部的に全部UTF-8になるものだと思ってました。
結果を得るまでに時間がかかりそうですが試してみます。
ありがとうございます。
0914デフォルトの名無しさん
2010/08/19(木) 17:15:31あるディレクトリにある xxx.png ファイルをすべて *.gif に変換したいのですが
python ではどのように書けば出来ますか?
0915デフォルトの名無しさん
2010/08/19(木) 17:17:070916デフォルトの名無しさん
2010/08/19(木) 17:18:040917907
2010/08/19(木) 17:33:150918デフォルトの名無しさん
2010/08/19(木) 17:38:180919デフォルトの名無しさん
2010/08/20(金) 10:14:14ありがとうございます
とりあえず
ttp://www.pythonware.com/library/pil/handbook/image.htm
を参考にして思った動作が出来るようになりました
0920310
2010/08/21(土) 03:06:48Pythonで1行に複数の変数を定義しようと思って
a=0 \n b=1\n
こんな感じで書くとエラーになるのですが
どうしたら1行内に収めることが出来ますでしょうか
0921デフォルトの名無しさん
2010/08/21(土) 03:08:31pythonぽくないけど
0922デフォルトの名無しさん
2010/08/21(土) 03:10:27おお、ほんとだ
そう言えばPythonでも;って使えるんでしたね
ありがとうございます!
0923デフォルトの名無しさん
2010/08/21(土) 06:55:56こっちのほうがPythonぽい
0924デフォルトの名無しさん
2010/08/21(土) 08:32:02なにそのワンライナー
0925デフォルトの名無しさん
2010/08/21(土) 10:32:290926デフォルトの名無しさん
2010/08/21(土) 12:37:170927デフォルトの名無しさん
2010/08/21(土) 12:38:46同意
0928デフォルトの名無しさん
2010/08/21(土) 13:10:47Simple is better than complex.
Sparse is better than dense.
0929デフォルトの名無しさん
2010/08/21(土) 13:18:220930デフォルトの名無しさん
2010/08/21(土) 13:44:500931デフォルトの名無しさん
2010/08/21(土) 18:45:380932デフォルトの名無しさん
2010/08/21(土) 18:49:060933デフォルトの名無しさん
2010/08/21(土) 19:06:59画像でググった俺に隙はなかった
0934デフォルトの名無しさん
2010/08/21(土) 19:13:480935デフォルトの名無しさん
2010/08/21(土) 23:54:150936デフォルトの名無しさん
2010/08/22(日) 00:11:50but they are some hot shit.
0937デフォルトの名無しさん
2010/08/22(日) 01:56:420938デフォルトの名無しさん
2010/08/22(日) 20:40:16質問しようと思ったら
自己解決しました。
0939デフォルトの名無しさん
2010/08/22(日) 20:42:330940デフォルトの名無しさん
2010/08/22(日) 20:48:430941デフォルトの名無しさん
2010/08/22(日) 20:53:00大丈夫です
すでに直接言っておきました
0942デフォルトの名無しさん
2010/08/22(日) 22:45:31lis = ["aaa", "bbb", "ccc"]
の様に、文字列がいくつか格納されたリストがあります。
これを引数argとして受け取り
"aaabbbccc"
のように全てつなげた文字列として返す関数func(arg)を書きたいと思います。
lis.join()で行けるかと思ったら
AttributeError: 'list' object has no attribute 'join'とエラーになりました。
lisの要素数は確定していませんので、len(lis)で取得せねばなりません。
len(lis)==0である可能性と、lisの各要素がまた空文字列である可能性もあります。
しかしlisの要素がもしあるならそれは全て文字列であることだけは確定しています。
こんな関数func(arg)はどのように書けば良いでしょうか?
あるいはそれをしてくれる組み込み関数はありますか?
よろしくお願い申し上げます。
0943デフォルトの名無しさん
2010/08/22(日) 22:49:560944デフォルトの名無しさん
2010/08/22(日) 22:50:440945デフォルトの名無しさん
2010/08/22(日) 23:03:04lis = ["aaa", "bbb", "ccc"]
print 'lis'
print lis
print '"".join(lis)'
print "".join(lis)
はうまく動作しました。
print 'lis'
print lis
print 'reduce(labmda x, y: x+y, lis)'
print reduce(labmda x, y: x+y, lis)
だと
reduce(labmda x, y: x+y, lis)
^
SyntaxError: invalid syntax
というエラーになります。
これはなぜでしょうか??
0946デフォルトの名無しさん
2010/08/22(日) 23:08:180947デフォルトの名無しさん
2010/08/22(日) 23:09:48ありがとうございました。
0948デフォルトの名無しさん
2010/08/23(月) 02:33:270949デフォルトの名無しさん
2010/08/23(月) 02:38:090950デフォルトの名無しさん
2010/08/23(月) 02:38:440951デフォルトの名無しさん
2010/08/23(月) 08:09:320952Perl忍者仙人モード ◆M5ZWRnXOj6
2010/08/23(月) 09:16:560953デフォルトの名無しさん
2010/08/23(月) 13:31:31仲良く使ってね
くだすれPython(超初心者用) その8
http://hibari.2ch.net/test/read.cgi/tech/1282537545/
0954デフォルトの名無しさん
2010/08/23(月) 13:32:380955デフォルトの名無しさん
2010/08/23(月) 14:12:22そんなことはない。
Windowsで使うならR*byよりいいと思う。
0956デフォルトの名無しさん
2010/08/23(月) 14:13:35だれがそんなこと言ったんだ
0957デフォルトの名無しさん
2010/08/23(月) 14:14:290958デフォルトの名無しさん
2010/08/23(月) 14:18:17自分の経験から言うと日本語の文字列を扱う際に文字コードなんかを曖昧なまま処理した場合
Perl や Ruby は間違ってても「なんとなく」動くが Python はきっちりエラーになる
エラー出さずに勝手に文字化けするか例外出して中断するかの違いだな
0959デフォルトの名無しさん
2010/08/23(月) 14:18:420960デフォルトの名無しさん
2010/08/23(月) 14:19:590961デフォルトの名無しさん
2010/08/23(月) 14:20:400962デフォルトの名無しさん
2010/08/23(月) 14:32:14sys.argv もUnicodeじゃなくてcp932なので、渡せないファイル名があり、
対策するには自分でGetCommandLineWしてコマンドライン解析しないといけない。
(これもPython3では直る)
WindowsのUnicode対応に関して言えば、Python3が最強だと思う。
0963デフォルトの名無しさん
2010/08/23(月) 15:05:24kwsk
0964デフォルトの名無しさん
2010/08/23(月) 20:10:23Python2 は int main(int argc, char *argv[]) で受け取った引数をそのバイト列のまま sys.argv
に入れてる。
Python3 は int _wmain(int argc, wchar *argv[]) で受け取った引数をそのUTF-16のまま
sys.argv に入れてる。
0965デフォルトの名無しさん
2010/08/24(火) 05:35:23なんで2つに分かれてるんですか?
あとcookieはどうしたら使えますか?
0966デフォルトの名無しさん
2010/08/24(火) 08:12:49文字列の置き換えとか文字列処理用途には使えないや
0967デフォルトの名無しさん
2010/08/24(火) 09:24:51日本語リファレンスには書いてない話:urllibとurllib2の違いってなんだ
http://hylom.net/2010/02/10/urllib_and_urllib2_usag/
0968デフォルトの名無しさん
2010/08/24(火) 09:32:07嘘を書くな
0969デフォルトの名無しさん
2010/08/24(火) 10:02:500970デフォルトの名無しさん
2010/08/24(火) 10:56:590971デフォルトの名無しさん
2010/08/24(火) 11:05:54import cookielib
cookielib.CookieJar() を変数に保存しておいて必要に応じて
urllib2.build_opener(urllib2.HTTPCookieProcessor())
に渡す
0972デフォルトの名無しさん
2010/08/24(火) 11:10:27ありがとうございます
2つの違いについては答えが見つかりましたが
そもそも2つに分かれている理由が判りません
>>971
ありがとうございます
やってみます
0973デフォルトの名無しさん
2010/08/24(火) 11:26:59>そもそも2つに分かれている理由が判りません
後方互換性を維持するためかなあ。
0974デフォルトの名無しさん
2010/08/24(火) 11:36:12>>> r = re.compile(r'hoge(.*)', re.I)
>>> for m in r.findall(u'hogefuga\nhogehage\nhogehoge\n'):
... print m
...
fuga
hage
hoge
各行毎に出て来ますが
'fuga\nhogehage\nhogehoge\n'
を出力として欲しいときはどうすれば良いでしょう?
0975デフォルトの名無しさん
2010/08/24(火) 11:43:59import re
r = re.compile(r'hoge(.*)', re.I)
x = r.findall(u'hogefuga\nhogehage\nhogehoge\n')
print u'\\n'.join(x)
でもお前正規表現における.と改行の扱い勘違いしてないか?
0976デフォルトの名無しさん
2010/08/24(火) 11:53:390977デフォルトの名無しさん
2010/08/24(火) 11:57:11それだと
fugahagehoge
になっちゃいますよね
>>976
出来ました
ありがとうございました
0978デフォルトの名無しさん
2010/08/24(火) 13:05:23>>> r = re.compile(r'hoge(.*)hoge', re.I | re.S)
>>> for m in r.findall(u'hogefuga\nhogehage\nhogehoge\n'):
... print m
...
fuga
hogehage
hoge
これは
'fuga\nhogehage\nhoge'
が検出されているということだと思いますが
re.S をつけたままで
'fuga\n'
と
'hage\n'
と
''
が出て来るようにするにはどうすれば良いでしょう?
0979デフォルトの名無しさん
2010/08/24(火) 13:11:32それは最大一致になってる
(.*) → (.*?)
0980デフォルトの名無しさん
2010/08/24(火) 13:59:13出来ました
ありがとうございます
でも
'fuga\n'
と
'hage\n'
と
''
じゃなくて
'fuga\n'
と
''
しか取れません
0981デフォルトの名無しさん
2010/08/24(火) 14:11:060982デフォルトの名無しさん
2010/08/24(火) 21:48:50http://hibari.2ch.net/test/read.cgi/tech/1282537545/
0983デフォルトの名無しさん
2010/08/24(火) 21:54:110984デフォルトの名無しさん
2010/08/24(火) 21:56:12出来ました
ありがとうございます
0985デフォルトの名無しさん
2010/08/25(水) 10:57:14select = コマンド
select.replace('ab','cc')
これだと上手くいかないのは何故
0986デフォルトの名無しさん
2010/08/25(水) 19:10:360987デフォルトの名無しさん
2010/08/25(水) 19:17:23>コマンドの返り値がabcだとして
kwsk
0988デフォルトの名無しさん
2010/08/25(水) 19:58:18│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0989デフォルトの名無しさん
2010/08/25(水) 20:12:29じゃね?
0990デフォルトの名無しさん
2010/08/26(木) 02:26:200991デフォルトの名無しさん
2010/08/26(木) 16:59:530992デフォルトの名無しさん
2010/08/26(木) 17:00:210993デフォルトの名無しさん
2010/08/26(木) 23:26:030994デフォルトの名無しさん
2010/08/26(木) 23:28:200995デフォルトの名無しさん
2010/08/27(金) 01:07:280996デフォルトの名無しさん
2010/08/27(金) 01:08:410997デフォルトの名無しさん
2010/08/27(金) 01:19:560998デフォルトの名無しさん
2010/08/27(金) 01:21:41最後まで拾えない事もしばしば
もっと速い板もありゅ
981を越えて落ちる時間は、もしかして板によらず一定なのかも。
運営のどこかに希望を持ってけば変えられるかなぁ?
dat落ちの条件って、確か
・一定レス数未満のスレで、一定時間書き込みが無い
・一定レス数以上(981?)のスレで、一定時間書き込みが無い
・板別に設定されたスレ保持数を超えた際、最終書き込み日時が古いもの
の3つだったっけ?
あ、でも最後のは定期的にチェックしてるだけで新スレが立った瞬間じゃないんだっけ
1ヶ月ルールがある板もある
0999デフォルトの名無しさん
2010/08/27(金) 05:02:541000デフォルトの名無しさん
2010/08/27(金) 05:03:37http://hibari.2ch.net/test/read.cgi/tech/1282537545/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。