くだすれPython(超初心者用) その15
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2012/10/20(土) 16:34:25.82もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで
前スレ
くだすれPython(超初心者用) その14
http://toro.2ch.net/test/read.cgi/tech/1342660231/
関連スレ
Pythonのお勉強 Part47
http://toro.2ch.net/test/read.cgi/tech/1341819025/
【実験台】 Python 3.0 のお勉強 Part 1 【非互換】
http://toro.2ch.net/test/read.cgi/tech/1235050215/
◆関連リンク
Python の Home Page
ttp://www.python.org/
0002デフォルトの名無しさん
2012/10/20(土) 16:35:06.20|_::;; ~"'ヽ
| //^''ヽ,,)
| i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
|( ´∀`) < きのこ のこーのこ げんきのこ ♪
|(ノ |つ
| |
⊂ _ ノ
""U
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
(´∀` )| < エリンギ まいたけ ブナシメジ ♪
⊂| (ノ |
| |
ヽ _ ⊃
.U""
|
| ミ
| ミ サッ!
| ミ
|
0003デフォルトの名無しさん
2012/10/20(土) 16:37:34.49http://speirs.blog17.fc2.com/blog-entry-4.html
http://atomic.jpn.ph/prog/etc/encode.html
http://d.hatena.ne.jp/kakurasan/20100330/p1
http://pc11.2ch.net/test/read.cgi/tech/1217836194/339
PythonのUnicodeEncodeErrorを知る
http://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
よくまとまってた。あとで読む
最新版直リン - 2.Xが推奨。3.Xはライブラリやドキュメントが使えないことも
ttp://www.python.org/download/
Python のコーディングガイド PEP8
ttp://www.python.org/dev/peps/pep-0008/
Python のコーディングガイド PEP8 - 日本語訳
ttp://www.oldriver.org/python/pep-0008j.html
日本語文字列コード問題まとめ
ttp://python.matrix.jp/tips/string/encoding.html
インタラクティブモードのエンコード
ttp://python.matrix.jp/tips/compatibility/interact_encoding.html
SJISから卒業出来ないひとのための禁じ手
reload(sys); sys.setdefaultencoding('cp932')
Pythonの文字化け対策:sys.setdefaultencodingの謎
ttp://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を変更する
ttp://d.hatena.ne.jp/perezvon/20070715/1184469534
PEP-8とか
ttp://www.python.org/dev/peps/pep-0008/
ttp://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
0004デフォルトの名無しさん
2012/10/20(土) 16:38:32.40http://blog.explainmydata.com/2012/07/expensive-lessons-in-python-performance.html
0005デフォルトの名無しさん
2012/10/20(土) 16:41:48.39言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0006デフォルトの名無しさん
2012/10/21(日) 07:49:08.280007デフォルトの名無しさん
2012/10/21(日) 07:57:12.87│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0008デフォルトの名無しさん
2012/10/21(日) 08:06:49.23Cvr6jXc0G/c3BgLhfriwvl5No4NejUJz
LpIZQVwwPY0OQOkaBSBnDlRujgKYC4ZQ
ZfoKYGVzkkEcDYX4xjnxmo0OzXUKU/L6
1jadbDo7bfP0uVwwA8FqG4MgjH01YAMa
A7kgNND1LQtgroC6Kb4xDiyr1BiAAjP1
9JpzFQBRXmeP
0009デフォルトの名無しさん
2012/10/21(日) 08:53:18.550010デフォルトの名無しさん
2012/10/21(日) 09:36:54.04BASE64でエンコードされた遠隔操作命令…?
0011デフォルトの名無しさん
2012/10/21(日) 10:03:13.2678 da 6b 74 68 44 86 71 - fa 5c c8 bc 46 07 05 7d
08 fb d4 bd 6d eb e1 52 - 0a fa fa 8d 77 34 1b f7
37 06 02 e1 7e b8 b0 be - 5e 4d a3 83 5e 8d 42 73
2e 92 19 41 5c 30 3d 8d - 0e 40 e9 1a 05 20 67 0e
54 6e 8e 02 98 0b 86 50 - 65 fa 0a 60 65 73 92 41
1c 0d 85 f8 c6 39 f1 9a - 8d 0e cd 75 0a 53 f2 fa
d6 36 9d 6c 3a 3b 6d f3 - f4 b9 5c 30 03 c1 6a 1b
83 20 8c 7d 35 60 03 1a - 03 b9 20 34 d0 f5 2d 0b
60 ae 80 ba 29 be 31 0e - 2c ab d4 18 80 02 33 f5
f4 9a 73 15 00 51 5e 67 - 8f
なんぞこれ?
0012デフォルトの名無しさん
2012/10/21(日) 12:11:50.770013デフォルトの名無しさん
2012/10/21(日) 16:04:34.25import zlib, base64
print(zlib.decompress(base64.b64decode(b'''eNprdGhEhnH6XMi8RgcFfQj71L1t6+FS
Cvr6jXc0G/c3BgLhfriwvl5No4NejUJz
LpIZQVwwPY0OQOkaBSBnDlRujgKYC4ZQ
ZfoKYGVzkkEcDYX4xjnxmo0OzXUKU/L6
1jadbDo7bfP0uVwwA8FqG4MgjH01YAMa
A7kgNND1LQtgroC6Kb4xDiyr1BiAAjP1
9JpzFQBRXmeP''')).decode('cp932'))
0014デフォルトの名無しさん
2012/10/22(月) 17:53:36.060015デフォルトの名無しさん
2012/10/25(木) 21:04:21.78あーでもないこーでもないと書いてはエラーで怒られての繰り返しする中で
IDLEで試行錯誤>使える部分をテキストエディタにコピペ>○○.pyで保存とやってます
iptyhonとかbpythonとか触ってみると色々補完してくれてとても便利なんですが
この辺のファイルに落としこむ作業は簡単なんでしょうか?
自分が見た限り%logstartとか最初から清書できる感じじゃないと無理なような。。。
0016デフォルトの名無しさん
2012/10/25(木) 23:02:48.540017デフォルトの名無しさん
2012/10/26(金) 00:11:39.57セッションまるごと保存して後から必要な箇所だけ切り貼りするのではだめなの?
だめならemacsでM-x termからpython起動してあれこれ試して
保存したい箇所ができたら選択してwrite-regionとか
0018デフォルトの名無しさん
2012/10/26(金) 00:25:56.630019デフォルトの名無しさん
2012/10/26(金) 00:43:12.78ありがとうございました
0020デフォルトの名無しさん
2012/10/26(金) 01:25:05.260021デフォルトの名無しさん
2012/10/26(金) 01:59:04.12切り貼りするならwxPython付属のPySlicesが便利かもしれない
インタラクティブにコードを実行できる環境で,一旦間違ったコードも編集/再評価が出来る,
コピペの際 選択範囲に>>>や...を含まない.
0022デフォルトの名無しさん
2012/10/26(金) 14:10:57.29動的に親クラスを調べる方法ってありませんか?
0023デフォルトの名無しさん
2012/10/26(金) 14:15:57.600024デフォルトの名無しさん
2012/10/26(金) 14:22:22.67でも, ちょっと違う.
(class-direct-superclasses (find-class <クラスネーム>))
の様な感じで, 指定したクラスの親リストが欲しいんです
# 説明不足で申し訳ない
0025デフォルトの名無しさん
2012/10/26(金) 14:49:32.600026デフォルトの名無しさん
2012/10/26(金) 16:41:26.140027デフォルトの名無しさん
2012/10/27(土) 07:13:22.70を参考にしてるんですが、
文字コードを「UTF-8」で作業ディレクトリへ保存するにはどうすればいいんでしょうか?
0028デフォルトの名無しさん
2012/10/27(土) 09:36:01.40使ってるテキストエディタ(メモ帳とか)の名前を言えば誰かが具体的な方法を教えてくれるかも
作業ディレクトリ(カレントディレクトリ)がよくわかってなかったら
コマンドプロンプト 作業ディレクトリ cd dir あたりについてぐぐるといい
回答とは関係ないけどWindowsのPythonスクリプトでshebang書いてあるのを
初めて見たので色々ぐぐってたら、こんなのがあるのを知った
http://www.python.org/dev/peps/pep-0397/
0029デフォルトの名無しさん
2012/10/27(土) 14:37:31.82python -c "open('outfile.py', 'wb').write(open('infile.py', 'rb').read().decode('cp932').encode('utf-8'))"
を実行すればいいよ
0030デフォルトの名無しさん
2012/10/27(土) 14:43:12.81>1行目ではPythonのインタープリタへのパスを記述します。
>今回のような、単独でのモジュール起動では記述が無くても大丈夫ですが、
>別のモジュールから今回作成したモジュールをimport(取り込み)したいというような時には、
>モジュール内部にインタープリタへのパスを記述しておきます。 必要が無くても記述する癖をつけておきましょう。
そのサイトに書いてある内容デタラメだから参考にしない方が良いよ。
0031デフォルトの名無しさん
2012/10/27(土) 16:04:20.19ググってみたところカレントディレクトリはpython27みたいです。
#! c:/Python27/python.exe
# -*- coding: utf-8 -*-
print u"モジュールのロード"
def test():
print u"関数:testを呼び出しました"
if __name__ == "__main__":
print "python-izm"
# print "パイソンイズム"
test()
という例の通りやってみても
c:\python27>test02.py
File "C:\Python27\test02.py",line4
print u"モジュールのロード"
SyntaxError:(uncode error)'utf8' codec can't decode byte 0x83 inpostin 0:
invalid start byte
と言うエラーが出てしまいます。2.6系が何故かうまく起動しないので2.73でやっていますが
このサイトは2.7には適応してないのでしょうか。
0032デフォルトの名無しさん
2012/10/27(土) 16:09:50.04ありがとうございます。SJISについて調べてみます。
>>30
初心者の中の初心者ですのでサイトえり好みできないんです(泣
0033デフォルトの名無しさん
2012/10/27(土) 16:14:05.60> 初心者の中の初心者ですのでサイトえり好みできないんです(泣
んなこたないだろ。本人の気持ち次第。
Dive into python と公式ドキュメントのチュートリアル見れ。
0034デフォルトの名無しさん
2012/10/27(土) 16:14:50.390035デフォルトの名無しさん
2012/10/27(土) 16:17:26.39「選り好み出来ない」の意味を取り違えてる。
初心者が間違ったサイトを参考に勉強するとかえって悲惨な事態になるだけ。
自分で初心者だと思ってるなら素直に先輩の言うことを聞いた方が良い。
0036デフォルトの名無しさん
2012/10/27(土) 16:19:43.880037デフォルトの名無しさん
2012/10/27(土) 16:21:14.74煮えてない所を頼む
0038デフォルトの名無しさん
2012/10/27(土) 16:24:34.150039デフォルトの名無しさん
2012/10/27(土) 16:34:57.02http://d.hatena.ne.jp/dplusplus/20100126/p1
>>31
初心者は慣れるまで日本語使わないほうがいい
コメントに使うのはOK(coding指定してある場合に限る)
0040デフォルトの名無しさん
2012/10/27(土) 16:39:53.890041デフォルトの名無しさん
2012/10/27(土) 17:07:19.14問題になるのは能力以上のことをやろうとしたとき
004227
2012/10/27(土) 17:29:43.80Cドライブ直下にpython27というカレントディレクトリがあって、
その中に読み込みたいファイルtest02.pyがある場合そのコードのどこを変えればいいんでしょうか?
Dive into Pythonを見てきましたが解らない言葉が多すぎて手に負えませんでした。
簡単な実践から入れるサイトがそこしかないので、上達できたら他のファイルを見て修正していきたいと思います。
>>39
そこはまず飛ばしても大丈夫ですかね?ここで詰まってばかりも入れないので次に進んでみます。
0043デフォルトの名無しさん
2012/10/27(土) 17:35:18.97ステマか?
0044デフォルトの名無しさん
2012/10/27(土) 17:41:54.100045デフォルトの名無しさん
2012/10/27(土) 17:48:46.69メモ帳のテキスト文字がANSIになっていた事が解り、utfにしてみたら解決してしまいました。
回答して頂いた皆さんありがとうございました。
0046デフォルトの名無しさん
2012/10/27(土) 17:51:54.490047デフォルトの名無しさん
2012/10/27(土) 17:54:04.34すげー(棒)
0048デフォルトの名無しさん
2012/10/27(土) 21:53:51.790049デフォルトの名無しさん
2012/10/27(土) 22:05:13.110050デフォルトの名無しさん
2012/10/27(土) 22:26:57.520051デフォルトの名無しさん
2012/10/27(土) 22:50:04.69shebang書いとくとコマンドとして実行できて便利ってだけ
単独でのモジュール起動の場合にshebangつけずに
importされるモジュールの場合はshebangつけろっていうのはどう考えても変
あと自分が見たときはstr.splitの返り値がタプルとか書いてあった
0052デフォルトの名無しさん
2012/10/27(土) 22:51:30.590053デフォルトの名無しさん
2012/10/27(土) 23:00:15.57そんなむちゃくちゃな記述どこにもないぞ。
俺はDive Into Pythonの話だと思ってたが、違うサイトの話だったのか?
0054デフォルトの名無しさん
2012/10/27(土) 23:07:54.10関係各位の皆様、申しわけありません。
0055デフォルトの名無しさん
2012/10/27(土) 23:11:44.790056デフォルトの名無しさん
2012/10/27(土) 23:12:45.350057デフォルトの名無しさん
2012/10/27(土) 23:14:29.810058デフォルトの名無しさん
2012/10/27(土) 23:17:58.490059デフォルトの名無しさん
2012/10/27(土) 23:36:10.11ごめん
0060デフォルトの名無しさん
2012/10/27(土) 23:36:34.040061デフォルトの名無しさん
2012/10/27(土) 23:41:40.070062デフォルトの名無しさん
2012/10/28(日) 03:44:01.530063デフォルトの名無しさん
2012/10/28(日) 03:47:08.72対応早すぎわろす
絶対2ちゃん見てる
0064デフォルトの名無しさん
2012/10/28(日) 04:34:18.530065デフォルトの名無しさん
2012/10/28(日) 04:43:43.44気付いた問題点をまとめて、お問い合わせフォームに送りつけとくわ。
0066デフォルトの名無しさん
2012/10/28(日) 04:57:16.190067デフォルトの名無しさん
2012/10/28(日) 05:00:59.90006865
2012/10/28(日) 05:45:46.52あとは知らん。
0069デフォルトの名無しさん
2012/10/28(日) 19:31:44.420070デフォルトの名無しさん
2012/10/29(月) 00:43:14.900071デフォルトの名無しさん
2012/10/29(月) 01:07:12.370072デフォルトの名無しさん
2012/10/29(月) 17:55:57.330073デフォルトの名無しさん
2012/10/29(月) 19:39:53.22そして俺はどのGUIを選べばいいんだー
やっぱTKINTERすか?
色々あってわけわかめ
0074デフォルトの名無しさん
2012/10/29(月) 20:58:09.78ttp://www.zetcode.com/ に一通りチュートリアル揃ってる
random.choice(["tkinter","PyQt4","PySide","wxPython","pyGTK"])
0075デフォルトの名無しさん
2012/10/29(月) 21:37:45.74あらあらどもです・・・ってどんだけあんだーw
0076デフォルトの名無しさん
2012/10/29(月) 22:03:32.89Python3に対応してるとなると選択肢が狭まる。
0077デフォルトの名無しさん
2012/10/29(月) 22:52:47.85あ、2でアップアップしてます
0078デフォルトの名無しさん
2012/10/30(火) 00:16:01.46"PyQt4" -> Qtは商用アプリでもよく使われている。機能も豪華。(ただしGPL)
"PySide" -> PyQt4互換のLGPL版バインディング(新参なので若干バグあり)
"wxPython" -> 知らん
"pyGTK" -> 事実上Linux専用。GTKアプリを作りたいなら。
0079デフォルトの名無しさん
2012/10/30(火) 00:43:52.00やりやすかったが、未だにPython3未対応だな。
0080デフォルトの名無しさん
2012/10/30(火) 01:02:53.8979の補足で埋まったし
しかし一長一短激しいのなー
0081デフォルトの名無しさん
2012/10/30(火) 10:25:54.75Py3にこだわらなければwx最強だよ
pyQt4/PySideもありだけど将来不安でいまいち没頭しにくい
その他は糞
0082デフォルトの名無しさん
2012/10/30(火) 10:41:32.69マウス操作で配置出来るエディタがあるし、xrc書き出しでGUIとスクリプトを分離して使い回しも便利
flashのUIコンポーネント並みにお手軽だった
0083デフォルトの名無しさん
2012/10/30(火) 11:26:35.63UIデザイナに関しては、QtもwxWidgetsも同じ。
APIの設計とイベントハンドリングはQtのほうが綺麗な印象。
あとWebKitが標準で使えるのが便利だった。
PyQt/PySideの将来については確かに不安。
0084デフォルトの名無しさん
2012/10/30(火) 12:19:36.37見限ってよい
0085デフォルトの名無しさん
2012/10/30(火) 12:52:40.630086デフォルトの名無しさん
2012/10/30(火) 13:41:12.91まさにこの思考プロセスでpysideがベターという結論に到達した
0087デフォルトの名無しさん
2012/10/30(火) 14:40:22.35http://wiki.wxpython.org/ProjectPhoenix
安定版のリリースは、まだ予定なし
0088デフォルトの名無しさん
2012/10/30(火) 15:12:57.51there are no insurmountable obstacles for Python 3 support.
http://www.pyside.org/roadmap/
http://qt-project.org/wiki/PySide_Python_3_Issues
- answered Jul 6 at 17:54
0089デフォルトの名無しさん
2012/10/30(火) 15:29:23.17PySide has included support for Python 3.2 since version 1.0.8.
If this is true where can I get those binaries? – edhedges Jul 6 at 18:06
@edhedges I think you have to build it by yourself – Maksym Polshcha Jul 6 at 19:01
0090デフォルトの名無しさん
2012/10/30(火) 16:27:33.51ビルド環境がない場合は、インストーラの有無も評価項目になるのかな
Downloads -> Binaries 各プラットフォームにリンクがあるけど
osx は 3対応バイナリ見当たらない
win は 3対応はあるものの、64bits版が not available といった状況
0091デフォルトの名無しさん
2012/10/30(火) 17:38:40.760092デフォルトの名無しさん
2012/10/30(火) 20:30:40.11Qtのビルドが超面倒臭くて心折れる。
0093デフォルトの名無しさん
2012/10/31(水) 00:27:10.64ただ RPC 周りが PyQt に比べてちっと遅い
他はなんの問題もない
Qt5 対応どうなんだろうなー
Nokia 売っぱらっちまったから PySide に今までみたいに力入れてくれるかなー
0094デフォルトの名無しさん
2012/10/31(水) 06:25:32.98日本語の教科書でこの本と同等レベルのものってないでしょうか?
The Practice of Computing Using Python (2nd Edition)
http://www.amazon.co.jp/dp/0132992833
0095デフォルトの名無しさん
2012/10/31(水) 06:55:18.81そもそも日本語の本自体が少ないんだけど、この本はどうだろう?
http://www.amazon.co.jp/dp/4894714019
ある程度基礎が分かったら、さっさと自分の興味のある方面で、何かを作ったり、
優秀な人が書いたコードをパクったり(参考にしたり)するのが
一番勉強になると思う。
自分は何をしてみたいのか。Web開発、GUIアプリ、自動化スクリプト、
アルゴリズムの勉強、ネットワーク、数値計算、etc.
あとできれば英語を読んだほうがいいです。無理のない範囲で。
0096デフォルトの名無しさん
2012/10/31(水) 07:08:57.54正直その本はじめて見たんだけどCSよりのPython本ってことなら
初めてのコンピュータサイエンス
http://www.amazon.co.jp/dp/4873114632
ただこの本は大学で使うならともかく一人で読んで面白い本ではないと思う
またみんなのPythonを読んだ人には重複が多いから
CやJavaで書かれたアルゴリズムとデータ構造の本でも読んだほうがいいのでは
時間のありあまってる人向け
http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books
0097デフォルトの名無しさん
2012/10/31(水) 07:25:16.810098デフォルトの名無しさん
2012/10/31(水) 07:28:33.46http://courses.csail.mit.edu/6.006/spring11/notes.shtml
0099デフォルトの名無しさん
2012/10/31(水) 07:54:03.45あなたが買って読めない場所を質問してくれれば
翻訳してあげてもいいですよ
0100デフォルトの名無しさん
2012/10/31(水) 07:56:19.61/ / ヽ ::: \
| (●), 、(●)、 |
| ,,ノ(、_, )ヽ、,, |
| ,;‐=‐ヽ .:::::|
\ `ニニ´ .:::/ NO THANK YOU
/`ー‐--‐‐―´´\
.n:n nn
nf||| | | |^!n
f|.| | ∩ ∩|..| |.|
|: :: ! } {! ::: :|
ヽ ,イ ヽ :イ
0101デフォルトの名無しさん
2012/10/31(水) 08:03:54.96そこのコルメン本の副読本に挙がってるたんだけどこれはいいかも
http://interactivepython.org/courselib/static/pythonds/index.html
0102デフォルトの名無しさん
2012/10/31(水) 08:22:18.33>94 と >100 は同一人物と判定されているんだが
頼んでおいて断るとはこれ如何に
0103デフォルトの名無しさん
2012/10/31(水) 08:25:17.030104デフォルトの名無しさん
2012/10/31(水) 09:43:20.99(Python2.x)
* 文字コードとは
...
* ソースコードの文字コードを伝える
# -*- codecs: utf-8 -*-
* str型とunicode型
str型 => バイトの並び
unicode型 => 文字の並び
* encode/decode
* テキストファイルを扱う
(Python3のopen(..., encoding='***')にあわせて、codecs.open()で説明するとよさそう)
- 読む: codecs.open('a.txt', encoding="utf-8")
- 書く: codecs.open('a.txt', 'w', encoding="utf-8")
* 標準出力
- print u"あいう" はどのように動作するのか
sys.stdout.encoding
- print u"あいう".encoding('euc-jp')
- リダイレクトした時の動作
sys.stdout.encoding => None
sys.getdefaultencoding() => ascii
対処法 sys.stdout.encoding = codecs.getwriter(locale.getpreferredencoding())(sys.stdout) とか?
0105デフォルトの名無しさん
2012/10/31(水) 10:03:39.59いきなり間違えてるYO
0106デフォルトの名無しさん
2012/10/31(水) 10:24:46.810107デフォルトの名無しさん
2012/10/31(水) 10:36:48.270108デフォルトの名無しさん
2012/10/31(水) 10:39:53.990109デフォルトの名無しさん
2012/10/31(水) 10:49:11.250110デフォルトの名無しさん
2012/10/31(水) 12:13:07.071. Python2.xのアンインストール
2. Python3.xのインストール
0111デフォルトの名無しさん
2012/10/31(水) 13:05:52.040112デフォルトの名無しさん
2012/10/31(水) 13:21:04.810113デフォルトの名無しさん
2012/10/31(水) 14:30:27.05タッチパネルキーボードを作りたくて勉強を始めたんですが
キーの配置を設定する際に
from tkinter import *
layout = (
( ('~\n`', 1), ('!\n1', 1), ('@\n2', 1), ('#\n3', 1), ('$\n4', 1),
('%\n5', 1), ('^\n6', 1), ('&\n7', 1), ('*\n8', 1), ('(\n9', 1),
(')\n0', 1), ('_\n-', 1), ('+\n=', 1), ('Backspace', 2),
)
# 中略
( ('Ctrl', 2), ('Alt', 2), ('Space', 7), ('Alt', 2), ('Ctrl', 2),
),
)
def press():
print("pressed")
root = Tk()
root.title("keyboard")
for i in range(len(layout)):
for j in range(len(layout[i]):
key = layout[i][j][0]
k_len = layout[i][j][1]
button = Button(root, height=2,
width=k_len, text=key,command=press).grid(row=i, column=j)
root.mainloop()
とすると、各行番号と列番号に異なったサイズのキーが配置されて
キーとキーの間に隙間が出来てしまうため、実際のキーボードのようなレイアウトになりません
現実のキーボードのようにキーを隙間なく配置したいのですが、何か良い方法はないでしょうか
0114デフォルトの名無しさん
2012/10/31(水) 15:57:25.41.grid(sticky="news", ...でとりあえず隙間は埋められます
但し、gridだと格子状になるので、実際のキーボードのような行毎にずらすレイアウトにするなら
gridに 例えばcolumspan=k_lenと指定したり、gridではなく pack を入子にする等もう一工夫必要です
0115デフォルトの名無しさん
2012/10/31(水) 16:02:42.50columnspan=k_lenを指定したところ、最後の行以外は現実のキーボードと同じレイアウトになりました
なんとか後は工夫してどうにかできそうです、本当にありがとうございました
0116デフォルトの名無しさん
2012/10/31(水) 16:28:54.77横槍ですが、
先生、ちょっと待って下さい。
僕まだできていません。
for i in range(len(layout)):
for j in range(len(layout[i])):
key = layout[i][j][0]
k_len = layout[i][j][1]
button = Button(root, height=2, width=k_len, text=key,command=press,
)
# anchor='w')
# 分けの分からんことになる。[space]が馬鹿でかい。
# button.grid(row=i, column=j, columnspan=k_len, sticky='news')
# [space] と [2] が 大きさ2になる。
button.grid(row=i, column=j, sticky='news')
どうしたらいいんでしょうか?
>>115さんにも試したこと書いて欲しい。。。
0117デフォルトの名無しさん
2012/10/31(水) 17:02:51.18>>115です
最後の行以外は現実の同じキーボードとレイアウトになったと書きましたが
よく見たら一列目のTab,CapsLock,Shiftが二列目以降のキーに重なって半分見えない状態になっていました
隙間がなくなっていることに感動して見落としていたようです
なので自分もまだ工夫する方法を考えている状態です
0118デフォルトの名無しさん
2012/10/31(水) 18:29:49.31ついでに、gridで実際のキーボードみたいに半分ずらすなら、
通常のキーはcolumspan=2にして columnは各行で奇数,偶数,奇数となるように配置します
0119デフォルトの名無しさん
2012/10/31(水) 18:39:20.21先生っ、出来ました!
for i in range(len(layout)):
column_index = 0
for j in range(len(layout[i])):
key = layout[i][j][0]
k_len = layout[i][j][1]
button = Button(root, height=2, width=k_len, text=key,command=press,
)
# anchor='w')
button.grid(row=i, column=column_index, columnspan=k_len, sticky='news')
column_index += k_len
0120デフォルトの名無しさん
2012/10/31(水) 18:48:30.02アリガトウ ( ´∀`)ノ>>117,118)Д`)ブニュ
def press(key):
return lambda : print('{} pressed'.format(key))
root = Tk()
root.title("keyboard")
for i in range(len(layout)):
column_index = 0
for j in range(len(layout[i])):
key = layout[i][j][0]
k_len = layout[i][j][1]
button = Button(root, height=2, width=k_len,
text=key, command=press(key))
button.grid(row=i, column=column_index, columnspan=k_len, sticky='news')
column_index += k_len
0121デフォルトの名無しさん
2012/10/31(水) 18:58:26.89ttp://ideone.com/KII4ja
0122デフォルトの名無しさん
2012/11/01(木) 02:07:14.820123デフォルトの名無しさん
2012/11/01(木) 09:51:47.020124デフォルトの名無しさん
2012/11/01(木) 09:58:10.730125デフォルトの名無しさん
2012/11/01(木) 10:05:39.020126デフォルトの名無しさん
2012/11/04(日) 09:19:51.07これを実行したところ、メッセージが表示されてしまいました。
クラスをどこからも継承したり呼んだりしていないのに
単体で動いてしまうのって正常ですか?
class Fuga():
print("Fuga submitted!")
0127デフォルトの名無しさん
2012/11/04(日) 10:02:28.70http://www.python.jp/doc/release/tutorial/classes.html#tut-firstclasses
0128デフォルトの名無しさん
2012/11/04(日) 10:24:06.63それがないとデコレータも出来ない
0129デフォルトの名無しさん
2012/11/04(日) 11:03:22.84そこで実行されないとメンバ変数宣言出来ないじゃん
0130デフォルトの名無しさん
2012/11/04(日) 12:56:42.29でも副作用のある宣言をすればちゃんと実行されているはずだぜ
0131デフォルトの名無しさん
2012/11/04(日) 13:15:22.84Topとウィジェットの背景色を指定しその色を透過するようにしました
Topの背景は透過されたのですが
画像の半透過の部分が透けません どうしたらよいでしょうか?
0132デフォルトの名無しさん
2012/11/04(日) 14:55:54.65>Topとウィジェットの背景色を指定し
背景色を指定ってのがよくわからない。これはどうやってる?
色指定なくても top.wm_attributes("-alpha", 0.8) で全部透過になるよ
もしかして RGBA 形式でない透過のpng だったりしないかな?
0133デフォルトの名無しさん
2012/11/04(日) 15:56:22.63背景色はconfigure(bg="color")で指定してます
RGBA形式の透過PNGであるのは確認しました
完全な透過指定の部分は透過されてるんですが
半透過の部分は半透過されてるようなんですがどうも透過されてるはずの
ウィジェットの背景色が画像の色に加算されたままになってるようです
0134デフォルトの名無しさん
2012/11/04(日) 16:01:24.23あとalphaで指定すると透過でないところが透過されるので使えないです
0135デフォルトの名無しさん
2012/11/04(日) 16:02:48.68>ウィジェットの背景色が画像の色に加算されたままになってるようです
半透過ならそれで正常
0136デフォルトの名無しさん
2012/11/04(日) 16:27:44.370137126
2012/11/04(日) 22:10:27.39もう一つ質問ですが、Pythonのクラスが
メンバに対する明示的なアクセス制御機構
(Javaで言うprivate指定など)を持たず、結果として
オブジェクト指向の三大要素の一つである隠蔽が欠けているのは
型のない言語であるがゆえのやむを得ない仕様でしょうか?
それとも別の意図がある?
0138デフォルトの名無しさん
2012/11/04(日) 22:51:15.63っていう紳士協定を導入してるから。
実際には綺麗なC言語実装になるからじゃないの?
0139デフォルトの名無しさん
2012/11/05(月) 01:35:59.60class Class(object):#2系でobject継承すると新スタイルクラス(3と同じ挙動)
#ここも普通に実行されるがクラススコープ
_member = 1#非公開メンバ(列挙されないだけでアクセスは出来る)
__member = 2#非公開+難読化(外部からは_Class__memberという名前になる)
基本的にはこんな感じであとはデスクリプタとかでC#のようなプロパティも出来る
詳細は言語リファレンスのデータモデルなんかを読んでください
スタンスについては
デバックの際にはアクセスできることが有効であるし
自由にアクセスできるからといって
アクセスするプログラムを作らなければならないわけではない
アクセスしないようにプログラムを作ればいい
みんな大人なんだから
とかなんとか
0140デフォルトの名無しさん
2012/11/05(月) 01:41:27.19[1,3,5...]と[2,4,6...]というリストを作りたいのですが
a = [i[0] for i in l]
b = [i[1] for i in l]
より早い方法ってあります?
なんども呼ぶのでなるべく早くしたいのですが
0141デフォルトの名無しさん
2012/11/05(月) 01:46:16.18a,b = zip(*l)
0142デフォルトの名無しさん
2012/11/05(月) 01:47:47.36l = numpy.array([(1,2),(3,4),(5,6)])
a = l[:,0]
b = l[:,1]
0143デフォルトの名無しさん
2012/11/05(月) 03:01:46.74確実なメリットって言うと、間違って呼び出した時にエラーにしてくれるくらいしかないのよね
0144デフォルトの名無しさん
2012/11/05(月) 08:30:15.25l[1::2]
0145デフォルトの名無しさん
2012/11/05(月) 17:32:16.42窓の杜 - 【NEWS】Microsoft、「Python Tools for Visual Studio」v1.5を正式公開
http://www.forest.impress.co.jp/docs/news/20121105_570958.html
http://www.forest.impress.co.jp/img/wf/docs/570/958/image3.jpg
http://www.forest.impress.co.jp/img/wf/docs/570/958/image2.jpg
0146デフォルトの名無しさん
2012/11/05(月) 17:56:45.82>「PTVS」v1.5では「Python 3.3」へ対応したほか
>「Python 3.3」
はい解散
0147デフォルトの名無しさん
2012/11/05(月) 18:05:20.44http://pytools.codeplex.com/wikipage?title=Getting%20interpreters%20%26%20libraries%20-%20details
VSでPython入門して面倒くさくなって飽きる人が増えたりして
0148デフォルトの名無しさん
2012/11/05(月) 18:09:17.900149デフォルトの名無しさん
2012/11/05(月) 18:10:58.15くやしいのうくやしいのうwww
0150デフォルトの名無しさん
2012/11/05(月) 18:13:09.820151デフォルトの名無しさん
2012/11/05(月) 18:21:08.360152デフォルトの名無しさん
2012/11/05(月) 19:09:03.740153デフォルトの名無しさん
2012/11/05(月) 19:14:11.38重いイメージあって敬遠してたけど、VS2012入れてみたらそうでもなさそう。
結局その前に評価したPyCharmに落ち着いたけど。
PyCharm試す前にに触っていたらVSにしてたかもしれない
それ以外はわからない
0154デフォルトの名無しさん
2012/11/05(月) 19:23:52.43そもそも解決する気があるんだろうか
SJISまたはBOM付でしか書けないなら
それだけでVSは失格
0155デフォルトの名無しさん
2012/11/05(月) 19:28:46.690156 忍法帖【Lv=40,xxxPT】(1+0:5)
2012/11/05(月) 19:34:05.02そのリストを参照したいんですが、どうやれば出来ますか?
親切な方、教えてくださいm(_ _)m
0157デフォルトの名無しさん
2012/11/05(月) 19:55:22.88external.L
if __name__ == '__main__':
print('external.L =', external.L)
~/main.py [utf-8][unix][4/4行,27文字目]
L = [1, 2, 3, 4]
~/external.py [utf-8][unix][1/1行,16文字目]
p3 main.py
external.L = [1, 2, 3, 4]
0158 忍法帖【Lv=40,xxxPT】(1+0:5)
2012/11/05(月) 20:11:54.370159 忍法帖【Lv=40,xxxPT】(2+0:5)
2012/11/05(月) 20:16:49.150160157
2012/11/05(月) 20:19:41.82tup = (1, 2, 3, 4)
とした方が良いかもね。
0161デフォルトの名無しさん
2012/11/06(火) 22:16:33.64固有値と固有ベクトルをfloatにたもつことはできないのでしょうか?
0162デフォルトの名無しさん
2012/11/07(水) 01:19:48.64Customize Python 3.3.0の画面で、「Add python.exe to Path」というものがあるけどこれ何?
初期状態では無効になっているみたい
0163デフォルトの名無しさん
2012/11/07(水) 01:25:28.890164デフォルトの名無しさん
2012/11/07(水) 01:31:43.650165デフォルトの名無しさん
2012/11/07(水) 01:47:43.91環境変数PATHにpython.exeへのパスを追加する
追加しとくとコマンドプロンプトからpython.exeを起動するときに
C:\からのフルパスで入力せずにpython.exeだけで起動できるようになる
よくわかんなかったら有効にしておいてもたぶん大丈夫
0166デフォルトの名無しさん
2012/11/07(水) 07:38:07.140167デフォルトの名無しさん
2012/11/07(水) 08:16:20.490168デフォルトの名無しさん
2012/11/07(水) 09:50:59.93windows?
バージョン番号付きでshebang 書いてれば、py (windows板のランチャ) が振り分けてくれるよ
#!/usr/bin/env python <- これだとバージョンが曖昧になるので
#!/usr/bin/env python2.7
0169デフォルトの名無しさん
2012/11/07(水) 09:57:02.420170デフォルトの名無しさん
2012/11/07(水) 14:22:29.78結果が複素数になるようなデータを与えたからではないのかな?って疑問なのだけど
具体的なコードと期待する結果を提示してみては?
0171デフォルトの名無しさん
2012/11/07(水) 16:35:51.92小規模なwindowsアプリぐらいしか作らないのであまり複雑じゃないものがいいです
python2.7とwxpythonを使う予定です
0172デフォルトの名無しさん
2012/11/07(水) 17:39:26.18EMACS
VisualStudio
Eclipse
netbeans
pycharm
windows上で作るなら↑が代表的
これ以外は微妙。
簡単なのはテキストエディタでがんばる
0173デフォルトの名無しさん
2012/11/07(水) 19:15:14.37wxPythonに付いてくるEditra
日本語入力がインラインじゃないのと,エディタにしては起動が遅い(IDEよりは手軽感ある)
補完時に時々クラッシュする点がマイナス評価だけど、pluginで簡単なIDE並の機能を追加できる
同じwxPythonでpluginを作れるのが利点
0174デフォルトの名無しさん
2012/11/07(水) 21:21:23.23レスありがとうございます
以前はpyscripterを使っていました
おすすめしていただいたものを一通り使ってみて決めたいと思います
ありがとうございました
0175デフォルトの名無しさん
2012/11/08(木) 11:07:38.470176デフォルトの名無しさん
2012/11/08(木) 12:36:35.010177デフォルトの名無しさん
2012/11/09(金) 08:41:07.89 indent
source
貼れないよ
0178デフォルトの名無しさん
2012/11/09(金) 12:32:18.78正直ここに貼られても邪魔
0179デフォルトの名無しさん
2012/11/09(金) 20:34:27.040180デフォルトの名無しさん
2012/11/09(金) 20:47:33.890181デフォルトの名無しさん
2012/11/10(土) 11:59:39.720182デフォルトの名無しさん
2012/11/10(土) 12:24:49.530183デフォルトの名無しさん
2012/11/11(日) 05:33:20.76す
と
0184デフォルトの名無しさん
2012/11/11(日) 16:52:02.700185デフォルトの名無しさん
2012/11/11(日) 17:02:47.220186デフォルトの名無しさん
2012/11/11(日) 23:19:33.77C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\
AMD APP\bin\x86;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32
\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)
\ATI Technologies\ATI.ACE\Core-Static;;C:\Program Files (x86)\QuickTime\QTSystem\;c:\Python27
と入力してもうまくいかない どなたかわかりますか
0187デフォルトの名無しさん
2012/11/11(日) 23:27:07.580188デフォルトの名無しさん
2012/11/12(月) 01:38:36.62インストーラを使おう
0189デフォルトの名無しさん
2012/11/12(月) 01:46:37.670190デフォルトの名無しさん
2012/11/12(月) 01:56:06.300191デフォルトの名無しさん
2012/11/12(月) 09:24:10.05気になったところ
尻に \ がついてるけど、意図して付けてる?
;; が連続しているけど、意図しているもの?
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\
C:\Program Files (x86)\QuickTime\QTSystem\
Python2.7を以下にinstallしてるんだろうけど、きちんと存在している?
c:\Python27
↑のbin以下にpython.exeが存在するんじゃない?
python.exeのプロパティからpathをきちんと調べてみて。
; で改行して調べてみると以下の通り。
C:\Program Files (x86)\AMD APP\bin\x86_64
C:\Program Files (x86)\AMD APP\bin\x86
%SystemRoot%\system32
%SystemRoot%
%SystemRoot%\System32\Wbem
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\
C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static
C:\Program Files (x86)\QuickTime\QTSystem\
c:\Python27
0192デフォルトの名無しさん
2012/11/12(月) 09:27:32.32そもそも c:\python27\ がある場合の話だけど
あと >>186 は「うまくいかない」とだけ言っているので
何がどううまくいっていないのかが全く伝わらない
釣り認定されるレベル
0193デフォルトの名無しさん
2012/11/12(月) 13:58:23.27内部で使ってるSWIGというのが3.2以降では動かなくなったとかいう情報があるのですが
0194デフォルトの名無しさん
2012/11/12(月) 18:12:20.99ある事情で、pythonを自分一人で一から勉強することになりました。
何がわかっていないのか、自分でもわからないレベルです
気になったところ
尻に \ がついてるけど、意図して付けてる?
;; が連続しているけど、意図しているもの?
これについて、PCは自作のwindows7 64bitでpythonをインストールする前にリカバリーをしています
最後のc:\Python27以外は何もいじってません
なんとかインストールまでこぎつけないかと思ってます
0195デフォルトの名無しさん
2012/11/12(月) 18:22:40.47- c:\Python27 は存在するか?
- 存在したとして c:\Python27\python.exe は存在するか?
0196デフォルトの名無しさん
2012/11/12(月) 18:22:55.64何がうまくいかないのか具体的にどうぞ
0197デフォルトの名無しさん
2012/11/12(月) 18:30:53.01コマンド・プロンプトの質問ですね。
0198デフォルトの名無しさん
2012/11/12(月) 18:54:54.55そっちはどうでも良くて、こっちの方が重要でした
Python2.7を以下にinstallしてるんだろうけど、きちんと存在している?
c:\Python27
↑のbin以下にpython.exeが存在するんじゃない?
python.exeのプロパティからpathをきちんと調べてみて。
0199デフォルトの名無しさん
2012/11/12(月) 18:58:48.830200デフォルトの名無しさん
2012/11/12(月) 20:15:31.14ありがとうございます
インストールされている場所は
C:\Python27になってます
一度削除してからインストしたほうがいいでしょうか?
0201デフォルトの名無しさん
2012/11/12(月) 20:22:18.260202デフォルトの名無しさん
2012/11/12(月) 20:27:15.740203デフォルトの名無しさん
2012/11/12(月) 20:28:21.21って打って実行できるか試してみたら?
多分出来ないと思う
python.exeをdrag & dropでprompt上に持っていけば、
画面にpathを表示してくれたように思う。
PATH\python.exe
最後にpython.exeって付けても実行できるpathを
prompt上で頑張って見つけるんだ。
それが環境変数の値だ。健闘を祈る。
0204デフォルトの名無しさん
2012/11/12(月) 20:33:21.11いたずらに回答する前に>>196から確認すべきだと思うわ
0205デフォルトの名無しさん
2012/11/12(月) 20:39:16.17って書いてるし、何でつまってるか分からないよね
0206デフォルトの名無しさん
2012/11/12(月) 21:37:33.65>;; が連続しているけど、意図しているもの?
これについては質問者も回答者も既に解決済み?
0207デフォルトの名無しさん
2012/11/12(月) 21:52:41.51質問者としては、ただ気になっただけ。
別に答えてもらわなくても問題解決に支障はないと思っておりますが。
;; は影響あったりするんでしょうか?
一応、;;は直しておいて試してよ>>200
後、削除せずに試して欲しいな。
0208デフォルトの名無しさん
2012/11/12(月) 22:23:37.33PythonにPATH通ってなくても、pyコマンド使えないかな?
win32/vistaで、PATH設定なしで py コマンドが使えてた記憶があるのだけど
Python 26,27,32,33 で 自前ビルド/公式/ActivePython 混在環境で
pipで入れたのかどうか、インストール経路が思い出せない。
0209デフォルトの名無しさん
2012/11/12(月) 22:38:59.193.3.0付属
http://www.python.org/dev/peps/pep-0397/
0210デフォルトの名無しさん
2012/11/12(月) 23:22:38.060211デフォルトの名無しさん
2012/11/13(火) 05:27:35.74Vista以降で何がどのファイルをインストールしたか常時監視&管理するツール無かったっけ?
0212デフォルトの名無しさん
2012/11/13(火) 11:12:08.530213デフォルトの名無しさん
2012/11/13(火) 11:27:20.96%(funcName)s
ttp://toro.2ch.net/test/read.cgi/tech/1328714043/592-
sys._getframe(0).f_code.co_name
sys._getframe(1).f_code.co_name
ttp://toro.2ch.net/test/read.cgi/tech/1342660231/396-
self.__class__.__name__,traceback.extract_stack()[-1][2]
traceback.extract_stack()[-1][2]
traceback.extract_stack()[-2][2]
...
traceback.extract_stack()[1][2]
traceback.extract_stack()[0][2]
0214デフォルトの名無しさん
2012/11/13(火) 11:45:12.830215デフォルトの名無しさん
2012/11/13(火) 11:57:41.250216デフォルトの名無しさん
2012/11/13(火) 14:07:47.780217デフォルトの名無しさん
2012/11/13(火) 16:57:31.92OS標準でなかったらその手のツールは使ってないので解らない
とりあえず、ファイルのタイムスタンプから3.3と判断出来ました
もしかしてpipで入れたかな?と思ってたのは、思い違いだったようです
レスthx
0218デフォルトの名無しさん
2012/11/13(火) 22:25:26.090219デフォルトの名無しさん
2012/11/14(水) 22:10:49.14osはwindows7で pythonは3.3の32bit版を使用
pyscripterは64bit版ですとpython could not be properly initializedで動かず、
32bit版でも access violation error, no python engine errorで動きませんでした
他にCなどをインストールする必要があるのでしょうか
ランタイムなどは一切入れていませんが…
0220デフォルトの名無しさん
2012/11/14(水) 22:21:20.04動くんなら、python3.3が悪いんだし、動かないんならwindows版に問題ありそうだし。
0221デフォルトの名無しさん
2012/11/14(水) 23:36:32.96manifestじゃ無かろうもん
0222デフォルトの名無しさん
2012/11/15(木) 07:22:18.39「typename という名前の tuple の新しいサブクラスを返します」
ってあるんですが、
そもそもクラスを返すっていう概念がよくわかりません。
値やインスタンスを返すというのなら何となくわかるのですが。
簡単なコードなんか示してもらえると助かります。
0223デフォルトの名無しさん
2012/11/15(木) 07:31:31.093対応の参考書を買ってきて始めてしまったので、出来れば3以降でやりたいのです
今試しにvirtualPCに入れたXPに32bit版を入れたらpyscriptが動きました…
これだけの為にわざわざvirtualPCを立ち上げるのも面倒だし、どうしようか迷っています…
0224デフォルトの名無しさん
2012/11/15(木) 08:17:39.61クラスもメタクラスtypeのインスタンスであり、
class以外にもtypeやexecで動的に生成できる
namedtupleは自身にインデックスアクセスする
デスクリプタを与えられた名前で定義してる
operatorを使わず通常定義風なら
class typename(tuple):
@property
def id(self):return self[0]
実際書くなら
type('typename',(tuple,),{'id':property(operator.itemgetter(0))})
collectionsモジュールは大半がPythonコードなのでソースを見ると良い
0225デフォルトの名無しさん
2012/11/15(木) 08:19:46.64class Foo(object):
def name(self):
return 'Foo'
class Baa(object):
def name(self):
return 'Baa'
def return_class(name):
dic_classes = {}
dic_classes['Foo'] = Foo
dic_classes['Baa'] = Baa
return dic_classes[name]
foo_class = return_class('Foo')
obj = foo_class()
print('id(Foo) = 0x{:08x}'.format(id(Foo)))
print('id(foo_class) = 0x{:08x}'.format(id(foo_class)))
print('obj.name =', obj.name())
0226デフォルトの名無しさん
2012/11/15(木) 23:17:10.74def name(self):
return 'Foo'
class Baa(object):
def name(self):
return 'Baa'
def return_class(name):
dic_classes = {}
dic_classes['Foo'] = Foo
dic_classes['Baa'] = Baa
return dic_classes[name]
foo_class = return_class('Foo')
obj = foo_class()
print('id(Foo) = 0x{:08x}'.format(id(Foo)))
print('id(foo_class) = 0x{:08x}'.format(id(foo_class)))
print('obj.name =', obj.name())
0227デフォルトの名無しさん
2012/11/15(木) 23:24:05.34>>226
シェー!!
∧_⊂ヽ
∧⊂ヽ (´∀`)ノ
(゚Д゚)ノ (⊃ ノ
(⊃ ノ ヽ__二)
ヽニ⊃ (_)
∪
0228デフォルトの名無しさん
2012/11/16(金) 17:59:28.55ありがとうございます。ソースを見てみました。
tupleを継承したサブクラスを生成するコードを
文字列として定義し、それをexecといふ関数にぶち込んで
その結果をreturn文で返している、というふうに理解しました。
>>225
おっしゃるとおり、あんまりわかっていません。
クラスに限らず、オブジェクトをreturnで返すということは
内部的にはオブジェクトの種類とアドレス(ポインタ?)を返すという
ことなんでしょうか。だからメモリに作るものなら何でも返せると。
0229デフォルトの名無しさん
2012/11/16(金) 20:51:33.72℃ゞノ ヽ(・ω・ )
⊂´_____∩
0230デフォルトの名無しさん
2012/11/16(金) 22:19:00.21Objectの種類(ob_type)は返しません。
Objectにはob_typeがありますので、
そこからどんなObjectか分かります。
Include/object.h 108/925行
/* Nothing is actually declared to be a PyObject, but every pointer to
* a Python object can be cast to a PyObject*. This is inheritance built
* by hand. Similarly every pointer to a variable-size Python object can,
* in addition, be cast to PyVarObject*.
*/
typedef struct _object {
_PyObject_HEAD_EXTRA
Py_ssize_t ob_refcnt;
struct _typeobject *ob_type;
} PyObject;
...
#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) ←これ
Include/object.h 332/925行
typedef struct _typeobject {
PyObject_VAR_HEAD
const char *tp_name; /* For printing, in format "<module>.<name>" */
Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */
...
} PyTypeObject;
0231デフォルトの名無しさん
2012/11/16(金) 22:27:05.84PyObject_Init()にてtpを設定しているのが分かりますね。
PythonのC拡張を作ると実態を把握しやすいのですが、、、
PyTypeObject構造体でObjectのtype(ob_type)を定義するのです。
Objects/object.c 222/1915行
PyObject *
PyObject_Init(PyObject *op, PyTypeObject *tp)
{
if (op == NULL)
return PyErr_NoMemory();
/* Any changes should be reflected in PyObject_INIT (objimpl.h) */
Py_TYPE(op) = tp;
_Py_NewReference(op);
return op;
}
0232デフォルトの名無しさん
2012/11/17(土) 00:15:59.26ヒントありがとうございます。
オブジェクトの構造に種類も入っているので
アドレスのみ返せば足りるということですね。
Pythonの中で、クラスはオブジェクトの一種に過ぎない
というのがよくわかりました。
0233デフォルトの名無しさん
2012/11/17(土) 15:02:47.67基盤をクリックしたときに■が基盤上のクリックしたセルにきちんと配置されるようにしたいのですが、セルの配置方法がわからない為、クリックしても■の場所にズレが生じてしまいます。
from tkinter import *
root = Tk()
# セルの数は 20 X 20
n_row=20
n_col=20
objs = []
# ここにセルの生死状態を格納 0 -> 死亡 1-> 生存
cell=[[0 for row in range(n_row)] for col in range(n_cols)]
def step():
print("step buton pressed")
def clear():
for obj in objs:
game.delete(obj)
def click(evt):
objs.append(game.create_rectangle(evt.x, evt.y, evt.x+10, evt.y+10, fill="black"))
game = Canvas(root, width=200, height=200, background="white")
game.pack()
game.bind('<ButtonPress-1>', click)
Button(root, command=root.quit, text="Quit").pack(side=RIGHT)
Button(root, command=clear, text="Clear").pack(side=RIGHT)
Button(root, command=step, text="Step").pack(side=RIGHT)
root.mainloop()
どうすれば■をずらすことなく、20×20の基盤上にきちんと配置することができるでしょうか。
0234デフォルトの名無しさん
2012/11/17(土) 15:06:04.13☓ n_cols
◯n_col
0235デフォルトの名無しさん
2012/11/17(土) 16:22:18.55(#^ω^)ビキビキ
0236デフォルトの名無しさん
2012/11/17(土) 17:01:45.32bb = open("bb.jpg", "rb")
b = open("b.jpg", "wb")
b.write(bb.read())
bb.close()
b.close()
というコードでbb.jpgからb.jpgをつくると、
bb.jpgの作成日時が?2012?年?11?月?17?日、??16:47:44
b.jpgの作成日時が?2012?年?11?月?17?日、??16:43:28
になります。なぜ、複製先の日時の方がふるいんでしょうか?
b.jpgを消してもう一度実行しても同じ日時のファイルができあがります。
0237デフォルトの名無しさん
2012/11/17(土) 17:02:04.65(#^ω^)ビキビキ
from tkinter import *
root = Tk()
# cellの数は 20 x 20
n_row=20
n_col=20
# cellの縦の長さは10pixels
w = 10
# cellの横の長さは10pixels
h = 10
objs = []
# cellsにcellの生死状態を格納 0 -> 死亡 1-> 生存
cells=[None] * n_col
for col in range(n_col):
row = [0] * n_row
cells[col] = row
def step():
print("step buton pressed")
def clear():
global objs
print("clear buton pressed")
for obj in objs:
game.delete(obj)
objs = []
print('len(objs)={}'.format(len(objs)))
print()
0238デフォルトの名無しさん
2012/11/17(土) 17:03:27.01(#^ω^)ビキビキ
def click(evt):
# ここで正規化
print('clicked x={}, y={}'.format(evt.x, evt.y))
index_x = (evt.x // w)
index_y = (evt.y // h)
board_x = index_x * w
board_y = index_y * h
print('index_x={}, index_y={}'.format(index_x, index_y))
print('board_x={}, board_y={}'.format(board_x, board_y))
print('board_x+w={}, board_y+h={}'.format(board_x+w, board_y+h))
if cells[index_y][index_x] == 0:
print('set 1 to cells[{}][{}]'.format(index_x, index_y))
cells[index_y][index_x] = 1
obj = game.create_rectangle(board_x, board_y,
board_x+w, board_y+h, fill="black")
objs.append(obj)
else:
print('ignored click cells[{}][{}]'.format(index_x, index_y))
print('len(objs)={}'.format(len(objs)))
print()
game = Canvas(root, width=n_row*w, height=n_col*h, background="white")
game.pack()
game.bind('<ButtonPress-1>', click)
Button(root, command=root.quit, text="Quit").pack(side=RIGHT)
Button(root, command=clear, text="Clear").pack(side=RIGHT)
Button(root, command=step, text="Step").pack(side=RIGHT)
root.mainloop()
0239デフォルトの名無しさん
2012/11/17(土) 17:16:36.16(#^ω^)ビキビキ
--- tech233.py(リビジョン 50)
+++ tech233.py(作業コピー)
@@ -60,6 +60,9 @@
print("clear buton pressed")
for obj in objs:
game.delete(obj)
+ for col in range(n_col):
+ row = [0] * n_row
+ cells[col] = row
objs = []
print('len(objs)={}'.format(len(objs)))
print()
0240デフォルトの名無しさん
2012/11/17(土) 17:21:59.09まさか、こんな短時間で解いていただけるとは・・・
これでようやくゲームパートの作成に取り掛かれます
本当にありがとうございました
0241デフォルトの名無しさん
2012/11/17(土) 17:47:27.06↑より下の部分は丁寧に書いたつもりなので、
きちんと意味を理解してね。
0242デフォルトの名無しさん
2012/11/17(土) 17:50:05.59色々、間違ってるお。。。
○ print('set 1 to cells[{}][{}]'.format(index_y, index_x))
× print('set 1 to cells[{}][{}]'.format(index_x, index_y))
○print('ignored click cells[{}][{}]'.format(index_y, index_x))
×print('ignored click cells[{}][{}]'.format(index_x, index_y))
0243236
2012/11/17(土) 19:35:25.320244デフォルトの名無しさん
2012/11/17(土) 19:41:16.260245デフォルトの名無しさん
2012/11/17(土) 20:10:25.71もう夜遅いから寝なさい。
明日win7があれば試してみるよ。
ごめんね。ごめんね。
0246236
2012/11/17(土) 20:13:15.980247デフォルトの名無しさん
2012/11/17(土) 20:22:49.920248デフォルトの名無しさん
2012/11/17(土) 21:29:47.390249デフォルトの名無しさん
2012/11/17(土) 21:39:24.77あまり高度なことをしてない俺の意見で良ければ
pycharmは機能が豊富でコード補完も便利で使いやすい、ただしマウスホイールでスクロールが出来ない
pyscripterはシンプルでプロジェクト管理やコードの色分けが出来ればいいな、ぐらいの機能
0250デフォルトの名無しさん
2012/11/18(日) 04:50:41.590251デフォルトの名無しさん
2012/11/18(日) 13:11:13.12formatと毎回6文字もタイプするのが面倒だし
インデントの深いところで使うと行末が右奥まで行くか
次行に折り返しとなって見苦しい。
Cみたいにtypedefでftとかに短縮して使う方法はありませんか?
割と使用頻度の高いものだけに切実です。
0252デフォルトの名無しさん
2012/11/18(日) 14:04:14.180253デフォルトの名無しさん
2012/11/18(日) 14:04:37.33>>> ft('{} {:.3f}', 1, 1.2345)
'1 1.234'
>>> ''.ft()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'ft'
--- Objects/unicodeobject.c.orig>---2012-11-18 14:00:42.640574634 +0900
+++ Objects/unicodeobject.c>2012-11-18 14:00:55.480574640 +0900
@@ -9212,6 +9212,7 @@
{"isprintable", (PyCFunction) unicode_isprintable, METH_NOARGS, isprintable__doc__},
{"zfill", (PyCFunction) unicode_zfill, METH_VARARGS, zfill__doc__},
{"format", (PyCFunction) do_string_format, METH_VARARGS | METH_KEYWORDS, format__doc__},
+ {"ft", (PyCFunction) do_string_format, METH_VARARGS | METH_KEYWORDS, format__doc__},
{"format_map", (PyCFunction) do_string_format_map, METH_O, format_map__doc__},
{"__format__", (PyCFunction) unicode__format__, METH_VARARGS, p_format__doc__},
{"maketrans", (PyCFunction) unicode_maketrans,
0254デフォルトの名無しさん
2012/11/18(日) 14:35:39.69これがオブジェクト指向言語の
真骨頂ってヤツですかね。
自分で自分を改造・拡張できる。
0255デフォルトの名無しさん
2012/11/18(日) 14:57:41.21makeしたの?からかってやるつもりでpatch貼ったのに・・・
ナンカ、マケタキブン(#^ω^)ビキビキ
0256デフォルトの名無しさん
2012/11/18(日) 15:01:51.66PythonのCソースコードを検索して
formatという文字を片っ端からftに修正・コンパイル
しなければならないのかと覚悟していました。
こんな簡単にできるとは…
聞くは一時の恥聞かぬは一生の恥とはこのこと。
0257236
2012/11/18(日) 15:16:26.520258デフォルトの名無しさん
2012/11/18(日) 17:00:07.76多分Pythonとは関係ない。
win7のファイルの取り扱いが関係していると思った。
で、「ファイルの作成日時」「ファイルの更新日時」
それぞれを調べてみてごらん。
�@orig.txt を作成
�A10分ほど待つ
�B>>236の方法でcopied.txtを作成する。
�Corig.txt, copied.txtの作成日時、更新日時を確認する。
多分、�Cの時にcopied.txtの作成日時が、
�@の時間と一致するんではないかと。
自由に出来るwin環境がないから試せなかった。
0259デフォルトの名無しさん
2012/11/18(日) 17:04:08.90�A�Bの間に
orig.txtの中身を適当に修正。
を追加して。
0260デフォルトの名無しさん
2012/11/18(日) 17:14:30.89今ちゃんと読んで気づいたんだけど、
>>236の状態で、
bb = open("bb.jpg", "rb")
b = open("b.jpg", "wb")
b.write(bb.read())
b.close() ←入れ替え
bb.close() ←入れ替え
↑の順序でも試してみてよ。
open(), close()の対称性が、ふと気になった。
0261デフォルトの名無しさん
2012/11/18(日) 17:26:35.83>>253の上段はオブジェクト指向言語とは関係ないと思う。
あなたが欲していた情報の下段は、
掻きたいところに手が届く、オープンソースの醍醐味かな?
0262デフォルトの名無しさん
2012/11/18(日) 17:51:04.35「駅どこ?」と言い始めた若い女性グループに
ここから一番近いのは営団丸の内線の西新宿駅だけど
次に近いのは都営大江戸線都庁前駅で
あと西武線新宿駅とか都営新宿線新宿駅もあるし
京王線新宿駅小田急線新宿駅
最近出来た副都心線新宿三丁目駅
と話してる間に
相手が居なくなってしまっていたときの敗北感
0263デフォルトの名無しさん
2012/11/18(日) 19:56:40.58str.formatが変数に代入できるというだけで
私にとってはオブジェクト指向なのです。
あと、下段は何をしているのか意味がわかりませんでした。
0264デフォルトの名無しさん
2012/11/18(日) 20:00:11.580265デフォルトの名無しさん
2012/11/18(日) 20:25:04.63よく分からんけど、上段があなたにとってのオブジェクト指向なら、
世間のオブジェクト指向とあなたのオブジェクト指向は異なるってこった。
下段についてはpatch, diffで検索するよろし
0266デフォルトの名無しさん
2012/11/18(日) 20:35:12.330267デフォルトの名無しさん
2012/11/18(日) 22:30:32.13関数を変数に代入してるから、関数型になるね。
ただオブジェクト指向とは矛盾しない。
0268デフォルトの名無しさん
2012/11/18(日) 22:32:46.39>>私にとってはオブジェクト指向なのです。
ぷっ
0269デフォルトの名無しさん
2012/11/19(月) 03:20:31.47ビルトイン関数のformatじゃなくて、文字列のformatメソッド使うようにすれば
.f で補完候補出してくれないかな?
0270デフォルトの名無しさん
2012/11/19(月) 05:24:09.79あのあたり確かに良く分からん
0271デフォルトの名無しさん
2012/11/19(月) 11:28:13.47printを使ってデバッグプリントを吐き出していると、その出力までdoctestの比較値にされてしまうため、doctestに比較されない出力方法はないかと思っております。
0272デフォルトの名無しさん
2012/11/19(月) 11:36:09.630273デフォルトの名無しさん
2012/11/19(月) 11:42:02.19コピペかと思ったらオリジナル?
しかし営団とは古い!
0274デフォルトの名無しさん
2012/11/19(月) 18:09:12.13結合したディクショナリを返したほうが使い勝手がいいかと思うのですが。
0275デフォルトの名無しさん
2012/11/19(月) 18:17:50.00listのsortやreverseと一緒でしょ
>副作用があることをユーザに思い出させるために、これらの操作は並べ替えまたは反転されたリストを返しません。
0276デフォルトの名無しさん
2012/11/19(月) 18:34:39.730277デフォルトの名無しさん
2012/11/19(月) 19:04:13.60実際にはそういうのって副作用があることを想起させるやり方としてはいまさんくらいだと
思うんだよね。
そういうの忘れがちな初心者(俺)がガーッとコード書いて動かしてみて、「あれ?」ってデバッグ
すると、「あーこれか、めんどくさ」っていうくらいの印象しか無い。
0278デフォルトの名無しさん
2012/11/19(月) 21:49:14.91個人的にはL.sorted()って書いてあれーってなったりする
0279デフォルトの名無しさん
2012/11/19(月) 21:54:46.76初心者を免罪符にやることではありません。
初心者であれば小さな単位で書いて動かしましょう。
0280デフォルトの名無しさん
2012/11/19(月) 22:06:13.77def foo( rlist, rdict):
new = []
for i in range( 4):
tmp = rdict
tmp.update( { "baz": str( rlist[i])})
new.append( [ i, { "bam": tmp}])
print new
foo( [ 0, 1, 2, 3], { "foo": "bar"})
このコードについてなのですが、実行するとbazの値がすべて3になってしまいます。
ミュータブルな値の関係かと思うのですが、そのあたりがよくわかっていないためか悩んでおります。
0281280
2012/11/19(月) 22:08:40.90>>> l = [0, 1, 2]; d = { "a": {"foo": l[2]}}; l[2] = 3
>>> d
{'a': {'foo': 2}}
上のコードが3になるのに、これが3にならずに2になる理由もわかりません。
どうか解説いただけないでしょうか?
0282デフォルトの名無しさん
2012/11/19(月) 22:34:25.300283デフォルトの名無しさん
2012/11/19(月) 22:35:47.160284デフォルトの名無しさん
2012/11/19(月) 23:00:34.70281 l[2] は数値(immutable)
>>> a = []
>>> b = a # list は mutable なので参照。値は共有される
>>> a.append(1)
>>> b
[1]
>>> a = 1
>>> b = a # int は immurable なので値はコピー
>>> a = 2
>>> b
1
0285デフォルトの名無しさん
2012/11/19(月) 23:17:19.680286デフォルトの名無しさん
2012/11/19(月) 23:52:43.56Dive Into Python 3 日本語版
http://diveintopython3-ja.rdy.jp/index.html
0287デフォルトの名無しさん
2012/11/20(火) 00:04:29.17読みにくいから「;」は使わずに改行しようぜ。
>>> d = {}
>>> L = [0, 1, 2]
>>> tup = (3, 4, 5)
>>> d['L'] = L # �@
>>> d['tup'] = tup # �A
>>> L[2] = 2222222222222 # �B
>>> tup[2] = 55555555555 # �C
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> d
{'tup': (3, 4, 5), 'L': [0, 1, 2222222222222]}
>>> d[L] = 'L' # �D
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> d[tup] = 'tup' # �E
�@�A�B�C�D�Eと注目しよう。
�@�Aはlist, tupleをdictionaryのvalueとして設定。
�B�Cはlist, tupleに値を再度設定。
�D�Eはdictionaryのkeyとしてlist, tupleを設定。
>>> print(L.__hash__) # �F
None
>>> print(tup.__hash__) # �G
<method-wrapper '__hash__' of tuple object at 0xa020a2c>
immutable, mutableはdictionaryのkeyと出来るか出来ないかが違う。
ここまで書いてめんどくさくなったので今日はここまでで寝る。詳しくは明日書く。
0288デフォルトの名無しさん
2012/11/20(火) 00:07:54.20ありがとうございます
つまり3がおすすめということでしょうか?
2.7をダウンロードしたばっかりなんですが
今どっちが人口多いですか?そしてこれから
0289デフォルトの名無しさん
2012/11/20(火) 00:44:14.910290デフォルトの名無しさん
2012/11/20(火) 03:03:00.07tmp = rdict は辞書のコピーではなく参照なので、
tmpへの変更がrdictにも反映されます。
期待通りのbazの値を得るには、コピーする
tmp = rdict.copy()
0291デフォルトの名無しさん
2012/11/20(火) 05:59:36.782.7でいいよ
2から3にコンバートも出来るし基本は変わらない
0292デフォルトの名無しさん
2012/11/20(火) 07:16:11.37a = ["foo", [1,2,3]]
x = a[1]
b = a
とした状況で
�@ a = ["bar"]
�A a[1] = [4,5,6]
�B a[1][0] = 4
のどれかを実行することを考える
�@は「変数aがどこを指し示すか」を変更する処理
�Aは「変数aが指しているリスト」を変更して「その1番目がどこを指し示すか」を変更する処理
�Bは「a[1]が指しているリスト」を変更して「その0番目がどこを指し示すか」を変更する処理
図にするとこんな感じ。
ttp://www.dotup.org/uploda/www.dotup.org3642272.png
ttp://www.dotup.org/uploda/www.dotup.org3642275.png
ttp://www.dotup.org/uploda/www.dotup.org3642276.png
こうすると一目瞭然だけど
�@の場合はaを変更してもb,xは変わらない。
�Bの場合はa[1]とb[1]とxは同一のリストを指していて、そのリストを変更するから
aの変更の影響でbもxも変わる。
�Aの場合はaとbは同一のリストを指していて、そのリストを変更するから
aの変更の影響でbも変わる。けどxは直接的には関係ないのでそのまま
0293デフォルトの名無しさん
2012/11/20(火) 19:32:25.50pythonを勉強中なのですが、実行の仕方で躓きました
d:\python33\python.exe
d:\pythonProject\test.py
にファイルがあるとして
xpのコマンドプロンプト上で
d:\python33>python test.py
とすると実行できるようにしたいのですがうまくいきません
pythonのエラー no such file or directoryとなります
システム環境変数
には両方共パスを通しています
sys.path.appendで追加してsys.pathにも表示されています
それでもできません
どこが間違っているんでしょうか?
d:\python33>test.py
これだとちゃんとエディタが起動してくれます
0294デフォルトの名無しさん
2012/11/20(火) 19:49:18.48d:\python33\にはパスを通してあるけど
d:\pythonProject\にはパスを通してないんでしょ?
0295デフォルトの名無しさん
2012/11/20(火) 19:51:44.39pythonはwindowsのパスなんて理解しないよ
0296デフォルトの名無しさん
2012/11/20(火) 19:52:36.603.3なら py test.py ではどう?
自分のとこではc:\Windowsに入ってたので環境変数設定は不要だった
複数のバージョンが入ってる場合は、shbangを一行目に書くか
py -3.3 test.py で実行
>sys.path.appendで追加してsys.pathにも表示されています
環境変数の設定方法に疑問が。これはライブラリを探す場所のpath設定だよ
0297デフォルトの名無しさん
2012/11/20(火) 20:05:06.52システム環境変数に両方共パスは通しています
それでうまくいかなかったので
sys.pathでも通しました
>>296
だめでした no such fileとなります
pythonは33しかいれていません
できるかだけでも教えて欲しいんですが
みなさんの環境だと
test.pyをスクリプト専用のフォルダ(python.exeの配下じゃないフォルダ)において
>py test.py
というやり方で実行できますか?
0298デフォルトの名無しさん
2012/11/20(火) 20:17:03.86cd d:\pythonProject
してから
python test.py
0299デフォルトの名無しさん
2012/11/20(火) 20:22:04.98usercustomize.py
どっちかを編集してみるとか
普通は君みたいなことするひとは居ないけど
0300デフォルトの名無しさん
2012/11/20(火) 21:07:52.91コマンドプロンプトからpathって打ってEnterしたらどうなる?
差し支えのある箇所があったら伏せ字にしたうえで結果を貼ってみて
0301デフォルトの名無しさん
2012/11/20(火) 21:22:15.200302デフォルトの名無しさん
2012/11/20(火) 21:29:05.370303デフォルトの名無しさん
2012/11/20(火) 21:30:21.44PATH=D:\Python33\;D:\Python33\Lib\site-packages;D:\PythonProject;
>>299
検索しましたがそういったファイルはありませんでした
ぜひ普通のやり方を教えて下さい
>>298
それで一応できたのですが
それだと毎回指定しないといけないですよね?
ジャンルごとにフォルダ分けしてその中のpyを実行させたいので
予め環境変数など指定しておけばいいという状態にしたいんです。
importでのモジュールのパスは検索することはできるけど
python test.pyなどの実行時の引数のパスは各ディレクトリから検索しないってことなんでしょうか?
0304デフォルトの名無しさん
2012/11/20(火) 21:33:35.47プロンプトでやってんなら実は揮発してましたとか言わない?
0305デフォルトの名無しさん
2012/11/20(火) 21:36:04.93ちゃんとコントロールパネルのシステムで設定しています
プロンプトで設定した場合、閉じるとパスが消えることは知っています
0306デフォルトの名無しさん
2012/11/20(火) 21:36:36.001行目に
#!python
0307デフォルトの名無しさん
2012/11/20(火) 21:39:20.310308デフォルトの名無しさん
2012/11/20(火) 21:42:04.09それは何ですか?
pythonは今日はじめたばかりなのでどこにどのように書くのかわかりません
0309デフォルトの名無しさん
2012/11/20(火) 22:15:08.82http://www.python.jp/doc/release/using/cmdline.html#cmdoption-m
0310デフォルトの名無しさん
2012/11/20(火) 22:42:55.65いい忘れてましたが
それも既にやってました
どうも皆様ありがとうございました
pythonは諦めます
スレ汚し失礼しました
0311デフォルトの名無しさん
2012/11/20(火) 23:07:09.120312デフォルトの名無しさん
2012/11/20(火) 23:08:50.440313デフォルトの名無しさん
2012/11/20(火) 23:11:03.14xpのコマンドプロンプト上で
d:\python33\python
d:\python33\python.exe
d:/python33/python
d:/python33/python.exe
と実行して、↓みたいな表示出てくる?
Python 3.2.2 (default, Sep 16 2012, 00:38:58)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
0314デフォルトの名無しさん
2012/11/20(火) 23:14:38.28書いた直後に気づいたんだけど、
d:\python33\python.exe # basedir1=d:\python33
d:\pythonProject\test.py # basedir2=d:\pythonProject
にファイルがあるとして
xpのコマンドプロンプト上で
d:\python33>python test.py # basedir1=d:\python33
test.pyはbasedir2にあるものじゃない?
basedir1以下にもtest.pyって同名な奴がいるんじゃない?
d:\pythonProject\test.py
を
d:\pythonProject\test_otameshi.py
に名前変えてみて、もう一度挑戦してみたら?
0315デフォルトの名無しさん
2012/11/20(火) 23:18:04.08309,311の方法で探してくれそうだけど、パスの順序と名前重複に注意(testって名前は標準にある)
0316デフォルトの名無しさん
2012/11/20(火) 23:24:10.640317デフォルトの名無しさん
2012/11/20(火) 23:31:58.680318デフォルトの名無しさん
2012/11/21(水) 00:01:28.67レス頂いたのでインストールし直しました
>>311のやり方で行けました!
これはimport testということですよね
わけも分からず、PYTHONPATHの設定しかしていませんでした
>>313
プロンプトに対しては設定したすべてのパスが通ってます
それぞれのパスにあるファイルをプロンプトでは正常に実行してくれました
ただ
>python test.pyが機能しないだけです
test.pyと書きましたが、実際はhumansize.pyです
長いのでtest.pyと2ちゃんねるでは書いていただけです
>>315
>カレントが d:\python33 なのに d:\pythonProject\test.py をファイル名のみで実行しようとしてるとこが問題?
そうです。でもそうしないと何度もデバッグ作業をするのに
毎回フルパス入力をしなくちゃならないのはさすがに面倒なので
短い記述で実行できるようにしたかったんです
※py拡張子はエディタに関連付けているので直接実行は避けたいです
初めてのPythonプログラム - Dive Into Python 3 日本語版
http://diveintopython3-ja.rdy.jp/your-first-python-program.html
それにしてもまさか、上の1.1で丸1日潰すとは思いませんでした
向いていないかもしれないですね
とにかくレスを下さった方々本当にありがとうございました
0319デフォルトの名無しさん
2012/11/21(水) 00:05:02.410320デフォルトの名無しさん
2012/11/21(水) 00:08:58.33毎回、
cd d:\pythonProject
しなさい。若いもんが横着を覚えては駄目だ。
0321デフォルトの名無しさん
2012/11/21(水) 00:52:11.860322デフォルトの名無しさん
2012/11/21(水) 01:20:30.82humansize.pyを始めとする自分の開発資産はもちろんここに置く.
humansize.pyを実装したら,立ち上げっぱなしのコマンドプロンプトで
python humansize.py
を実行する.
デバッグのときもコマンドプロンプトを立ち上げっぱなしにしておけば↑キーで履歴が辿れるから,わざわざ再度
python humansize.py
とタイプする必要はない.
もう一工夫したいのであれば,a.batみたいな短いファイル名のバッチファイルを開発資産と同じディレクトリに置いて,中身は
python humansize.py
と書いておく.
実行時はコマンドプロンプトから
a
とタイプしてEnter.
0323デフォルトの名無しさん
2012/11/21(水) 01:38:59.76いろいろやりようがあるんですね
0324デフォルトの名無しさん
2012/11/21(水) 02:57:11.84arrayとmatrixの違いが良く分からない
0325デフォルトの名無しさん
2012/11/21(水) 03:10:01.550326デフォルトの名無しさん
2012/11/21(水) 07:30:32.250327デフォルトの名無しさん
2012/11/21(水) 08:02:45.580328デフォルトの名無しさん
2012/11/21(水) 08:10:29.15お前は無理だったな笑
0329デフォルトの名無しさん
2012/11/21(水) 08:44:09.73初心者を脅威に感じる程度のレベルなの?
0330デフォルトの名無しさん
2012/11/21(水) 11:19:59.10各作品のダウンロード数をスクレイピングして記録しようと思ったのですが、
どうやら単純に文字を表示しているのではなく
jQueryを使ってアクセスするたびに文字を生成している
ようなのです。
よって単純にソースを取得しても
Download : <span class="_dl_count_RJ****"
のようなものしかとれず肝心のダウンロード数を取得できません。
どのようにすればよいでしょうか。
0331デフォルトの名無しさん
2012/11/21(水) 12:00:54.05ttp://www.dlsite.com/home/work/=/product_id/RJ100689.html
Download : <span class="_dl_count_RJ100689">129</span>
えー普通に値として書いてるじゃん
dl_count..はclass属性の値だからね、span要素の値を取得しないと
0332デフォルトの名無しさん
2012/11/21(水) 12:04:09.240333デフォルトの名無しさん
2012/11/21(水) 13:33:32.40℃ゞノ ヽ(・ω・ )
⊂´_____∩
0334デフォルトの名無しさん
2012/11/21(水) 14:55:07.10℃ゞノ ヽ(・ω・ )
⊂´_____∩
0335デフォルトの名無しさん
2012/11/21(水) 15:30:38.54ヾ(o゚ω゚o)ノ゙ プニプニ!プニプニ!
0336デフォルトの名無しさん
2012/11/21(水) 17:03:05.310337デフォルトの名無しさん
2012/11/22(木) 12:58:49.42a = [(1,100), (3,400), (2,500), (5,200)]
を2番目の要素でソートして、
[(1,100), (5,200), (3,400), (2,500)]
のように並べ替えたいんですが、どうやればいいでしょうか。
0338デフォルトの名無しさん
2012/11/22(木) 13:13:58.91a.sort(key=itemgetter(1))
で行けました。
0339デフォルトの名無しさん
2012/11/22(木) 14:48:12.39>>> a
[(1, 100), (5, 200), (3, 400), (2, 500)]
>>> a.sort(key=lambda x: x[1], reverse=True)
>>> a
[(2, 500), (3, 400), (5, 200), (1, 100)]
0340デフォルトの名無しさん
2012/11/22(木) 15:04:12.080341デフォルトの名無しさん
2012/11/22(木) 18:04:45.12ありがとうございます。
ググった時に「関数を定義して云々」という情報もありましたがハードルが高そうでスルーしてました。
けっこう基本的なことなんですね。
0342デフォルトの名無しさん
2012/11/22(木) 23:13:56.02みんなが使うのでFAQ
0343デフォルトの名無しさん
2012/11/22(木) 23:43:50.48webサイトのソースを表示したらカックカクになる
PythonShellだと、以前入力した文字を表示できない
コマンドプロンプトだと↑キーで前に入力した文字を表示できるけど
フォント色変えたり、インテリセンス機能がない
何かオススメのインタプリタないですか?
0344デフォルトの名無しさん
2012/11/23(金) 00:14:23.670345デフォルトの名無しさん
2012/11/23(金) 01:42:46.86だからと言って子供のおもちゃではない
大規模なプログラムも、商用利用も可能なほど高性能
宝石なんか眼中にない
僕らはニシキヘビを信仰する
がんばれPython それいけ僕らのPython
0346デフォルトの名無しさん
2012/11/23(金) 01:48:31.120347デフォルトの名無しさん
2012/11/23(金) 02:11:08.28馬鹿には無理だった
なんとかインストールしたけど
入力補完がデフォルトでできない
どこか設定があるんだろうけど日本語解説サイトもないし諦めました
0348デフォルトの名無しさん
2012/11/23(金) 02:30:32.71ipythonやbpython辺りが定番、他に手軽に使えそうなとこだと
python -midlelib.idle 標準で付いてくるidle。色付と補完くらいはしてくれる
前に入力した文字は Alt+P (Options -> Configure IDLE -> Keys で設定変更可)
python -mwx.py.PyCrust (PySlices,PySlicesShell,PyAlaMode,...) wxPythonに標準で色々付いてくる
前に入力した文字は Alt+P もしくは Ctrl+↑(Helpに一覧あり)
PySlicesはeditor+shellみたいな環境。コードの断片を実行・再編集出来る。
0349デフォルトの名無しさん
2012/11/23(金) 02:55:00.69それ言語関係ないやん。
おまいコーディングすんな。世の中に貢献するより迷惑かけるほうが多そうだ。
0350デフォルトの名無しさん
2012/11/23(金) 04:15:24.61だめだ難しすぎる
python自体簡単な言語のようだけど
インストールや設定がわけがわからない
pyreadlineとpywin32はexeがあったので簡単にできたが
ipythonはソースだけのようでどうしていいかわからない
python setup.py installとやってもwarningだらけ
easy_installでやると簡単らしいときいたけど
これをインストールするのが同じく難しかった
一応easy_installへのパスは通ったみたいだけど
easy_install ipythonとやるとdistフォルダがみつからないとかで
エラー
超絶難しいんだけどww
みんなよくこんなのできたな
0351デフォルトの名無しさん
2012/11/23(金) 04:47:51.360352デフォルトの名無しさん
2012/11/23(金) 05:11:29.93removeipython.exe
removepywin.exe
をクリックしても
this program is normally started by windows
ってエラーダイアログが出てアンインスコもできない
なんだよこれ・・・どうなってんの
ipythonはレビューサイト見る限り、俺が求めていたものなんだけどなー
idleに毛が生えた程度のものでいいんだよ
プロ並のプロジェクトやりたいわけじゃないし
ちょっとテキスト読み込んでごにょごにょしたいだけなのにな
言語学ぶよりインストールの方が難しいって・・・
本末転倒だよね
0353デフォルトの名無しさん
2012/11/23(金) 05:12:31.09小難しいことするのは慣れてきてからで足りる
0354デフォルトの名無しさん
2012/11/23(金) 05:16:51.78>言語学ぶよりインストールの方が難しいって・・・
自分が馬鹿なのを言語のせいにするなって。
お前あきらかにプログラミングに向いてないよ。
迷惑かけるだけだから止めろ。
0355デフォルトの名無しさん
2012/11/23(金) 05:18:58.66win32だったら公式よりも、ActivePythonにすれば、
easy_install最初から使えるし、ipythonのインストールも簡単 pypm install ipython
でも、色付き表示の為に qtconsole 使いたければ、
追加でいろいろ入れないといけないので、そこからまだ手間かかるかも
環境構築で躓くのでは、お勧めはし辛いかなぁ。
最初のうちは標準のIDLEでいいんじゃない?
www.python.jp/doc/release/tutorial/interactive.html
www.python.jp/doc/release/library/idle.html
0356デフォルトの名無しさん
2012/11/23(金) 05:22:16.29そういうの慣れてからやればいいのに
便利な機能があると紹介されるといれたくなって…
一応>>348さんが書いてくれたように
もともとついているidleにも以前の入力を表示する機能があったので
今のとここれでいいんですけどね
ipythonはコンソールとシェルを行ったり来たりする必要が内容で
やってみたいなと思ったんだけど
あと、setuptoolsってもう更新してなくて2.7にしか対応していなようで
これが実行できればeasyinstallもできるんだろうけど…
まだ3x系に初心者が手を出すのは早かったのかなー
てか、いろいろ入れたライブラリのレジストリを削除したいのに・・・
インストール時点でもうエラー出てるんですよね。一応フィニッシュするけど
ログに0x83はutf-8に変換できないとかなんとかそういう英文が出てる
0357デフォルトの名無しさん
2012/11/23(金) 05:25:21.670358デフォルトの名無しさん
2012/11/23(金) 05:25:55.14インストーラで入れたのだったら
プログラムの追加と削除からアンインストール
0359デフォルトの名無しさん
2012/11/23(金) 05:53:52.11それでいけました。多分
site-packageにいっぱいゴミが残ったままですけど
やっぱり慣れるまでデフォルトのシンプルなままで使っていこうと思います
ありがとうございました
0360デフォルトの名無しさん
2012/11/23(金) 08:29:18.36import logging, sys, urllib
import BeautifulSoup
url = 'http://www.dlsite.com/home/work/=/product_id/RJ***.html'
soup = BeautifulSoup.BeautifulSoup(urllib.urlopen(url).read())
print soup.findAll("span", {"class":"_dl_count_RJ***"})
実行結果
[<span class="_dl_count_RJ***"></span>]
となりソースだけが落ちてきて肝心のダウンロード数が取得できません
>>332
どのカテゴリの話なのでしょう?
0361デフォルトの名無しさん
2012/11/23(金) 08:46:04.600362デフォルトの名無しさん
2012/11/23(金) 08:59:27.980363デフォルトの名無しさん
2012/11/23(金) 09:02:57.24Pythonのバージョンは?
0364デフォルトの名無しさん
2012/11/23(金) 09:10:05.04var query= from s in html.Descript("span")
where Regex.IsMatch(""_dl_count.*",s.Attribute("class").Value)
select s.Value
0365デフォルトの名無しさん
2012/11/23(金) 10:00:39.87for span in soup.find_all("span"):
span.string
これですら数値が出ないってことはパーサーがだめなんじゃない?
0366デフォルトの名無しさん
2012/11/23(金) 10:01:31.050367デフォルトの名無しさん
2012/11/23(金) 10:11:52.27マジレスすると python 全然関係無い。
web 板逝け。
0368デフォルトの名無しさん
2012/11/23(金) 10:54:17.580369デフォルトの名無しさん
2012/11/23(金) 11:11:59.21消えろ
0370デフォルトの名無しさん
2012/11/23(金) 11:12:20.090371デフォルトの名無しさん
2012/11/23(金) 11:13:34.060372デフォルトの名無しさん
2012/11/23(金) 11:13:37.490373デフォルトの名無しさん
2012/11/23(金) 12:42:38.582.73です
>>364
これはjQuery?ですか?これをどう利用するのでしょうか
>>365
パーサーとはこの場合どれのことをさすのでしょうか?
>>367
Pythonをやっていてスクレイピングがしたくなり
調べたらBeautiful soupというもので簡単に
出来るとのことだったのでPythonスレで聞いたほうが
良いのかなと思ったのですがwebのカテゴリ
なのでしょうか。Pythonの解説書を2冊ほど眺め
二、三スクリプト書いた程度ですがこの上webとも
なると敷居が高そうです。
>>372
落ちてきたソースの該当箇所は
Download : <span class="_dl_count_RJ***"></span>
と成っています。調べるとjQueryでブラウザでアクセスするごとにダウンロード数を
表示している?らしいですが、となるとpythonの知識だけでは足りないということでしょうか
0374デフォルトの名無しさん
2012/11/23(金) 12:56:29.59pythonの知識じゃなくてセンスが足りない
0375デフォルトの名無しさん
2012/11/23(金) 13:12:16.67JavaScriptを実行するのはブラウザの仕事
勝手にやってはくれない
落としたソースでsummary_urlを検索して見つかったところが
ダウンロード数を取得しているJavaScriptコードだから
それと同じことをPythonでやればいい
頻繁に呼び出すと怒られるかもね
0376デフォルトの名無しさん
2012/11/23(金) 15:28:23.18beautifulsoupはhtmlのパーサーでしかない
javascript実行後のページを取得するにはwebkit等のブラウザを使う
windowsでは面倒、androidのsl4aやlinuxのpyGTKを使えばpythonで簡単に書ける
仕方ないから俺がここまで調べてやったぜ
0377デフォルトの名無しさん
2012/11/23(金) 15:31:13.690378デフォルトの名無しさん
2012/11/23(金) 16:26:05.890379デフォルトの名無しさん
2012/11/23(金) 16:28:23.32その後JavaScriptでやってるのと同じhttpリクエストを発行してDL数を所得
規約とかどうなってるのか知らないけど、
マナーとして、実際のサイトでスクリプトをテストしたりせずに、
まずはどういう仕組みになってるのかきちんと解析しよう
0380デフォルトの名無しさん
2012/11/23(金) 21:35:05.38> pythonの知識だけでは足りないということでしょうか
HTML, JavaScript, HTTP, XMLHTTPRequest, JSON 等の知識が必要になってくる
どちらかと言うとweb向きの話題
dl数が取れないのはサイトの仕様なので、htmlパーサの責任じゃない。
ブラウザのオートメーションする方法では、
データが読み込まれるタイミング等を適切に把握してないといけないので、その辺が結構面倒
JavaScript, DOM events 等の知識が必要
0381デフォルトの名無しさん
2012/11/23(金) 22:50:50.32コンパイラ言語でやってたときは本当に非効率的だった
0382デフォルトの名無しさん
2012/11/23(金) 23:01:35.08デバッガでそれに近いことはできるよねコンパイラ言語でも
0383デフォルトの名無しさん
2012/11/24(土) 01:07:57.34あさっての方向のレスする馬鹿
0384デフォルトの名無しさん
2012/11/24(土) 01:11:36.920385デフォルトの名無しさん
2012/11/24(土) 01:12:19.370386デフォルトの名無しさん
2012/11/24(土) 06:23:11.540387デフォルトの名無しさん
2012/11/24(土) 09:26:41.90いや今時のデバッガはデバッグ中にコード修正とかもできるから、
効率も遜色ない。
君の知識が古いから、あさってに見えるだけだよ (w
0388デフォルトの名無しさん
2012/11/24(土) 09:49:36.650389デフォルトの名無しさん
2012/11/24(土) 10:46:09.14>>375
>>376
>>379
>>380
ちょっと現状では手に負えなさそうですが、
調べてみます。
ありがとうございました。
0390デフォルトの名無しさん
2012/11/24(土) 11:05:21.41一回使ってから言ってくれ。
0391デフォルトの名無しさん
2012/11/24(土) 11:12:54.860392デフォルトの名無しさん
2012/11/24(土) 11:16:16.880393デフォルトの名無しさん
2012/11/24(土) 11:28:59.47テスト駆動開発もしらないバカに言われたくありませんw
0394デフォルトの名無しさん
2012/11/24(土) 11:54:17.420395デフォルトの名無しさん
2012/11/24(土) 12:08:49.80テストケースのエラー見てコード修正してるならそれは立派にデバッグだよ
0396デフォルトの名無しさん
2012/11/24(土) 12:14:01.41それができるPythonのコードはデバッグ中に修正できるウンコードしかないってこと?
0397デフォルトの名無しさん
2012/11/24(土) 12:18:17.18>381
0398デフォルトの名無しさん
2012/11/24(土) 12:24:01.81やっぱりそうなんですね。所詮はLL脳ですね。
0399デフォルトの名無しさん
2012/11/24(土) 12:24:20.380400デフォルトの名無しさん
2012/11/24(土) 12:41:29.390401デフォルトの名無しさん
2012/11/24(土) 14:37:21.490402デフォルトの名無しさん
2012/11/24(土) 14:42:21.77信者が沢山いて、私も信者になれる奴がいいです。
0403デフォルトの名無しさん
2012/11/24(土) 14:45:36.550404デフォルトの名無しさん
2012/11/24(土) 14:46:07.80o notepad
0405デフォルトの名無しさん
2012/11/24(土) 19:02:17.10信者の多いエディタならEmacsやVimとなる。
しかしいいかどうかは疑問だ。
共に、一通り使えるようになるまで数年かかるので
それまではコーディングの効率が落ちる。
0406デフォルトの名無しさん
2012/11/24(土) 19:12:17.650407デフォルトの名無しさん
2012/11/24(土) 19:33:06.03ファイルの基本的な編集と保存操作を、いちいち考え込んだり
ググったりせずできるようになるまで、を一通りと表現した。
0408デフォルトの名無しさん
2012/11/24(土) 19:40:52.19周りの人のために早めに辞めた方がいいぞ。
0409デフォルトの名無しさん
2012/11/24(土) 19:57:47.92ひどいことを言う人だな。
EmacsとVimは数分で挫折する人が大半なんだぜ。
俺は挫折せずここまで頑張ったことを誇りに思っているよ。
0410デフォルトの名無しさん
2012/11/24(土) 20:06:28.110411デフォルトの名無しさん
2012/11/24(土) 20:07:39.52周りに迷惑かけてることも考えずにヘタに粘る奴は、マジ辞めて欲しい。
0412デフォルトの名無しさん
2012/11/24(土) 20:08:19.470413デフォルトの名無しさん
2012/11/24(土) 20:15:51.340414デフォルトの名無しさん
2012/11/24(土) 20:18:01.02エディタの習熟に時間がかかるとなぜ
周りに迷惑がかかるんだよ。
自分でネット見て作ったアンチョコがあるから
仕事には影響出さなかったよ?
アンチョコを見ずに操作できるようになるまで
数年かかったということだ。
0415デフォルトの名無しさん
2012/11/24(土) 20:28:08.65回りに迷惑かけてないって?
周りが見えてないって、ある意味最強だな (w
0416デフォルトの名無しさん
2012/11/24(土) 20:37:13.24試行錯誤するのが便利なのは、REPL環境のインタラクティブ性の恩恵だと思う
一般的に、スクリプト言語の方が敷居が低いし、準備の手間も楽で手軽
シェルで済む程度の作業では、エディタもデバッガも出番じゃない
> cat getdoc.py
#!/usr/bin/env python
import sys, lxml.html
url = sys.argv[1]
doc = lxml.html.parse(url)
> python -i getdoc.py URL
>>> doc.xpath("//span[starts-with(@class,'_dl_count')]/text()")
0417デフォルトの名無しさん
2012/11/24(土) 20:39:59.85もういいよ。
あんたは人をそういう上から目線で
見下す種類の人間なんだな。
会話するだけ時間の無駄だ。
0418デフォルトの名無しさん
2012/11/24(土) 20:41:16.08375提案の方法 codepad.org/0qErCrE1
ページにも拠るみたいだけど、一覧では普通にspanの値でDL数取れる
0419デフォルトの名無しさん
2012/11/24(土) 20:43:48.42なら、レスしなきゃいいのに…
こういうこと覚えるのにも数年かかるんだろうな。(w
0420デフォルトの名無しさん
2012/11/24(土) 20:46:42.21レスしなきゃお前が言いたい放題じゃないか。
そんなの許せるかよ。
人に嫌みを言うことしかできない人間は黙って消えろ。
0421デフォルトの名無しさん
2012/11/24(土) 20:50:54.62結婚すれば?
0422デフォルトの名無しさん
2012/11/24(土) 20:51:49.97見ず知らずの人にこんなひどい言葉をかけて
末尾に「(w」とか付けて楽しむ人間って
普段どんな顔して仕事してるんだ。
この世に存在していいのか。消えてなくなれ。
0423デフォルトの名無しさん
2012/11/24(土) 20:53:01.89消えてなくなれよ
0424デフォルトの名無しさん
2012/11/24(土) 20:59:12.500425デフォルトの名無しさん
2012/11/24(土) 20:59:41.13不快なレスはスルーというのが
にちゃんの鉄則だったな。
スレを汚して申し訳ない。
0426デフォルトの名無しさん
2012/11/24(土) 21:05:33.630427デフォルトの名無しさん
2012/11/24(土) 21:09:14.08わかったら国に帰るんだな
0428デフォルトの名無しさん
2012/11/24(土) 21:55:15.380429デフォルトの名無しさん
2012/11/24(土) 23:42:51.800430デフォルトの名無しさん
2012/11/24(土) 23:55:16.87確かにそうだな、>>429 とかが典型例
0431デフォルトの名無しさん
2012/11/25(日) 00:00:13.150432デフォルトの名無しさん
2012/11/25(日) 00:11:46.940433デフォルトの名無しさん
2012/11/25(日) 00:29:25.00ショートカットがすべてが一般的なものと違うから
0434デフォルトの名無しさん
2012/11/25(日) 00:39:52.92>catって何?
0435デフォルトの名無しさん
2012/11/25(日) 00:44:55.400436デフォルトの名無しさん
2012/11/25(日) 00:45:14.01同じようなことしようとしたらテスト駆動しかないだろ
デバッガなんてステップしかできないんだから
0437デフォルトの名無しさん
2012/11/25(日) 00:53:02.950438デフォルトの名無しさん
2012/11/25(日) 01:08:28.900439デフォルトの名無しさん
2012/11/25(日) 02:33:47.110440デフォルトの名無しさん
2012/11/25(日) 08:51:39.020441デフォルトの名無しさん
2012/11/25(日) 08:56:44.920442デフォルトの名無しさん
2012/11/25(日) 09:03:17.65相応しい言葉を使えよクソデブという意味でなく、文字通りの意味で、何だ?
0443デフォルトの名無しさん
2012/11/25(日) 09:27:02.05たまにはエディタの話でもしろ
0444デフォルトの名無しさん
2012/11/25(日) 09:45:33.21これはすごい!
即座には理解できなさそうですが
勉強させていただきます。
ありがとうございました。
0445デフォルトの名無しさん
2012/11/25(日) 11:16:21.550446デフォルトの名無しさん
2012/11/25(日) 11:23:25.31今のお前のようにな
0447デフォルトの名無しさん
2012/11/25(日) 12:41:19.820448デフォルトの名無しさん
2012/11/25(日) 15:04:32.690449デフォルトの名無しさん
2012/11/26(月) 08:18:31.50 watch_youporn()
masturbate(tenga)
sleep()
0450デフォルトの名無しさん
2012/11/26(月) 22:59:13.07from tkinter import *
root = Tk()
value=StringVar()
col = [' ', 'a', 'b', 'c', 'd']
row = [' ', 0, 1, 2, 3]
# セルの値を格納
cellDict = {}
def printVal(evt):
print(value.get())
for i in range(len(row)):
for j in range(len(col)):
if j == 0:
# create row labels
label = Label(root, width=3,text=str(col[i]))
label.grid(row=i, column=j,padx=2, pady=2)
elif i == 0:
# create column labels
label = Label(root, width=20, text=row[j])
label.grid(row=i, column=j, padx = 2, pady=2)
else:
# create cell
entry = Entry(root, width=20, textvariable=value)
cellDict[(i, j)] = value
entry.bind('<KeyRelease>', printVal)
entry.grid(row=i, column=j)
root.mainloop()
上記のコードだと一つのセルに入力した値が全てのセルに反映されてしまいます
おそらくEntryのtextvariableに問題があると思うのですが
Excelのようなスプレッドシートを作りたい場合、Entryの設定をどのようにすればよいのでしょうか
0451デフォルトの名無しさん
2012/11/26(月) 23:30:43.37お前こんなん、よう貼ったなぁ
コピペも出来ないだろ
ちゃんと空白を行頭に入れて貼り直し
pythonで空白を先頭に入れないのは禁じ手よ
0452デフォルトの名無しさん
2012/11/26(月) 23:44:12.67すみません
半角スペースで空白を書き込んだのですが
2chでは行頭の半角スペースが反映されないことを知りませんでした
代わりに全角スペースで行頭に空白を書き込んでもよろしいでしょうか?
0453デフォルトの名無しさん
2012/11/26(月) 23:46:23.04from tkinter import *
root = Tk()
col = [' ', 'a', 'b', 'c', 'd']
row = [' ', 0, 1, 2, 3]
values = [None] * len(col)
for j in range(len(col)):
values[j] = [None] * len(row)
for i in range(len(row)):
value = StringVar()
values[j][i] = value
for i in range(len(row)):
for j in range(len(col)):
if j == 0:
# create row labels
label = Label(root, width=3,text=str(col[i]))
label.grid(row=i, column=j, padx=2, pady=2)
elif i == 0:
# create column labels
label = Label(root, width=20, text=row[j])
label.grid(row=i, column=j, padx=2, pady=2)
else:
# create cell
value = values[j][i]
entry = Entry(root, width=20, textvariable=value)
cellDict[(i, j)] = value
entry.grid(row=i, column=j)
root.mainloop()
0454デフォルトの名無しさん
2012/11/26(月) 23:47:53.73嘘吐くな
もともとインデント潰してうpしただろ
正直に言え
0455デフォルトの名無しさん
2012/11/26(月) 23:50:13.00いや、本来なら専用ブラウザでpop up表示させた時には、
元の半角空白が表示されるのよ。
でも、レスアンカーで確認しても空白が出なかったから、
>>451で文句言ったわけ。
もしかしてfirefox使ってる?
それだったら2chの専用ブラウザを検索して使うようにしなされ。
専ブラ入れてから、専ブラで>>453を見てご覧。
0456デフォルトの名無しさん
2012/11/26(月) 23:59:32.55私もおかしいなとは思ったけど、ブラウザ側で先頭から続く半角空白を
削除することもあるかもと思った。
>>450が手元のeditorで書いたcodeをブラウザに貼り付けるとしても、
先頭の半角空白だけ削除し、回答者が苦労するように
質問するとも思えないので、何かの手違いでしょうということで、
>>453のように先行して回答を書きました。
ごめん、↓いらないから削除しておいて。
cellDict[(i, j)] = value
0457デフォルトの名無しさん
2012/11/27(火) 00:02:55.27firefoxのchaikaで2chを見てました
Janeをインストールして空白が出ないことを確認しました
申し訳ございませんでした
0458デフォルトの名無しさん
2012/11/27(火) 00:14:05.23.....\Mozilla\Firefox\Profiles\hogehoge.default\extensions\[email protected]\chrome\content\chaika\post\
post.jsの中の
preview["mail"] = convertEntity(this.mail);
と
preview["message"] = convertEntity
の間に
preview["mail"] = convertEntity(this.mail);
this.message = this.message.replace(/^[ \t]+/mg, function(s){
return s.replace(/ /g, " ").replace(/\t/g, " ");
});
preview["message"] = convertEntity
0459デフォルトの名無しさん
2012/11/27(火) 00:15:16.260460デフォルトの名無しさん
2012/11/27(火) 00:16:28.31this.message = this.message.replace(/^[ \t]+/mg, function(s){
return s.replace(/ /g, "&#160;").replace(/\t/g, "&#160;&#160;");
});
全角「&」を半角「&」に置き換えて
0461デフォルトの名無しさん
2012/11/27(火) 00:17:08.36何が何だかわけがわからないことになってますね。
「&#32;」はOKだけど、
「&#x20;」はだめ。
でも「&#32」はOKという意味不明なことになってるし。
0462デフォルトの名無しさん
2012/11/27(火) 03:56:48.150463デフォルトの名無しさん
2012/11/27(火) 03:59:05.900464デフォルトの名無しさん
2012/11/27(火) 23:03:21.230465デフォルトの名無しさん
2012/11/27(火) 23:20:33.50十数の言語を操るようになると、この言語はどのIDEあれはどのIDEなどと言っていられないのです
全部エディタで済まします
0466デフォルトの名無しさん
2012/11/27(火) 23:33:09.550467デフォルトの名無しさん
2012/11/28(水) 00:10:16.280468デフォルトの名無しさん
2012/11/28(水) 09:02:01.47せ
い
ろ
ん
0469デフォルトの名無しさん
2012/11/28(水) 13:37:25.16http://kohada.2ch.net/test/read.cgi/php/1302598469/
0470デフォルトの名無しさん
2012/11/29(木) 00:46:19.21落ちてるね
0471デフォルトの名無しさん
2012/11/29(木) 10:26:00.99繋がらないね
0472デフォルトの名無しさん
2012/11/29(木) 11:59:11.08治ったね
0473デフォルトの名無しさん
2012/11/29(木) 12:09:33.69どのバージョンなら動きますか?
0474デフォルトの名無しさん
2012/11/29(木) 20:35:32.71【Intel】OpenCV総合スレ 4画素目【画像処理】
http://toro.2ch.net/test/read.cgi/tech/1329040627/
0475デフォルトの名無しさん
2012/11/29(木) 21:21:39.30以下のようなフォーマットの固定長テキストデータがありまして
AAAAAA123456789BBBBBCCCCC
全ての行について、7カラム目から3カラム×3のフィールドを取り出して
リストに['123', '456', '789']…と展開して格納したいのです。
以下のコードを書き、何とか動いたところで質問があります。
-----------------------------------------------------
# レコードの7カラム目から3カラム×3のフィールドを取り出す
with open('sample.txt','r') as f:
s = []
for line in f:
for col in range(0,3):
s.append( line[ col * 3 + 6 : col * 3 + 9 ] )
print(s)
-----------------------------------------------------
1.スライスで取り出す部分が力技な気がします。もっとスマートなやり方はないでしょうか
2.データの最後に改行のみの行があると、空データがリストに追加されるのですが
改行のみの行は処理しないようにするにはどうすればいいですか
0476デフォルトの名無しさん
2012/11/29(木) 21:30:26.62突っ込みの技術でも競ってんの?
0477デフォルトの名無しさん
2012/11/29(木) 21:52:06.26質問者にとってのスマートさの定義を小一時間語ってから質問してくれい
0478デフォルトの名無しさん
2012/11/29(木) 21:56:01.910479デフォルトの名無しさん
2012/11/29(木) 21:56:35.76s = []
for line in f:
line = line.strip()# 2.
if not line: # 2.
continue # 2.
for i in range(6, 15, 3):
s.append(line[i:i+3]) # 1.あえて変更するなら?
print(s)
0480デフォルトの名無しさん
2012/11/29(木) 22:24:15.43問題点が判ってんなら自分で直せよ
0481デフォルトの名無しさん
2012/11/29(木) 22:32:17.00ありがとうございます。参考にさせていただきます。
>>477
確かに曖昧な表現でした。
具体的には、行単位のループの中にさらにカラム単位の
ループを入れているところが、テキスト一括処理を得意とする
スクリプト言語らしからぬやり方だと思う次第です。
>>480
お叱りごもっともです。
改行のみという状態を判定する具体的なコーディングが
わかりませんでしたので知恵を拝借した次第です。
精進いたします。
0482デフォルトの名無しさん
2012/11/29(木) 22:59:38.08print s
0483デフォルトの名無しさん
2012/11/29(木) 23:21:05.01reg = re.compile(r'.{6}(\d{3})(\d{3})(\d{3})')
s = []
with open('hoge', 'r') as f:
for line in f:
m = reg.match(line)
if m:
s.extend(m.group(1, 2, 3))
print(s)
0484デフォルトの名無しさん
2012/11/29(木) 23:47:56.280485475
2012/11/30(金) 00:05:38.74>>482,483とも私には思いも付かない実装で、目から鱗とはこのことです。
この系統の処理は、業務で頻繁に必要になるので、とてもありがたいです。
開発さんにCOBOLで頼むと一ヶ月で100万円かかるものを
こうやってエンドユーザーで実現できてしまうとは…Python恐るべし。
0486デフォルトの名無しさん
2012/11/30(金) 01:18:54.97100万ぼったくるコボラー
この国終わってんな
0487デフォルトの名無しさん
2012/11/30(金) 01:52:46.75普通は位置計算してからseekして必要な部分のみreadするんじゃない?
ファイル全部読む程度問題ない規模ならいいけど。
固定長のデータを扱う場合はstructモジュールが適してる
9バイトのデータの分割なら
struct.unpack("3s"*3, "abcdefghi") # => ("abc","def","ghi")
0488デフォルトの名無しさん
2012/11/30(金) 02:05:22.09カモネギってどこにでもいるんだよ。
それをじょうずに捕まえるのが勝ち組。
0489デフォルトの名無しさん
2012/11/30(金) 02:48:32.24ideone.com/hZtO1I
ファイルを扱うサンプルにideoneのinput試してみたかった。seek出来るんだね
固定長データを扱う方法は他に、ctypesで構造体を定義する方法もある
けど、Cで構造体扱った経験がないと、慣れるまでが手間かもしれない。
pythonのみで手軽に固定長データ扱うなら、
namedtupleと struct.unpack を組み合わせて使う方法がお勧め
0490489
2012/11/30(金) 03:09:13.73ideone.com/uj7RI6
0491デフォルトの名無しさん
2012/11/30(金) 07:46:42.770492デフォルトの名無しさん
2012/11/30(金) 09:06:22.25そんなことより情報系の学問が軽視される風潮にあることのほうがよっぽど終わってると思う
先見の明なさすぎ
0493デフォルトの名無しさん
2012/11/30(金) 10:53:25.73>ファイルを扱うサンプルにideoneのinput試してみたかった。seek出来るんだね
バイナリってどうやって喰わせるの?
0494デフォルトの名無しさん
2012/11/30(金) 11:41:48.84encodingは UTF-8、改行は LF に統一されるので、
範囲外の任意のバイナリデータを直接は無理。base64にエンコードする等の工夫が必要
0495デフォルトの名無しさん
2012/11/30(金) 12:00:18.25デコードしないと何のデータかわからなくなるのは面倒だし
スクリプト内へデータ埋め込みでテストする場合は、
エスケープシーケンスで書いてStringIO等で包む方法をよく使う
0496デフォルトの名無しさん
2012/11/30(金) 12:13:51.28圧縮してbase64してみます
0497デフォルトの名無しさん
2012/11/30(金) 23:38:36.64def f():
with open('sample.txt', 'r') as lines:
recs = (izip_longest(*[islice(line, 6, 15)] * 3) for line in lines if line.rstrip())
for cols in chain.from_iterable(recs):
yield ''.join(cols)
print list(f())
0498デフォルトの名無しさん
2012/12/01(土) 04:47:59.69# 固定長テキストデータは、(文字数ではなく)バイト数が固定長と仮定
サイズが分かっている場合、行バッファ使って読み込むのは冗長
行読み込みだとレコード内に他の改行文字がないという保証が必要
rstrip 末尾の空文字を取り除くので、スペースのみのレコードは通らない
読み込まれたデータの長さを保証してない
スライスで対象がunicodeだと困るかもしれない
ファイルの場合 openの第二引数 "rb" 明示したほうがいい
0499デフォルトの名無しさん
2012/12/01(土) 09:20:39.11固定長データを桁位置指定で切り刻んで
扱う手段を組み込みで持っていないよな。
Javaなんかもそうかな?
Pythonにも一応構造体的なものとしてnamedtupleがあるけど、
既に区切られたフィールドに名前を付けるだけだしな。
0500デフォルトの名無しさん
2012/12/01(土) 10:21:36.17>>487,489
のいうstructが固定長の扱い用に用意してあると思うけど。
>>> fmt2 = b"3s"*3+b'3x'+b'3s'+b'x'+b'2s'+b'3x'+b'4s'
>>> struct.unpack(fmt2, b"abcdefghipppXXXpYYpppZZZZ")
(b'abc', b'def', b'ghi', b'XXX', b'YY', b'ZZZZ')
>>> cmpl2 = struct.Struct(fmt2)
>>> cmpl2.unpack(b"abcdefghipppXXXpYYpppZZZZ")
(b'abc', b'def', b'ghi', b'XXX', b'YY', b'ZZZZ')
>>> cmpl2.format
b'3s3s3s3x3sx2s3x4s'
0501デフォルトの名無しさん
2012/12/01(土) 10:27:10.16> 固定長データを桁位置指定で切り刻んで扱う手段を組み込みで
scanfは組み込みにないらしいね。マニュアルの正規表現の項に書いてた。
組み込みだと他には bufferやmemoryview 使う方法
# format: AAAAAA123456789BBBBBBBBBB(LF) record_size: 26
buf= bytearray(record_size)
digits = memoryview(buf)[6:15]
x,y,z = [buffer(buf,offset,3) for offset in [6,9,12]] # bufferは2.xのみ
while stream.readinto(record) == record_size:
print digits.tobytes()
print x,y,z # リストに入れる際はバッファをコピー [x[:], y[:], z[:]]
0502デフォルトの名無しさん
2012/12/01(土) 10:45:28.31素人はすっころんでろ
0503デフォルトの名無しさん
2012/12/01(土) 11:03:00.750504デフォルトの名無しさん
2012/12/01(土) 11:19:43.760505デフォルトの名無しさん
2012/12/01(土) 11:35:04.47ctypes.Structureで、固定長データを読むサンプル書いてみた。
operator.attrgetter がネストした構造にも対応してて便利
ideone.com/0IxDjB
0506デフォルトの名無しさん
2012/12/01(土) 11:56:23.61ある目的の.so, .dllがあって、APIは分かってるけど、
元の.cを入手出来ないし、
出来たとしてもpython用のC拡張作らない・れないし、
開発工数かかりすぎで非経済的だし、
って場合に、一時凌ぎ・次善策的に使うのがctypes。
ここ、超初心者スレでは教える必要のない情報。
pythonのC拡張を作るまでもない時は、ctypes使うけど、
>>505の貼ったcodeでctypes使う必要なんてない。
一切ない。全くない。これっぽっちもない。
現在の話の進行では、悪いけど、むしろ有害。
固定長を扱うにはどうするか?では、struct使えばいい話。
>>500に書いたように、読み飛ばしも'x'で可能。
0507デフォルトの名無しさん
2012/12/01(土) 12:31:28.610508デフォルトの名無しさん
2012/12/01(土) 13:12:13.19ありが�dx
0509デフォルトの名無しさん
2012/12/01(土) 13:59:27.10いやー
Pythonのstructは外部のクラスライブラリだから
言語に組み込まれた機能とは言えんだろ。
Javaについてもググってみたが、クラスにフィールドを並べて
うんたらという感じの記事ばかりで、どうもすっきりしない。
オブジェクト指向系言語が固定長データの扱いにやや
まどろっこしい手続きを必要とするのは、スペースやカンマで
区切られたデータ処理を前提としているからなのかもな。
それならsplitで取り出していかようにも処理できる。
面白い傾向だ。
0510デフォルトの名無しさん
2012/12/01(土) 14:03:40.88言語に組み込む必要がないって話でしょ。
んで、必要になった時にはstructで十分事足りるというお話。
0511デフォルトの名無しさん
2012/12/01(土) 14:11:09.220512デフォルトの名無しさん
2012/12/01(土) 14:39:37.79何かの答えを得たい場合、日本の2ちゃんに行って、質問し、
回答者に適当に反論しつつ罵倒するのだそうです
そうすると、日本人は顔を真っ赤にしながら
無料で何でも聞き出せる状態に変身するとのことです
0513デフォルトの名無しさん
2012/12/01(土) 14:45:31.51その情報筋、古いね
0514デフォルトの名無しさん
2012/12/01(土) 14:52:39.35VIPみたいなもんだよ
0515デフォルトの名無しさん
2012/12/01(土) 15:16:50.07今度は「なんだコイツこの先延々と全部聞いていくつもりか?」
「ちょっとは自分で調べろよ」と全員からバッシングを受けて、
何も聞き出せない状態になるのでした。
0516デフォルトの名無しさん
2012/12/01(土) 15:25:03.46いいことじゃないか。
こうしてROMも含めたスレの参加者多数に有益な情報が浸透し、
上級者も改めて基礎を固めることができる。
このスレで研鑽を積み、将来日本のIT界を背負って立つ存在に
なる人もいるかも知れん。
雑談や煽り合戦をするよりは数段マシ。
0517デフォルトの名無しさん
2012/12/01(土) 15:42:19.40宿題スレの回答とか見てるが糞コードばっかじゃねーか。
参考にならないどころか劣化コピーよりさらにひどい
害悪を撒き散らしてるだけ。
0518デフォルトの名無しさん
2012/12/01(土) 15:50:39.97宿題の方には、私は現在投稿しておりませんので、、、
あいつら進歩しないから見切った。
Pythonの方に来れば良質なcodeを読めるよ〜。
0519デフォルトの名無しさん
2012/12/01(土) 15:56:34.97実践の場ではコードは動けばいいんだよ。
糞だのという評価は、個人的嗜主義・嗜好によりなされるものであり、
それでもってコードやそれを書いた人を批判することは慎むべき。
動いているコードはみな平等の価値を持っている。
0520デフォルトの名無しさん
2012/12/01(土) 16:16:16.16実践の場ほど動けば良いじゃ済まなくなる
速度もメモリ使用量も例外も
全て考慮してコードを書く必要がある
0521デフォルトの名無しさん
2012/12/01(土) 16:30:02.83何かの答えを得たい場合、日本の2ちゃんに行って、質問し、
回答者に適当に反論しつつ罵倒するのだそうです
そうすると、日本人は顔を真っ赤にしながら
無料で何でも聞き出せる状態に変身するとのことです
0522デフォルトの名無しさん
2012/12/01(土) 22:44:53.240523デフォルトの名無しさん
2012/12/01(土) 22:48:00.720524デフォルトの名無しさん
2012/12/01(土) 23:39:20.850525デフォルトの名無しさん
2012/12/01(土) 23:57:12.870526デフォルトの名無しさん
2012/12/02(日) 06:22:07.70Desktop\test\ほにゃらら.txt ってやると \t の部分でエラーが起きて読みこめないことがわかりました
どうすればいいんでしょうか
0527デフォルトの名無しさん
2012/12/02(日) 08:04:18.35Desktop\\test\\ほにゃらら.txt
>>520
書き込み時間ワロス
0528デフォルトの名無しさん
2012/12/02(日) 08:17:48.69>>> path = os.path.join('Desktop', 'test', 'ほにゃらら.txt')
>>> path
'Desktop/test/ほにゃらら.txt'
>>> path = os.path.join('.', 'Desktop', 'test', 'ほにゃらら.txt')
>>> path
'./Desktop/test/ほにゃらら.txt'
>>> import sys
>>> print(sys.version)
3.2.2 (default, Sep 16 2012, 00:38:58)
[GCC 4.5.2]
0529デフォルトの名無しさん
2012/12/02(日) 08:39:46.15for n in xrange(1024 * 1024):
f = open('hoge.txt', 'ab')
f.write(b)
f.close()
print len(b) * n
0530デフォルトの名無しさん
2012/12/02(日) 08:46:24.97頑張って>>250まで抽出
78 名前:デフォルトの名無しさん [sage]: 2012/10/30(火) 00:16:01.46
"tkinter" -> 標準ライブラリ。手軽だが貧弱。
"PyQt4" -> Qtは商用アプリでもよく使われている。機能も豪華。(ただしGPL)
"PySide" -> PyQt4互換のLGPL版バインディング(新参なので若干バグあり)
"wxPython" -> 知らん
"pyGTK" -> 事実上Linux専用。GTKアプリを作りたいなら。
79 名前:デフォルトの名無しさん [sage]: 2012/10/30(火) 00:43:52.00
wxPythonはそれなりにサンプルが揃ってたんで
やりやすかったが、未だにPython3未対応だな。
137 名前:126 [sage]: 2012/11/04(日) 22:10:27.39
ありがとうございました。
もう一つ質問ですが、Pythonのクラスが
メンバに対する明示的なアクセス制御機構
(Javaで言うprivate指定など)を持たず、結果として
オブジェクト指向の三大要素の一つである隠蔽が欠けているのは
型のない言語であるがゆえのやむを得ない仕様でしょうか?
それとも別の意図がある?
138 名前:デフォルトの名無しさん [sage]: 2012/11/04(日) 22:51:15.63
underscore で十分だよね。みんなちゃんと守ってくれるよね。
っていう紳士協定を導入してるから。
実際には綺麗なC言語実装になるからじゃないの?
0531デフォルトの名無しさん
2012/12/02(日) 08:47:42.53>>137
class Class(object):#2系でobject継承すると新スタイルクラス(3と同じ挙動)
#ここも普通に実行されるがクラススコープ
_member = 1#非公開メンバ(列挙されないだけでアクセスは出来る)
__member = 2#非公開+難読化(外部からは_Class__memberという名前になる)
基本的にはこんな感じであとはデスクリプタとかでC#のようなプロパティも出来る
詳細は言語リファレンスのデータモデルなんかを読んでください
スタンスについては
デバックの際にはアクセスできることが有効であるし
自由にアクセスできるからといって
アクセスするプログラムを作らなければならないわけではない
アクセスしないようにプログラムを作ればいい
みんな大人なんだから
とかなんとか
140 名前:デフォルトの名無しさん [sage]: 2012/11/05(月) 01:41:27.19
l = [(1,2),(3,4),(5,6),...]というリストから
[1,3,5...]と[2,4,6...]というリストを作りたいのですが
a = [i[0] for i in l]
b = [i[1] for i in l]
より早い方法ってあります?
なんども呼ぶのでなるべく早くしたいのですが
0532デフォルトの名無しさん
2012/12/02(日) 08:49:39.55>>140
a,b = zip(*l)
142 名前:デフォルトの名無しさん [sage]: 2012/11/05(月) 01:47:47.36
import numpy
l = numpy.array([(1,2),(3,4),(5,6)])
a = l[:,0]
b = l[:,1]
143 名前:デフォルトの名無しさん [sage]: 2012/11/05(月) 03:01:46.74
実際privateでもリフレクションやvtblを弄くってアクセスすることが可能なので
確実なメリットって言うと、間違って呼び出した時にエラーにしてくれるくらいしかない
のよね
144 名前:デフォルトの名無しさん [sage]: 2012/11/05(月) 08:30:15.25
l[0::2]
l[1::2]
156 名前:忍法帖【Lv=40,xxxPT】(1+0:5) []: 2012/11/05(月) 19:34:05.02
PythonでLISTだけを含むファイルを外部に作って、メインのプログラムから
そのリストを参照したいんですが、どうやれば出来ますか?
親切な方、教えてくださいm(_ _)m
0533デフォルトの名無しさん
2012/12/02(日) 08:54:31.38import external
external.L
if __name__ == '__main__':
print('external.L =', external.L)
~/main.py [utf-8][unix][4/4行,27文字目]
L = [1, 2, 3, 4]
~/external.py [utf-8][unix][1/1行,16文字目]
p3 main.py
external.L = [1, 2, 3, 4]
160 名前:157 [sage]: 2012/11/05(月) 20:19:41.82
本当に、「参照」だけ目的なら、listではなく、
tup = (1, 2, 3, 4)
とした方が良いかもね。
167 名前:デフォルトの名無しさん [sage]: 2012/11/07(水) 08:16:20.49
Python 3.3.0のせいで前に入れていたpython2が動かなくなりました><
168 名前:デフォルトの名無しさん [sage]: 2012/11/07(水) 09:50:59.93
>>167
windows?
バージョン番号付きでshebang 書いてれば、py (windows板のランチャ) が振り分けてく>れるよ
#!/usr/bin/env python <- これだとバージョンが曖昧になるので
#!/usr/bin/env python2.7
#!/usr/bin/env python3.3
0534デフォルトの名無しさん
2012/12/02(日) 08:55:26.42windowsでおすすめのpythonエディタを教えてください
小規模なwindowsアプリぐらいしか作らないのであまり複雑じゃないものがいいです
python2.7とwxpythonを使う予定です
172 名前:デフォルトの名無しさん [sage]: 2012/11/07(水) 17:39:26.18
IDLE
EMACS
VisualStudio
Eclipse
netbeans
pycharm
windows上で作るなら↑が代表的
これ以外は微妙。
簡単なのはテキストエディタでがんばる
173 名前:デフォルトの名無しさん [sage]: 2012/11/07(水) 19:15:14.37
>>171
wxPythonに付いてくるEditra
日本語入力がインラインじゃないのと,エディタにしては起動が遅い(IDEよりは手軽感ある)
補完時に時々クラッシュする点がマイナス評価だけど、pluginで簡単なIDE並の機能を追加できる
同じwxPythonでpluginを作れるのが利点
0535デフォルトの名無しさん
2012/12/02(日) 09:01:54.98[[1, 3, 5], [2, 4, 6]]
0536デフォルトの名無しさん
2012/12/02(日) 09:12:17.54137の書き込みをした者ですが、
その後本を見ていたら
オブジェクト指向の三大要素は
「継承」「カプセル化」と「多態性」だそうです。
「隠蔽」は三大要素ではありません。
もしテンプレに使うなら
「オブジェクト指向の三大要素」というくだりを
削除していただけると幸いです。
0537デフォルトの名無しさん
2012/12/02(日) 09:23:23.95既に解決策出てるけど、他の方法
エスケープシーケンスを解釈しないようにraw文字列を使うと、そのまま記述出来る
r"Desktop\test\ほにゃらら.txt"
0538デフォルトの名無しさん
2012/12/02(日) 09:37:31.40186 名前:デフォルトの名無しさん [sage]: 2012/11/11(日) 23:19:33.77
環境変数の設定でつまずいてる
...
と入力してもうまくいかない どなたかわかりますか
>>> path = '''C:\Program Files (x86)\AMD APP\\bin\\x86_64;C:\Program Files (x86)\AMD APP\bin\\x86;'''
; で改行して調べてみると以下の通り。
>>> print(path.replace(';', '\n'))
C:\Program Files (x86)\AMD APP\bin\x86_64
C:\Program Files (x86)\AMD APin\x86
212 名前:デフォルトの名無しさん [sage]: 2012/11/13(火) 11:12:08.53
C の printf("%s\n", __func__) 相当のことってどうやったらできる?
213 名前:デフォルトの名無しさん [sage]: 2012/11/13(火) 11:27:20.96
logging で吐くなら
%(funcName)s
ttp://toro.2ch.net/test/read.cgi/tech/1328714043/592-
sys._getframe(0).f_code.co_name
sys._getframe(1).f_code.co_name
ttp://toro.2ch.net/test/read.cgi/tech/1342660231/396-
self.__class__.__name__,traceback.extract_stack()[-1][2]
traceback.extract_stack()[-1][2]
traceback.extract_stack()[-2][2]
...
traceback.extract_stack()[1][2]
traceback.extract_stack()[0][2]
0539デフォルトの名無しさん
2012/12/02(日) 09:38:36.76便乗で、windowsの人に質問 c:\Windows\py.exe ってない?
PythonにPATH通ってなくても、pyコマンド使えないかな?
win32/vistaで、PATH設定なしで py コマンドが使えてた記憶があるのだけど
Python 26,27,32,33 で 自前ビルド/公式/ActivePython 混在環境で
pipで入れたのかどうか、インストール経路が思い出せない。
222 名前:デフォルトの名無しさん [sage]: 2012/11/15(木) 07:22:18.39
標準マニュアルにあるnamedtupleの説明で
「typename という名前の tuple の新しいサブクラスを返します」
ってあるんですが、
そもそもクラスを返すっていう概念がよくわかりません。
値やインスタンスを返すというのなら何となくわかるのですが。
簡単なコードなんか示してもらえると助かります。
224 名前:デフォルトの名無しさん [sage]: 2012/11/15(木) 08:17:39.61
>>222
クラスもメタクラスtypeのインスタンスであり、
class以外にもtypeやexecで動的に生成できる
namedtupleは自身にインデックスアクセスする
デスクリプタを与えられた名前で定義してる
operatorを使わず通常定義風なら
class typename(tuple):
@property
def id(self):return self[0]
実際書くなら
type('typename',(tuple,),{'id':property(operator.itemgetter(0))})
collectionsモジュールは大半がPythonコードなのでソースを見ると良い
0540デフォルトの名無しさん
2012/12/02(日) 09:40:55.14クラス自体を理解出来てないと見た。
class Foo(object):
def name(self):
return 'Foo'
class Baa(object):
def name(self):
return 'Baa'
def return_class(name):
dic_classes = {}
dic_classes['Foo'] = Foo
dic_classes['Baa'] = Baa
return dic_classes[name]
if __name__ == '__main__':
foo_class = return_class('Foo')
obj = foo_class()
print('id(Foo) = 0x{:08x}'.format(id(Foo)))
print('id(foo_class) = 0x{:08x}'.format(id(foo_class)))
print('obj.name =', obj.name())
248 名前:デフォルトの名無しさん [sage]: 2012/11/17(土) 21:29:47.39
開発環境はPyScripterとPycharmはどちらが使いやすいでしょうか?
249 名前:デフォルトの名無しさん [sage]: 2012/11/17(土) 21:39:24.77
>>248
あまり高度なことをしてない俺の意見で良ければ
pycharmは機能が豊富でコード補完も便利で使いやすい、ただしマウスホイールでスクロ>ールが出来ない
pyscripterはシンプルでプロジェクト管理やコードの色分けが出来ればいいな、ぐらいの
機能
250 名前:デフォルトの名無しさん [sage]: 2012/11/18(日) 04:50:41.59
eric4
頑張って>>250まで抽出
0541デフォルトの名無しさん
2012/12/02(日) 09:43:06.35>>530-536,538-540
までで貼り付け完了。
251以降はまた明日やるつもりだけど、誰かお願い。
0542デフォルトの名無しさん
2012/12/02(日) 09:43:35.110543デフォルトの名無しさん
2012/12/02(日) 09:51:11.04テンプレってレスアンカーだけで良かったんです?
と思ったけど、>>541のように一行にまとめて書けば
よかったですね。
無駄にスレ流しただけでしたね。
失礼しました。
今度は、レスアンカーだけで叩き台案貼り付けます。
0544デフォルトの名無しさん
2012/12/02(日) 09:56:49.50丸ごとじゃないな
劣化コピーだ
死ねカス
0545デフォルトの名無しさん
2012/12/02(日) 10:07:21.80ぼけが。
0546デフォルトの名無しさん
2012/12/02(日) 11:30:37.45途中で空になっているはずのディレクトリなのに
「WindowsError: [Error 145] ディレクトリが空ではありません。」
というエラーが出て中断されます
なぜでしょう?
0547デフォルトの名無しさん
2012/12/02(日) 11:39:55.172. 本当にそのディレクトリは空なのか確認したのか…
3. まずは、http://d.hatena.ne.jp/s-n-k/20090621/1245603351 とか見て勉強しなよ…
0548デフォルトの名無しさん
2012/12/02(日) 11:39:58.28遅延書き込みが原因じゃないかな。
os.rmdir() の後に time.sleep(0.01) くらい入れてみるとか。
あとディレクトリの中を消して行きたいみたいだけど、
そういう処理をするには os.walk() を使うと良いよ。
0549デフォルトの名無しさん
2012/12/02(日) 11:50:52.06出来ました
ありがとうございました
エクスプローラでフォルダ開いてたのが原因だった見たいです
0550デフォルトの名無しさん
2012/12/02(日) 11:53:02.570551デフォルトの名無しさん
2012/12/02(日) 12:01:36.680552デフォルトの名無しさん
2012/12/02(日) 14:02:32.69| おまわりさんこいつです! |
\_ ________/
∨ ___
,r'つ@=,r'
∧_ ∧.| (・∀・ )
(・ω・´ )、/~У ̄|゙i
゚こ、 つ |=◎=∪
しー-J (_(__)
http://toro.2ch.net/test/read.cgi/tech/1349545643/932
0553デフォルトの名無しさん
2012/12/03(月) 14:54:41.860554デフォルトの名無しさん
2012/12/04(火) 15:12:29.24blockList = [['****'], [' * ', '***'], [''**', '**']]
def blockDown(blank):
form = '%' + str(blank) + 's'
for i in blockList[random.randint(0, len(blockList) - 1)]:
print form % i
while (True):
blockDown(random.randint(0, 24))
テトリスを作りたいのですが
0555デフォルトの名無しさん
2012/12/04(火) 20:34:09.370556デフォルトの名無しさん
2012/12/04(火) 20:47:32.670557デフォルトの名無しさん
2012/12/04(火) 20:50:35.57なにかオススメのデバッガーはありますか?
pdbは使いにくそうなので敬遠してます・・・
0558デフォルトの名無しさん
2012/12/04(火) 20:54:17.670559デフォルトの名無しさん
2012/12/04(火) 23:38:50.300560デフォルトの名無しさん
2012/12/05(水) 02:15:18.64何かいいツールややり方とかありますか?
0561デフォルトの名無しさん
2012/12/05(水) 06:43:37.86自動で検査するようなツールは知らないけど、実行結果からテストのカバレッジを知る方法なら、
各テスト・フレームワーク毎に、オプションだったり拡張として準備されてるはず。pip search coverage
0562デフォルトの名無しさん
2012/12/06(木) 07:02:47.15やってみた
http://ideone.com/hicoF2
0563554
2012/12/06(木) 10:53:17.73完成しました
ほんとうにありがとうございました
http://ideone.com/XtBlrY
0564デフォルトの名無しさん
2012/12/08(土) 16:10:20.320565デフォルトの名無しさん
2012/12/09(日) 16:15:03.700566デフォルトの名無しさん
2012/12/10(月) 11:00:46.49激安で抜ける
○1000円〜
「新宿 アイアイ 」
○1500円〜
「西川口 マーガレット 」
○2000円〜
「新宿・錦糸町 あんぷり亭 」
「新宿 ダブルエロチカ 」
0567デフォルトの名無しさん
2012/12/11(火) 12:30:35.150568デフォルトの名無しさん
2012/12/11(火) 13:03:00.582.x系では、fileのは型のコンストラクタ呼出、openはビルトイン関数の呼出
openは中でfile呼び出してるだけなので、返すオブジェクトは一緒
違いは、例えば
isinstance(f, file) は型なので可能だけど、
isinstance(f, open) は関数なので TypeError
実際のコードではisinstanceでファイルの型チェックは殆どしないし、
3.xでは fileは無くなるので、違いや使い分けとか気にしなくていい。openを使おう
0569デフォルトの名無しさん
2012/12/11(火) 14:09:01.26python fileで検索してもファイルの扱い方ばかりでてきて、file()の説明があまり出てこず苦戦しておりました。
詳しいご説明ありがとうございました。
0570デフォルトの名無しさん
2012/12/11(火) 22:05:58.660571デフォルトの名無しさん
2012/12/13(木) 00:30:58.92最短マッチで
>>> print re.search("\(.*?\)", "aaa(bbb(cc))dd").group()
(bbb(cc)
となって、最初に出てきた”(”から一番短い”)”を探すっぽい。という理解で合ってる?
(cc)にマッチさせるにはどうしたら良い?
0572デフォルトの名無しさん
2012/12/13(木) 02:54:10.42>>> r = re.compile(r'\([^(]*?\)')
>>> r.search('aaa(bbb(cc))dd').group()
'(cc)'
0573デフォルトの名無しさん
2012/12/13(木) 03:02:09.96>>> r = re.compile(r'\([^()]*\)')
>>> r.search('aaa(bbb(cc))dd').group()
'(cc)'
0574デフォルトの名無しさん
2012/12/13(木) 06:57:18.57むう…これはどういうからくりなのだろう。
最短一致の?を使わずに内側のカッコ部分を取り出せるのか。
0575デフォルトの名無しさん
2012/12/13(木) 11:22:17.38一番素直な解答例だと思うな。
0576デフォルトの名無しさん
2012/12/13(木) 16:23:22.33すると、
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c src/pykf.c -o build/temp.linux-i686-2.7/src/pykf.o
src/pykf.c:30:20: 致命的エラー: Python.h: そのようなファイルやディレクトリはありません
コンパイルを停止しました。
error: command 'gcc' failed with exit status 1
のようなエラーが出て停止してしまうのですが、こういうのはどこに報告すれば良いのでしょうか?
0577デフォルトの名無しさん
2012/12/13(木) 16:39:06.15ここでいいんじゃね?
0578デフォルトの名無しさん
2012/12/13(木) 17:27:36.630579デフォルトの名無しさん
2012/12/13(木) 17:54:15.330580デフォルトの名無しさん
2012/12/13(木) 19:29:23.900581デフォルトの名無しさん
2012/12/13(木) 19:54:43.70カッコを否定で使って最大一致を取ると
カッコを使った最小一致になるというからくりか。感動した。
俺だと r = re.compile('\([a-zA-Z]*?\)')でカッコ内の文字種類を
決め打ちして最小一致を取ることしか考えつかなかったよ。
0582デフォルトの名無しさん
2012/12/13(木) 20:10:23.95$ apt-get install python3-dev
0583デフォルトの名無しさん
2012/12/13(木) 20:51:31.380584デフォルトの名無しさん
2012/12/13(木) 23:21:12.24>>573
ありがとう。高度すぎてわからないw勉強します。
0585デフォルトの名無しさん
2012/12/13(木) 23:37:22.37例えばGoogleに飛んで自動で検索フォームにPythonと入力したり出来ますか?
0586デフォルトの名無しさん
2012/12/14(金) 00:15:48.680587デフォルトの名無しさん
2012/12/14(金) 00:28:24.150588デフォルトの名無しさん
2012/12/14(金) 08:21:27.01その正規表現の場合、終端が最初に現れる閉じ括弧と確定できるので、最短・最長は影響しないはず。
仕様次第では、そちらの括弧内のマッチする文字を明示した方が良い場合もあるよ。
ドットや補集合では、不要な文字にまでマッチしてしまうケースが出るので。
0589デフォルトの名無しさん
2012/12/14(金) 10:12:28.08>>571の問題に対する一番優れた回答は>>573だ
なぜなら少ないタイピング量で、かつ、より広い概念で解いているからだ
0590デフォルトの名無しさん
2012/12/14(金) 10:27:04.040591デフォルトの名無しさん
2012/12/14(金) 11:11:47.770592デフォルトの名無しさん
2012/12/14(金) 12:32:19.85自演かよ
0593デフォルトの名無しさん
2012/12/14(金) 12:56:46.980594デフォルトの名無しさん
2012/12/14(金) 14:46:12.900595デフォルトの名無しさん
2012/12/14(金) 16:04:55.060596デフォルトの名無しさん
2012/12/14(金) 20:13:33.300597デフォルトの名無しさん
2012/12/14(金) 22:21:10.370598デフォルトの名無しさん
2012/12/14(金) 22:35:53.35import webbrowser
webbrowser.open("GOOGLE_DOT_COM/?q=Python") # ※ URL書込み出来なかった
ブラウザを開いてサイトにアクセスは標準のwebbrowserモジュールで可。
オートメーションはサポートしてない。
手軽にやるならJavaScript/Bookmarkletsがあるけど、
多分、外部からの呼び出しはセキュリティ絡みの制限に引っ掛る。
0599デフォルトの名無しさん
2012/12/15(土) 00:05:51.12こんなモジュールが有ったのですね
ありがとうございます
0600デフォルトの名無しさん
2012/12/15(土) 21:29:03.26関数内で同名の変数を参照だけする場合はグローバルで
関数内で値を代入した瞬間からローカルになるという仕様に
どうにもなじめません。
ローカル変数のつもりで、うっかり代入をせずに参照するような
ことをしてしまうと、エラーにならず通ってしまい危険ではないですか。
みなさんはこの仕様とどういう折り合いを付けているのでしょうか?
0601デフォルトの名無しさん
2012/12/15(土) 22:00:26.310602デフォルトの名無しさん
2012/12/15(土) 22:02:07.70>>> hoge = [5, 3, 1]
>>> def a():
... hoge[2] = 9
...
>>> hoge
[5, 3, 1]
>>> a()
>>> hoge
[5, 3, 9]
0603デフォルトの名無しさん
2012/12/15(土) 23:10:20.520604デフォルトの名無しさん
2012/12/15(土) 23:24:55.600605デフォルトの名無しさん
2012/12/16(日) 00:11:24.790606デフォルトの名無しさん
2012/12/16(日) 00:16:59.65動作が気に食わないなら自分でPEPでも書くといい。
0607デフォルトの名無しさん
2012/12/16(日) 22:34:08.14ttp://stackoverflow.com/questions/12590058/python-performance-with-global-variables-vs-local
ttp://stackoverflow.com/questions/7028770/why-a-procedure-is-so-much-faster-when-put-into-a-function
グローバルに置くのとローカルに置くのじゃパフォーマンスに影響する
マルチプロセスとか考慮しないなら変数は極力ローカルにしとくべき
ローカルにすると排他とかない分パフォーマンスが高くなる
某 WAF のようにグローバルを汚さないのが pysonic
0608デフォルトの名無しさん
2012/12/16(日) 22:44:30.040609デフォルトの名無しさん
2012/12/16(日) 23:04:55.460610デフォルトの名無しさん
2012/12/16(日) 23:12:47.940611デフォルトの名無しさん
2012/12/16(日) 23:26:32.360612デフォルトの名無しさん
2012/12/16(日) 23:36:03.330613デフォルトの名無しさん
2012/12/17(月) 19:28:55.520614デフォルトの名無しさん
2012/12/17(月) 21:23:05.750615デフォルトの名無しさん
2012/12/17(月) 21:24:28.87だね
0616デフォルトの名無しさん
2012/12/17(月) 21:49:17.24PySide is Dead?
http://thread.gmane.org/gmane.comp.lib.qt.pyside/4049
0617デフォルトの名無しさん
2012/12/17(月) 22:56:21.14nokia が qt 売るだけじゃん
買ったとこが pyside も買うよ
どっか買ってくれるよね?!
0618デフォルトの名無しさん
2012/12/18(火) 09:07:09.96Nokia、全Qt事業をフィンランドのDigiaに売却 - SourceForge.JP Magazine
http://sourceforge.jp/magazine/12/08/09/2048249
0619デフォルトの名無しさん
2012/12/18(火) 10:37:19.340620デフォルトの名無しさん
2012/12/18(火) 10:41:40.580621デフォルトの名無しさん
2012/12/19(水) 00:20:40.56以下のコードをコマンドプロンプトで実行させると例外が出てしまいます
#↓unicode文字
testStr='''〄'''
print (testStr)
コマンドプロンプトがCP932で表示されているからその範囲外の〄を表示できないのは分かりますけど
とりあえず確認用に軽く表示しているだけなので切り捨てて表示させるにはどうしたらよいでしょうか
コマンドプロンプトをunicodeで表示するのはフォントが汚くなるからちょっと。
0622デフォルトの名無しさん
2012/12/19(水) 00:23:56.11http://docs.python.jp/3.3/library/stdtypes.html#str.encode
0623デフォルトの名無しさん
2012/12/19(水) 16:21:21.23情報を探してもLinuxだったりバージョン2だったりしますしPyPI、pip、easy_installとか同じような機能?が沢山あってさっぱりわかりません
入れたいのはこれで、コードをDLしてサンプルを実行すると動くのですが
サンプルコードを別のフォルダに移動して実行すると動かなくなったりとやはり何かの「インストール」作業が必要に思えるのですが、それがわかりません。
colorama ―Pythonでコンソールに色付け - flatlineの日記
http://d.hatena.ne.jp/flalin/20100716/colorama
Installation instructions — pip 1.2.1.post1 documentation
http://www.pip-installer.org/en/latest/installing.html
を見てもまずcurlが入っていませんでしたし
http://pypi.python.org/pypi/setuptools#windows
の64-bit versions of Python Download ez_setup.py and run it;を実行してもコマンドが無いと言われてしまいます
>>621と同じく3.3、7の64bitです
0624デフォルトの名無しさん
2012/12/19(水) 17:28:43.34まずdistributeを入れ、pipを入れる
その前にパスを通すのが先かな
0625デフォルトの名無しさん
2012/12/19(水) 17:41:07.39pipを入れるという事で調べてみます。ありがとうございました
0626デフォルトの名無しさん
2012/12/19(水) 18:05:56.960627デフォルトの名無しさん
2012/12/20(木) 04:27:28.17実対称行列の固有ベクトルを求めるのに、
numpy.linalg.eigを使うと固有ベクトルを並べた行列が直交行列になりません。
これは仕様なのでしょうか?
(ちなみに、numpy.linalg.eighを使うとちゃんと直交行列になります。)
0628デフォルトの名無しさん
2012/12/20(木) 20:53:59.81try:
f.write("\u3004")
finally:
f.close()
とすると
UnicodeEncodeError: 'cp932' codec can't encode character '\u3004' in position 0: illegal multibyte sequence
とエラーが出るのですが何故でしょうか
ファイルに追記しているのに何故'cp932'にエンコードしようとしているのか…
0629デフォルトの名無しさん
2012/12/20(木) 21:11:36.36「Uniccode文字列」は直接ファイルに書けない
「utf_8やutf_16にエンコードされたバイトシーケンス」は書ける
明示しないなら適当に何らかのエンコーディングでバイトシーケンスに直そうとする
0630デフォルトの名無しさん
2012/12/21(金) 16:55:12.820631デフォルトの名無しさん
2012/12/21(金) 17:20:46.70python: failed to set __main__.__loader__
と怒られて実行できないのですが、もしかして英字限定だったりしますか
windowsなので全部unicodeで統一されてると思ったのに
0632デフォルトの名無しさん
2012/12/21(金) 17:59:50.40OSの内部的にはUnicodeだと思うけど
0633デフォルトの名無しさん
2012/12/21(金) 18:13:59.400634デフォルトの名無しさん
2012/12/21(金) 18:29:36.11ローダーがファイルシステムエンコーディングを無視してutf-8でデコードしようとしてるせい
修正リリースされてないので、自分でパッチあててビルドしないと直らない
0635デフォルトの名無しさん
2012/12/21(金) 18:32:02.67テスト
0636デフォルトの名無しさん
2012/12/21(金) 19:22:49.57公式のリリースノート見たら3.2.3から3.3.0まで半年近くかかってるなあ
せっかく見やすいファイル名が使えると思ったのに
0637デフォルトの名無しさん
2012/12/21(金) 19:27:16.90VC++2010を入れる(Expressでおk)
ソースを展開する
pcbuild.slnをVC++で開く
ソリューション構成をReleaseにする
ビルドで完成
俺は修正して使ってるからバイナリや差分を渡せないこともないが
この御時世にその対応はちょっとお天気が過ぎるな
0638デフォルトの名無しさん
2012/12/21(金) 20:10:18.20お勉強スレをutf-8やpcbuildで検索したけど見つかりませんでしたし
そのまま開いてビルドしなおしただけでは何も変わりませんでした
0639デフォルトの名無しさん
2012/12/21(金) 20:11:41.790640デフォルトの名無しさん
2012/12/21(金) 20:16:51.28ここ
http://bugs.python.org/issue16218
0641デフォルトの名無しさん
2012/12/21(金) 21:49:57.13ありがとうございます
それの一番新しいコメント http://bugs.python.org/issue16218#msg176872 の http://hg.python.org/cpython/rev/c25635b137cc 、
左のメニューの http://hg.python.org/cpython/archive/c25635b137cc.zip の中の/PCbuild/pcbuild.slnを開き、ビルドしてexeは出来たものの
そのexeをそのまま今の環境に上書きしても当然動きませんでした
ImportError: No module named '_ssl'とインストーラーでインストールした時と比べて色々足りてない感じがするのですが
インストーラーでインストールしたpythonに↑からDLしてビルドしたpythonを上書き?させるにはどうしたらよいのでしょうか
0642デフォルトの名無しさん
2012/12/21(金) 21:57:32.56これとは別に>>637を作る
そして出来上がった python33.dll 「だけ」 を上書きする
0643デフォルトの名無しさん
2012/12/21(金) 22:22:21.85いつ修正リリースされるかもわからんし、それまでのためにフォークを作った
https://bitbucket.org/yttkans/python-3.3.0-issue-16218-patched/
ビルドの仕方は同じ
上書きするのはpython33.dllだけ
遠隔操作が怖くない人向けにバイナリも用意した
これは上書きするだけでいい
https://bitbucket.org/yttkans/python-3.3.0-issue-16218-patched/src/2843e2749d8b/win32?at=default
0644デフォルトの名無しさん
2012/12/21(金) 23:40:04.85ありがとうございます、python-3.3.0.msiからインストールし、python33.dll 「だけ」 を上書きしたら無事日本語のpyファイルが実行出来ました
python-3.3.0.amd64.msi つまり64bit版のパッチはまだ存在しないのでしょうか
ビルド時の構成をwin32から64にしても「プロジェクトはこのソリューション構成に対してビルドするように選択されていません。」と表示されてしまうので32bit専用みたいです
0645デフォルトの名無しさん
2012/12/22(土) 01:44:49.91WindowsSDKを入れる必要がある
ソリューションの構成をRelease、x64にしたら
pythoncoreプロジェクトのプロパティで「プラットフォームツールセット」って項を探して
Windows SDK 7.1を選択する(最初はv100になっているが、v100だとx64のインポートライブラリが見つからなくてこける)
あとはビルドする
x64のバイナリはamd64という名前のフォルダに出力されるので見落としがち
例によってx64のバイナリ
俺はx64に全く興味が無いので動作は確認していない
https://bitbucket.org/yttkans/python-3.3.0-issue-16218-patched/src/c9cde181d5af/amd64?at=default
0646デフォルトの名無しさん
2012/12/22(土) 02:14:41.37本日は手取り足取りありがとうございました。
0647デフォルトの名無しさん
2012/12/22(土) 07:45:33.41全ての要素が数字であることをチェックして
異常ならメッセージを出してプログラムを中止
という処理をできるだけ短く済ませたいです。
以下のようにリスト内包表記に詰め込んで
一行でやろうと試みたのですが、Syntax Errorとなります。
他のやり方はありますか。
print('数字をスペース区切りで入力してね')
ans = input().split(' ')
[print('数字以外の入力があります');exit(1) for s in ans if s.isdigit() == False]
0648デフォルトの名無しさん
2012/12/22(土) 08:38:15.26内包表記はリストを作る式なので、要素の反復処理にはfor文を使う
print '数字をスペース区切りで入力してね'
ans = raw_input().split()
for s in ans:
if not s.isdigit():
print '数字以外の入力があります'
exit(1)
0649デフォルトの名無しさん
2012/12/22(土) 09:37:36.150650デフォルトの名無しさん
2012/12/22(土) 09:38:40.570651デフォルトの名無しさん
2012/12/22(土) 09:43:31.38if not all(s.isdigit() for s in ans): print('数字以外の入力があります'); exit(1)
0652デフォルトの名無しさん
2012/12/22(土) 09:52:30.89for i, s in ans:
if not s.isdigit():
a.append('%d番目の項目に数字以外の入力があります' % (i, ))
if len(a):
print '\n'.join(a)
exit(1)
0653デフォルトの名無しさん
2012/12/22(土) 10:11:08.400654デフォルトの名無しさん
2012/12/22(土) 10:14:26.920655デフォルトの名無しさん
2012/12/22(土) 11:37:28.27set() 使うと楽だよ。
if __name__ == '__main__':
num_st = set('0123456789')
sep = ' '
num_st_with_sep = set(num_st)
num_st_with_sep.add(sep)
# print('num_st_with_sep =', num_st_with_sep)
print('数字をスペース区切りで入力してね')
_debug = not True
if _debug:
input_valid = '124 400 84 927 553 666'
input_invalid = '1i4 29a 4E00 84 9F2'
input_ = input_invalid
# input_ = input_valid
else:
input_ = input()
input_st = set(input_)
# print('input_st =', input_st)
ans = input_.split(sep)
diff_st = input_st - num_st_with_sep
if not diff_st:
print('ans =', ans)
else:
print('数字以外の文字が入力されました。')
print('それは、以下の通りです。')
print('{}'.format(', '.join(diff_st)))
print('頑張りましょう。')`
0656デフォルトの名無しさん
2012/12/22(土) 12:49:41.940657デフォルトの名無しさん
2012/12/22(土) 13:04:44.74このケースでは anyの方が効率良いよ # Trueを返した時点で繰り返しを終了出来るので
isdigitは 一部のunicode文字も通ったり、2系だとロケールの影響を受けるので、
支障がないかマニュアルを要確認。
数値として使うなら int(n, 10) で変換してみて範囲チェック/例外を捕まえるのが数値チェックの定石だけど、
厳密な文字列のチェックをしたいなら正規表現が汎用的。
例えば後から、頭にマイナス符号を許可するといった変更がある場合でも、他の方法より対応が容易。
0658657
2012/12/22(土) 13:13:25.51ごめん、なんか勘違いした。決定時にループ終わるのはallも同じだった
any だと not isdigit にしないといけないから。not all で良かった
0659デフォルトの名無しさん
2012/12/22(土) 18:04:58.73音の高さと長さを指定する程度でいいから
スクリプトから簡単なピー音を直接鳴らす方法って無い?
0660デフォルトの名無しさん
2012/12/22(土) 21:01:19.060661デフォルトの名無しさん
2012/12/22(土) 21:13:55.30いろいろあるとおもうけど自分がもしやるなら
初回起動時に音声ファイル生成するかPygameのsndarrayつかう。
0662デフォルトの名無しさん
2012/12/22(土) 21:46:05.240663647
2012/12/23(日) 13:58:46.99全部試して楽しんでます。
Pythonは楽しい。大好き。
0664デフォルトの名無しさん
2012/12/24(月) 23:11:08.10という文がありまして、
ファイルの存在チェックをするためにそのベースとなる
ディレクトリ名を変数に代入するものです。
これを実行すると、文の末尾で
SyntaxError: EOL while scanning string literalが出ます。
これはどういうことでしょうか。raw文字列ならば\は
単なる文字になると理解しているのですが…
0665デフォルトの名無しさん
2012/12/24(月) 23:16:46.610666デフォルトの名無しさん
2012/12/24(月) 23:25:19.53> raw文字列ならば\は単なる文字になると理解しているのですが…
その理解は正しくない。
http://docs.python.jp/2/reference/lexical_analysis.html#literal の
「接頭文字 'r' または 'R' がある場合」の節を参照のこと。
0667デフォルトの名無しさん
2012/12/24(月) 23:29:30.23エラーが出た時終了させずに止めるにはどうしたらよいでしょうか
すべての関数等をtry:で囲むのも大変ですので、全てのエラー発生時に…という処理は出来ないでしょうか
0668デフォルトの名無しさん
2012/12/24(月) 23:58:35.340669デフォルトの名無しさん
2012/12/25(火) 00:29:13.570670デフォルトの名無しさん
2012/12/25(火) 04:11:25.84pythonスクリプト内で os.system("python -v") => 2.7
となります メリークリスマス
3.2は自分で入れたもので2.7はシステムに最初から入っていたものです
os.systemでも通常のターミナルと同じ環境にしたいのですが、どうすればよいでしょうか?
0671デフォルトの名無しさん
2012/12/25(火) 09:55:58.70Pythonのbugじゃない?
あなたのやりたいことは以下で大丈夫だと思うので、
深く考えるのは止めにしました。
>>528
>>> import os
>>> path = os.path.join('Desktop', 'test', 'ほにゃらら.txt')
>>> dname = os.path.dirname(path)
>>> path, dname
('Desktop/test/ほにゃらら.txt', 'Desktop/test')
>>670
起動scriptの先頭行に以下を書き込むか、
#!/usr/bin/env python3.2
3.2から以下のようにして直接起動する。
python3.2 tes670.py
>>669
多分無い。
0672デフォルトの名無しさん
2012/12/25(火) 09:59:22.70よく分からんけど、起動scriptで呼び出すmethodを一つだけにして、
def run():
# 色々な呼び出し。
とか適当にしておいて、run()をtry, exceptで囲う。
def func1():
raise RuntimeError('func1()')
def func2():
raise Exception('func2()')
def func3():
raise IOError('func3()')
def func4():
raise KeyboardInterrupt('func4()')
def run():
# func1()
# func2()
# func3()
func4()
if __name__ == '__main__':
try:
run()
except BaseException as raiz:
print('よい子のみんなは真似しちゃ駄目。')
print('raiz =', raiz)
raise raiz
0673デフォルトの名無しさん
2012/12/25(火) 10:40:57.10こういうのならたまにやる
HOGE, FUGA, PIYO = range(3)
0674デフォルトの名無しさん
2012/12/25(火) 18:24:49.23print i,v
こーゆーの?
0675デフォルトの名無しさん
2012/12/25(火) 20:58:07.52しかも意外に便利だた
0677デフォルトの名無しさん
2012/12/26(水) 00:14:52.410678671
2012/12/26(水) 08:58:17.92えっとですね。URLに "/2/" とあったので、2系の話だろう、
質問者>>664の質問には>>671の回答で十分だろう、
ということで読みませんでした。
きちんと読んでみると、>>664の質問の答えが書いてありましたです。。。
勉強になりました。。。bugでなかったです。。。
接頭文字 'r' または 'R' がある場合、バックスラッシュの後にくる文字はそのまま
文字列中に入り、 バックスラッシュは全て 文字列中に残されます 。例えば、文
字列リテラル r"\n" は二つの文字: バックスラッシュと小文字の 'n' からなる文
字列を表すことになります。引用符はバックスラッシュでエスケープすることがで
きますが、バックスラッシュ自体も残ってしまいます; 例えば、 r"\"" は不正でな
い文字列リテラルで、バックスラッシュと二重引用符からなる文字列を表します
; r"\" は正しくない文字列リテラルです (raw 文字列を奇数個連なったバックス
ラッシュで終わらせることはできません)。厳密にいえば、 (バックスラッシュが直
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
後のクオート文字をエスケープしてしまうため) raw文字列を単一のバックスラッ
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
シュで終わらせることはできない ということになります。また、バックスラッシュ
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
の直後に改行がきても、行継続を意味する のではなく 、それら二つの文字とし
て解釈されるので注意してください。
0679デフォルトの名無しさん
2012/12/26(水) 09:18:42.240680デフォルトの名無しさん
2012/12/26(水) 09:59:58.980681デフォルトの名無しさん
2012/12/28(金) 00:12:17.340682デフォルトの名無しさん
2012/12/28(金) 17:20:30.080683デフォルトの名無しさん
2012/12/28(金) 17:30:53.07詳しいやり方を教えていただけると助かります
python2.7は入れてあります
0684デフォルトの名無しさん
2012/12/28(金) 18:40:20.620685デフォルトの名無しさん
2012/12/29(土) 18:11:56.28具体的に言うと、文字列のリストを元にして
各文字列をダブルクォートで囲んだリストを作りたいです。
a = [ 'a', 'b', 'c' ]
b = []
for i in a:
b.append( '"' + i + '"' )
私が考えたのは上記ですが、なんかダサイなあと思うので。
0686デフォルトの名無しさん
2012/12/29(土) 18:16:35.86別に綺麗だとは思わないけどー
0687デフォルトの名無しさん
2012/12/29(土) 18:18:49.26a = ['a', 'b', 'c']
map(lambda x : '"' + x + '"', a)
0688デフォルトの名無しさん
2012/12/29(土) 19:31:16.920689デフォルトの名無しさん
2012/12/29(土) 20:04:34.460690デフォルトの名無しさん
2012/12/29(土) 20:10:39.230691デフォルトの名無しさん
2012/12/29(土) 20:26:35.01に一票
0692デフォルトの名無しさん
2012/12/29(土) 20:42:34.97そうすると必然的にmain部分がファイルの下の方になっちゃうと思うんですが
どうにかしてmain部分をファイルの先頭に持ってくる事は出来ないでしょうか
def main():
#ここにmain部分
def func1():
pass
def func2():
pass
#〜必要な関数を定義する〜
if __name__ == '__main__':
main()
この様な書き方でよろしいでしょうか
0693デフォルトの名無しさん
2012/12/29(土) 20:48:52.640694デフォルトの名無しさん
2012/12/29(土) 21:02:21.05駄目だと思う奴は駄目だと答える罠
多数派が知りたいならアンケートしたまえ
0695685
2012/12/29(土) 23:39:02.17formatって引数を付けずにmapでリストに適用できるんだ…
ためになります。
0696デフォルトの名無しさん
2012/12/30(日) 08:42:32.21マニュアル嫁
0697デフォルトの名無しさん
2012/12/30(日) 13:04:07.70これって仮にOSを再インストールする時にどうやったら環境を復元出来るのでしょうか
そのままC:\pythonフォルダを新しいPCに移して、pyファイルの関連付けして、PATHを通せば動きますか?
0698デフォルトの名無しさん
2012/12/30(日) 14:39:14.330699685
2012/12/30(日) 21:01:54.84うーんマニュアルを読みましたが、よくわかりませんね。
map関数の第一引数の説明はfunctionとあるので
関数を引数に取るのだと思うのですが
'"{}"'.formatってstrオブジェクトの持つメソッドであって
組み込み関数のformatではないですよね?
もしかして、オブジェクトのメソッドも関数扱いになるのですか?
0700デフォルトの名無しさん
2012/12/30(日) 23:50:52.39オブジェクトに束縛された関数が、暗黙に第一引数でインスタンスを渡されることだけが特別な例だ
0701デフォルトの名無しさん
2012/12/30(日) 23:59:15.98また、来年で一番早く行われるイベントっていつ頃でしょうか?
0702デフォルトの名無しさん
2012/12/31(月) 00:28:25.27なんで最初から総称関数方向に行かなかったんだろ?
あっちの方が融通効きそうなのに…
0703デフォルトの名無しさん
2012/12/31(月) 00:39:10.21func1(), func2()を別のfunc_factory.pyぐらいに持っていって、
main()を書く場所より上で、
from func_factory import func1, func2
ってしたら?
0705デフォルトの名無しさん
2012/12/31(月) 22:58:19.83f=codecs.open("g:/a.txt","r+","utf-8")
m=f.readlines()
for i in range(len(m):
l[i]=m[i]*2"\n"
f.writelines(l)
f.close()
ファイルパスがg:/a.txtのファイルの各行を2回ずつ繰り返すように変更するつもりなのですが、
実行してもファイルになんの変化もありませんでした。
どこがどう間違っててどう直せばいいのでしょうか。
pythonのバージョンは2.5.4、a.txtはutf-8で保存した日本語ファイルです。
0706デフォルトの名無しさん
2012/12/31(月) 23:05:08.260707デフォルトの名無しさん
2012/12/31(月) 23:29:36.94import codecs
f=codecs.open("g:/a.txt","r","utf-8")
m=f.readlines()
for i in range(len(m):
l[i]=m[i]*2"\n"
f=codecs.open("g:/a.txt","w","utf-8")
f.writelines(l)
f.close()
で実行してみたのですが、やはりなんの変化もありませんでした。
.pyファイルはasciiで保存できなかったのでunicodeで保存したのですが、問題ないでしょうか。
0708デフォルトの名無しさん
2012/12/31(月) 23:34:04.46というかそのコードを実行してエラーになっているのに気付いてない
(当然ファイルは書き換わらない)というオチか?
↓のような感じでいいはず
with open('t.txt', 'r+') as f:
lines = f.readlines()
f.seek(0)
f.writelines(line * 2 for line in lines)
0709デフォルトの名無しさん
2012/12/31(月) 23:34:23.18pycon us
0710708
2012/12/31(月) 23:39:39.11いちおう説明しとくと、元のコードは少なくともforの行と
l[i]に代入しているコードがコンパイル可能な正しいPythonコードになっていない
それから、"r+"で開くのは問題ないが、
書く前にシークしてファイルポインタを書き込みたい位置に移動しないといけない
0711デフォルトの名無しさん
2012/12/31(月) 23:54:20.89a.txtはutf-8の日本語ファイルなのですが、codecsモジュールを使う必要はないのでしょうか。
一応以下の2通りを試してみたのですが、やはりなんの変化もありませんでした。
with open("g:/a.txt","r+") as f:
lines = f.readlines()
f.seek(0)
f.writelines(line * 2 for line in lines)
import codecs
with codecs.open("g:/a.txt","r+","utf-8") as f:
lines = f.readlines()
f.seek(0)
f.writelines(line * 2 for line in lines)
0712デフォルトの名無しさん
2013/01/01(火) 00:48:50.99ちなみにどうやって実行してんの?
そもそも本当に実行されてるのか?
実行されれば元のコードではPythonがエラーを出力したはずだけど
0713デフォルトの名無しさん
2013/01/01(火) 00:54:39.50なんの変化もないと言うけど、.pyをダブルクリックして実行してるせいで、コマンドプロンプトがすぐ消えてエラーが出てても見えてないだけじゃないの
0714デフォルトの名無しさん
2013/01/01(火) 03:15:29.51http://jbbs.livedoor.jp/bbs/read.cgi/study/3729/1226114724/53
¥¥¥¥¥¥¥『万有サロン』書き込み大賞・総額100万円¥¥¥¥¥¥¥¥¥¥¥¥
この掲示板に優秀な書き込みをして、総額100万円の賞金をゲットしよう!(*^^)v
万有サロン
http://jbbs.livedoor.jp/study/3729/
書き込み大賞の詳細
http://jbbs.livedoor.jp/bbs/read.cgi/study/3729/1069922074/78-
書き込み大賞の詳細(資料倉庫内)
http://www2.tba.t-com.ne.jp/a-z/omake/banyu/taisho.htm
また、あらゆる疑問に関する質問を、携帯電話やメールでも受け付けています。
電話番号 080-4437-4187
メール [email protected]
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
0715デフォルトの名無しさん
2013/01/01(火) 07:18:15.89ファイルのタイムスタンプも変化なし?
Roaming用の場所にファイルが作られてたりしない?
Program Files とかを仮想ドライブで g: に割り当ててたりしないか、念のため確認
0716デフォルトの名無しさん
2013/01/01(火) 08:32:06.21念のため確認
0717デフォルトの名無しさん
2013/01/01(火) 08:43:09.300718デフォルトの名無しさん
2013/01/01(火) 08:53:10.560719デフォルトの名無しさん
2013/01/01(火) 09:10:49.12こんな感じでいいんじゃね?
ttp://pastebin.com/wj0M9UQM
0720デフォルトの名無しさん
2013/01/01(火) 18:14:49.98ありがとうございます!!!!
ただ、
あいう
あいう
かきく
かきく
のように繰り返した部分に改行が入るのではなく、
あいうあいう
かきくかきく
のようにしたいのですが、
どうすればいいのでしょうか?
0721デフォルトの名無しさん
2013/01/01(火) 18:18:04.46お正月の宿題です。
自分で考えましょう。
ヒント: 引数
0722デフォルトの名無しさん
2013/01/01(火) 18:38:16.71改行取ればいいんじゃない?
Google で "python 文字列 改行文字 削除" とか検索すれば沢山出てくるけど。
改行文字を削る方法が分かったら、
for ループの中で
改行文字を取り除いた文字列を作成する
"改行文字を取り除いた文字列" を出力する
"改行文字を取り除いた文字列" を出力する
改行文字を出力する
みたいにすればOK。
0723デフォルトの名無しさん
2013/01/01(火) 19:02:11.27↓でうまくいきました。
大変ありがとうございました!!!
import codecs
f = codecs.open("g:/a.txt", "r","utf-8")
lines = f.readlines()
f.close()
f = codecs.open("g:/a.txt", "w", "utf-8")
for line in lines:
f.writelines(line.replace('\r\n','') + line)
f.close()
0724デフォルトの名無しさん
2013/01/01(火) 19:07:49.78その方法だと
line.replace('\r\n','') * 2 + "\r\n"
でいいのでしょうか。
みなさん、大変ありがとうございました!!!
0725デフォルトの名無しさん
2013/01/01(火) 21:17:15.37writelinesで何行目に書き込むのか指定しなくても
問題が起きないのはなぜでしょうか
引数で書き込む内容にlineの値が入るから
書き込む行がそのlineの値と同一内容の行になるとは考えにくいのですが
0726デフォルトの名無しさん
2013/01/01(火) 21:58:18.530727デフォルトの名無しさん
2013/01/01(火) 22:06:46.89'w'は書き込み (ファイルがすでに存在すれば切り詰められます)
0728デフォルトの名無しさん
2013/01/01(火) 22:49:58.07│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ あけおめ!ことよろ!
└─┘
0729デフォルトの名無しさん
2013/01/01(火) 22:58:41.97↑を見るとwritelinesの1回目の実行では1行目、
2回目は2行目に書き込むということのようですが、
それで正しいのでしょうか?
0730デフォルトの名無しさん
2013/01/02(水) 02:23:21.80何が疑問なんだ
0731デフォルトの名無しさん
2013/01/02(水) 03:12:46.03どうぞ。3を勧めるけど。
# Python3
import os
path = "~/a.txt"
path_r = os.path.expanduser(path)
path_w = os.path.expanduser(path + '.w')
with open(path_r, "r") as fr:
with open(path_w, "w") as fw:
edited_lines = []
for line in fr:
line = line.strip()
print(line * 2, file=fw)
# python2.7
import os
path = "~/a.txt"
path_r = os.path.expanduser(path)
path_w = os.path.expanduser(path + '.w')
print('path_r =', path_r)
print('path_w =', path_w)
with open(path_r, "r") as fr:
with open(path_w, "w") as fw:
edited_lines = []
for line in fr:
line = line.strip()
fw.write(line * 2 + '\n')
0732デフォルトの名無しさん
2013/01/02(水) 10:53:07.95以下のプログラムの構造がよく分からないので、教えていただけると助かります。
1,1000の素数を求めているそうですが・・・。
result = []
candidates = range(3,1000)
base = 2
product = base
while candidates:←�@
while product < 1000:
if product in candidates:
candidates.remove(product)
product = product+base
result.append(base)
base = candidates[0]
product = base
del candidates[0]
result.append(base)
print result
�@の点から↓の流れが分からないです。
条件がないwhileとはどういうことなのでしょうか?
http://www.python.jp/Zope/intro/instant_hacking_jp
ここから拝借しました。
0733デフォルトの名無しさん
2013/01/02(水) 11:14:02.70while candidatesは、リストcandidatesが空になったら終了する。
リストcandidatesを空にするための操作(要素の除去)は、remove(要素)や、del candidates[添字]で行なっている。
0734デフォルトの名無しさん
2013/01/02(水) 11:23:43.46各々の変数の役割を整理すれば、構造を掴むのは難しくないでしょ。
0735デフォルトの名無しさん
2013/01/02(水) 11:56:34.16望ましくないとする専門書もある。俺もそう思う。
条件式の書き漏れの可能性を残すし、バグの元でもある。
この場合、while candidates != []と書くべき。
0736デフォルトの名無しさん
2013/01/02(水) 12:44:16.81ゆえに等号などは省略すべき。
こんなもん宗教でしかねえのに、べきだべきでない語るんじゃねえ。
俺はこうしてるに留めろや教祖様。
0737デフォルトの名無しさん
2013/01/02(水) 12:51:55.850738デフォルトの名無しさん
2013/01/02(水) 12:54:06.92良くない習慣を身につけないよう
きちっと指導するのが俺ら先達の努め。
0739デフォルトの名無しさん
2013/01/02(水) 12:56:13.97お前等いつから教師ヅラできるほど偉くなったんだ?
平プログラマーのくせに
0740デフォルトの名無しさん
2013/01/02(水) 13:00:18.59そういう意味なんですね。条件式がないのは初めて見たので戸惑いました。
もう少し自力で考えてみます。
0741デフォルトの名無しさん
2013/01/02(水) 13:00:34.72ちょっと信仰してみたいから、教えてよ。
0742デフォルトの名無しさん
2013/01/02(水) 13:02:56.66現に、初心者からこういう質問が上がるってことは
理解しづらいコーディングだという証拠だろ?
Pythonはわかりやすいコーディングをよしとする言語だから
そういう悪しき習慣は積極的に排除していこうじゃないか。
ここは日本のPython教育の最前線でもあるわけだし。
0743デフォルトの名無しさん
2013/01/02(水) 13:07:59.410744デフォルトの名無しさん
2013/01/02(水) 13:12:49.33受け売りだけで分かったような面しやがって、てめえで考える脳も判断する脳も持ってねえだけだろが。
だから教祖と信者ってんだよ。
0745733
2013/01/02(水) 13:14:23.810746デフォルトの名無しさん
2013/01/02(水) 13:19:03.15自分のコーディングスタイルをダメ出しされて逆ギレ?
それは視野が狭いよ。このスレは君のためじゃない、
初心者のためにあるんだ。
現に初心者が理解できず困っているじゃないか。
そんなコーディングはやめよう。
君がこのやり方で条件式を書く限り、書いたソースを見た
誰かが真似をして、それがまた新たに理解の妨げとなる。
この連鎖を断ち切らなきゃいけない。
ちょうど新年だから今年から直しなさい。
条件は手抜きせずきちっと書くこと。
0747デフォルトの名無しさん
2013/01/02(水) 16:06:45.70C とか Perl スレならいざ知らず Python スレなんだから、>>735 程度は
当たり前かと思ってた。
と言うか、エラーにしろよ とすら思う。
0748デフォルトの名無しさん
2013/01/02(水) 16:10:58.75while expression:
のexperssionは条件式じゃなくて、真偽値だろ?
条件式の結果が真偽値だから条件式を入れても動作するだけで。
0749デフォルトの名無しさん
2013/01/02(水) 16:18:18.340750デフォルトの名無しさん
2013/01/02(水) 16:34:24.490751デフォルトの名無しさん
2013/01/02(水) 17:02:37.87出来るよ。
ドキュメントの「Python インタプリタの拡張と埋め込み」
1.1. 簡単な例
1.7. 拡張モジュール関数でのパラメタ展開
辺りを読もう
0752デフォルトの名無しさん
2013/01/02(水) 17:04:47.08やってみます。
0753デフォルトの名無しさん
2013/01/02(水) 17:30:18.65Pythonの場合、と前置きはつくけど
PEP8では、空のシーケンスがFalseになるのを利用するのを推奨してる
!= [] だと、リスト以外に対応する場合、書き直しが必要になり汎用性が欠けるし、
実行効率の面でも若干冗長。
0754デフォルトの名無しさん
2013/01/03(木) 00:43:04.23こういう思考のやつはセンス無いから消えてほしいわ
0755デフォルトの名無しさん
2013/01/03(木) 00:57:05.450756デフォルトの名無しさん
2013/01/03(木) 01:32:09.78None と 0 を区別する場合等、省略しないで明示的に書いた方がいいケースもある。
googleの方のスタイルガイドの方では、その辺、推奨するスタイルとその根拠・理由にも言及してる。
0757デフォルトの名無しさん
2013/01/03(木) 07:58:35.04> googleの方のスタイルガイド
どこにあるの?
URL plz.
0759デフォルトの名無しさん
2013/01/03(木) 08:25:24.95切に、願う
0760デフォルトの名無しさん
2013/01/03(木) 08:33:46.54そもそも不毛な話だから止めろと言われてるのに、良い悪いに終始してる時点で頭腐ってるだろ、お前
0761デフォルトの名無しさん
2013/01/03(木) 08:59:36.58集団の中にいられると火種になるし最高に迷惑なんだけどねえ。
知らぬは…とやら。
0762デフォルトの名無しさん
2013/01/03(木) 09:15:10.00不毛じゃないよ。
初心者を惑わせる悪い習慣を改めようという意見がなぜ不毛なの?
今までやっていたから、PEPにあるからという受け身な理由は
理由にならない。現実をよくするために行動しよう。
0763デフォルトの名無しさん
2013/01/03(木) 09:21:50.550764デフォルトの名無しさん
2013/01/03(木) 09:38:41.96ブーメラン
ブーメラン
0765デフォルトの名無しさん
2013/01/03(木) 10:10:40.48舌が2枚に割れてんだろうな、蛇だけに。
0766デフォルトの名無しさん
2013/01/03(木) 10:45:35.61今の時代に PEP が大事にされる理由をちゃんと理解しないと
単なる自己中の構ってちゃんにしかならないよ
0767デフォルトの名無しさん
2013/01/03(木) 11:24:08.880768デフォルトの名無しさん
2013/01/03(木) 11:29:31.07「俺の主張はこの文書に基づいてる」と言えないってことは
勉強してないだけでしょ。井の中の蛙。
この手の人は「このコードは俺が見慣れていないから禁止」と言うんだよね。
勉強しない俺が偶然慣れ親しんだコードに合わせろとかいう、その手の
アフォが2人いたらまとまらんだろうが。気づけよ。
よっぽどおかしなコーディングスタイルで無い限り、合わせることに意味がある。
PEP8使え。(PEP8はよくできてるよ)
0769デフォルトの名無しさん
2013/01/03(木) 11:38:40.250770デフォルトの名無しさん
2013/01/03(木) 11:51:32.26あと死ね。
0771デフォルトの名無しさん
2013/01/03(木) 23:13:30.960772デフォルトの名無しさん
2013/01/04(金) 01:23:30.320773デフォルトの名無しさん
2013/01/04(金) 04:36:27.740774デフォルトの名無しさん
2013/01/04(金) 11:38:06.570775デフォルトの名無しさん
2013/01/04(金) 11:43:33.97以下のプログラムが動きません。
errorでは、
line14 (module)
TypeError:unsupported operand type(s) for & (str) (tuple)
とでます。
line14の修正をいろいろ試したのですが、どうもうまくいきません。
よろしくお願いします。
#!/usr/bin/env python
import datetime
html_body = """
<html><body>
&d/&d/&d &d:&d:&d
</body></html>"""
now=datetime.datetime.now()
print "Content-type: text/html\n"
print html_body & (now.year, now.month, now.day,
now.hour, now.minute, now.second)
0776デフォルトの名無しさん
2013/01/04(金) 12:28:38.60str.format() を使う。
html_body = """
<html><body>
{0}/{1}/{2} {3}:{4}:{5}
</body></html>"""
now=datetime.datetime.now()
print html_body.format(now.year, now.month, now.day, now.hour, now.minute, now.second)
0777デフォルトの名無しさん
2013/01/04(金) 12:30:40.950778デフォルトの名無しさん
2013/01/04(金) 12:36:22.74うまくいきました!!
ありがとうございます。
まだ始めたばかりで構造とかはよくわからないのですが、調べてみます!
ありがとうございます。
0779デフォルトの名無しさん
2013/01/05(土) 00:15:30.22ファイル単位のモジュールを初期化するスタンダードな方法ってありますか?
現在ファイル数にして10数枚に分かれた一つのプログラムをオブジェクト指向で書いています。
今は初期化が必要なモジュールはファイルの先頭に
def init():
って関数を書いてそれをファイルの最後の行で
init()
として実行してます。
init()の中では主に
configというモジュールで読んだiniファイルデータをシングルトンのクラスに保管してあるので、
それをimportしてちょっと加工したりしていろんなクラスにクラス定数として渡してます。
ディレクトリ単位のモジュールは__init__.pyというファイル内で初期化するのが一般的なようですが、
ファイル単位でのやり方や定石、および「俺は個人的にこう書いてる」っていうのがあったら知りたいです。
もしくはこういうやり方自体Pythonicではないのでしょうか?
0780デフォルトの名無しさん
2013/01/05(土) 02:27:44.42再度呼び出されたりしてはいけないものは、関数にせず、モジュールのトップレベルに直で書く。
関数にするなら、名前に _ 接頭子を付けて非公開関数だとの意図を示す or 呼び出した後にその関数を del して後始末。
不用意にモジュールの依存関係を作ると、再利用が難しくなったり単体テストが面倒になるので、
自分なら、初期化はなるべくクラス/インスタンス単位で行えるように設計する。
0781デフォルトの名無しさん
2013/01/05(土) 19:12:43.51リストにはデータが入るのに
タプルには入らないのはなぜでしょうか
>>> a = map(lambda x: x + 1, [1,2,3])
>>> a
<map object at 0x00C40810>
>>> b = list(a)
>>> b
[2, 3, 4]
>>> c = tuple(a)
>>> c
()
0782デフォルトの名無しさん
2013/01/05(土) 19:40:11.630783デフォルトの名無しさん
2013/01/05(土) 19:54:40.78もう一度b = list(a)をやったらbも[]になりました
むむむ、イテレータオブジェクトって一度きりの使い捨てなのですね…
すると二度使うことを目的としてイテレータオブジェクトを
変数(ここではa)に代入する意味はないということですね
0784デフォルトの名無しさん
2013/01/05(土) 19:59:09.910785デフォルトの名無しさん
2013/01/06(日) 02:45:44.07イテレータって省メモリ化と、速度向上を目的としているから。
イテレータさんとしては、2度使われるのは想定外だと思うよ。
>>> a = map(lambda x: x + 1, [1,2,3])
>>> a.__sizeof__()
16
>>> b = list(a)
>>> b.__sizeof__()
44
>>> a = map(lambda x: x + 1, [1,2,3])
>>> c = tuple(a)
>>> c.__sizeof__()
24
>>> d = map(lambda x: x + 1, range(1000))
>>> d.__sizeof__()
16
>>> e = tuple(d)
>>> e.__sizeof__()
4012
>>> len(e)
1000
ね?map object をlist, tuple にしてやると、
__sizeof__()が返す値が大きくなるでしょ?
実装は分からんけど、map使うと速度も向上するって聞いた。
0786デフォルトの名無しさん
2013/01/06(日) 03:25:27.90二度使いたい場合は
リストやタプルに保存してから処理するより
イテレータをもう一度作る方がマシですね
勉強になります
0787デフォルトの名無しさん
2013/01/06(日) 21:32:23.16>>> import PyQt4
>>> import PyQt4.QtGui
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
環境
Python 2.6.8 (unknown, Jun 9 2012, 11:30:32)
[GCC 4.5.3] on cygwin
0788デフォルトの名無しさん
2013/01/06(日) 21:48:31.03も駄目なんだろうなってのは置いておいて、
>>787の書き込みだけじゃどうしようもないぞ。
他にも何か言ってないか?
言ってるんだったら、出し惜しみせずに全部出して。
sys.modules['PyQt4'] は、なんて言ってる?
↑が返すフォルダ以下に、QtGuiっている?
あと、どうやってPyQt4入れたのか知りませんが、
Pythonの別バージョンのPyQt4入れたんじゃないかとか。
0789デフォルトの名無しさん
2013/01/06(日) 21:58:03.24もちろん、専用のPyQtだす
>>> sys.modules['PyQt4']
<module 'PyQt4' from '/usr/lib/python2.6/site-packages/PyQt4/__init__.pyc'>
>>> PyQt4.
PyQt4.QtCore PyQt4.__getattribute__( PyQt4.__reduce__(
PyQt4.__class__( PyQt4.__hash__( PyQt4.__reduce_ex__(
PyQt4.__delattr__( PyQt4.__init__( PyQt4.__repr__(
PyQt4.__dict__ PyQt4.__name__ PyQt4.__setattr__(
PyQt4.__doc__ PyQt4.__new__( PyQt4.__sizeof__(
PyQt4.__file__ PyQt4.__package__ PyQt4.__str__(
PyQt4.__format__( PyQt4.__path__ PyQt4.__subclasshook__(
補完はこう
0790デフォルトの名無しさん
2013/01/06(日) 22:15:07.98PyQt4は入ってるんだ。
Qt4自体は動いてる?どうやって動作確認した?
簡単なdemoを持ってきて、"Qt4"が単発で動くか確認しないと。
動くなら、今度はPyQt4の問題となりそうだけど。
一応断っておくけど、cygwin界のQt4が動作することを確認してね。
cygwin界外の、windowsのQt4の動作確認されても困るからね。
0791デフォルトの名無しさん
2013/01/06(日) 22:49:15.150792779
2013/01/07(月) 04:02:16.53返事が遅くなりました。ありがとうございます。
不要な中間変数でglobal空間が汚れるのが嫌で関数にしてたのですが
その後のことを考えるとなんらかの隠蔽をした方がいいですね。
関数ごとdelしてしまうというのは発想にありませんでした。
再利用や独立性を考えると設定的なパラメータは仮のデフォルト値を上書きする形で外から渡した方が良い気もしつつ、
単体テストを考えるとそれぞれのモジュール内で処理した方が気楽な気もしつつ。
でもおそらく迷うということはそもそもの設計がぬるいんでしょう。
参考になりました。
0793788
2013/01/07(月) 18:17:55.63インストーラーと格闘中にパッケージにPySideがあるのを発見したので入れてみたころ、作動しやすた
お騒がせしやすた
0794デフォルトの名無しさん
2013/01/09(水) 01:02:35.91pyscripterはタブを空白文字にするということはできるでしょうか?
0795デフォルトの名無しさん
2013/01/09(水) 01:07:40.50すみません
0796デフォルトの名無しさん
2013/01/09(水) 01:51:07.13何か設定して動かすことはできないのでしょうか?環境を以下に記します。
環境
Windows 7 32bit SP1
Portable Python 2.7.3.1(Python 2.7)
エディタ Pyscripter 2.5.3
外部モジュール OpenCV2.4.3
です。よろしくおねがいします。
0797デフォルトの名無しさん
2013/01/10(木) 00:08:16.65速い。
0798デフォルトの名無しさん
2013/01/11(金) 07:29:29.21それはエディタの仕様
ちゃんとしたIDEだと補完してくれるはず
0799デフォルトの名無しさん
2013/01/11(金) 23:10:11.03ちゃんとしたIDEってEclipseですか?
0800デフォルトの名無しさん
2013/01/11(金) 23:43:31.10手元だと、以下の環境で補完候補が表示できます
Windows 7 64bit SP1
Python 2.7.3
PyScripter 2.5.3.0
OpenCV 2.4.2 + numpy 1.6.2
0801デフォルトの名無しさん
2013/01/12(土) 04:56:36.98pycharmいいよぅ
0802デフォルトの名無しさん
2013/01/12(土) 12:54:04.81>iterable の全ての要素が真ならば (もしくは iterable が空ならば) True を返します
とあるのだけど、例えば空リストをallに食わせるとTrueだということだよね
Python使いの感覚では、空リスト=Falseが自然だと思うのだが
なぜこんな仕様なんだろう?
0803デフォルトの名無しさん
2013/01/12(土) 17:36:31.10の対偶は
「iterable のいずれかの要素が偽ならば False を返します」
になるわけで、
偽となる要素が存在しなければ真になるんじゃないの。
もしくは iterable は集合であると考える。
all(iterable)が真であるなら、
all(iterableの部分集合)も真である。
空集合は任意の集合の部分集合であるから、
all(∅)は真とするのが妥当なんじゃないの。
0804デフォルトの名無しさん
2013/01/12(土) 17:46:50.350805デフォルトの名無しさん
2013/01/12(土) 17:48:14.410806デフォルトの名無しさん
2013/01/12(土) 18:20:10.710807デフォルトの名無しさん
2013/01/12(土) 18:23:25.17の対偶は
「iterable のいずれかの要素が偽ならば False を返します」
になるわけで、
偽となる要素が存在しなければ真になるんじゃないの。
SQLでNULLの扱いに苦労するタイプですねわかります
0808デフォルトの名無しさん
2013/01/12(土) 18:33:09.52むむむ…スマンが数学は苦手なので集合はわからんのだ
マニュアルには、allの動作は以下と同じと書いてあって
これを見ればiterableが空の時はforを一度も実行せずに
抜けるから動作としては理解できるのだが…
def all(iterable):
for element in iterable:
if not element:
return False
return True
bool([])がFalseで
all([])がTrueというのは、けっこうな落とし穴だと思った次第
「iterableの要素有無チェックをallに期待するのは誤り」ということを
覚えておくしかないな
0809デフォルトの名無しさん
2013/01/12(土) 18:37:09.58なんで悩んでるのかわからん
0810デフォルトの名無しさん
2013/01/12(土) 18:38:13.520811デフォルトの名無しさん
2013/01/12(土) 18:54:25.68全ての要素が真ならば真を返す関数において
負論理値の代表格である空のiterableが真となるのは
一見矛盾した仕様に見えるということ
0812デフォルトの名無しさん
2013/01/12(土) 19:01:55.67日本語が理解できりゃ、数学が苦手だろうが>>803の前半は解るだろ
0813デフォルトの名無しさん
2013/01/12(土) 19:05:27.51all() の定義は「全ての要素が真ならば真を返す関数」ではなく
「全ての要素中に真でない要素がひとつでもあれば偽を返す関数」だぞ
0814デフォルトの名無しさん
2013/01/12(土) 19:09:24.340815デフォルトの名無しさん
2013/01/12(土) 19:13:42.18わからん
空データには真になる要素も偽になる要素もないのに
なぜ真にするのか
>>813
それが、リファレンスには
「iterable の全ての要素が真ならば」とあるんだよ
その後ろに「もしくはiterableが空ならば」とくっついているので
今回の疑問提起に至ったわけだけど
0816デフォルトの名無しさん
2013/01/12(土) 19:33:44.06どこに載ってんの?
見つからないんだけど
リンク貼って
0817デフォルトの名無しさん
2013/01/12(土) 19:57:03.01こういうことでしょ?
>>> L3 = []
>>> all(L3)
True
>>> L4 = [[]]
>>> all(L4)
False
>>> L3 != L4
>>> True
まず第一に、L3 != L4 だよ。
> Python使いの感覚では、空リスト=Falseが自然だと思うのだが
L4 ではきちんとFalseを返しているよ。
>iterable の全ての要素が真ならば (もしくは iterable が空ならば) True を返します
これは、、、訳文が混乱させているかも。
以下の訳文なら変な混乱しないと思う。
iterable の持つ要素に一つでも偽の要素があれば、 False を返します。
そうでなければ、 True を返します。
という訳なら、>>802は混乱しないと思う。
これなら、「もしくは、 iterable が空ならば」という注釈もいらない。
0818デフォルトの名無しさん
2013/01/12(土) 20:07:28.68> >iterable の全ての要素が真ならば (もしくは iterable が空ならば) True を返します
> これは、、、訳文が混乱させているかも。
翻訳は悪くない。原文でもそうかいてる。
http://docs.python.org/3/library/functions.html#all
all っていう関数名からしても、そもそも >>802 みたいな疑問が起こるようなものにするつもり
はなかったのが、実装時にどうするか考えてるうちに当初の目的が忘れられてしまってこうなった
って感じはする。
0819デフォルトの名無しさん
2013/01/12(土) 20:14:35.54> なぜ真にするのか
数学的定義が``∀に空集合を与えた場合の結果は常に真と''なっているから
0820デフォルトの名無しさん
2013/01/12(土) 20:18:17.38失礼いたしました。
>>> all([])
は、Falseを返すよう仕様を直すべきと思うけど、難しいかな?
なんで、こんな糞な仕様が通ったんだろうね。
0821デフォルトの名無しさん
2013/01/12(土) 20:19:28.04数学的な定義によるものでしたか。
一つ勉強になりました。
0822デフォルトの名無しさん
2013/01/12(土) 20:24:55.680823デフォルトの名無しさん
2013/01/12(土) 20:39:16.48どっちかはっきりしてればそれでいい。
例えば0個以上の処理の結果をリストにして、すべてOKを知りたいとか。
どんな場合に偽になってほしいんだろう?
0824デフォルトの名無しさん
2013/01/12(土) 20:58:09.76あほやなおまえ
>「iterable の全ての要素が真ならば」とあるんだよ
>その後ろに「もしくはiterableが空ならば」とくっついている
ならなんの問題もないやろ
>all() の定義は「全ての要素が真ならば真を返す関数」ではなく
>「全ての要素中に真でない要素がひとつでもあれば偽を返す関数」だぞ
となんの矛盾もない
0825デフォルトの名無しさん
2013/01/12(土) 21:28:49.81とりあえずお前はここまでのレスをちゃんと読んでからコメントすれ。
0826デフォルトの名無しさん
2013/01/12(土) 21:47:47.04(もしくは iterable が空ならば)
を見落とした馬鹿。
0827デフォルトの名無しさん
2013/01/13(日) 00:19:13.230828デフォルトの名無しさん
2013/01/13(日) 00:58:17.770829デフォルトの名無しさん
2013/01/13(日) 01:11:00.360830デフォルトの名無しさん
2013/01/13(日) 03:04:32.560831デフォルトの名無しさん
2013/01/13(日) 10:30:45.20|::::i:::';::::::::l、::i:::ハ:/,ィチ爪' {ヒチ'!::イイ
|ハ::::::ヾ::::ハ 'Vリ ゙´ {、込ソ ゛″!:::i:.:l
|:.::ト、:.:.:ヾ:.ハーi| :::::::: 〉 ノ::::i::.|
{:.:.ト、ヾ.:.:.:ヾハ lト、 _, , イ:.:.:.:i.:ハ
ヾ::ヽゞ、\.::.\!! ヽ、. ´ /!.::!.:.i:.:!:.!:l >>1乙ぱい
, '" ヾ\ \:::::::::k /` ー ' `メ'リ:.:.ノ.ノ:ノノ
/ 川 リllVハ. ( i `\ ,イイ// //
/ |l ̄`ヽ ノ `メ、
,/ {:} `ー'- ニ_
,/ _∠ |l \ , \
/ _ ,. イ´: |l \ ,λ
/ -‐‐‐-<´ .! / |l ' , _,ィ'ンy}
〈 \ .ノ`ー斗rェ,,_,_,_|l ,.ir'彡イy-´ !
`ヽ、 ` ' <._ {jt=t-t-ミ`^Yーrヘr-彡'水k} !:} .ノ
` ー- .._ ` -ヽ. l`亠^{:i ̄ {:リ |ハ ノノ/ノ
_,. -‐ '  ̄ ´ ̄` ー- 、 \{{ {:l {:i ノ_,ィニ_ン´
// `ヽ 、\ \ {:l {∠ニァ--'
/ / `ヽミニ>ァ┴ '´
/\V| /
./ ヾ.、 ,. ' ´
0832デフォルトの名無しさん
2013/01/13(日) 11:40:43.310833デフォルトの名無しさん
2013/01/13(日) 12:02:58.110834デフォルトの名無しさん
2013/01/13(日) 15:55:15.33どうやって正規表現書いたらいいでしょうか?
拡張子は、"txt", "html" のように複数です。
>>> import re
>>> re.findall('[a-z]+\.(txt|html)', 'abc.txt def.html') # 1
['txt', 'html']
>>> re.findall('([a-z]+)\.(txt|html)', 'abc.txt def.html') # 2
[('abc', 'txt'), ('def', 'html')]
>>> re.findall('(([a-z]+)\.(txt|html))', 'abc.txt def.html') # 3
[('abc.txt', 'abc', 'txt'), ('def.html', 'def', 'html')]
私は、2案を採用したのですが、
抜き出した後に','.join()として元に戻す方法が好きじゃありません。
3案ならば、texts[0]とでもすれば思ったものを抜き出せますが、
余計なオブジェクトを生成してしまうのが好きではありません。
3案の[0]をいきなり抜き出したいのですが、無理でしょうか。
0835デフォルトの名無しさん
2013/01/13(日) 16:27:43.50あなたの美観が意味不明だからなんともいえない
単にソースコード上に見えなければそれでいいってこと?
0836デフォルトの名無しさん
2013/01/13(日) 16:35:07.06本命のみ抜き出したいのです。
2案も余計なものは抜き出しておりませんが、
後でくっつけ直すのが好きではありません。
0837デフォルトの名無しさん
2013/01/13(日) 16:48:38.85[n[0] for n in re.finditer('(([a-z]+)\.(txt|html))', 'abc.txt def.html')]
これは?何が不満だ?
仕方ないからお前のママじゃねえけど相手してやるよ。
0838デフォルトの名無しさん
2013/01/13(日) 16:51:54.78finditerが返すのはmatchなので
[n.group(1) for n in re.finditer('(([a-z]+)\.(txt|html))', 'abc.txt def.html')]
http://ideone.com/7cJzXF
が正しい
0839デフォルトの名無しさん
2013/01/13(日) 16:56:20.12内包表記が不満
Matchを無駄に生成してる(←誤解です)のが不満
0840デフォルトの名無しさん
2013/01/13(日) 17:07:32.84[n.group(0) for n in re.finditer('([a-z]+)\.(txt|html)', 'abc.txt def.html')]
0841デフォルトの名無しさん
2013/01/13(日) 17:09:57.03map((lambda x: x[0]), re.findall('([a-z]+¥.(txt|html))', 'abc.txt def.html'))
0842デフォルトの名無しさん
2013/01/13(日) 17:12:40.18import re
print re.findall('(?:[a-z]+)\.(?:txt|html)', 'abc.txt def.html')
?:を指定するとグループ化しつつも後方参照できなくなる
0843842
2013/01/13(日) 17:14:00.29異論はないだろう
0844デフォルトの名無しさん
2013/01/13(日) 17:19:28.940845デフォルトの名無しさん
2013/01/13(日) 17:27:42.18re.findall('[a-z]+¥.(?:txt|html)', 'abc.txt def.html')
0846デフォルトの名無しさん
2013/01/13(日) 17:36:30.18見落としてた
0847デフォルトの名無しさん
2013/01/13(日) 20:12:17.85[]
:||:: \おい、隠れても無駄だ ゴルァ! ドッカン ゴガギーン
:|| ::  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄_m ドッカン ☆
:||:: ___ ======) ))_____ / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
:|| | | | ̄.ミ∧_∧ | | ────┐||:: ∧_∧ < おらっ!出てこい>>845,846
:|| |___| |_..( ) | | .___ │||:: (・Д・ ) \____________
:|| |___| |_「 ⌒ ̄ ,|.. |. .|.|||:: / 「 \ ::.
:|| |___| |_| ,/  ̄ .  ̄ ̄ ̄ │||:: | | /\\
:||:  ̄ ̄ ̄  ̄| .| :||│ ;, │||; へ//| | |. |
:||:: :; ; ,, :| :.| ||│ (\/,.へ \| | ::( .)
:||:: :; 冫、. . | .i .|:||◎ニニニニ\/ \ |  ̄
:||.:,,''; ` .. . :: . | ∧. |:||│::::/ │||::.:. .Y ./ ..:: ;;
:||:;;;: ;;.. ::::: 冫、 : .:: .| | | |.||│ 冫、 ;;;,,│||:;;;. | .| ........
:||:;;;: ..... .. ` / / / /::||│ ` .,;;;,,.│||:;;;. | .| ...:L
:||;::: # ..: ./ / ./ ./ ||│|三三三|. │||;;:..:: | .| . #.. :: ;;
:||;::: #. ..: :::::: (_) .(_).ミ||│ │||;;;k、,,,|,(_).. ,,, :::
 ̄ ̄ ̄ ̄ ̄: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
:::;三三;;;;;三三:::;;;;;;; :::::;;;;;::;;;;;;;;;;::::;; :::::;;;;;:::::;;;;;;;;;;::::;; :::::;;;;;:::;;;;;;;;;;::::;;;;;:::::::;;;;;;三
0848デフォルトの名無しさん
2013/01/13(日) 20:32:38.120849デフォルトの名無しさん
2013/01/13(日) 21:24:16.690850845
2013/01/13(日) 21:29:19.762ch だとバックスラッシュが円記号に変換されちゃうけど、自分の環境で実行する前にファイル名と拡張子の間のピリオドをエスケープしてる円記号をバックスラッシュに直さないとだめだよ。
こっちならちゃんと見えるはず。
http://ideone.com/O10zDE
0851デフォルトの名無しさん
2013/01/13(日) 21:46:37.67俺には普通にバックスラッシュに見えてるが
0852デフォルトの名無しさん
2013/01/13(日) 21:49:34.66自分の環境がおかしいの分かってて言ってるだろw
0853デフォルトの名無しさん
2013/01/13(日) 21:50:11.980854デフォルトの名無しさん
2013/01/13(日) 22:06:52.300855デフォルトの名無しさん
2013/01/13(日) 22:16:38.62その場合は正規表現を改良すればいいだけで、元の議論はどうやって正規表現の結果からファイル名だけを取り出すかだから。
元の質問者は満足したかな?
0856デフォルトの名無しさん
2013/01/13(日) 22:25:03.880857デフォルトの名無しさん
2013/01/13(日) 22:36:48.410858デフォルトの名無しさん
2013/01/13(日) 22:52:08.22お前
0859デフォルトの名無しさん
2013/01/13(日) 22:55:02.990860デフォルトの名無しさん
2013/01/13(日) 23:11:25.250861デフォルトの名無しさん
2013/01/14(月) 01:00:04.27>>800
>>801
遅くなりましたが、回答ありがとうございました
Pyscriptの設定からIDE OptionのSpecial packageにcv2を追加すれば
PyscripterからでもOpenCVのコード補完を使用することができました。
Pycharmは使ってみたいのですが日本語ローカライズされてないみたいなので少々手が出しづらいです。
日本語に対応したらすぐ購入しようと思います。
0862デフォルトの名無しさん
2013/01/14(月) 02:52:22.90試用できるから試してみたら、案外英語のままでも支障無いと思う
0863デフォルトの名無しさん
2013/01/16(水) 11:51:59.93gaeは2.7なので・・・
0864デフォルトの名無しさん
2013/01/16(水) 12:00:59.590865デフォルトの名無しさん
2013/01/16(水) 12:04:57.970866デフォルトの名無しさん
2013/01/16(水) 15:51:34.540867デフォルトの名無しさん
2013/01/16(水) 18:10:01.960868デフォルトの名無しさん
2013/01/16(水) 18:25:03.850869デフォルトの名無しさん
2013/01/16(水) 18:36:02.120870デフォルトの名無しさん
2013/01/16(水) 18:43:58.55http://docs.python.jp/2/library/socket.html#socket-example
サーバーの方はSocketServerモジュール使ったほうが圧倒的に楽
0871デフォルトの名無しさん
2013/01/16(水) 18:49:22.29* 私は〜
あなたは〜
・
・
・
num = 0
for line in file:
if line.startswitch('*') == True:
ここで*をnumを数字の値に変換したいんですが、replaceではできません。
num += 1
何か良い方法はありませんか?
よろしくお願いします。
0872デフォルトの名無しさん
2013/01/16(水) 18:52:52.07ではなく
ここで*をnumの数字の値に
でした。
すみません。
0873デフォルトの名無しさん
2013/01/16(水) 18:55:09.870874デフォルトの名無しさん
2013/01/16(水) 18:57:46.92"*" * num
あとif line.startswith("*"): でいいよ
str.startswith()はTrueかFalseを返すんだからことさらTrueと比較するのは無駄
0875デフォルトの名無しさん
2013/01/16(水) 18:59:24.76外れてたら仮にnum = 3 のときにどういう返り値なり結果が欲しいか書いて
0876デフォルトの名無しさん
2013/01/16(水) 19:04:21.83ありがとうございます。
Trueは取りました。
入力
* 私は〜
あなたは〜
* 君が〜
* 私は〜
* どんなときに〜
・
・
・
出力
0 私は〜
あなたは〜
1 君が〜
2 私は〜
3 どんなときに〜
・
・
・
です。
よろしくお願いします。
0877デフォルトの名無しさん
2013/01/16(水) 19:09:38.79re.sub(r'^\*', str(num), "* わたしは〜")
0878デフォルトの名無しさん
2013/01/16(水) 19:54:16.05import re
# help(re)
# sub(pattern, repl, string, count=0, flags=0)
# Return the string obtained by replacing the leftmost
# non-overlapping occurrences of the pattern in string by the
# replacement repl. repl can be either a string or a callable;
# if a string, backslash escapes in it are processed. If it is
# a callable, it's passed the match object and must return
# a replacement string to be used.
# >>> re.sub('a', 'A', 'bacdaef')
# 'bAcdAef'
# >>> re.sub('ac', 'A', 'bacdaef')
# 'bAdaef'
text = '''\
* 私は〜
あなたは〜
* 君が〜
* 私は〜
* どんなときに〜'''
lines = text.split('\n')
num = 0
for line in lines:
if line.startswith('*'):
# sub(pattern, repl, string, count=0, flags=0)
line = re.sub('\*', str(num), line)
num += 1
print(line)
0879デフォルトの名無しさん
2013/01/16(水) 20:04:48.95lines = text.split('\n')するコスト意識の低さ。
0880デフォルトの名無しさん
2013/01/16(水) 20:14:18.03頭おかしい人?
↓以下をコピペすれば動作するでしょ。
if line.startswith('*'):
私が試す場合に別file作りたくないから、
text作っておいたまでで。
>>876にとって重要なのは、
>>876の入力が出力に変換できることだよ?
2ch ってすごく頭の悪い人がいて、びっくりする。
最高に頭の悪い発言して下さいスレってまだあるっけ?
0881デフォルトの名無しさん
2013/01/16(水) 20:16:04.41○↓の行以下をコピペすれば動作するでしょ。
×↓以下をコピペすれば動作するでしょ。
0882デフォルトの名無しさん
2013/01/16(水) 20:18:46.98あほくせえ
0883デフォルトの名無しさん
2013/01/16(水) 20:23:41.06>>877,878
ありがとうございました。
得たい出力をえれました。
0884デフォルトの名無しさん
2013/01/16(水) 20:42:32.14>>> num = 12
>>> "* hoge*fuga".replace("*", str(num), 1)
'12 hoge*fuga'
reいらなかった
0885デフォルトの名無しさん
2013/01/18(金) 06:34:55.04間違っています。
以上。
はい次の方。
0886デフォルトの名無しさん
2013/01/19(土) 07:00:41.75そのライブラリも含めて公開するにはどうしたらよいのでしょうか。
例えば○○のライブラリが必要です と書いても
そのライブラリが後から消える可能性や、バージョンアップで動かなくなる可能性もあるじゃないですか
そういうのを回避する為に、標準以外のライブラリを全て含めて
pythonさえ正常に入っていれば(python自体の互換性は置いておくとして)、例えオフライン状態でもそのコードに必要なファイルが全て揃っている
という状態にするにはどうしたらよいのでしょうか?
0887デフォルトの名無しさん
2013/01/19(土) 07:59:41.900888デフォルトの名無しさん
2013/01/19(土) 09:17:22.71pip bundle で一式まとめzipの出来上がり
移した先でpip install
0889デフォルトの名無しさん
2013/01/19(土) 09:33:05.52同梱したいって事だろうけど、ライブラリのライセンスに依るでしょ
> そのライブラリが後から消える可能性や、
> バージョンアップで動かなくなる可能性もあるじゃないですか
> そういうのを回避する
回避したいなら、そのライブラリ互換のモノを自分で書きなさいってこと
書けないなら諦めなさい
0890デフォルトの名無しさん
2013/01/19(土) 10:00:04.24>そのライブラリが後から消える可能性や、バージョンアップで動かなくなる可能性もあるじゃないですか
消えてから(動かなくなってから)考えろ
0891デフォルトの名無しさん
2013/01/19(土) 10:31:14.25まず一度処理をし、その後脱出条件になるまでループをする処理は
Pythonではどう書けばいいんでしょうか
0892デフォルトの名無しさん
2013/01/19(土) 10:33:30.96hoge
if 脱出条件: break
0893デフォルトの名無しさん
2013/01/19(土) 11:53:51.150894デフォルトの名無しさん
2013/01/19(土) 13:03:21.05http://stackoverflow.com/questions/743164/do-while-loop-in-python
0895デフォルトの名無しさん
2013/01/19(土) 15:11:17.76どんなアプリを作りましたか?
0896デフォルトの名無しさん
2013/01/19(土) 15:28:12.35sqlite使って予定管理帳
大体誰かのをimportしているな
0897デフォルトの名無しさん
2013/01/19(土) 15:31:27.68そのつもりないのに荒らしツールだ!って言われたので公開してない
0898デフォルトの名無しさん
2013/01/19(土) 15:34:00.650899デフォルトの名無しさん
2013/01/19(土) 15:36:21.170900デフォルトの名無しさん
2013/01/19(土) 15:58:19.59http://www.youtube.com/watch?v=2so3T7xnCn8
こうゆうモノを作りたくて興味を持ち始めたのですが壮大すぎて全然進みません
なので小さなモノから作っていこうと思いまして
自動2ちゃん投稿スプリクト作りたいです
0901デフォルトの名無しさん
2013/01/19(土) 17:40:25.80a = raw_input()
raw_inputで入力される内容をユニコードとして入力したいのですが、どうすればいいでしょうか?
0902デフォルトの名無しさん
2013/01/19(土) 18:25:43.760903デフォルトの名無しさん
2013/01/19(土) 18:27:08.130904デフォルトの名無しさん
2013/01/19(土) 18:28:21.24そうです。
解決法ありますかね?
0905デフォルトの名無しさん
2013/01/19(土) 18:28:39.43py2exeに関連するものを全部パックするオプションがあるよ
0906デフォルトの名無しさん
2013/01/19(土) 18:33:36.48raw_input = lambda :__builtins__.raw_input().decode('cp932')
sys.stdinにデコーダー被せてもいけるかもしれないが
他にも影響しそうで怖い
0907デフォルトの名無しさん
2013/01/19(土) 18:36:27.740908デフォルトの名無しさん
2013/01/19(土) 18:58:53.43<lambda>() takes no arguments (1 given)
というエラーが出てしまいました。
0909デフォルトの名無しさん
2013/01/19(土) 19:14:07.29じゃあこう
raw_input = lambda *p:__builtins__.raw_input(*p).decode('cp932')
0910デフォルトの名無しさん
2013/01/19(土) 20:25:11.65UnicodeDecodeError: 'cp932' codec can't decode bytes in
position 0-1: illegal multibyte sequence
とでてしまいます。
どうすればよいでしょうか?
0911デフォルトの名無しさん
2013/01/19(土) 20:26:45.670912デフォルトの名無しさん
2013/01/19(土) 20:28:58.45Windowsです。
0913デフォルトの名無しさん
2013/01/19(土) 20:40:32.76http://www.dotup.org/uploda/www.dotup.org3861638.png
何が原因だろ
プロンプトのコードページが違うか、Cygwinのターミナルでも使ってるんだろうか
0914デフォルトの名無しさん
2013/01/19(土) 20:49:06.41何が原因なんでしょうね?
コードページは932で、ターミナルは使ってないです。
ありがとうございました。
0915デフォルトの名無しさん
2013/01/19(土) 20:53:25.450916デフォルトの名無しさん
2013/01/19(土) 21:32:05.86# encoding: utf-8
# ※ここは変更できません
こうやったら解決とか、それはないかー
あー何となく分かった
日本語書いてるでしょ、それが良くないと思う。
sjis, euc-jp, iso-2022-jp色々あるんだよー
日本語消してごらん、# 使うんじゃなくて、文字通り削除する。
0917デフォルトの名無しさん
2013/01/19(土) 21:40:10.86日本語の文が入力なので消すことができません。
0918デフォルトの名無しさん
2013/01/19(土) 21:41:15.360919デフォルトの名無しさん
2013/01/19(土) 21:45:05.24日本語消すってのは入力に日本語を入れるなって意味ではないのですか?
0920デフォルトの名無しさん
2013/01/19(土) 21:46:18.87何を入力したか具体的に書けよ
あと、次の文に同じ入力を食わせたときの結果を書け
print repr(raw_input('hoge>'))
0921デフォルトの名無しさん
2013/01/19(土) 22:02:18.84入力:彼は東京から来た
u'\u5f7c\u306f\u6771\u4eac\u304b\u3089\u6765\u305f'
入力をKNPに入れます。
0922デフォルトの名無しさん
2013/01/19(土) 22:07:05.60これでu'\u5f...'なんて出てくるはずないんだがな・・・
0923デフォルトの名無しさん
2013/01/19(土) 22:11:32.980924デフォルトの名無しさん
2013/01/19(土) 22:11:50.40自分でもraw_inputとプログラムの中に入力を書くを比べてみたところ差異が確認できました。
0925デフォルトの名無しさん
2013/01/19(土) 22:14:26.580926デフォルトの名無しさん
2013/01/19(土) 22:14:40.64テキストだけ貼られるとエンコーディング大丈夫なのかとか分かんない
0927デフォルトの名無しさん
2013/01/19(土) 22:18:09.690928デフォルトの名無しさん
2013/01/19(土) 22:19:33.81指示したことが正しく実行されていない気配がある
聞いてる話も本当にその方法で行われているのか
0929デフォルトの名無しさん
2013/01/19(土) 22:22:14.410930デフォルトの名無しさん
2013/01/19(土) 22:28:49.70import subprocess
import re
def knp(str):
juman = subprocess.Popen(["juman"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
knp = subprocess.Popen(["knp", "-tab"], stdin=juman.stdout, stdout=subprocess.PIPE, shell=True)
juman.stdin.write(str.encode("cp932"))
juman.stdin.close()
juman.stdout.close()
return knp.communicate()[0]
raw_input = lambda *p:__builtins__.raw_input(*p).decode('cp932')
input = raw_input(u'入力:'.encode('cp932'))
#print repr(raw_input())
input_type_word_file = open('input_knp.txt','w')
input_type_word_file.write(knp(input))
input_type_word_file.flush()
input_type_word_file.close()
です。
0931デフォルトの名無しさん
2013/01/19(土) 22:29:50.750932デフォルトの名無しさん
2013/01/19(土) 22:31:19.11遅くなってすいませんでした。
0933デフォルトの名無しさん
2013/01/19(土) 22:32:41.39zipでもあげなおします。
少々お待ちください。
0934デフォルトの名無しさん
2013/01/19(土) 22:32:57.95じゃあ、なぜ?
入力って
xxx.py < input.txt
とかやってる?
0935デフォルトの名無しさん
2013/01/19(土) 22:36:34.84そういえば、エラーが起きたの入力データの先頭だったよな。
それBOMじゃねえの?
0936デフォルトの名無しさん
2013/01/19(土) 22:37:34.92です。
入力はa.pyのみです。
0937デフォルトの名無しさん
2013/01/19(土) 22:42:21.00動いたよ(ハート)
ttp://www.dotup.org/uploda/www.dotup.org3862122.png
0938デフォルトの名無しさん
2013/01/19(土) 22:42:23.25次はエラーメッセージを全部貼って
0939デフォルトの名無しさん
2013/01/19(土) 22:43:42.12パソコンを再起動したらきちんと出力が出ました。
お騒がせしました。
0940デフォルトの名無しさん
2013/01/19(土) 22:45:16.920941デフォルトの名無しさん
2013/01/19(土) 22:45:34.100942デフォルトの名無しさん
2013/01/19(土) 22:48:24.670943デフォルトの名無しさん
2013/01/19(土) 23:00:55.51ありがとうございました。
0944デフォルトの名無しさん
2013/01/20(日) 08:08:24.88良かった良かった
0945デフォルトの名無しさん
2013/01/20(日) 10:46:50.110946デフォルトの名無しさん
2013/01/20(日) 12:04:59.74>>505の言うctypes使う。
http://docs.python.org/3/library/ctypes.html
他に簡単な方法があるかもしれんから、
http://pypi.python.org/pypi
ここ行って調べてみて、良い方法があったら教えて。
0947デフォルトの名無しさん
2013/01/20(日) 12:54:22.90Shell_Notifyicon のつもり?
0948デフォルトの名無しさん
2013/01/20(日) 12:59:23.820949デフォルトの名無しさん
2013/01/20(日) 13:11:43.30https://gist.github.com/4000505
これがいりそうだ
http://sourceforge.net/projects/pywin32/
0950デフォルトの名無しさん
2013/01/20(日) 13:19:19.24IronPythonならNotifyIconのShowBalloonTipsで簡単に出せるけど、dllのAPI叩くのは結構手間掛かる
ctypesよりはwin32モジュール使った方が多少楽かな (win32gui.Shell_Notifyicon 辺り。それでも数十行規模になると思う)
GUIのツールキット使うともう少し楽 (qtのQSystemTrayIcon 等。多分、十数行位の規模できる)
探したこと無いけど、もっと簡単に扱えるライブラリ在るはず
0951デフォルトの名無しさん
2013/01/21(月) 00:18:03.660952デフォルトの名無しさん
2013/01/21(月) 10:17:17.51wx.Appのインスタンス作った後に、これだけでok
wx.NotificationMessage("title", "hello").Show()
通知領域を使う方法では、レジストリで表示のon/offが出来るんだけど、
(フルスクリーンでの作業中はoffにしておきたい場合等には、まとめて設定出来るので便利)
レジストリの設定に依存したくないなら、吹き出し型じゃないけど ToasterBox も通知用途に使える。
0953デフォルトの名無しさん
2013/01/21(月) 16:40:37.18http://toro.2ch.net/test/read.cgi/tech/1358753763/
0954デフォルトの名無しさん
2013/01/21(月) 18:29:28.480955デフォルトの名無しさん
2013/01/21(月) 19:53:57.60入力の例2:list = [0,A,1,A,3,A,5,B,8,A,13,A,20,A]
if 'A' in list and 'B' in list:
if list.count('A') == 1:
A_num = list.index('A') - 1
B_num = list.index('B') - 1
if list[A_num] < list[B_num]:
list = list[A_num + 2:]
else:
pass
else:
ここから〜
[0,A,9,B]という入力があったら、A=0、B=9という風にアルファベットの
左側をアルファベットが持っている値とみなします。
複数のAと単体のBを比べて、Bより小さいAを全て消したリストにしたいのですが、
list.indexの参照は最初のひとつしかできないので、参照した部分を消していくやり方を思い浮かんだのですが、
もう少し、スマートにできる方法はないでしょうか?
何か、良い案があれば教えてください。
よろしくお願いします。
0956デフォルトの名無しさん
2013/01/21(月) 20:35:18.510957デフォルトの名無しさん
2013/01/21(月) 20:36:30.850958デフォルトの名無しさん
2013/01/21(月) 20:55:47.20http://ideone.com/dVOvBY
無駄にリスト生成してるとか言い出すんだろうな
まったく
0959デフォルトの名無しさん
2013/01/21(月) 20:55:56.33要素を2つずつ取り出すジェネレータpairwiseを作って
for value,keyin pairwise(data) として処理する.
ideone.com/pvhSaU
0960デフォルトの名無しさん
2013/01/21(月) 20:59:37.20こんなふうに
list = [(0,A),(1,A),(3,A),(5,B),(8,A),(13,A),(20,A)]
汚いものから綺麗なものを取り出す仕事は泥臭いと決まってるんだ
情報論的に
0961959
2013/01/21(月) 21:04:00.96959は、元の仕様のリストに戻す過程で、無駄にタプルをたくさん生成する事になるので、その点はスマートさ(?)に欠けるかな。
ジェネレータのまま処理するか、扱うデータ自体を(key,value)のタプルのリストにした方が良い。
0962デフォルトの名無しさん
2013/01/21(月) 21:23:07.23ありがとうございます。
扱うデータをタプルのリストにして行ってみようと思います。
0963デフォルトの名無しさん
2013/01/21(月) 23:46:04.97B = 4
A = 5
print B
のようなことをした時に4と出力される時と、5と出力される時があります。
こういう違いはなぜでてくるのでしょうか?
0964デフォルトの名無しさん
2013/01/22(火) 00:44:39.93それが完全なソースだとしたら、5と表示される事は在りえないと思うけど。
どのように実行してる?他に何か余計なことしてない?
考えられる原因は、モジュールにしてて、キャッシュや他のパスのものが読み込まれてたとか。
エディタで編集してるのと端末で実行したスクリプトのファイルが違ってたとか、そういった類の勘違いによるミスしか思いつかない。
一度、クリーンな環境で実行してみよう。
0965デフォルトの名無しさん
2013/01/22(火) 00:46:18.57B = A とかやっちゃってんだろ
0966デフォルトの名無しさん
2013/01/22(火) 01:16:24.71A = 3
B = A
A = 5
print B
でした。この時に3と5の場合があります。
モジュールはnumpyを使っています。
0967デフォルトの名無しさん
2013/01/22(火) 02:00:55.180968デフォルトの名無しさん
2013/01/22(火) 02:51:14.93codepadやらideoneで再現してくれ
0969デフォルトの名無しさん
2013/01/22(火) 03:59:55.40http://ideone.com/vEHzQC
はじめから、ちゃんとしたコードを載せるべきでした。すいません。
出力結果は
[[ 0.69041153 0.81024034 0.40324572]
[ 0.84312668 0.81469053 0.2784516 ]]
[ 3.]
[[ 0.99601157 0.08629962 0.02265681]
[ 0.84312668 0.81469053 0.2784516 ]]
[ 3.]
となります。
0970デフォルトの名無しさん
2013/01/22(火) 05:46:34.300971デフォルトの名無しさん
2013/01/22(火) 08:48:46.53変数の指すオブジェクトを書き換えるのと、変数が指す先を変更するのとの違いだ。
A = [0]
B = A
AA = [0]
BB = AA
print(B)
print(BB)
A[0] = 1
AA = [1]
print(B)
print(BB)
出力:
[0]
[0]
[1]
[0]
0972デフォルトの名無しさん
2013/01/22(火) 12:40:15.540973デフォルトの名無しさん
2013/01/22(火) 21:17:54.620974デフォルトの名無しさん
2013/01/22(火) 21:25:33.370975デフォルトの名無しさん
2013/01/22(火) 21:25:35.270976デフォルトの名無しさん
2013/01/22(火) 21:34:46.39恥ずかしい
0977デフォルトの名無しさん
2013/01/22(火) 22:40:25.17ありがとうございます。なんとなく理解出来ました。
今まで、「変数」と「オブジェクト」を区別できていませんでした。
0978デフォルトの名無しさん
2013/01/22(火) 22:41:38.13丁寧に教えていただいたのに、説明不足で申し訳ありませんでした。
0979デフォルトの名無しさん
2013/01/22(火) 22:59:40.490980デフォルトの名無しさん
2013/01/23(水) 14:37:34.90http://toro.2ch.net/test/read.cgi/tech/1358753763/
0981デフォルトの名無しさん
2013/01/23(水) 19:18:01.61入力データの例
[['他の値','他の値','A','他の値','他の値'],['他の値','他の値','B','他の値','他の値'],['他の値','他の値','D','他の値','他の値'],['他の値','他の値','G','他の値','他の値'],['他の値','他の値','S','他の値','他の値']]
DとSの両方の値がある場合に処理を行いたいのですが、どうすればよいでしょうか?
確認したい場所は全部同じです。ここでは2番目
0982デフォルトの名無しさん
2013/01/23(水) 19:39:08.63>>> sabc = set('abc')
>>> sabc
{'a', 'b', 'c'}
>>> sa.issubset(sabc)
True
>>> sabc.issubset(sa)
False
>>> L = [['他の値','他の値','A','他の値','他の値'],['他の値','他の値','B','他の 値','他の値'],['他の値','他の値','D','他の値','他の値'],['他の値','他の値','G','他の値','他の値'],['他の値','他の値','S','他の値','他の値']]]]
>>> center = [x[2] for x in L]
>>> center
['A', 'B', 'D', 'G', 'S']
>>> set('DS').issubset(center)
True
>>> set('SD').issubset(center)
True
>>> 'SD'.issubset(center)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'issubset'
0983デフォルトの名無しさん
2013/01/23(水) 19:40:33.270984デフォルトの名無しさん
2013/01/23(水) 19:45:46.590985デフォルトの名無しさん
2013/01/23(水) 19:48:15.95>>> center
{'A', 'S', 'B', 'D', 'G'}
>>> center.issuperset('DS')
True
0986デフォルトの名無しさん
2013/01/23(水) 19:53:49.610987デフォルトの名無しさん
2013/01/23(水) 19:55:46.32ありがとうございます。
Trueの後の処理が、LのリストからDの要素が入っているリストを削除するのですが、
もう一回Lのリストのなかを検索して消せばいいですよね?
0988デフォルトの名無しさん
2013/01/23(水) 20:06:33.37>>> for index, L1 in enumerate(L):
... if 'D' in L1:
... break
...
>>> index
2
>>> del L[index]
>>> L
[['他の値', '他の値', 'A', '他の値', '他の値'], ['他の値', '他の値', 'B', '他の 値', '他の値'], ['他の値', '他の値', 'G', '他の値', '他の値'], ['他の値', '他の値', 'S', '他の値', '他の値']]値', 'S', '他の値', '他の値']]
>>> len(L)
4
0989デフォルトの名無しさん
2013/01/23(水) 20:09:04.50うーん、、、ごめんねー。
0990デフォルトの名無しさん
2013/01/23(水) 21:47:42.23ありがとうございます。
0991デフォルトの名無しさん
2013/01/23(水) 22:18:22.54inを使うのではなく、こうすべきだったという独り言。
0992デフォルトの名無しさん
2013/01/23(水) 22:46:36.30listの中にaが複数個含まれているときに、aの最後のインデックスを取得するにはどうすればいいですか?
やりたいことはaの最後のインデックスを取得してそれ以降の値を変換したいです。
0993デフォルトの名無しさん
2013/01/23(水) 22:50:25.79そうかrindexは文字列だけだったな
0994デフォルトの名無しさん
2013/01/23(水) 23:00:46.36>>> s = ''.join(L)
>>> s.rindex('a')
5
>>> for index, s in enumerate(L):
... if s == 'a':
... index_a = index
...
>>> index_a
5
0995デフォルトの名無しさん
2013/01/23(水) 23:07:14.33>>> L.reverse()
>>> L
['Z', 'a', 'a', 'c', 'B', 'A', 'a']
>>> (len(L) - 1) - L.index('a')
5
0996デフォルトの名無しさん
2013/01/23(水) 23:22:04.58ありがとうございます。
0997デフォルトの名無しさん
2013/01/23(水) 23:24:39.430998デフォルトの名無しさん
2013/01/24(木) 17:28:24.87いろいろな値をコマンドプロンプトで与えてそれを一つのテキストファイルに出力するには、どうすればよいのですか?
リストのリストの出力の例
例1[["みかん"]["50円"][C][D]],["りんご"]["100円"][G][J]],......]
例2[["ぶどう"]["400円"][C][D]],["りんご"]["100円"][G][J]],......]
欲しいテキストファイル
みかん,50円,C,D
りんご.......
.......
例1の終わり
ぶどう,50円,C,D
......
.......
例2の終わり
3つめの始まり
0999デフォルトの名無しさん
2013/01/24(木) 17:29:08.56、. _ _ .i ,.
ヽ`//| /i.//
ヽ. '| ト./ /
i∧/ /
/ ̄ ̄
/
/
/
ヘ⌒ヽフ
(・ω・ )<世界平和を祈るお
O┬O )
◎┴し'-◎ ≡キコキコキコ
1000デフォルトの名無しさん
2013/01/24(木) 17:36:13.5710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。