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


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

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



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

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

前スレ
くだすれPython(超初心者用) その25
peace.2ch.net/test/read.cgi/tech/1415173201/l50
関連スレ
Pythonのお勉強 Part50
peace.2ch.net/test/read.cgi/tech/1413474092/

◆関連リンク Python の Home Page
ttp://www.python.org/

◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
ttp://dpaste.com/

◆まとめwiki
ttp://python.rdy.jp/

2 名前:デフォルトの名無しさん mailto:sage [2015/05/16(土) 22:55:19.26 ID:VKfhfpr8.net]
バカはレスしないでくれる?
個人の主張として批判せず、いたずらにある類として扱うのは極めて恣意的かおバカの批判にあらざる攻撃の特徴。
まあ、その軽蔑すべき発想で返した俺も反省はしてもよいが
はっきり言って精神病とバカの特徴でしかない論法でレスするなよ。
俺はバカと精神病きらいだからな。
おまえら、マジで精神病と思われる宣言的絶対主義の形而上学バカの一味は人類の公的な敵だとおもっているからな。
さしあたりお前らが馬鹿にされていることは科学的認識の健全性をそれなりに示すから喜ばしいがな。

それにしても、単なる知識を披露しあっているだけの時は頭良さそうなふりはできるが、
いよいよ自身の認識を問われる事態になるとここにいる連中、そこの浅さを露呈するやつ多すぎ
所詮、2chだな

精神病君かい?
クズ

3 名前:デフォルトの名無しさん mailto:sage [2015/05/17(日) 08:13:12.52 ID:azDp/x2p.net]
同じことの繰り返し(コピペ)は痴呆

4 名前:デフォルトの名無しさん mailto:sage [2015/05/17(日) 13:47:17.65 ID:se+ydSXL.net]
同じことの繰り返し(コピペ)は痴呆

5 名前:デフォルトの名無しさん mailto:sage [2015/05/17(日) 15:46:42.29 ID:tASFt5zk.net]
python2.7です

webページをDLして解析したいんですがいきなり躓いてます

import urllib2
from xml.etree.ElementTree import *
(略)
req = urllib2.Request(url)
response = urllib2.urlopen(req)
html = response.read()

#解析するよ
root = fromstring(html)

fromstring で xml.etree.ElementTree.ParseError: not well-formed (invalid token) 言われます
レスポンスに手を加えずそのまま解析してるのですが…

6 名前:デフォルトの名無しさん mailto:sage [2015/05/17(日) 15:56:55.86 ID:wvzPz3Ba.net]
xmlとhtmlの区別は付きますか?(違いがわかりますか?)
parse関数はパーサーオブジェクトをオプションで取ります
パーサーオブジェクトを与えないとXMLParserを使います

HTMLParserを与えてください

7 名前:デフォルトの名無しさん mailto:sage [2015/05/17(日) 16:03:15.27 ID:wvzPz3Ba.net]
腐ったHTMLだとHTMLParserでも失敗します
そうなったらアキラメロン

8 名前:デフォルトの名無しさん mailto:sage [2015/05/17(日) 17:41:57.69 ID:tASFt5zk.net]
報告です。

root = fromstring(html, HTMLParser())

としたら、
エラーは無くなりましたがタグを手繰ろうとすると NonType と言われて出来ませんでした。

HTMLParser を派生して

parser = MyHTMLParser()
parser.feed(html)
parser.close()

としたら、タグは読めました。
まだ先は長そうですが、ご教授ありがとうございました。

9 名前:デフォルトの名無しさん mailto:sage [2015/05/18(月) 00:08:11.12 ID:K8yFRBxU.net]
beautifulsoup使ってみたら?

10 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 03:49:47.58 ID:L8E0K9w8.net]
よろしくお願いします ジェネレータの勉強しています
def gene():
 print(1)
 while True:
  yield
  print(2)
start = gene() #ここで1が表示されて欲しい
next(start) #でもこっちで1になる

「gene()が呼び出された時点でwhileの中にまで進み、yieldの時点で処理がストップする」
こういう挙動だと思ったのですが実際に試してみると違いました
gene()が最初に呼び出された時点でyieldの前のコードを実行する術は無いのでしょうか?



11 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 15:22:53.43 ID:ctmR18NT.net]
def gene_init():

    print(1)

    def gene_body():

        while True:

            print(2)

            yield

    return gene_body()

>>> g = gene_init()
1
>>> next(g)
2

12 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 15:23:51.57 ID:ctmR18NT.net]
ありゃ、コピペ失敗失礼した

13 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 23:13:22.76 ID:L8E0K9w8.net]
>>11
ありがとうございます!期待していた通りの挙動になりました
yieldは使いこなせると便利そうですが慣れるまではちょっと怖いですね
思わぬバグを作り込んでしまいそう

14 名前:デフォルトの名無しさん mailto:sage [2015/05/20(水) 05:29:20.44 ID:K3ViYaGA.net]
googleのpython exercises終わったー
勉強がミッション化されてて面白かったw
ログファイルから断片化された画像のURLを抽出して、並べ替え、ダウンロードして一つの画像として表示するとか、なんかワクワクしたw

15 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 01:18:06.15 ID:0lqSGmSk.net]
値とインデックスを使いたいときに
for i, v in range(10)
こういうふうにかけたらいいのに何でインデックス取るのに面倒な記述をしないといけないんだろう
このへんはGoをみならってできるように改良してもらいたい

16 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 02:08:02.38 ID:oB9KNLHA.net]
for i, v in enumerate(list):

17 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 05:29:50.91 ID:zzLeh6B9.net]
そうでしたっけフフフ
とでも言って流しておけばいいものを

18 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 10:57:04.88 ID:OSpceEvr.net]
インデックスを使いたいがためにメソッドを呼び出すオーバヘッドが無駄

19 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 11:16:00.66 ID:LF23h3ro.net]
ループを繰り返すたびに呼び出してる訳じゃないからそんなに気にすることはないと思う
自前でインデックスを計算するパターンと比べても遅いわけではない

>>> import timeit
>>> timeit.timeit(stmt='for i, v in enumerate(range(100)):pass')
6.08430373200099
>>> timeit.timeit(stmt='for v in range(100):i+=1', setup='i=0')
9.956800863998069

20 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 12:00:18.91 ID:iv04xADq.net]
enumerateってイテレータ?ジェネレータ?なので
最初に呼び出す時はオーバーヘッドあってもその後ループ内では無いに等しい
って解釈してるんですがあってますかね



21 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 12:12:51.55 ID:oB9KNLHA.net]
rangeだってメソッドちゃんなのに、enumerateはダメなの? スペルが長いから?
処理速度だって同等かむしろ良いくらいだよ
全てメモリに展開せず、逐次ジェネレーターライクな動きするからオーバーヘッドも少ないよ

22 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 12:25:35.22 ID:Tg0bXDwp.net]
この程度のオーバーヘッドが気になるならPython使うなよ^^;

23 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 17:26:43.43 ID:6dtMhhKG.net]
blenderのaddon作成で、python勉強始めたんですが、__init__.pyがエントリーポイントになっていて、そこに、任意のクラスを作ると、クラス内にあるメソッドが呼び出されます。
質問なんですが、__init__.py内にある任意のクラス名をどうやって呼び出しているのでか?

24 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 18:14:07.06 ID:gn4elZ6J.net]
pythonでライブラリ使ったことがあれば分かるはず
ないなら勉強しろ

25 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 18:39:55.54 ID:6dtMhhKG.net]
ライブラリを使うとしても呼び出すクラスなり、メソッド名は分かっててそれを使うと思うのですが、
自分で決めたクラスをblenderは、どうやって認識しているのでしょうか?
モジュール内に定義されたクラス一覧を取得するメソッドでもあるのでしょうか?
また、文字列でクラスを呼び出せるのでしょうか?

26 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 18:53:06.31 ID:gn4elZ6J.net]
両方yesだ

import ho

27 名前:ge
print dir(hoge)

と実行してみろ
そんで

instance = getattr(hoge, 'HageClass')()

とやればインスタンスが作れる
[]
[ここ壊れてます]

28 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 18:56:11.30 ID:iv04xADq.net]
inspect.getmembers(~モジュール~)

こういうことでは無くて?

29 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 18:58:20.99 ID:iv04xADq.net]
ごめんなさい>>26さんの方がいいですね 27は忘れてください

30 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 19:06:10.14 ID:6dtMhhKG.net]
どうもありがとうございます。
なるほどそうやってるんですね。



31 名前:デフォルトの名無しさん mailto:sage [2015/05/22(金) 19:25:49.92 ID:GdCh1ajU.net]
可変長引数についてはドキュメントのどのページに載っているのか教えてください

32 名前:デフォルトの名無しさん mailto:sage [2015/05/22(金) 20:36:14.54 ID:j2+sj5Ou.net]
https://docs.python.org/3/reference/compound_stmts.html#function
このへん

33 名前:デフォルトの名無しさん [2015/05/22(金) 22:42:40.80 ID:GNpfjP2d.net]
docs.python.jp/3.4/tutorial/controlflow.html#arbitrary-argument-lists
日本語のチュートリアルだとこのへん

34 名前:デフォルトの名無しさん [2015/05/22(金) 22:52:59.58 ID:GNpfjP2d.net]
docs.python.jp/3.4/tutorial/controlflow.html#unpacking-argument-lists
あと、その次の、4.7.4. 引数リストのアンパックも覚えとくと便利

l = ["hello", "my", "friend"]

lというリストをスペース区切りで表示したいとき、↓でいける
print(*l)

print(" ".join(l))
とかしなくてもいい

35 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 10:39:29.12 ID:884F+n7v.net]
>>31−>>33
ありがとうございます今から読んで学習します

36 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 16:38:39.10 ID:OjkyrBsZ.net]
うおおお 超初心者なんだけどpythonのコンソールでぽちぽちしてたらgmail送れたーーー hello world届いてたーw
なんかすげええ
他の言語でもこんな簡単に送れるものなのだろうか

37 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 19:02:53.50 ID:mBWRn4xp.net]
smtpを標準でサポートしてれば似たり寄ったりでないかな
perlとかrubyはしてると思う
nodeはしてない

38 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 04:56:53.13 ID:C4HQwhye.net]
>>36
そうなんですか! 自分はC言語(の基本)しか習ってなくて、こんな仰々しいコードになるイメージでしたw
hatenaclang.blogspot.jp/2014/10/libcurl-gmail.html

それに比べてpythonのこの簡潔さはw クラス定義なんて省いて直接書いたらほんと数行ですよね
qiita.com/HirofumiYashima/items/1b24397c2e915658c984
間違っても1行1行その場で怒ってくれるからすぐ直せたし

39 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 21:20:44.95 ID:LHzJ6dIN.net]
>>35
あなたは僕を超えました
そしてあなたは僕の先生となりました
ぜひブログでやり方を書いて紹介してください

40 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 10:13:00.28 ID:H/4xp/af.net]
pyenvで入れた2.7.8を2.7.10にアップグレードしたいんですが
いままで2.7.8を削除して2.7.10を入れて再度pipでパッケージをインストールしてました
同じメジャーバージョンならpipでパッケージを削除する必要ないと思うんですが
pythonのバージョンだけ上げる方法ありませんか?



41 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 11:01:17.13 ID:R3oTKNZR.net]
pyenvにそんな機能はない

42 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 17:12:28.26 ID:XRMIkMF7.net]
>>38 いや、なんか適当

43 名前:にこんな感じで送れました

import smtplib
from email.mime.text import MIMEText

me, dest = '送信元@メールアドレス', '宛先@メールアドレス'

msg = MIMEText( u'行きたくありません', 'plain', 'iso-2022-jp')
msg['Subject'] = u'明日の会議について'
msg['To'] = dest
msg['From'] = me

conn = smtplib.SMTP_SSL('smtp.gmail.com') #portは省略すると465
conn.login( me, 'gmailのパスワード')
conn.sendmail( me, dest, msg.as_string()) #ehloもやってくれる
conn.quit()
[]
[ここ壊れてます]

44 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 14:20:34.72 ID:JlsMtCsC.net]
何でgithubのcpythonリポジトリにはタグが付いてないんですか?
指定したバージョンのソースコードを手に入れたい時ってどうしたらいいんですか?

45 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 14:28:14.45 ID:fTI4HEOK.net]
公式で配ってるターボールか
Mercurialのリポジトリから拾ってくる
https://hg.python.org/cpython/tags

ミラーされない理由?
Mercurialとgitでタグのセマンティクスが微妙に違うからかなあ

46 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 15:38:55.32 ID:HsCFsvXb.net]
辞書を要素とするリストから、
辞書のキーの値によってある要素への参照を得るには、
どうしたらいいでしょうか。
例えば

mylist = [{'num':1},{'num':2},{'num':3}]

というリストがあるとして、キーnumの値が2である要素への参照を得たい場合、
私が思いつくのは

result = [item for item in mylist if item['num'] == 2][0]

もしくは

for item in mylist:
if item['num'] == 2:
result = item

の2つなのですが、他に方法はないでしょうか?
ここではキーの値に重複はないと考えています。

47 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 16:02:58.67 ID:fTI4HEOK.net]
リストを作ったときに逆参照mapでも作っておけばいいではないですか

48 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 16:28:14.46 ID:ME2Xw7j/7]
next((item for item in mylist if item['num'] == 2), None)

49 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 20:44:53.01 ID:BsJ/nx2f.net]
どやぁ(注:初心者)
mylist[mylist.index({'num':2})]

50 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 21:38:59.86 ID:kkyk1kjT.net]
print(1.j)
このjってなんですか?



51 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 21:46:32.51 ID:oqPKm2sI.net]
>>44
全く同じ事を今日やってた 45さんの言う通り逆参照の辞書持つのが一番楽かなと
{}
ただちょっとよくわからないのがそのリストのデータ構造は現実のリストなの?
もし本当にこんなリストだとしてキーの値に重複が無いのなら、
リストを作る時に最初(つまりmylist[0])はNone、値1のものはmylist[1]、
仮にnum:4が無いならmylist[4]=Noneとやっていけば、num=1000はmylist[1000]と保証される
これなら一つのリストで一応管理できる

52 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 21:56:36.25 ID:oqPKm2sI.net]
>>47
確かに一見それで良さそうだけど、それでいけるならそもそも要素をmylistから持って来る必要が無いんじゃないのかな
だってもう手元に{'num':2}ってあるわけだし
お風呂上がりに眼鏡が見つからない何も見えないって言いながら眼鏡かけて眼鏡探してる感じがする

>>48
qiita.com/shuhei/items/f5cf6c83fcfb5dd24c2d
print(type(1.j))とやると<class 'complex'>ってなるから複素数らしい
虚部のところにjをつけてやるんだってさ
はじめて知った

53 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 22:49:00.53 ID:HsCFsvXb.net]
みなさんどうもありがとうございます
44です

先に挙げたリストは説明のために極力簡略化したものです
実際はキーに対する値は数値ではあるものの連番ではなく
またリストに追加される順序も不定です
ただし一意であることは保証されています
また実際はこのキー以外にも複数のキーを持っています

このnumキーがリレーショナルデータベースにおける主キーに相当するため
このキーの値でスマートに要素を取り出せたらなと思い質問させていただきました

逆参照mapというのがどのようなものか私にはわからないのですが
ここの例で言うとnumキーの値を辞書のキーにして
その値にリストの該当要素への参照を対応させたものでしょうか

順序は問題にならないのでリストではなく辞書の辞書にすることも考えたのですが
必要であればどのキーを使ってでもすぐにfor ループが回せるという
分かりやすさも捨て難い気がして躊躇していました

48さんのおっしゃる最初からキーの値に対応したインデックスの箇所に収納する方法も確かにありますね
逆参照mapを作る方法と合わせて検討してみたいと思います

54 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 23:21:56.28 ID:BsJ/nx2f.net]
>>50
値じゃなくて、リストのその部分を編集するための参照が欲しいのかなと思ったんです・・・

自分で構造を決められるなら、こんなじゃだめなのでしょうか?

data = {
str(numの値): {他データ},
str(numの値): {他データ},
,
,
,
}

128番の情報が欲しい! → data[str(128)]  みたいな感じで

55 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 01:16:34.91 ID:gIxiSbR2.net]
>>52
それもいいですね
ありがとうございます
ただ今回はリストのフラットなデータ構造のままで
それと同じことが分かりやすくできる方法があればと思い質問させていただきました

56 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 17:56:08.90 ID:4cyo14pp.net]
>>52
余計なことしてたので訂正です
辞書はキーに数字をそのまま使えました・・・

data = {1 : "value1", 2 : "value2", 3 : "value3"}

for key in data:
print key,

>>
1, 2, 3

57 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 15:38:42.64 ID:+K9YB3fm.net]
FacebookのRSSのタイトルを文字化けしないように変換したいのですが
&#xXXXX;を文字に変換するにはどうすればいいのでしょうか

import feedparser, urllib.parse
rssurl="https://www.facebook.com/feeds/page.php?id=xxxxxxxxx&format=rss20"
fdp = feedparser.parse(rssurl)
for entry in fdp['entries']:

title = entry['title']
link = entry['link']

print(title, link)

58 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 23:55:25.53 ID:PkH09g+t.net]
>>55
import html
html.unescape(title)

59 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 10:58:53.01 ID:qxRvZ9TX.net]
>>56
ありがとうございます。
変換することができました。

60 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 11:08:33.75 ID:RwL0vTGq.net]
3.5から.pycからSTORE_MAPが削除されるとかあったけど
これって3.0〜3.4で作成された.pycを削除してから3.5の環境でスクリプトを実行して.pycを生成し直さないとトラブルになるってことですか?



61 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 13:24:15.16 ID:98Ume5mp.net]
最近リストの内包が書けるようになってきてコードが綺麗になって楽しいです
dictも同様にできるようなんですが、
text = t for t in [a,b,c,d] #a , b , c , dに入ってる文字列を繋いでtextに
setattr(self , k , v) for k , v in dict.values() #selfのプロパティをdictから作る

なんてできたらいいなあと思ってるんですがさすがに無理なのでしょうか

62 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 13:25:29.87 ID:ENr5sicU.net]
>>58
.pycってhoge.cpython-34.pycって感じでPythonのバージョンごとに
作られるから削除の必要はない

63 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 13:40:11.39 ID:g6jbltjH.net]
>>59
1つ目はstr.join()
2つ目はself.__dict__.update()

64 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 03:08:46.90 ID:rJ1AgvvX.net]
class、並びにオブジェクトの表現方法について質問させてください。
「文」とそれを構成する「単語」の関係をclass化したいです。
文はそれぞれの単語を「持って」おり、また全ての単語は必ず文に「属し」ます。

(質問1) 以下のようにSentenceの中の配列にWordを入れることで表現していますが、どうでしょうか?
class Sentence():
 self.words = [Word,Word,Word…] #ここにWordオブジェクトを入れていく
class Word():
 self.sentence = Sentence #ここに自分が所属するSentenceオブジェクトを入れておく

例えば野菜->タマネギのような関係なら継承を使ったりするのでしょうが、文と単語の関係でそれは使えないと思います。
何かうまい表現方法がありますでしょうか。

(質問2)
WordオブジェクトがどのSentenceに属しているか、という情報をWordクラスにうまく持たせる方法は無いでしょうか?
今はself.sentenceというところにSentenceオブジェクトを入れていますが、なんかスマートじゃ無い気がします。

classを最近ようやく理解したばかりなのでこういう使い方でいいのかどうか悩んでます。
本やネットを読んでもたいていは果物->りんご、のような関係で継承を説明してるのであまり参考になりません。
継承ではなく、上位の概念が下位の概念を「持っている」という関係をどう表せばいいでしょうか。
長くてすみません。

65 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 07:38:13.51 ID:Lk3iv4vp.net]
>>62の文と単語の関係はWordが必ずSentenceに属する必要性に疑問を感じます
質問1は複数あるWordの順序を保持する必要からlistを使うのは妥当だと思います
質問2はSentenceの情報はWordに持たせなくていいと考えてます

66 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 15:52:41.19 ID:rJ1AgvvX.net]
>>63
ありがとうございます
もしWordがSentenceの情報を持たない場合、
Word自身からではどのSentenceに属してるかわからなくなってしまいます

Sentence<--どちらも相手を参照できる-->Word
という関係性は必ず維持しなければならないという前提でアドバイスいただけるとありがたいです

67 名前:デフォルトの名無しさん [2015/05/30(土) 20:44:32.94 ID:lFJ1sGxF.net]
ネット上からファイルをダウンロードする際に
そのファイルのサイズを調べて一定以上のサイズならダウンロードする
というようなプログラムが書きたいです。
ネット上のファイルサイズを取得する一番簡単な方法は何でしょうか?

urlretrieveでサイズを表示することはできたんですが上手く数字を拾えなくて・・・
なにか簡単な方法をご存知のかた、教えてください

68 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 21:24:25.22 ID:zOKa2SxY.net]
普通はHEADを打ってContent-Lengthを見るだろう
Pythonのurllib2はバカだから
get_methodオーバーライドしないとHEAD打てないけど
意味分からんよな
誰だよこれ設計した奴

69 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 22:06:26.17 ID:Il/jbsrm.net]
httplib2かurllib3かrequestsを標準にして欲しい
requestsはhigh layerすぎるからhttplib2かurllib3が妥当か

70 名前:デフォルトの名無しさん [2015/05/31(日) 20:01:30.99 ID:Yx/E9Xi4.net]
質問です。
Numpyのarray形式なのですが、
printで表示すると、
内容が長い場合、...,で省略されてしまいます。
savetxtでTEXTで書き出す場合も同様です。
この省略をさせない方法はないのでしょうか?



71 名前:デフォルトの名無しさん mailto:sage [2015/06/01 ]
[ここ壊れてます]

72 名前:(月) 02:47:52.53 ID:29A8lhcJ.net mailto: >>68
numpy.set_printoptions(threshold=numpy.nan)
もしくはnumpy.set_printoptions(threshold='nan')
でいけるらしい
自分で試してないので保証はしない
http://docs.scipy.org/doc/numpy/reference/generated/numpy.set_printoptions.html
[]
[ここ壊れてます]

73 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 15:15:37.43 ID:nhaEWMLQ.net]
djangoの勉強を始めたのですが、pyファイルで作った連想配列(値に日本語を使用)をhtmlファイルの組み込み関数で受け取るところが上手く出来ません。

{% for val in list %}
{{val.key}}で値を取り出して処理
{% endfor %}

この書き方ならば文字化けすることもなく値を取り出して使える事はわかりましたが、ソースを表示した時に処理がループ分記述されて冗長になるのを避けたいです。

※scriptタグ内に記述
var list[] = {{list|safe}};
for( var i = 0; i < list.length" i++){
var.keyで値を取り出して処理
}

このようにすれば・・・?と思ったのですが、list[]に代入した時に日本語の値がバイト文字列?になってしまいます。
どのようにすれば良いのでしょうか?
宜しくお願い致します。

74 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 15:59:29.65 ID:sxsqR351.net]
なぜバージョンも示さないで質問するのか

75 名前:69 [2015/06/02(火) 17:30:52.40 ID:44VEslIO.net]
失礼致しました。
pythonは2.7.5、djangoは1.6.5でした。
よろしくお願い致します。

76 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 23:00:09.86 ID:dwjHRJAm.net]
djangoは専用スレがあるのでここでしないでもらいたい
今後同じことで悩んでいる人が情報を見つけやすくなるしdjangoスレにいって

kohada.2ch.net/test/read.cgi/php/1323960422/

77 名前:デフォルトの名無しさん mailto:sage [2015/06/03(水) 00:45:17.77 ID:SWrh59QF.net]
>>70
文字列や数値ならJS側に直接渡せるけど、リストとか辞書は渡せない
なのでJSONにしてから渡す
その際にテンプレート側でsafeフィルタは切ること
今Django試せないので推測での回答ですまないけど参考になれば

78 名前:ダメ五郎 [2015/06/03(水) 23:50:02.93 ID:zww4qzzD.net]
Pythonスタートブックのメッソッドの初期化が全然分からないんですけど。
どうすればいいですか?死んだほうがいいですかね?

import random
class Dice:
a = 6
def __init__(self):
print('hello')
def shoot(self):
return andom.randint(1,self.a)

__init__すると何かいいことあるのでしょうか?

79 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 00:03:57.61 ID:nTFCM4h6.net]
その位置にa=6を書くとクラスのフィールドになるので
self.aじゃなくてDice.aで参照する

スタートブックに何が書いてあるのか非常に興味深いな…
新手のステマだろうか

80 名前:ダメ五郎 [2015/06/04(木) 00:07:15.15 ID:bBf7LCLq.net]
>>76
a=6は
class Dice:
a = 6
def __init__(self):
の位置にかいてありました。。



81 名前:ダメ五郎 [2015/06/04(木) 00:09:36.09 ID:bBf7LCLq.net]
import random
class Dice:
a = 6
def shoot(self):
return random.randint(1,6)
インタラクティブシェルから上記を実行
import Dice
sai = dice.Dice()
sai.shoot()
>>>2


__init__の説明の前に上記のようなデーター型をつくる
説明が、あって、実は、初期化が必要!!__init__を
使え!!みたいな説明です。さっぱり分からない状態です。

82 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 03:23:18.28 ID:oidqcGvt.net]
Diceクラスを改変したものを書いておきます
class Dice:
    """出目の上限を設定できるサイコロクラスです"""

    def __init__(self, limit):
        """サイコロオブジェクトを初期化します"""
        self._limit = limit  # サイコロの出目の上限を記憶します
        print('サイコロオブジェクトが

83 名前:初期化されました!')

    def shoot(self):
        """サイコロを振って出目を返します"""
        # 初期化したときに記憶した出目の上限を使います
        return random.randint(1, self._limit)

このクラスを使うときは下のように出目の上限を指定します
sai = Dice(6)
[]
[ここ壊れてます]

84 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 05:29:12.39 ID:yBrKCk54.net]
>>78
__init__(self,,,) はクラスをインスタンス化したときに「自動で実行」される特別なメソッドちゃん
一般ピーポのメソッドちゃん、shootは実行されてないでしょ 

sai = dice.Dice()  ← インスタンス化ってのはこの部分ね

てことで引数を受け取ったり、初期化したりは __init__(self,第一引数,第二引数,,)のところでやるのが作法なのさ

85 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 05:35:09.80 ID:UvhoGikT.net]
どこが適切な相談場所なのかわからないため、こちらで失礼いたします。

webページ上に配置したgooglemapに対して、スマホからサーバに一定間隔で送信される位置情報を使って場所を示す仕組みを作りたいと思っています。
(ページのリロードはしないで、googlemapだけ更新されるイメージ)

このような時、websocketを貼ってやれば出来るのかなと思うのですが、他のやり方を知らないのでそれが最適解なのかどうかがわからないです。
他に推奨されるやり方があったら教えて頂けませんか。
サーバはpython+flaskで、googlemapはjavascriptで呼び出しています。

86 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 07:08:46.96 ID:yBrKCk54.net]
>>81
クライアント側のjavascriptで完結するんでないの?
リアルタイム更新するなら navigator.geolocation.watchPosition()ってのがあるようだけど

ブラウザ対応は
Firefox (since 3.5)
Safari (since 5.0)
Google Chrome (version depends on OS)
Opera (since 10.60)
Internet Explorer (since IE 9)

モバイル
Safari Mobile (since iPhone OS 3.0)
Android (since at least Android 1.6)

参考
https://www.youtube.com/watch?v=qYFkPFtfgdI&index=7&list=PLM4pPs1mzl_N6wJuBK5Atj5LDVWDDsed1
www.w3schools.com/html/html5_geolocation.asp

87 名前:80 mailto:sage [2015/06/04(木) 08:43:54.57 ID:GeWtCH2J.net]
>>82
レスありがとうございます。
自分自身の位置を見るのではなくて、あくまでも送られてきた位置情報を使いたいのです。
例えば管理者が、部下の位置を確認するのに近いイメージかなと。

88 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 10:30:22.88 ID:ixdJmRIH.net]
そのまんま部下の端末から位置情報を管理者サーバに送るコードを書けばいいじゃないの
30秒毎に位置情報をajaxでサーバ送るとかな

89 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 10:40:42.64 ID:5pAAiATn.net]
Pythonまったく関係ないな
JavaScriptスレ行ってこい

90 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 16:22:20.43 ID:GK2i9TQ1.net]
メーリングリストにpaizaの規約違反する奴
www.python.jp/pipermail/python-ml-jp/2015-June/011408.html
最近のMLはレベルが低いねぇ



91 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 16:41:18.19 ID:9wvQs+dO.net]
いつハイレベルだったのか教えて欲しい

92 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 16:47:51.55 ID:GdYLO45N.net]
Jythonを使っています(sikuliというGUIスクリプトで)
csvファイルをスクリプト側からExcelで開きたいのですが、
ググってもいい解決方法が見つけられませんでした。
どなたか解決策を教えていただけませんでしょうか?

93 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 16:51:05.40 ID:inTZReOp.net]
・ダメだった方法とどうしてダメなのか書く
・Google先生に聞く

94 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 16:57:19.45 ID:9wvQs+dO.net]
まずexcelは起動できるんですか?


95 名前:csvはおいといて []
[ここ壊れてます]

96 名前:87 mailto:sage [2015/06/04(木) 17:44:40.55 ID:GdYLO45N.net]
>>89
今家なんで試せないんですけど

import subprocess
import os


path_to_notepad = 'C:\\Windows\\System32\\notepad.exe'
path_to_file = 'C:\\Users\\Desktop\\hello.txt'

subprocess.call([path_to_notepad, path_to_file])

こんな感じで試したのですがうまくいかなくて

>>90
もちろん起動できますよ

97 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 18:27:53.93 ID:Gjm6CwJx.net]
>>81
websocketみたいな新しいのは知らないんだけど、俺ならajax使うかなあ
スマホから位置情報送るときはflaskで送ってるんだよね?
その時にajaxでやればページリロードしなくていいはず

98 名前:ダメ五郎 [2015/06/04(木) 19:42:09.83 ID:6dpaJYI0.net]
>>80
解説ありがとうございます。なんとなく分かったような気がします。

>てことで引数を受け取ったり、初期化したりは __init__(self,第一引数,第二引数,,)のところでやるのが作法なのさ
とのことですが、selfは引数ではないのでしょうか?

さらに、__init__(self,第一引数,第二引数)で、
第一引数を使う時(初期化?)は、self.第一引数
第二引数を使う時 (初期化?)は、self.第二引数
とするのでしょうか?

99 名前:デフォルトの名無しさん [2015/06/04(木) 22:10:08.62 ID:6dpaJYI0.net]
>>> class Dice1:
... def __init__(self):
... face_num = 6
... print('初期化OK')
... def shoot(self):
... random.randint(1,self.face_num)
...
>>> b = Dice1()
初期化OK

>>> b.shoot()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in shoot
AttributeError: Dice1 instance has no attribute 'face_num'

なんでエラーになってしまうのでしょうか?

100 名前:デフォルトの名無しさん [2015/06/04(木) 22:22:38.40 ID:TmBikWH3.net]
AttributeError: Dice1 instance has no attribute 'face_num'
だから。

def __init__(self, face_num=6):
self.face_num = face_num
にすれば問題解決。



101 名前:pythonスタートブックww [2015/06/04(木) 23:20:53.90 ID:6dpaJYI0.net]
<-質問->
class Dice1:
i = 6
def __init__(self):
print('初期化OK')
def shoot(self):
return random.randint(1,self.i)

i = 6はなぜdef shoot(self)メソッドの中で使えるのでしょうか?

メソッドの引数(self)は、自分自身を参照するとのことですが、
def __init__(self):のselfは、class Dice1、つまりクラス全体を
参照しているということでしょうか?

def shoot(self)のselfは、shoot()という自分自身を参照している
のでしょうかそれともclass Dice1を参照しているのでしょうか?

selfは自分自身を参照するといいますが、いったい自分自身とは
どこのことを言っているのでしょう?

どなたか分かるかたいますでしょうか?

pythonスタートブックの説明が分からなすぎます。。。。

102 名前:デフォルトの名無しさん [2015/06/04(木) 23:42:12.44 ID:YagePnQ/.net]
>def __init__(self):のselfは、class Dice1、つまりクラス全体を
>参照しているということでしょうか?
違う

>def shoot(self)のselfは、shoot()という自分自身を参照している
>のでしょうかそれともclass Dice1を参照しているのでしょうか?
そのどちらでもない

>selfは自分自身を参照するといいますが、いったい自分自身とは
>どこのことを言っているのでしょう
Dice1クラスのインスタンス

>>class Dice1:
i = 6
def __init__(self):
print('初期化OK')
def shoot(self):
return random.randint(1,self.i)
def get_id(self):
return id(self)
>>> d = Dice1()
初期化OK
>>> d.get_id() == id(d)
True

その本読んだことないけど、ちゃんと読んだら書いてありそうだけど。
ていうか質問みてたら、明らかに本ちゃんと読めてなさそうな質問してるし、もう一度読み直したほうがいいよ
わからないところあれば公式のチュートリアルを補足に使うのもいいと思う
docs.python.jp/2.7/tutorial/index.html

103 名前:pythonスタートブックww [2015/06/04(木) 23:58:28.26 ID:6dpaJYI0.net]
>>97
>もう一度読み直したほうがいいよ

10回以上読み直してます。
インスタンスを参照するなんて文言は一言も書いていません。すべて、自分自身を参照
とか、インスタンスを「self」と呼ぶことが決められています。と記載してあります。
Pythonスタートブック P233

で、
>def __init__(self):のselfは、class Dice1、つまりクラス全体を
>参照しているということでしょうか?
違う

→じゃあ、何を参照しているのですか?

>def shoot(self)のselfは、shoot()という自分自身を参照している
>のでしょうかそれともclass Dice1を参照しているのでしょうか?
そのどちらでもない

→じゃあ、何を参照しているのですか?


pythonスタートブックには、自分自身と記載してありましたよ。

104 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 00:17:06.98 ID:3MWYDBgR.net]
「Dice型のインスタンスを用意するとき、ユーザーがどのような変数名を割り当てるかはわかりません。(...)どのような名前でDice型のインスタンスが作られても良いように、メソッドの第一引数でインスタンスを『self』と呼ぶことが決められているのです」(P.233)
「インスタンスとは、ある型に属する実際のデータ(実体)のことです」(P.94)
「データの実体のことを、インスタンスと呼ぶ
インスタンス(実体)は、初期化メソッドで作る」(P.80)
「初期化メソッドで、インスタンスを作るときの動作を細く制御できる」(P.240)
「初期化メソッドの本当の名前は、__init__というちょっと変わった名前なのです」(P.235)
(いずれも『Pythonスタートブック』より引用)

a = Dice()
b = Dice()
aとbはそれぞれDiceクラスのインスタンス。
同じクラスから作られるが実体は別。
トヨタカローラアクシオという同じ型の車であっても、
Aさんの所有しているアクシオとBさんの所有しているアクシオは実体は別、というのと同じ。
aのselfはa自身(aというインスタンス)を参照し、
bのselfはb自身(bというインスタンス)を参照している。

105 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 00:28:18.57 ID:lsMoUydE.net]
なんかいちいち煽り口調だよねこの人…
別にその本に限らないけど入門書でクラスの概念をちゃんと説明するのはページ数足らないよ

一つ上の書き込みすら読まずに「じゃあ何を参照してるのですか?」連発って何なんだこの人
クラスから作られるインスタンスを指すって書いてるじゃん

クラスはそのまま使うんじゃないんだよ
例えば車2台あるんなら車クラス1、車クラス2なんて同じクラス定義コードを書かないよね
2台なら2つの「車クラスのインスタンス」を作る
car1=Car()
car2=Car()
ここまではわかる?

106 名前:pythonスタートブックww [2015/06/05(金) 00:30:47.44 ID:15nsAZUD.net]
>>99

class Dice1:
i = 6
def __init__(self):
print('初期化OK')
def shoot(self):
return random.randint(1,self.i)

>aとbはそれぞれDiceクラスのインスタンス。
>同じクラスから作られるが実体は別。

でも、
a=Dice1()
a.shoot()と実行しても
b=Dice1()
b.shoot()と実行しても
上記コードの場合同じ結果ですよね?aもbも同じDice()を参照していますよね??

107 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 00:31:11.27 ID:lsMoUydE.net]
あらめっちゃ被った…
>>99さんの書き込み10回読んでもわからないなら、とりあえずクラスのことはよくわからないままトライ&エラーするといいよ
そのうち体でわかってくると思うので

108 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 00:38:03.45 ID:lsMoUydE.net]
同じ設計図を元に作られたからといって、そのサイコロとか車は現実世界で同じものなんですか?
違うよね?
あなたのプリウスと他人のプリウスのハンドルは同じ形してるし機能も同じだけど、別の物体だよね?
それともあなたのプリウスのハンドルは回したら世界中のプリウスのハンドルが一斉に回る?
回らないよね?
ここまでわかる?わからない?どっち?教えて?

109 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 00:59:32.98 ID:Hxz0Gz0r.net]
JavaじゃなくPythonでこのぶつかり稽古感嫌いじゃないな
クラスを理解するのにここでつまづく人も少なくないと思うから

110 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 01:07:15.59 ID:lsMoUydE.net]
selfが引数にあるから余計にわからなくなっちゃう人は多そう



111 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 01:38:05.86 ID:CO7i0u7Y.net]
サイコロ工場長の視点で解説しよう

机の上にサイコロの設計書があります class Dice1
これが 【クラス】

設計書に基いてつくったサイコロを作ろう ガッチャンガッッチャン a=Dice1() , b=Dice1() 
これが 【インスタンス】

サイコロは基本6面だから、共通の変数作っとこ  i=6   
これが【クラス変数】

ちょ 全サイコロ共通じゃなくて一個一個カスタマイズできる変数が欲しいよね  self.a = a って書くことにしよう
これが【インスタンス変数】

self はインスタンス自身を指すよ

112 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 02:07:56.35 ID:CO7i0u7Y.net]
a.shoot() はサイコロa を振ってる
b.shoot() はサイコロb を振ってる
設計書Diceを振ってるわけじゃない

クラス変数とインスタンス変数の違いについては、自分でいろいろ代入して試しながら解説を読まないとピンとこないと思う
bacspot.dip.jp/virtual_link/www/si.musashi-tech.ac.jp/www/Python_IntroProgramming/05/index-1c.html

113 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 02:40:12.22 ID:3MWYDBgR.net]
>>101
「データ型は、よりシンプルなデータ属性(アトリビュート)と関数(メソッド)の集まりでした。どのようなアトリビュートとメソッドがあるのかを決める仕組み(設計図)が、クラスという概念なのです」(P.228)

a = Dice()
Diceクラスへの参照がaに代入されているわけではなく、
Diceクラスの初期化メソッドが呼ばれ、インスタンスが作成され、インスタンスへの参照がaに代入されている。
Diceの後ろに、関数を呼び出すときと同様に()がついていることに注意。

クラスからインスタンスが作られるとき、
メソッドは同じものが各インスタンスで共有されるが、
データ属性は各インスタンスに個別にメモリが割り当てられる。

組み込みのデータ型であるリストを例に挙げると、
sort()やcount()などのメソッドはどのリストでも同じ処理だが、
具体的にどんなデータを内容として持っているかは、実際に使われるリストごとにそれぞれ違う。
それと同じ。

a = Dice()
a.shoot()
b = Dice()
b.shoot()

a.shoot()とb.shoot()が同じ内容のメソッドを実行していることはその通りだが、
同じ結果を返すかどうかはshootメソッドの内容によって決まる。
例えばそれぞれのインスタンスのデータ属性を参照してそれを元に結果を返す関数だった場合、
aとbで同じデータ属性でも具体的な値は違う可能性があるため、
その場合違う結果が返る。

ここでは、shootメソッドの内容は、1〜6の数字をランダムに返すというものなので、
a.shoot()とb.shoot()では同じ結果にならないし、
a.shoot()を繰り返し実行した場合でもその都度違う結果になる。

114 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 05:01:22.18 ID:0CNX1oFz.net]
クラスのメソッドを関数として書くと下のようになります
class構文がないプログラミング言語ではこのような形のOOPを見ることがあります

import random

class Dise:
    pass

def dise_init(self):
    self.n = 6

def dise_shoot(self):
    return random.randint(1, self.n)

def main():
    sai = Dise()
    dise_init(sai)
    kekka = dise_shoot(sai)
    print(kekka)

115 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 08:02:54.15 ID:8RwZ5SRI.net]
お前らやさしいな

116 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 08:19:25.89 ID:BJJqeoyH.net]
暇なんだろ

117 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 10:06:46.46 ID:j5ZekPWl.net]
こんなとこで解説するならブログにでやったほうが有益なのに

118 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 10:26:56.43 ID:GyFRMyRF.net]
それはどうだろ?
検索すらできないからここで聞いてるんでしょ
ブログに書いたところでたどり着かないだろうし
そもそもこんな初歩を解説しているところは既にある
情報の再生産は賢くない

119 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 11:02:22.23 ID:j5ZekPWl.net]
ってことはここで解説することも再生産になるな
なるほどなるほど

120 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 11:13:23.82 ID:C29rFbOn.net]
上の質問者ではないけど、車の例えやサイコロ工場の例はすごくわかりやすかったです。
私の中では日本語だからたまたまなんだけど、Classは型、
つまり鋳型みたいなものという理解だったのだが、だいたい合っているようでよかった。



121 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 22:31:30.92 ID:lsMoUydE.net]
ここ掲示版、それも質問スレってわかってる?

122 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 22:32:37.25 ID:CO7i0u7Y.net]
2chで解説してもブログでやっても大差ないもん
情報がばらばらになってる時点で、stackover flowみたいなとこに集積されてる英語圏とは比べものにならにあ
日本語版stackover flow

123 名前:ェリリースされたら移住しよで []
[ここ壊れてます]

124 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 22:39:58.60 ID:8RwZ5SRI.net]
>>117
ja.stackoverflow.com

125 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 22:47:21.99 ID:lsMoUydE.net]
いやそういう問題でもなくて
質問スレでわからないっていう書込みがあったからみんな答えてるわけで、それに対してブログでやれってのは意味がわからない
目の前で出血多量で倒れてる人がいるのに止血しないで「こういう人を救うために僕は医者になるんだ」と決意するぐらい遠回り

126 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 22:56:04.78 ID:Po70kg5k.net]
金曜だからハイになってるのかな?

127 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 10:40:09.46 ID:fshGdHb4.net]
PyQt5の勉強しようとIPythonでサンプルプログラム打ち込

128 名前:だらカーネル死亡してわろたw
どうやらIPythonもPyQtでできてるので干渉してるらしい
しょうがないからSpyderでやるかーと思ったら、SpyderもPyQtでできててわろた
[]
[ここ壊れてます]

129 名前:デフォルトの名無しさん [2015/06/06(土) 11:38:16.40 ID:DEqjSCNd.net]
>>119
意識不明になりかけの緊急手術の直前に本人に同意書へのサインを何枚も書かせるような感じ?

130 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 13:27:48.72 ID:MyhE4x2q.net]
>>121
ipythonはコマンドラインツールだからpyqt使ってないんだけど



131 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 17:52:09.89 ID:/Aft5CBs.net]
withが気になってるんですがどこ見てもファイルへのアクセスに便利だぐらいのことしか書かれてなくて、
それ以外の利用法がいまいち思い浮かばないです
皆さん使ってますか?

132 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 18:00:31.27 ID:9TAyXKx2.net]
それはなぜ便利なのか理解してないからでは
with使わずに書いてみればなぜ便利なのか分かるよ
どういう風に使えるのかも

133 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 18:06:40.87 ID:9TAyXKx2.net]
ブロックに入るときと出るときに定型処理を要求されるなら何にでも使える
ロックしかりセッションしかり

ってのが全てだけど、想像できないでしょ

134 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 20:54:41.78 ID:2JQblal0.net]
Withの機能って英語ネイティブの連中だと
ふだんの用法から類推できるのかな?
いまExcelでVBA書いてるけどWithの機能が
Pythonとはまた違うような…

135 名前:デフォルトの名無しさん mailto:sage [2015/06/07(日) 04:49:37.07 ID:P+H+q5eJ.net]
>>123
おかしくなる原因わかった QT衝突だけじゃなかった

1.QTメインループ発射すると、IPythonのイベントループから処理を奪ってしまう
2.Qt同士の衝突(QtConsle, Spyder)
3.Qtウィンドウを閉じてもappオブジェクトは残るので、消したつもりで二個目を作るとカーネル死

対策: 
1.IPythonのマジック関数「%gui pt5」でメインループ作成。app.exec_からは作らない。
3.appオブジェクト作成前に既に存在するかどうか確認する

app = QCoreApplication.instance()
if app is None:
__app = QApplication(sys.argv)

以外とはまる罠
4.sys.exitや quitをしない。Pythonでは正常通り動くけど、IPythonだとカーネルごと死んじゃう

136 名前:デフォルトの名無しさん mailto:sage [2015/06/07(日) 05:57:06.55 ID:J7/rKSpK.net]
かよこってだれだよ

137 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 01:17:40.83 ID:FYS9ZuUR.net]
質問です
Win8.1にPython3.4をインストールしたのですが
そこにwxPythonを導入できません
色々試しているのですがすべて失敗します

コマンド
c:\Python34\Scripts>pip install --pre –f wxpython.org/Phoenix/snapshot-builds wxpython-phoenix

結果
Exception:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\pip\basecommand.py", line 223, in main
status = self.run(options, args)
(中略)
File "C:\Python34\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2891, in parse_requirements
raise ValueError("Missing distribution spec", line)
ValueError: ('Missing distribution spec', '?f')


Python3.4でwxPythonを使うことは可能なのでしょうか?

138 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 01:50:38.99 ID:kUihiJyv.net]
-fのハイフンがおかしい。
どっか変なとこからコピペでもしたんだろう。

139 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 03:05:46.27 ID:1CV/YMqS.net]
今月Cythonの書籍が2冊ほど発売されますが、CythonはBottleやFlaskでWebページを作る場合にも高速化に役立つのでしょうか?

140 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 04:48:57.05 ID:TkpGbpl3.net]
いいえ



141 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 07:31:43.53 ID:UvAzbTzo.net]
問題設定が奇妙だ

Q.Webアプリを作る際のボトルネックがPython側にある場合、Cython高速化の役に立つのでしょうか?
A.立ちます

142 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 09:16:47.89 ID:PuuH78/z.net]
Cython ―Cとの融合によるPythonの高速化
ともう1冊はなんだろ?

143 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 09:19:35.76 ID:xp3ZJS47.net]
>>130
wxpython使うならpython 2.7を使え
どうしてもpython 3.4でやりたいならpyqt5とかpysideを使え

144 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 10:34:15.07 ID:IBO2jVeF.net]
3に対応してるwxPython開発者バージョンってどのくらい安定してるのかね?
せっかくだし是非人柱になっていただきたい

145 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 10:42:07.07 ID:IBO2jVeF.net]
>>130
てかコマンドがいろいろおかしくね?
fの前のハイフンと、末尾wxPythonのアンダーバー

pip install -U --pre -f wxpython.org/Phoenix/snapshot-builds/ wxPython_Phoenix


それでもエラーでたらファイルをDLしていれたらうまくいったって報告がいくつかあるよ

wxpython.org/Phoenix/snapshot-builds/
ここから下のほうにある最新版のwhlファイルを落として、
コマンドプロンプトでwhlがあるフォルダにいって、

pip3 install -U --pre wxPython_Phoenix-3.0.3.dev1820+49a8884-cp34-none-win_amd64.whl

146 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 07:41:01.24 ID:CCwBvSiM.net]
129です
>>138にあるwhlをダウンロードする方法でうまくいきました!
問題なく動くっぽいので今日から色々作ります
>>131>>138ありがとう!

147 名前:デフォルトの名無しさん [2015/06/09(火) 08:41:14.82 ID:il7QxJ4a.net]
どういたしまして

148 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 14:45:46.94 ID:P6xkiuvh.net]
setattrでクラスのインスタンス変数は動的に作れるようですが、
普通の変数は動的に作ることはできないのでしょうか?

149 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 15:09:07.35 ID:quZXc/6x.net]
モジュール内のスコープなら

globals()['hoge'] = 1
print hoge

でいける
関数内のスコープでは該当機能なし
locals()には書き込めない

150 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 19:14:44.56 ID:z8625JCz.net]
ubuntu pyenv
.
~/pyenv/versions/3.4.3/lib/python3.4/curses/__init__.py, line 13, in <module>
from _curses import *
ImportError: No module named '_curses'

どうすればいいんでしょうか?



151 名前:デフォルトの名無しさん [2015/06/12(金) 19:24:56.91 ID:qp6MkQCv.net]
https://github.com/yyuu/pyenv/issues/240
stackoverflow.com/questions/28840867/compiling-python-with-curses-support

152 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 23:36:54.43 ID:P6xkiuvh.net]
>>142
ありがとうございます
globals()とlocals()というdictの存在は知りませんでした 勉強になりました

153 名前:デフォルトの名無しさん [2015/06/13(土) 03:17:49.96 ID:NUKk6CPY.net]
どういたしまして

154 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 11:48:55.19 ID:AciwpV5F.net]
>>143
GoogleでImportError: No module named '_curses' でググれば一発だろうが・・・

155 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 12:11:35.04 ID:AmgidL1k.net]
そういう発想に至れないから聞いてんだろうが馬鹿か
ゴミのお前らを多少なりとも社会の役に立ててやろうとしてるのに何様だ
役立たずは土に帰れ


って思ってるでしょうから代弁してあげました

156 名前:デフォルトの名無しさん [2015/06/13(土) 12:57:33.62 ID:NUKk6CPY.net]
ありがとう
って伝えたくて

157 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 13:45:05.39 ID:d6cyRLaO.net]
検索したけど、ディレクトリがないとかコマンドが無効とかでわかんなかったから。
他のでもエラー出たし、超初心者用って書いてあるからいいのかと。

>>144
>>147
解決しました。ありがとうございました。

>>148
思ってない。

158 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 14:30:05.53 ID:AmgidL1k.net]
それは失礼した

159 名前:デフォルトの名無しさん mailto:sage [2015/06/14(日) 03:21:19.95 ID:heCu4ibl.net]
一部変な奴もいるけど気にせずに初心者はどんどん質問してくださいな

160 名前:デフォルトの名無しさん mailto:sage [2015/06/14(日) 06:00:50.39 ID:zPXILR6N.net]
>>91
notepad.exe はExcelではなく、
最初から、Windowsに付いている、メモ帳ソフトだよ


また、試してうまく行かないのなら、
そのエラーメッセージも書くこと!



161 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 11:57:46.42 ID:UXrUNkbZ.net]
#!/usr/bin/python

これ書く必要ないと思うんですが何で皆書いてるんですか?

162 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 12:27:08.68 ID:CEFvwvlb.net]
なぜ書く必要がないんだ
ドザかキサマ

163 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 12:40:00.85 ID:/ZcDX49o.net]
常にpythonコマンドの引数として実行してるから
プログラム中に書く必要が無いっていう意味かもよ

164 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 12:53:12.01 ID:CEFvwvlb.net]
なるほど

165 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 14:12:49.62 ID:nCXuemSD.net]
sympyのチュートリアルにtype(_)みたいに引数がアンダーバーの例が結構出て来るんですけど
どういう意味なんですか?

166 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 14:12:58.25 ID:+3PE6uzO.net]
{'a': 0.1, 'b': 0.4, 'c': 0.5}
こういう確率分布に沿ってランダムにa~cを返すようなスマートな書き方って無いでしょうか

今はこんなリストを生成してrandom.choice(list)してるんですが酷過ぎますよね
[a,b,b,b,b,c,c,c,c,c]

167 名前:デフォルトの名無しさん [2015/06/15(月) 15:12:19.08 ID:6FCFdlNB.net]
>>158
直前に実行した結果の値

168 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 15:13:37.21 ID:6FCFdlNB.net]
>>159
それでいいよ

169 名前:デフォルトの名無しさん [2015/06/15(月) 15:50:40.17 ID:23esbdI0.net]
>>159
import random

def get_random_abc_smart(random_abc):
r = random.random()

for name, value in random_abc.items():
if r < random_abc[name]:
return name
r -= random_abc[name]

raise ValueError()

if __name__ == "__main__":
random_abc = {'a': 0.1, 'b': 0.4, 'c': 0.5}

for i in range(10):
abc = get_random_abc_smart(random_abc)
print(abc)

170 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 16:15:41.68 ID:/ZcDX49o.net]
>>158
もう回答ついてますが、補足すると、
対話モードでPythonを実行しているときに、
Pythonインタプリタが最後に表示した式がその都度、
ビルトイン変数である _ に代入されます。
>>> 2
2
>>> _
2
>>> _ + 8
10
>>> _
10



171 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 16:24:13.59 ID:/ZcDX49o.net]
>>159
randomモジュールの公式ドキュメントの最後のところに、
「ありがちな作業として、重み付けされた確率のrandom.choice()を作ることがあります」
として、コード例が二つ、挙げられていますよ。

172 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 16:47:22.20 ID:+3PE6uzO.net]
>>164
3系のドキュメントには確かに書いてありました
ramdomにそういう関数があるんじゃないかと思って隅から隅まで読んでたんですが、
検索で最初に出て来たのが2.7のドキュメントだったのでそっちを読んでました
新しい方のドキュメントを読むようにしないとダメですね
ありがとうございました

173 名前:デフォルトの名無しさん [2015/06/15(月) 17:11:38.07 ID:23esbdI0.net]
確率なら私は、>>162
を押すけど・・・

何これ滅茶苦茶になってる。
書き直し

import random

def get_random_abc_smart(random_abc):
 r = random.random()

 for name, value in random_abc.items():
  if r < random_abc[name]:
   return name
  r -= random_abc[name]

 raise ValueError()

if __name__ == "__main__":
 random_abc = {'a': 0.1, 'b': 0.4, 'c': 0.5}

 for i in range(10):
  abc = get_random_abc_smart(random_abc)
  print(abc)

174 名前:デフォルトの名無しさん [2015/06/15(月) 17:18:53.77 ID:23esbdI0.net]
3分ルール。
3分以内だから書き直して良し。

import random

def get_random_abc_smart(random_abc):
 r = random.random()

 for name, value in random_abc.items():
  if r < value:
   return name
  r -= value

 raise ValueError()

if __name__ == "__main__":
 random_abc = {'a': 0.1, 'b': 0.4, 'c': 0.5}

 for i in range(10):
  abc = get_random_abc_smart(random_abc)
  print(abc)

175 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 20:33:01.67 ID:TKCLtNo1.net]
向いてないよお前

176 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 23:57:55.27 ID:kyy3xBtw.net]
>>155
CGIで動かすなら書く必要はあるけどそれ以外で書く必要ある?

177 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 00:01:08.17 ID:b7Inp4eU.net]
なぜCGIで動かすために必要なのか分かれば用途も分かるんじゃ?

178 名前:デフォルトの名無しさん [2015/06/16(火) 07:25:00.65 ID:5/n3i9e1.net]
cron が実行する時とか書いておいた方がいいじゃん

179 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 08:32:21.66 ID:550Q7INi.net]
cronだろうがCGIだろうがその気になれば書かんでも動くけどな

180 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 19:45:46.31 ID:RI7md6Vl.net]
むしろお前の気分など微塵も関係ないわw



181 名前:デフォルトの名無しさん [2015/06/16(火) 19:50:16.97 ID:A7ypZhpv.net]
長すぎるスクリプトがあって2つに分割したいのですが、
最初のスクリプトに定義した定数(みたいなもの)に後のスクリプトからアクセスできません

foo.py
--------------------
FOO = "foo"
import bar

bar.py
--------------------
print foo.FOO #エラー



2つのスクリプトから共通に定数を参照することはできないのでしょうか?

182 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 20:01:32.04 ID:VP0cCW3e.net]
bar.pyの中で先にimport fooしてからfoo.FOOを使う

183 名前:デフォルトの名無しさん [2015/06/16(火) 20:10:01.18 ID:A7ypZhpv.net]
ありがとうございます
循環的にimportしてもいいのでしょうか

184 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 00:11:28.65 ID:zdNvSItr.net]
>>1
hをわざわざ抜かんでもいいよね
リファラー漏れたって構わんだろ

185 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 05:37:25.05 ID:kNv7Xml9.net]
>>174
これどうするんだろ 試してみたけどエラーになるし
共通変数だけ3つ目のスクリプトを作ってそこに記述するとか?

186 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 06:32:07.61 ID:LjoNHjol.net]
共通定数を定義した3つ目を作ってimportするしかないんじゃないの

187 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 07:01:05.48 ID:81IWqnhU.net]
モジュールから公開するものは定数、関数、クラス
つまり再代入しない書き換えない前提のものだけにするべきだ

188 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 09:21:43.00 ID:7KhQ6AFD.net]
Cのincludeとかと勘違いしてんじゃね

189 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 09:57:22.15 ID:oj1Iwp6E.net]
フレームワークとかで見かける@app.routeって書き方が何なのかを学びたいんですが
この機能についてPythonのドキュメントのどこに載ってますか?

190 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 10:44:14.01 ID:IK4mFl8b.net]
デコレータのことなら
用語集のdecoratorの項目
言語リファレンスの複合文の項目の関数定義およびクラス定義の項目
英語でよければPEP318とPEP3129



191 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 10:57:46.10 ID:0Srw9Hnu.net]
お前もデコレートしてやろうか

192 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 12:01:08.92 ID:l25RfAPf.net]
>>176
docs.python.jp/2/faq/programming.html

関数の中とかでimportするようにすれば循環を解消出来る

193 名前:デフォルトの名無しさん [2015/06/17(水) 12:31:24.46 ID:r36nFuSU.net]
デコレータの使い所がつかめない

194 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 13:17:06.78 ID:0Srw9Hnu.net]
無理につかむ必要なし
スルーして先に進め

195 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 15:58:52.42 ID:QfA6ONQ8.net]
今からpythonを始めるなら3系がいいの?

196 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 18:06:59.25 ID:Qul178yg.net]
何をしたいのか明確で必要なライブラリがPython3対応なら3
そうでないなら2
何をしたいのか分からないボクちゃんは2にしとけ

197 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 19:22:24.73 ID:/LVZEvtO.net]
何いってんだ
やりたいことが決まっててそれが2しか対応してないなら2
それ以外でいまから2やる理由などない
時代遅れも甚だしい

198 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 19:39:54.69 ID:lLs1gGcm.net]
パイソンをやめたいんだが

199 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 19:56:55.43 ID:Qul178yg.net]
お前はもう家の子じゃない
勘当だ!でてけ!

200 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 00:54:51.07 ID:847qU7kl.net]
いまさら2から始めるのはないと思う。

ある程度使えるようになることにはサードパーティのライブラリでも3対応になってるはず。



201 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 04:26:12.53 ID:R8kyw3Rj.net]
言語本体だけ見れば2系を選ぶ理由はもう全く無い
日本人が2系で入門するとUnicodeDecodeErrorを最低100回以上は見る事になって辛いよ

いまだに2を使ってる人が多い理由は大きくわけると2つあって
・言語本体以外のライブラリが3系に対応していない
・今まで書いて蓄積して来た2系のコードを3系に移植するのが大変なのでそのまま2で開発続行

今から始めようっていう人にとって2と3どっちを選ぶかは結局のところ使うライブラリが対応してるかどうか
ここ1~2年で急激に3系へのライブラリ対応が完了つつあるので絶対3をお勧めしたい
3系やるなら3.3か3.4で 3.0~3.2は色々な事情でダメ もうすぐ3.5が出るけど初心者は様子見で3.3か3.4で入門して欲しい

202 名前:デフォルトの名無しさん [2015/06/18(木) 06:16:54.84 ID:qj3FW4Pj.net]
なんで3から2のライブラリを使えるようにしなかったんだ

203 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 06:44:21.31 ID:Zk4Vy/pu.net]
使えるようにしつつ満足のいく言語仕様の変更ができなかったから
に決まってるだろうがよぉー

204 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 07:42:22.87 ID:SQas+mXZ.net]
残ってるサードパーティーライブラリの癌はgeventだな
あれのせいでイベントループ系のフレームワークが全滅

205 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 07:59:34.32 ID:aPbhwQoO.net]
3.5はバラ色の未来ですねわかります

206 名前:デフォルトの名無しさん [2015/06/18(木) 08:01:31.33 ID:rHijCFtm.net]
そんなに3が凄いならいっちゃおうかな

207 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 08:06:55.17 ID:7/h/PzkV.net]
>>197
kwsk

208 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 09:44:38.69 ID:Gsq65laO.net]
GAE待ちとか

209 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 09:51:46.91 ID:7/h/PzkV.net]
それな

210 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 19:37:20.29 ID:rESrKy3o.net]
G!A!E!



211 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 20:00:46.48 ID:qj3FW4Pj.net]
GAEと言えば7月にMasterSlave店じまいセールだな

212 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 00:29:37.61 ID:pwEd9MNq.net]
>>186
デコレータは機能を追加する

例えば、ログを表示する、log() という関数がある時、
f1() の内部で、log()を呼び出すと、
f1()のソースコードを変更しなければならない

def f1():
 log()

デコレータなら、f1()のソースコードを変更しなくてもよい
@log
def f1():


また、イベントのように、複数の機能も追加できる
@log
@sort
def f1():

下のデコレータから呼ばれるので、
ソートしてから、ログを表示する


また、関数宣言として、デコレータを使うこともできる
@atexit.register
def f1():

f1()はプロセス終了時に、呼び出される

213 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 05:26:58.65 ID:XxXXr7Os.net]
pythonのatexitがマルチプロセスなプログラムと相性が悪い件
taichino.com/programming/1199

214 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 09:58:16.55 ID:u8L6JLuV.net]
>>194
IronPythonとJythonが今のところ2系だからって理由も追加しておいてくれ

215 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 10:21:50.56 ID:Rpgf6TLH.net]
そういえばJython2.7出てたね
つい先月まで2.5相当の骨董品だった環境を
使っている人間がどれだけいるのか知らんが

216 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 11:25:33.18 ID:gzzqdCD8.net]
質問スレはここでいいでしょうか?
こんな感じのテストパターンを計算でiPython Notebookで作りたいのですけどどのライブラリを使うのがいいでしょうか?
グレーの濃度をガンマ2.2用に変えたものを作りたいのです
https://commons.wikimedia.org/wiki/File:SMPTE_RP-133_small.png
本当に作りたいのはAAPM-TG-18-PQCのパターンです(輝度が0.2%違うラインが一杯並んでいる)

217 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 11:26:22.69 ID:gzzqdCD8.net]
追記
https://upload.wikimedia.org/wikipedia/commons/8/88/SMPTE_RP-133_small.png

218 名前:デフォルトの名無しさん [2015/06/19(金) 11:47:20.00 ID:DjrbuAgm.net]
質問です

----------------
import sys, os, time
import subprocess

def newproc(t):
p = subprocess.Popen('hoge.py', shell=True, bufsize=4096,
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
close_fds=False)
if p.pid == 0:
time.sleep(t)
sys.exit()
else:
print 'forked: %d' % p.pid

newproc(5)
newproc(10)
print os.wait()[0]
print os.wait()[0]
----------------
これを hoge.py というファイルで保存して実行したときに
子プロセスかどうかの判定で失敗するようなのですが
どうすれば pid を正しく取得出来ますか?

環境は Windows 7/8.1 です

219 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 12:40:35.57 ID:Rpgf6TLH.net]
正しく取得できてるから0じゃないんだよ
subprocessとos.forkは違う

220 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 12:43:26.32 ID:Rpgf6TLH.net]
期待を裏切っておくと
Windowsでfork相当のことはできないよ
考え直すんだね



221 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 12:44:25.26 ID:DjrbuAgm.net]
>>212
そのようですね
ありがとうございます

後出しで済みませんが
子プロセス側で自分が子プロセスかどうかを判別する方法はどうすれば良いのでしょうか?

222 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 12:47:40.56 ID:Rpgf6TLH.net]
手っ取り早いのは起動する時に引数を指定することだろう

223 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 12:52:56.49 ID:Rpgf6TLH.net]
>>206
これよお
forkとatexitシステムコールのman読めば分かることだが
forkはatexitの登録も継承するんだよ(execは継承しない)
だからforkした回数だけ起動されて当たり前だ
Pythonがどうとか御託を並べる前と後にRTFMしろ脳プリンが

224 名前:デフォルトの名無しさん [2015/06/19(金) 13:12:03.39 ID:4Vx29HIc.net]
えっ?RTFM?
retweet format?
aRT fm radio?

> RTFMしろ脳プリンが
脳プリンさんってコテハンがRTFMするんです???

225 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 13:17:30.92 ID:X0p5IxAK.net]
>>216
実は私もそう思ったんです

>どうするのが綺麗なのか解りませんが、今のところ終了処理にpidを渡して無理矢理処理を振り分けています。

みたいなふざけたこと言ってるので

例えば

atexit.register(exitfunc)
fork_process(5)
fork_process(10)



fork_process(5)
fork_process(10)
atexit.register(exitfunc)

にするだけで良いんじゃないかと

226 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 13:23:36.39 ID:r/oYBuQO.net]
お客さん意外と辛辣ね…

227 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 13:42:54.95 ID:FzphauAa.net]
少なくとも
「相性が悪い」
というのは的外れな表現ですね

228 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 17:54:53.41 ID:yCMOiWgQ.net]
>>209
作ったことないから適当に言うけど
計算はNumpy
描画はPIL(Pillow)って感じでは

229 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 00:39:34.78 ID:m/GPi3MC.net]
いまどきなぜ cv をつかわずに Ipl なのか

230 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 04:18:02.13 ID:q1zQqH1k.net]
ざーっと基礎を押さえたあとネットでDive into pythonを読んだんだけど良書すぎて困惑した
日本語訳もけっこういいし
これ日本語のpython入門本とか立場ないよなw



231 名前: []
[ここ壊れてます]

232 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 05:02:07.47 ID:05xfGfjh.net]
あれはまさにPythonを知ってる人向けの再入門本じゃないかなあ
少なくともプログラミング未経験者にはわけわかめだと思う

233 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 06:02:17.49 ID:YRdpRuuN.net]
立場ないとか意味不明

234 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 08:24:30.35 ID:ZS6UT+M0.net]
デコレータ関連で調べていくうちに出会った組込関数のstaticmethod
これは何をする関数なんだろう
ドキュメントには以下の解説があるが、これでわかる人いる?

staticmethod(function)
function の静的メソッドを返します

235 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 08:41:42.24 ID:837NZnyd.net]
>>225
>>223 は Dive into Python の翻訳者かな?

236 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 08:42:52.18 ID:837NZnyd.net]
>>226
@classmethod と @staticmethod の違いについて述べよ

237 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 08:57:58.95 ID:ZS6UT+M0.net]
>>228
メソッドってクラス内にある関数のことでしょ
それが静的・動的という言葉と何の関係があるのかさっぱりですわ

238 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 09:17:31.21 ID:837NZnyd.net]
なんだアスペか

239 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 09:43:41.94 ID:VCJJENu0.net]
超初心者に分かるように説明するのは難しいなあ

240 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 10:02:36.41 ID:ZS6UT+M0.net]
>>230
中傷はお腹いっぱいだから解説が欲しいなあ

>>231
公式ドキュメントがアレな時点で覚悟はしていたが
人に説明するのが難しい概念なのか
じゃあ追い求めるのはやめとくよ
クラスを作ることのない自分にはたぶん不要でしょ



241 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 10:47:37.17 ID:EgcPeahS.net]
>>214
multiprocessingを使え

242 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 11:15:04.01 ID:JS1ARM9p.net]
>232
staticおじさん乙

243 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 11:32:33.23 ID:q1zQqH1k.net]
>>232
公式ドキュメントの日本語は酷いよなw 
自分がググったなかではこれが一番分かり易かった

stackoverflow.com/questions/12179271/python-classmethod-and-staticmethod-for-beginner

244 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 18:06:53.98 ID:EIopszoh.net]
wxpythonで、例えばwx.Panelクラスを継承する場合

class MyPanel(wx.Panel):
  def __init__(self, *args, **kwargs):
    wx.panel.__init__(self, *args, **kwargs)
    pass

と書きますが、このときコンストラクタに任意の引数を追加したい場合はどうすれば良いのでしょうか

class MyPanel(wx.Panel):
  def __init__(self, value=0, *args, **kwargs):
    wx.panel.__init__(self, *args, **kwargs)
    self.value = value

このようなことをしたかったのですが、これだとエラーが出てしまい困ってます

245 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 18:13:02.77 ID:BwBYUmlz.net]
value=0, *args
を逆にしたら通らないか?
今試せないから間違いならごめんよ

246 名前:デフォルトの名無しさん [2015/06/20(土) 18:35:54.79 ID:m1xwf2/2.net]
>>236
class Parent(object):
def __init__(self, *args, **kwargs):
print("in Parent()")
print("args =", args)
print("kwargs =", kwargs)

class MyChild(Parent):
def __init__(self, *args, **kwargs):
# print("MyChild() kwargs =", kwargs)
if not "value" in kwargs:
kwargs["value"] = -1
self.value = kwargs["value"]
Parent.__init__(self, *args, **kwargs)

247 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 19:02:56.23 ID:n/MPx6ZH.net]
Parentにvalueを渡しても良いなら
value = kwargs.setdefault('value',0)

渡したらダメなら、上の後で
del kwargs['value']

248 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 20:01:07.38 ID:m/GPi3MC.net]
class MyPanel(wx.Panel):
  def __init__(self, *args, **kwargs):
    super(self, MyPanel).__init__(*args, **kwargs)
    pass

249 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 23:07:53.60 ID:vDkYH4Pd.net]
>>211
linuxでは、ps コマンドや、
/proc/[pid]/stat で、プロセスの状態を見れる

pid は、プロセス ID。
ppid は、このプロセスの親プロセスの PID

つまり、PIDから、ppidがわかる

逆に、親から子は、簡単にはわからない。
親子は、1対多の関係だから

Windowsでも、同じだと思う

250 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 02:00:24.62 ID:4AMULbus ]
[ここ壊れてます]



251 名前:.net mailto: >>235
ありがと、せっかくだから読んでみたが、やっぱ今の自分には無理そうだ
クラスを使わない自分にはサンプルコードから使いどころが見えてこない

あとデコレータは「Python文法詳解」の本に公式より詳しい説明があったから
読んでみたら、おぼろげに見えてきた
要は、Aという関数のオブジェクト作成時(呼び出し時ではない)にBという関数を
呼び出す仕組みであり、このBをデコレータと呼ぶらしい

ただ、この仕組みが実務で何の役に立つのか、初学者はサンプルから読み取れない
それが困ったところだ
[]
[ここ壊れてます]

252 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 05:40:21.64 ID:w9NVD211.net]
説明はしないけど標準ライブラリを使って下のような例を挙げておく

import functools

@functools.lru_cache(maxsize=None)
def fibonacci(x):
    if x <= 1:
        return x
    else:
        return fibonacci(x-1) + fibonacci(x-2)

253 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 07:11:08.54 ID:DNozaEUf.net]
>>242
前にselfで質問してた人かな?

254 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 08:40:34.98 ID:/JS5ft5/.net]
decorator で引数の型チェックするとかはあったな
実用化成功してるとするなら普及しないのが不思議だけど

255 名前:デフォルトの名無しさん [2015/06/21(日) 10:04:24.99 ID:WzG+ayAj.net]
>>234
そいつは static おじさん以下だろ
static おじさんの方が百倍マシ

256 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 14:19:07.26 ID:cvS/M2oc.net]
初めてのプログラミングでpython学ぼうと思うんだけど
おすすめのサイトとか本とかある?

257 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 18:44:15.00 ID:0g6EdVmv.net]
料理の本でも書った方がマシ

258 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 23:02:16.53 ID:YQGPuxlq.net]
100円のKindleのん

259 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 21:35:08.52 ID:cyUuMoVS.net]
GUIやりたいんだけど、
GTKとかQtとかwxとかいろいろあるみたいだけどどれがいいの?

260 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 22:37:04.46 ID:mEuvJOmb.net]
Tkinter



261 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 22:53:48.77 ID:1mBrqKiW.net]
邪道な選択肢かもしれんが
IronPythonでWindows FormとかXAMLとか

262 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 00:53:22.47 ID:KSGpzryS.net]
Tkinterはないわ

鉄板だけどライセンスが欠点の Qt
ライセンスが緩い Wx、 PySide(開発停滞中)
モバイル端末のマルチタッチでも遊べる kivy

263 名前:デフォルトの名無しさん [2015/06/23(火) 02:29:50.57 ID:VWqqouSb.net]
python3 以降でeasyDialogs の代わりになるものってないのですか?

264 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 02:34:00.43 ID:C02P46O1.net]
>>247
みんなのPython 第3版

265 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 02:38:55.91 ID:oDIwBgEe.net]
Qtって鉄板なんだ
Wxのほうがポピュラーなのかと思ってた

266 名前:デフォルトの名無しさん [2015/06/23(火) 07:44:24.48 ID:p2719NN5.net]
pygameのことも忘れないで

267 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 08:15:33.54 ID:rzZlb/rV.net]
ブラウザだってguiだわ

268 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 08:24:15.40 ID:p2719NN5.net]
ブラウジャはjavascriptだからつまらん

269 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 08:48:29.15 ID:LQs/3Np0.net]
Brython

270 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 16:31:27.73 ID:pUNJxfqT.net]
横レスだけど、Tkinterってダメなの?
これから勉強しようとしてる初心者ですが、最終的にGUIアプリを作りたいので
一番簡単そうに思えるTkinterを勉強しようと思ってた
見た目がダサくなるらしいのはちょっと調べて分かったけど
それ以外にも難点があるんですか?



271 名前:デフォルトの名無しさん [2015/06/23(火) 17:26:52.29 ID:y0iv9VtA.net]
何度でも言うよ
GTK は糞

272 名前:デフォルトの名無しさん [2015/06/23(火) 19:38:47.63 ID:fcD/yaWG.net]
tkinterでつく

273 名前:ったことあるけど、別に悪くないよ
tkdocsのチュートリアルが結構しっかりしてる
[]
[ここ壊れてます]

274 名前:デフォルトの名無しさん [2015/06/23(火) 19:56:55.85 ID:R8jZDKIo.net]
pathで躓いてる

binというディレクトリの下でしか動かないバイナリ を別のディレクトリから動かすにはどうすればいい?

275 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 20:06:10.26 ID:kckphfdj.net]
>>264
そのディレクトリをbinにリネームする以外に打つ手はない

276 名前:デフォルトの名無しさん [2015/06/23(火) 20:21:51.72 ID:wv+JII7F.net]
スレちだし、聞き方が生意気だから教えてやらない

277 名前:デフォルトの名無しさん [2015/06/23(火) 20:23:57.19 ID:wv+JII7F.net]
>>265
余計な事、言わんと黙ってて悩ませれば良かったのに!

278 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 01:29:41.38 ID:e2++j1ht.net]
>>262
開発環境と手に入る情報量の差?
GUIをコードだけで開発してたら効率悪いってんで、PyQt・PySideにはQtDesighner(QtCreator)、
wxPythonにはwxGladeっていうビジュアル的な開発環境がある
TkInterにもあるんだろうけどこれだってやつを聞かない

使用人口の差で困ったときに答えが見つかりやすいのが前者2つなんじゃないかと

279 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 02:30:10.98 ID:D119baBl.net]
>>266
きもちわる…

280 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 09:12:24.62 ID:qjEYFQ4L.net]
>>263
安心しました
ありがとう



281 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 10:00:21.60 ID:ySM4xiac.net]
>>205
なんで変更しなければならないんですか?

282 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 10:04:20.61 ID:L+KbIIX3.net]
>>268
Gladeもと元々GTKな気がする

283 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 10:47:21.39 ID:GWC9jKuq.net]
>>271
どこぞのNPO代表小学生みたいなこと言ってんじゃねえ

284 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 12:36:40.01 ID:rwNizRxv.net]
windowsならpyqt5一択
pythonでgui作る時点でそーすこーど公開を気にしてんじゃねえよ
個人ごときがpythonで作ったguiを有料で配るのなんてなんて需要ねえよ
仕事でやるなら会社がライセンス買うだろ
だから個人でwindows向けはpyqt5でいい

285 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 12:38:03.35 ID:rwNizRxv.net]
macでもlinuxでもwindowsでも動かしたいならtkにしろ
tkかpyqt5の二択で十分

286 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 20:14:15.78 ID:VjgLzB4a.net]
Linuxメインで簡単なGUIツール作るんだったら何がいいの?

287 名前:デフォルトの名無しさん [2015/06/26(金) 03:39:38.77 ID:TeHEn9G0.net]
何度も言うよ
GTK は糞

288 名前:デフォルトの名無しさん [2015/06/26(金) 09:30:50.13 ID:/s2R/Gz1.net]
pythonにCでいうところの#ifdef DEBUGみたいのないの?

289 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 09:55:38.57 ID:/s2R/Gz1.net]
すまん自己解決。if __debug__で、消すときは-Oオプションつけて実行か。

290 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 09:59:29.10 ID:FScQfCb1.net]
インデントの闇は深い



291 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 23:30:23.51 ID:lmpExqE6.net]
if a == b and c == d:
こういう文があるんですが行が長くなる場合があるので複数行に分ける方法を教えてください
if a == b and
c == d:
だとエラーになりました

292 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 23:42:02.09 ID:tcE5k47V.net]
()

293 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 23:45:24.88 ID:Ni9a9rCI.net]
全体を括弧で括るか、バックスラッシュを継続させる行末に置く

(a == b and
c == d)

a == b and \
c == d

294 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 00:22:25.19 ID:KOTMWkTF.net]
ファイルを読み書きモードで開いた場合、書き込み前の文字列が残っちゃうんですが
どうやって上書きできますか?

[a.txt]
a
b
c
[test.py]
with open("a.txt", "r+") as fp:
____fp.write("z")

295 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 00:25:49.25 ID:KOTMWkTF.net]
ぐぐってすぐ解決策見つかりました

296 名前:デフォルトの名無しさん [2015/06/27(土) 04:40:06.78 ID:8NDoKwy7.net]
ぐぐってからききなさい

297 名前:岡村隆史「嫌なら見るな」 mailto:sage [2015/06/27(土) 08:29:56.28 ID:yJT4XZQ/.net]
新聞購読を止めて、月3000〜4000円、年間36000〜48000円の節約

新聞にそのような金を払う価値はない

ただでさえ要らない
なぜなら新聞は国民の方を向いておらず、広告主のための報道しかしないからだ

それに金を払って購読することは自らの首を絞める自殺行為に等しい

298 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 08:41:08.09 ID:p3jpLBAy.net]
class MyClass:
  def __init__(self):
    self.data = (1, 2, 3, 4, 5)
    self.index = 0
  def __iter__(self):
    return self
  def next(self):
    if self.index < len(self.data):
      self.index += 1
      return self.data[self.index - 1]
    else:
      raise StopIteration

for n in MyClass():
print(n)

Python2でエラーが出なくて、Python3でエラーが出るのですが理由がよくわかりません
超初心者にもわかるように解説お願いします

299 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 09:08:16.96 ID:ZoA4Szzx.net]
__next__() を使うとうまくいくと思います。
下記に関連する説明があります。
diveintopython3-ja.rdy.jp/porting-code-to-python-3-with-2to3.html#next

300 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 09:09:19.67 ID:Z90g4rXx.net]
仕様が変わったからです
next(self)は廃止され__next__(self)になりました



301 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 09:18:56.46 ID:p3jpLBAy.net]
>>289
>>290
理解しました、ありがとうございます。

302 名前:デフォルトの名無しさん [2015/06/28(日) 02:53:32.39 ID:x9WH9E/Z.net]
forループ内で加工したpandasのdfをすべて行で連結していきたいのですが
どうやればいいのでしょうか?
for i in range(0,10):
...
print(df)
で出力されるdfをそれぞれ連結させていくイメージです

303 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 03:48:54.20 ID:n02SzJDq.net]
https://ideone.com/4Qy3GL
StringIOでも良かろう

304 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 08:54:24.66 ID:zKGg/T0h.net]
私の日本語力では>>292が何がしたいのかわからないのでそれっぽいの貼っていきますね
pandas.pydata.org/pandas-docs/stable/merging.html

305 名前:デフォルトの名無しさん [2015/06/28(日) 09:18:15.12 ID:x9WH9E/Z.net]
>293
うまくいかないため、すみませんがもう一度お願いします。
以下で得たい出力を得るにはどうしたらよいでしょうか?

data = {'A':[0,0,0],'B':[4,5,6],'C':[7,8,9]}
df = Dataframe(data)
for i in range(0,3):
df['A'] = 1*i
print(df)

得たい出力
A B C
0 0 4 7
1 0 5 8
2 0 6 9
0 1 4 7
1 1 5 8
2 1 6 9
0 2 4 7
1 2 5 8
2 2 6 9

実際の出力
A B C
0 2 4 7
1 2 5 8
2 2 6 9

306 名前:デフォルトの名無しさん [2015/06/28(日) 09:30:12.24 ID:x9WH9E/Z.net]
>>293
あれ、スペースが抜けてしまいました
df['A'] = 1*i
の前にスペースです
forを抜けた後で得たい出力を使いたいです

307 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 10:50:57.03 ID:zKGg/T0h.net]
import pandas as pd

data = {'A': [0, 0, 0], 'B': [4, 5, 6], 'C': [7, 8, 9]}
frames = []
for i in range(3):
 data['A'] = i
 frames.append(pd.DataFrame(data))
print(pd.concat(frames))

これでいいのかな
全角スペース入れたから直してね

308 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 11:00:55.00 ID:zKGg/T0h.net]
import pandas as pd

data = {'A': [0, 0, 0], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
frames = []
for i in range(3):
 df['A'] = i
 frames.append(df.copy())
print(pd.concat(frames))

pandas上で加工するならこっちか

309 名前:デフォルトの名無しさん [2015/06/28(日) 11:15:31.30 ID:x9WH9E/Z.net]
>>298
できました!
ありがとうございます!!

310 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 17:53:46.47 ID:5QGv7jmz.net]
ライブラリのosとos.pathって何が違うんですか?
osをimportしてもos.path使えますよね
os.pathってなんのために分かれてるんですか?



311 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 18:40:22.51 ID:n02SzJDq.net]
歴史的な経緯

312 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 20:58:44.00 ID:92vB0cyt.net]
os.walk/os.path.walk
みたいにはっきりしてほしい

313 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 21:00:42.00 ID:Y74sbUOE.net]
PythonでWebやりたいんだけど、どのフレームワーク?ライブラリ?を使えばいいの?
MySQLとかも使いたいんだけど

314 名前:デフォルトの名無しさん [2015/06/28(日) 21:02:44.67 ID:I4CbUbOX.net]
聞く前に作ってみたほうが早いんじゃね?

315 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 22:13:06.89 ID:92vB0cyt.net]
Dja
いや
なんでもない

316 名前:デフォルトの名無しさん [2015/06/28(日) 23:01:49.82 ID:WE2Gt4yN.net]
python3まったくわかんないです 助けて

317 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 06:06:28.45 ID:um2QSBwJ.net]
2は分かるのかよコラァ

318 名前:デフォルトの名無しさん [2015/06/29(月) 06:15:48.27 ID:PjeoFJ6W.net]
ここのひとか
kanae.2ch.net/test/read.cgi/php/1409423461/

319 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 15:57:57.09 ID:06ru4abg.net]
windowsのbrackets使っているひといませんか?
設定で教えて欲しいのですが
flake8 lintの設定ができなくて
defaultPreferences.jsのpathを変えてみたのですが
うまく表示されません。
わかるかたがいれば教えて下さい。

320 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 17:22:56.95 ID:rbxhDT3n.net]
>>303
kanae.2ch.net/test/read.cgi/php/1329996601/l50
専用スレが合ったのであっちで回答しました



321 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 18:37:37.37 ID:mk7+9Q5S.net]
>>310
トンクス

322 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 23:40:20.99 ID:WnsvTum+.net]
>>303
BottleとSqlalchemyで基本を掴んだらPyramidかDjangoへ。

323 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 00:11:30.42 ID:3BrZHobQ.net]
python2のドキュメントに関する質問です
ドキュメントに載っていないようなコンストラクタの引数はどこで見つけているのでしょうか?
例えばasyncore.dispatcherにキーワード引数で、
sockという引数がコンストラクタの引数として指定できるようなのですが、
ドキュメントには書いてありません

このような引数はソースコードを直接読む以外に見つける方法はないのでしょうか

324 名前:308 [2015/06/30(火) 01:14:19.91 ID:U4iTFw9A.net]
bracketsをやめて正式版がでたatomに移行しました。
atom-beautifyでautopep8も動くし
linter-flake8でflake8も使えるようになりました。
ただautocomplete-plus-python-jediをインストールしたのですがエラーで動きません。
これが動くといいのですが

325 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 01:16:51.36 ID:BpE3E8n5.net]
自分で定義した関数は取得できるが組み込みの引数はできない
ソースコードを読むしかない

326 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 01:17:54.51 ID:BpE3E8n5.net]
>>314
何をどうしたのか
何のエラーがでたのか
こういう情報をきっちり書いてもらわないと無視されるよ

327 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 02:54:11.78 ID:FzvalkoK.net]
>>306
「みんなのPython 第3版」を読む

328 名前:313 mailto:sage [2015/06/30(火) 09:03:30.25 ID:YGccIQHd.net]
>>316
すみません。
atom-beautify
autocomplete-plus-python-jedi
file-icons
japanese-menu
linter
linter-flake8
linter-jshint
minimap
script
のパッケージをインストールして
補完機能が働くたびに
Uncaught Error: This socket has been ended by the other party
events.js:141
View Issueを押すと
https://github.com/tinloaf/autocomplete-plus-python-jedi/issues/21
に飛びます
https://github.com/tinloaf/autocomplete-plus-python-jedi/issues/21

329 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 12:53:01.89 ID:j2uh7iS9.net]
atom使ってないから知らないけどプラグインがatomの正式版に対応してないんじゃないの?
Emacしか知らないからそんなクソみたいなエディタ使ったことないから知らないがソフトウェア板で聞いたほうが早いんじゃないのか
anago.2ch.net/test/read.cgi/software/1393852602/l50

330 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 12:56:33.08 ID:j2uh7iS9.net]
あとjedi開発者のreadmeに載ってたけどhttps://atom.io/packages/autocomplete-pythonとか他のプラグインを試してみるとか



331 名前:317 mailto:sage [2015/06/30(火) 14:21:31.34 ID:YGccIQHd.net]
>>319-320
ありがとうございます。
他のインストール時にバージョンが対応してない表示がでるのもあるので
インストール時に警告はでていないので大丈夫だと思います。
autocomplete-pythonも入れてみたのですがこちらも動きません。(エラーはなし)

ATOMの方で聞いてみます。
パッケージインストール時にすごく重くなるので
それが原因かもしれません。

332 名前:317 mailto:sage [2015/06/30(火) 14:33:09.56 ID:YGccIQHd.net]
autocomplete-plus-python-jediの設定にある

Complete Arguments for Functions
This will cause the suggestions for functions to include their arguments

のチェックを外してみるとエラーなく使えました。

333 名前:デフォルトの名無しさん [2015/06/30(火) 21:36:46.13 ID:yag52Vu+.net]
例えばなんですが
テキストエディタ上で選択されている文字を取りだして
加工してテキストエディタに戻す
このようなことはpythonで可能でしょうか?
可能ならヒントなどを教えていただけると助かります。
よろしくお願いします。

334 名前:デフォルトの名無しさん [2015/06/30(火) 22:03:09.99 ID:w+OVDF0x.net]
これ使え
Zim - A Desktop Wiki
Developing custom tool scripts

Remove line breaks custom tool
https://github.com/jaap-karssenberg/zim-wiki/wiki/Remove-line-breaks-custom-tool

335 名前:デフォルトの名無しさん [2015/06/30(火) 23:11:52.70 ID:yag52Vu+.net]
>>324
ありがとうございます。
試してみます。

336 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 23:25:45.78 ID:heQlMeyV.net]
>>323
Pythonで出来るのは「文字列を加工する」部分だけだな。
「テキストエディタ上で選択されている文字を取りだしてPythonに渡す」
「加工した文字列をPythonから受け取ってテキストエディタに戻す」
この部分は使ってるOSとテキストエディタの機能に依存する。
俺の使ってるOSとテキストエディタでは出来る。
あなたの使っているOSでもできる筈だがあなたの使っているテキストエディタでそれができるかどうかはわからない。

337 名前:デフォルトの名無しさん [2015/06/30(火) 23:52:35.57 ID:yag52Vu+.net]
>>326
レスありがとうございます。
325さんのOSは何でしょうか?
自分はmacなのですが、
OS付属のAppleScriptというスクリプトでは可能で
AppleScriptとPythonを組み合わせて使うことが出来ることまでは
ネットで調べてわかったのですが
Python単独でもできないのかなと質問してみました。

338 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 00:19:56.04 ID:1d/Huarr.net]
>>327
俺もOS Xですよ。
俺が使ってるのはCotEditorというテキストエディタで、
これはAppleScriptだけでなくPythonやRuby、Perlといったスクリプトと直接文字列をやり取りすることができます。
他にもJedit XっていうテキストエディタだとAppleScriptで同様のことができるので、
その場合だとあなたのおっしゃる通りAppleScript経由でPythonを実行することになりますね。
俺の知ってるエディタだとそれぐらいですが、他にも同様のことできるテキストエディタはあると思いますよ。miとか。

あと以前使っていたコンテキストメニューのプラグインにシェルスクリプトを実行できるのがあったので、
これ使ったらテキストエディタの種類に依存せずに、文字列を選択→右クリックからスクリプトを実行、ていうのができるんじゃないかな。
ただこれは何年も使ってないので今のOSでも使えるかどうかわかりません。興味あれば調べてみますが。

339 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 01:30:21.19 ID:ftDlylXp.net]
プログラミングに使えるテキストエディタならプログラム実行機能ぐらいはついてる
vimでもemacsでもsublimetextでも

340 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 03:52:02.49 ID:Wf/LILTy.net]
python2.7でコーディングしてます
vimになれるためとりあえずはプラグインなしで書いてましたが、そろそろもう少し便利な機能



341 名前:ヘないものかと辛くなってきました。
pythonを書く上でおすすめのプラグインはありますか?
[]
[ここ壊れてます]

342 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 07:22:47.74 ID:WrSpGcQO.net]
>>326
Pythonで出来るのは「文字列を加工する」部分だけだな。
「テキストエディタ上で選択されている文字を取りだしてPythonに渡す」
「加工した文字列をPythonから受け取ってテキストエディタに戻す」


MS Word なら win32com で全部 python で桶

343 名前:デフォルトの名無しさん [2015/07/01(水) 09:26:39.82 ID:M4xoLOwL.net]
>>328
詳しくありがとうございます。
普段Jedit+AppleScriptを使っていて
Pythonを使えないのかなと考えたんですけど
環境に環境次第なんですね。

CotEditor面白そうですね。試してみます。
コンテキストメニューは自分で調べてみます。

344 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 10:33:09.71 ID:1/FsmcZH.net]
>>330
jedi

345 名前:デフォルトの名無しさん [2015/07/01(水) 20:47:17.26 ID:20mfxfYF.net]
>>330
Vundle

vim-indent-guids
nerdtree
nerdcommenter
gruvbox

jedi-vim
syntastic + flake8

プラグイン入れたり消したりするなら、Vundleみたいなプラグイン管理系のプラグインいれとくと楽

346 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:54:11.62 ID:NJjcaf84.net]
クラスのインターフェイスってやらないのがpythonの流儀ですか?

347 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:12:53.39 ID:jqzDD9Cy.net]
流儀というか
ダックタイピングの言語でやる価値はあまりないような
抽象クラスなんかは普通に活用するが

348 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:26:13.45 ID:byy0SjFx.net]
コードにインターフェースを定義するか
ドキュメントにインターフェースを定義するかの
違いだからね。

俺としてはコードに書きたいんだが、
書いた所で守らないこともできるし、
そこら辺は実装は仕様を守らないとダメよという
ルールを強制させられる方がいいな。

349 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:46:32.23 ID:HevIhCYT.net]
class Test:
__def show(self):
____print(100)

obj = Test()
これを
o['show']()
みたいにしてアクセスする書き方を教えてください

350 名前:337 mailto:sage [2015/07/01(水) 22:51:59.18 ID:HevIhCYT.net]
訂正

class Test:
__def show(self):
____print(100)

このクラス名を変数nameに格納して、nameからTestクラスのオブジェクトを作成する方法を教えてください
name = "Test"



351 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:52:10.14 ID:jqzDD9Cy.net]
__getitem__を定義してshowメソッドを返せばいいのでは

352 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:53:22.46 ID:jqzDD9Cy.net]
全然意味違うじゃねーか
原型とどめてねえ物を訂正というのかお前の出身地では

353 名前:337 mailto:sage [2015/07/01(水) 22:53:30.96 ID:HevIhCYT.net]
PHPだと
$obj = new $name()でいけるんですが
pythonで
name = "Test"
obj = name()
って書いても作れませんでした

354 名前:337 mailto:sage [2015/07/01(水) 22:54:30.23 ID:HevIhCYT.net]
>>341
すみませんorz

355 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 00:11:36.17 ID:/Kue2IfO.net]
>>342
obj = globals()["Test"]
で、いけないかな?

356 名前:デフォルトの名無しさん [2015/07/02(木) 00:37:01.55 ID:P1VXT2gY.net]
>>> obj = eval("{}()".format(name))
>>> obj
<__main__.Test instance at 0x0000000002DB9BC8>
>>> exec("obj = {}()".format(name))
>>> obj
<__main__.Test instance at 0x0000000002DBB1C8>

357 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 00:43:13.14 ID:DrUxfqIB.net]
そんな直感的じゃないことしないとできないもんかな
Pythonらしくないな

358 名前:デフォルトの名無しさん [2015/07/02(木) 00:45:37.33 ID:P1VXT2gY.net]
動的にコード生成するのってきもちわるいよね

359 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 02:50:01.54 ID:hbh5BBnI.net]
>>338-329
わろた

360 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 03:18:17.47 ID:hbh5BBnI.net]
>>342
o = globals()['Test']()

または

mo = __import__('hoge.test', {}, {}, [])
o = getattr(getattr(mo, 'test'), 'Test')[]



361 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 03:21:07.48 ID:hbh5BBnI.net]
なんか変にミスった

>>342
o = globals()['Test']()

または

mo = __import__('hoge.test', {}, {}, [])
o = getattr(getattr(mo, 'test'), 'Test')()

362 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 15:33:57.81 ID:3bRQFrby.net]
ひでえ記事だな
和訳ドキュメントの文章をちょっと変えてほぼ丸コピペしただけじゃん
ttp://qiita.com/sesame/items/3c03ac7ebeecb060af4f

363 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 16:37:28.62 ID:TdrXBmul.net]
例え丸コピペだったとしても
お前が文句を言う筋合いは無い

例え丸コピペだったとしても彼が投稿した事で助かる人は居るかもしれないが
2chでウダウダ言って晒して馬鹿にしようとしてるお前の行動で
助かる人は誰もいない

364 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 17:13:23.00 ID:bMzAU0w9.net]
>>351
非情に助かりましたありがとうございます

365 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 17:27:22.39 ID:WW9VzXPI.net]
確認してきたら引用ってレベルを超えて盗作じゃねえかwww

366 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 17:46:59.14 ID:x/POinmv.net]
こういう事があるから翻訳するのだるくなるんだよなぁ

367 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 22:57:49.71 ID:vUmxObwA.net]
最近qiitaひどくなってきてるからな。
内容のレベルは低いし、
どこかのサイトのコピペだし。

368 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 00:16:24.15 ID:yuhxNbcX.net]
噛み砕いてくれてるブログ記事は初心者にとってとはてもありがたいです。

369 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 00:41:23.15 ID:C6li+8cU.net]
どこも噛み砕かれてないという件

370 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 11:29:24.04 ID:OisPLDc8.net]
リストから、特定の文字列を含む要素を抽出する上手いやり方ってありますか?



371 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 11:38:00.16 ID:ZITOwf17.net]
>>359
サンプルがわからないので適当に

data = ['aaa','bbb','ccc','abc','cba']


test = [i for i in data if 'a' in i]


print(test)

372 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 11:59:35.22 ID:oEEd62YQ.net]
[i for i in ...

373 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 13:18:03.16 ID:2GnRhJxr.net]
>>359
data = ['aaa','bbb','ccc','abc','cba']
test = filter(lambda word: "a" in word, data)
print(*test)

374 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 20:02:37.48 ID:Ms6a58jc.net]
>>362
このwordって何?

375 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 20:18:00.49 ID:Ms6a58jc.net]
あ、lambda <引数>:<式>か
ちなみに最後の,dataって何してるの?
"a" in data,data
すると真偽と配列が全部帰ってくるけど、内部でどういう処理が行われてるわけ?

376 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 20:23:05.96 ID:eeinSX8C.net]
あ?調子のんなハゲ

377 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 21:26:15.70 ID:A29HzBau.net]
馬鹿なことを聞いている気がするが教えて欲しい
pypiでclassifier+キーワード検索ってどうやるんだろう?
そもそもできるのか?

378 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 22:13:42.22 ID:VwEn5rR7.net]
xmlrpcのインターフェースはsearchとbrowseで完全に分離されてるよね。
searchではclassifierが使えず、browseでは検索ができない。
なぜこんな仕様にしたんだろう。

379 名前:デフォルトの名無しさん [2015/07/03(金) 23:02:34.50 ID:QSBaxiRc.net]
import cv2

とだけ書かれたコードを実行しようとすると

UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 20: ordinal not in range(128)

と出てしまいます
moduleが見つからないというわけではなさそうなのですが。。。
解決法を御教示していただきたいです

380 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 23:17:24.97 ID:ONNQmPA2.net]
2chにエラーをコピペする前にグーグルでエラーを検索しようとは考えないんだろか

あと質問するときにバージョンすら書かないのはなんでなんだろか

いくらくだスレだって最低限の礼儀っていうかそういうのあんだろ



381 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 23:36:28.31 ID:KFfcBnqi.net]
>>364
自己解決しました
最後の,dataってfilterの第二引数だったのね

382 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 23:43:56.37 ID:IVmenh/A.net]
>>368
ぐぐったら1ページ目にいくつか解決策が見つかったけどもうみたの?

383 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 23:29:04.76 ID:RxNq2g3r.net]
とりあえず2は早く滅びて欲しい
非英語圏の初心者は辛すぎでしょ

384 名前:デフォルトの名無しさん [2015/07/05(日) 05:20:08.61 ID:XIvEwRaJ.net]
たぶん、0x82 みたいな文字が無くて、
decodeできないのだろう

Rubyや一般的なエディタなどでは、
不明な文字は、? に置き換えられる

385 名前:デフォルトの名無しさん [2015/07/06(月) 17:43:18.44 ID:3teVeJk8.net]
そうか不明な文字は例外で全部?にすればいいのか

386 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 21:45:11.64 ID:m90nGVji.net]
try使うってこと?いやそれはまずいよ
decode encodeの時点で変換できない文字に対する立ち振る舞いを設定するのがいい
errorっていうオプションあるんでそこでignoreにしたら無視、つまりスルーする
置換したりもできる

387 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 23:11:52.08 ID:REKKz9Ad.net]
"もじれつU"の様な機種依存文字を含む文字列を
%xxの形にエスケープされたものを、urllib.parse.unquoteしようとした時
Uが消えてしまうのですが、消えない様にする方法を教えてください。

388 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 02:45:51.12 ID:JbsGCfj6.net]
UTF-8でないコードでパーセントエンコーディングされてると思われるので
unquoteの第二引数で正しいencodingを指定する

389 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 07:39:17.88 ID:rV+pZ+JS.net]
>>377
もじれつ の部分はeuc-jpでunquoteできているのですが
U だけができない。
encoding変えると もじれつの部分さえunquoteできない。

390 名前:デフォルトの名無しさん [2015/07/07(火) 08:06:36.04 ID:eOuV1Gqp.net]
フォント



391 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:09:35.56 ID:Ge7MDcMZ.net]
消えるってどう消えるんだよ
\uFFFEで置換されるはずだろ

392 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:19:26.66 ID:Ge7MDcMZ.net]
もし\uFFFEへの置換をさせたくないなら
CodecInfoを定義してcodecs.registerで登録する
あるいはエラー処理関数を定義してcodecs.register_errorで登録する

393 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:22:57.78 ID:Ge7MDcMZ.net]
あとはbackslashreplace使えば
表示はできないけど情報は落ちない

394 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:30:53.40 ID:oR9xV2kd.net]
pythonって主にどういう分野で使われているんですか?
pythonじゃないと出来ない、或いは他の言語だと書きづらいなどの処理が有るんですか?
昔、私の知合いの超優秀な人がpython絶賛していたので関心有ります。

395 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:42:16.93 ID:JbsGCfj6.net]
>>378
それはコードがEUC-JPじゃない
euc_jis_2004かeuc_jisx0213を試してみて

396 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 09:08:41.41 ID:N/5cXPjN.net]
文法にそこまで気を使わなくていいので、
プログラマー以外にも人気。
自分は物理シミュレーションに使用してる。

397 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 09:55:01.60 ID:Ge7MDcMZ.net]
日本でPython使っている奴の98%は統計や言語処理、機械学習などの研究目的
ソースは俺調べ

Web?誰も使ってないよ

398 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 10:02:38.04 ID:KY0I5Qgs.net]
>>383
PerlやRubyの守備範囲に加えて科学技術やデータ分析ライブラリが充実してるので、
研究者に好んで使われるところが一番特徴的だと思う
スクリプト言語なんで計算速度は遅いんだけどnumpyっていうライブラリを通せばCとほぼ等価
これが重要インフラになってて科学技術ライブラリが星の数ほど産まれてる
また可読性高い文法なので理工系学生のファースト言語に選ばれることが多い

C、JAVA、JavaScriptとは守備範囲が違いすぎて比較にならないけど、
RubyPerlPHPが出来ることは

399 名前:全部できた上でアカデミックな方向に突出して強いのがPython []
[ここ壊れてます]

400 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 10:05:32.86 ID:H29+ArEW.net]
たのしいRuby 第4版、2013
みんなのPython 第3版

この2冊を、この順で読んで。

そうすれば、この2つの言語が、
ほぼ同じだと言うことがわかる



401 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 10:24:52.36 ID:oR9xV2kd.net]
>>385,385,386,387
詳しい説明ありがとうございました。
私の知り合いも大学の数学の先生でした。確かに研究者好みなんですね。
最近Webプログラミング勉強中でJavaScriptをある程度習得できたので
次にRuby,Perl,PHP,Pythonのどれかをやってみようと思ったのですが、
Pythonにします。

402 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:18:30.59 ID:NbSxZEiE.net]
>>381
replaceした場合でしょ?置換は
ignoreしてるから
ignoreやめると例外が発生する

>>384
これ試してみます

403 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:38:03.08 ID:Ge7MDcMZ.net]
デフォルトはreplaceだろうが
ignoreしてるって一言でも断りがあったかボケナス

404 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 21:11:38.84 ID:NbSxZEiE.net]
>>391
失敬

405 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 21:59:34.86 ID:N4S2iI2W.net]
python3.xで日付を与えるとその日が月の何周目か返してくれるってのを探してるんだけど誰か知らない?

406 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 22:50:53.31 ID:i7XTlt4K.net]
月の何周目ってどういう意味
その月の何回目の何曜日っていう意味
それともカレンダー表示した時の何列目っていう意味

407 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 22:52:32.02 ID:oR9xV2kd.net]
>>394
多分後者じゃあないか

408 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 23:53:42.28 ID:NbSxZEiE.net]
euc_jis_2004で解決しました。
ありがとう

409 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 02:56:45.44 ID:xAyjZhMy.net]
後者なら
datetime型のweekdayで、与える日付の月の1日(ついたち)の曜日を取得
→(調べる日+1日の曜日シフト) / 7
でわかるんじゃないかな
1日の曜日シフトってのは、例えば左端が日曜日始まりのカレンダーなら
日曜日なら + 0
月曜日なら + 1
って感じ
割った答え+1で行がわかる
あまりで列がわかる

410 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 05:21:29.45 ID:Y+kE74C9.net]
import calendar



411 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 15:14:08.50 ID:0vLepN94.net]
wxPythonってもしかして3.x系使えない…?

412 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 00:09:04.93 ID:nypWSsiv.net]
docs.python.jp/3/library/xml.html
このページものすごく大切なことが書いてあると思うんだけど翻訳がおかしい

413 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 18:45:02.70 ID:wjer6XlU.net]
おかしいと感じるほどの英語力とPython力があるのなら
君が翻訳担当になってもいいのよ?

414 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 04:14:09.67 ID:a8irpPFK.net]
>>399だけど、

誰か3.x系で使えるおすすめのGUIのライブラリ?教えてください

415 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 05:25:43.26 ID:tfwLFx83.net]
言語的にアカデミックな方向に特化してるってことは、やっぱりこのスレにはポスドク難民とか高学歴ニートがけっこういたりすんのかね

416 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 09:37:54.98 ID:kVbIsLFs.net]
Python3
数万行のテキストファイルをイテレータで、最終行から1行目方向に
読み出したいんですけど出来ませんか?
メモリーは数十KBしか使えないので、readlinesで読みだして
逆順に変換するのはムリなのです。

417 名前:デフォルトの名無しさん [2015/07/10(金) 10:01:49.15 ID:cwv+HnzL.net]
seek
setpos

418 名前:デフォルトの名無しさん [2015/07/10(金) 10:10:10.14 ID:cwv+HnzL.net]
ごめんsetposは忘れて

qiita.com/t2y/items/ef66c871731bddd8ef1d

419 名前:デフォルトの名無しさん [2015/07/10(金) 10:54:04.29 ID:01rWRpTa.net]
>>403
ネットワークエンジニアだけど使ってるよ

420 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 12:17:44.11 ID:0KQmg ]
[ここ壊れてます]



421 名前:FVg.net mailto: >>404
メモリーが少ないなら、1行の長さ制限が必要
[]
[ここ壊れてます]

422 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 21:27:20.43 ID:tfwLFx83.net]
>>407
仕事で使うの?趣味?

423 名前:デフォルトの名無しさん [2015/07/10(金) 21:47:28.48 ID:ClCVGawJ.net]
>>404
offsetを記録してfseek使ってって思ったけど、
単純には無理そう。
2万個の要素を持つlist, tupleで160kbのmemoryが必要だ。

>>> L = [None] * 20000
>>> L.__sizeof__()
160040
>>> tup2 = tuple([None] * 20000)
>>> tup2.__sizeof__()
160024

C拡張を書いて頑張るしかないんじゃないの?
>>> 4 * 20000
80000
素のPython3では無理。
が、>>404への答え。

424 名前:デフォルトの名無しさん [2015/07/10(金) 21:56:08.47 ID:ClCVGawJ.net]
>>404
素のPython3では無理だ。
Cで、offsetをmemberに持つ一方向listの構造体作る戦法でいこう。
readlineで読み込む毎にoffset記録していく。
しかないよ。

Cでmemory切り詰めても数十kbのmemoryではぎりぎりだもの。
数十を具体的に言うとどれくらい?10?40?70?

425 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 21:58:40.63 ID:UloSnGtD.net]
>>404
stackoverflow.com/questions/2301789/read-a-file-in-reverse-order-using-python

上から6番目のreadlines_reverseしか試してないけどしっかり動いてそう

426 名前:デフォルトの名無しさん [2015/07/10(金) 22:15:23.79 ID:ClCVGawJ.net]
>>412
def filerev(somefile, buffer=0x20000):

これか、最後まで一度飛んでおいて、
buffer分、後戻りして読み込んでsplitして、
またbuffer分、後戻りして、、、
の繰り返しでいけるんだ。
勉強になりました。
2chすげーな!

427 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 13:00:42.51 ID:Evu65U1k.net]
>>402
PySideでいいんじゃね。pipでさくっとインストールできるし。
あとどうしても3系でwxPythonがいいならここからダウンロードできる。
wxpython.org/Phoenix/snapshot-builds/

428 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 21:56:05.14 ID:rYJP34gT.net]
会社のソラリス上のpython2.6でどうしてもほしい機能がある。助言をくれ。

ログ.logってテキストファイルの中身が下記のようだとして

0000000a 11111111 0000000b 22222222
0000000c 33333333 0000000a 11111111

ログ.log ファイルに対して0000000aを指定すると

11111111
11111111

という風にラベルの後のデータだけ抜き出したファイルを作成してくれるスクリプトなのだけど。

python勉強中だがこのスクリプトが急ぎでほしい
教えてくれ

429 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 22:06:49.82 ID:oXXQGP14.net]
sedだけで出来そうな気がするwww

430 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 22:13:09.76 ID:rYJP34gT.net]
>>416
sedって知らなかったありがとう。スクリプトできれば月曜日にほしいから今日明日で頑張って作る予定
今日は家のPCにubuntu入れたよ



431 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 22:20:06.39 ID:frozGINP.net]
0000000a 11111111 0000000a 0000000a
0000000c 0000000a 0000000a 11111111
っていうパターンがあった場合はどこを抜き出したらいいの

432 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 23:06:47.60 ID:6O+dLUsd.net]
>>418
0000000a 11111111 0000000a 0000000a
0000000c 0000000a 0000000a 11111111

なら
11111111
0000000a
0000000c
0000000a
11111111
にする

超単純に、指定した4バイトのパターン(例では0000000a)を見つけたらその直後の4バイトを抽出したい。

建設的な指摘に感謝!

433 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 23:36:30.53 ID:oXXQGP14.net]
ここまで書いたけど後がよくわかーんなーい、しくしく(;o;)

import re
with open('ログ.log') as f:
 l = [re.findall(r'0000000a (\S*)', item) for item in [line for line in f]]
print(l)

434 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 23:45:58.02 ID:oXXQGP14.net]
>>419
あ、>>420は開業後の000000cには対応できんな・・・

435 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 01:51:01.90 ID:V3tyjNbC.net]
# -*- coding: utf-8 -*-
f = open('ログ.log', 'r')
L = [] #ここに出力したいのを入れていく
F = f.read().split() #半角スペースと改行コードで区切ってリストに
for i,d in enumerate(F): #enumerateは何回目のforloopかをiに記録する
 if d == "0000000a": #指定した文字列だったら
  L.append(F[i+1]) #リストの次の文字列が欲しいもの
print(L)

もしlogファイルが相当大きい場合はファイルを2行づつ読むとかやった方がいいかも
4バイトとか欠損データは考慮してない

436 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 07:26:47.55 ID:ixUGyiXY.net]
2行ずつ読むぐらいなら、前の文字列を覚えておく方が楽

437 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 07:45:02.33 ID:EY9Ri2mE.net]
>>420
>>422
ありがとう!
テストしてみる!!

438 名前:デフォルトの名無しさん [2015/07/12(日) 07:58:29.04 ID:ixUGyiXY.net]
....は空白の代わり

with open('ログ.log') as f:
....last = ''
....for line in f.readline():
........for word in line.split():
............if last == r'0000000a':
................print(word)
............last = word

ファイルを全部メモリに読み込んで良いなら、

with open('ログ.log') as f:
....last = ''
....for word in f.read().split():
........if last == r'0000000a':
............print(word)
........last = word

439 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 23:26:07.79 ID:bcTxDEgF.net]
大変助かりました!
ありがとう!!

440 名前:デフォルトの名無しさん mailto:sage [2015/07/14(火) 22:37:05.11 ID:apYZaEjz.net]
rubyの[1..10]みたいなのってpythonにはありませんか?
range(1, 11)ってやるのが一番短いですか?



441 名前:デフォルトの名無しさん [2015/07/14(火) 23:41:42.95 ID:Iv0YaWuW.net]
んだんだ

442 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 05:03:39.16 ID:W+0V5wr0.net]
なんで未満指定なんだろうね

443 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 08:03:14.49 ID:Es/kK6ei.net]
スライスと同じ理由かね
本当のところはguidoに聞かないと分からないけど

444 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 08:24:23.35 ID:Es/kK6ei.net]
ちなみにスライスの理由というのは

>>> s = 'abcdef'
>>> s = s[0:3] + s[3:len(s)]
True

となるようにしたかったという話

445 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 08:46:24.00 ID:Es/kK6ei.net]
よく見ると等号が足りない

446 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 11:00:07.38 ID:EyOqG4HO.net]
単にC言語の感覚と同じにしたじゃんない?
Pythonはあえて残してる部分がちらほら見受けられる

int i;
for (i = 5; i < 10; i++) {
    printf("%d\n", i);
}

for i in range(5, 10):
    print(i)

447 名前:デフォルトの名無しさん [2015/07/15(水) 11:20:15.06 ID:PEfcCBMc.net]
>>430
rangeは関数だから気に入らなきゃどうとでも出来るから、スライスの方が重要だね。

a=range(4)
a[4:0:-1]
ってやると、不思議な感じになる。

正しくは、a[4::-1]とかa[::-1]

448 名前:デフォルトの名無しさん [2015/07/15(水) 14:51:31.70 ID:LSJGAlFE.net]
pythonがどういう流れで動くのかを図で解説している記事ありませんか?

449 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 15:14:18.08 ID:Es/kK6ei.net]
流れってなんだ
パソコンはなぜ動くのかレベルの話か?

450 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 15:14:50.48 ID:PDrqXUBW.net]
プログラムはなぜ動くのかって本があったと思う



451 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 22:29:36.34 ID:n27Ug+NB.net]
python で作った web アプリをスマートフォンのストレージに保存して、それを任意のブラウザから実行することは可能ですか?

python で作ったスクリプトをスマートフォンで動かしたいのですが、QPython や SL4A は入れたくないので、上記の発想に至った次第です。

なお、私はそもそも Web アプリが何なのかもよくわかっていないので、トンチンカンな質問をしているかもしれません。ご容赦ください。

452 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 22:57:36.67 ID:KI5mj/c8.net]
解説するのは面倒くさい
無理だと思え

453 名前:168 mailto:sage [2015/07/15(水) 22:59:26.83 ID:n27Ug+NB.net]
>>439
ありがとうございます。
別の方法を考えます。

454 名前:デフォルトの名無しさん [2015/07/16(木) 00:05:47.22 ID:A7eEJIoC.net]
>>438
ローカルストレージ使うんだったらHTML5とJavascriptでアプリ作るとか?
Pythonは関係ないか

455 名前:デフォルトの名無しさん [2015/07/16(木) 04:33:03.68 ID:MREKRM2C.net]
brython

456 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 07:10:05.39 ID:y2OuNFMd.net]
スマホでPythonを動かしたいってどんな用途なんだ
Pythonはテキストデータ加工専用言語だと思ってる俺には想像できん

457 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 07:22:22.31 ID:LIw9URyA.net]
馬鹿には無理

458 名前:デフォルトの名無しさん [2015/07/16(木) 07:48:07.99 ID:/b6luSAZ.net]
>>438
入れたくないならあきらめましょう
入れたくない理由なんてどうせくだらねえ理由なんだろうけど

459 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 08:11:52.88 ID:6s3Asl9o.net]
>>441-442
ご紹介ありがとうございます。
brython より python スクリプトが動くこと、確認できました。

460 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 16:22:40.86 ID:FwVCRsFY.net]
むしろテキストデータ加工にしか使ってない人の方が少ないと思う

多分>>438はDjangoあたりでアプリ作ってサーバーを立てずに
ローカル(スマホ)だけで動かせないか?みたいなことを模索したんじゃない
まあそういうのならブラウザで完結するJavascriptが得意中の得意なのでそっちの方がいいと思うけど



461 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 16:34:14.78 ID:JsJrinDm.net]
awsにでも立てるとか
プログラミングなんて1年以内に90%飽きるから
ほとんどの人間は無料分だけで間に合うはず

462 名前:デフォルトの名無しさん [2015/07/16(木) 20:32:50.46 ID:A7eEJIoC.net]
プログラミングだけを目的にすると確かに飽きる

463 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 20:59:08.62 ID:8UcfF16i.net]
rubyのbundlerみたいにプロジェクトごとにパッケージを分けたいんですが
venvやvirtualenvだと仮想環境を分けるのでpython本体をアップグレードした時に再度構築し直さないといけないのが面倒です

464 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 21:01:28.55 ID:8UcfF16i.net]
ググって便利なものをみつけました
https://github.com/Deepwalker/pundler

465 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 02:12:54.65 ID:WgF9+eDU.net]
Qpython入れている奴いるのか?
あれ中華アプリじゃないか。

466 名前:デフォルトの名無しさん [2015/07/18(土) 07:12:47.04 ID:oDsD2wef.net]
>>427-434
Rubyの範囲演算子は、「..」「...」の2つある

3..5 → 3,4,5 (5を含む)
3...5 → 3,4 (5未満)

また負のインデックスは、末尾から数える
0..-1 → すべての要素を表す

467 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 07:31:19.49 ID:lzEf6NGn.net]
>>453
それがどうした?
それは>>427-434の会話に何か有効な知見を加えるのか?

468 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 07:55:07.39 ID:OXmClLpi.net]
他の言語はこんなことができるんだぞ!と書かれてもここP

469 名前:ython スレだしなぁ
うんうんそうだねとしか
[]
[ここ壊れてます]

470 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 08:00:34.26 ID:jN6NYLvO.net]
そんな目くじらたてることかよ…



471 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 09:04:50.07 ID:OGP7IcNL.net]
まあ、ここ3日ほどのkadongo38川上量生と
shi3z清水亮ほど攻撃される理由があるとは思えない

472 名前:デフォルトの名無しさん [2015/07/18(土) 11:10:25.55 ID:/T3VXxy+.net]
川上さんまたなんかやらかしたん?

473 名前:デフォルトの名無しさん [2015/07/18(土) 12:01:42.45 ID:/T3VXxy+.net]
自己解決
これが原因か
www.amazon.co.jp/dp/4004315514

474 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 12:29:40.59 ID:/T3VXxy+.net]
これは貼れないのか
togetter.com/li/847364

475 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 12:49:43. ]
[ここ壊れてます]

476 名前:97 ID:o4iyQyYi.net mailto: "{:02d}".format(1)

この2の部分を変数aに入れたいんですがエラーでダメでした
"{:0" + a + "d}".format(1)

TypeError: Can't convert 'int' object to str implicitly

変数で値を管理したいんですがどうかけばいいですか?
[]
[ここ壊れてます]

477 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 12:51:37.26 ID:aTAx2eLl.net]
あとスレチみたいなので目玉付く前に引っ込みます
anond.hatelabo.jp/20150716100058
togetter.com/li/847777
coresugo.com/kadowa-kawakami/
d.hatena.ne.jp/shi3z/20150718/1437173802
d.hatena.ne.jp/shi3z/20150717/1437087254
ほんとうにありがとうございました

478 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 12:54:13.58 ID:aTAx2eLl.net]
>>461
"{:0" + str(a) + "d}".format(1)

479 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 12:55:24.44 ID:47zg+pIq.net]
("{:0" + str(a) + "d}").format(1)

480 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 13:11:33.78 ID:o4iyQyYi.net]
>>463
>>464
カッコで囲むと望む結果になりました
何でカッコつけたらえらーにならないんでしょうか
docs.python.jp/3/library/stdtypes.html#str.formatみましたがこれについて載っていません



481 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 13:15:31.87 ID:15GkacxM.net]
>>461,464
>>> a = 2
>>> '{:0{}d}'.format(1, a)
01

482 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 16:19:55.60 ID:KW5V467a.net]
すいません、pipの環境をつくろうと思い
get-pip.py
を持ってきたのですが、インストールする方法が分かりません・・・
インストールと言う言葉が合っているのかすら不明ですが。。

483 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 16:51:55.45 ID:KW5V467a.net]
pipはどうやら無事入ったようなのですが、以下のように出てしまい、つまづいています・・・
具体的には、youtube-dlというのを走らせたいのですが

Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> sudo pip install youtube-dl
SyntaxError: invalid syntax

と、出てしまうのです。。

484 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 17:24:00.59 ID:iPFcwwwg.net]
>>468
Python3か2.7.9以上ならpipはもとからはいってるはずだけど、ディストリビューションによったりするのかな

あと、pipを実行するのはPythonインタープリタ上ではなくコマンドプロンプトとかターミナル

(my_env) C:\Users\Kaji\my_env>pip install youtube-dl
Downloading/unpacking youtube-dl
Installing collected packages: youtube-dl
Successfully installed youtube-dl
Cleaning up...

485 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 17:31:28.07 ID:KW5V467a.net]
>>469
すいません、IDLE ってコレ、エディタであって、実行うんぬんとは関係なかったんですね・・・

486 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 22:40:17.94 ID:q+K0D9Kt.net]
>>468
pythonでやりたいことがyoutube-dlだけならWindows用の実行ファイルが
公式で用意されてるんで素直にそれ使った方がいいよ

487 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 23:19:23.25 ID:KW5V467a.net]
>>471
それを使ってたんですが、使いこなせるように勉強してみようかなぁと思ったんですが
あまりにも難しくて・・・
出直してきたほうが良さそうですねw
とりあえず、YouTube動画を保存する目的は果たしているので、少しずつ勉強してみようかと思います

488 名前:デフォルトの名無しさん [2015/07/19(日) 17:43:17.23 ID:qsMi3+rD.net]
>>463-465
>"{:0" + str(a) + "d}".format(1)

( )で囲まない場合、"d}".format(1) の部分が、
先に処理されてしまって、エラーになるのでは?


>>472
「みんなのPython 第3版」を読めば?

489 名前:デフォルトの名無しさん mailto:sage [2015/07/19(日) 23:26:10.54 ID:Xne2bw2/.net]
python のファイル読み込みで
ある文字列が含まれる行から下に6行とって来て処理を施して別ファイルに保存したいです。
(grep -A6 *** >>outputのようなことをしつつ処理を施したい)
うまい方法を教えてください。

490 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 01:00:04.87 ID:1kLeVcDt.net]
>>474
ある文字列が二行連続で出てきた場合、どっから6行とるの



491 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 04:08:04.78 ID:saoe/X12.net]
例えばC言語のソース
----------------------
#include <stdio.h>

int main(void)
{
  int num, i;
  printf("2以上の整数を入力してください\n");
  scanf("%d",&num);
  for (i = 2; i <= num; i++){
    if(i == num){
      printf("%dは素数です\n",num);
    }
    else if((num % i) == 0){
      printf("%dは素数ではありません\n", num);
      break;
    }
  }
  return 0;
}
------------------------
から作ったtest.exeに整数を入力して
test.exe内で出力された文字列を全て取得するみたいなプログラム
はどうやって書けばよいのでしょうか
いまいちsubprocessを使いこなせません

環境はpython2.7,Windows7,VisualStudio2013です
よろしくお願いいたします

492 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 08:44:00.43 ID:gMPbYmvA.net]
python sample.py < test.exe

[sample.py]
# python3
print(input())

493 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 08:47:19.23 ID:gMPbYmvA.net]
subprocessについてはドキュメントにサンプルコードがあるからみろ
docs.python.jp/2/library/subprocess.html

494 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 22:52:39.12 ID:saoe/X12.net]
>>478
ありがとうございます

もうひとつ、.communicate()[0]の[0]ってどいう意味なんでしょうか

495 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 22:56:44.04 ID:mx9ysNLA.net]
communicateはstdoutとstderrのtupleを返すので
[0]はstdoutを指す

ただstdoutしか要らないならsubprocess.check_outputを使った方が手っ取り早い

496 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 00:14:40.34 ID:FJtQ/kTm.net]
>>475
ありがとうございます。
取得先のファイルは一種のログファイルで、6行毎に記録される仕様になっています。
なので、もし連続するようなことがあればエラーを返して停止する仕様にします。
素直にgrep 使ってシェル使った方が楽なんでしょうが、シェルはシェルで複雑なことが苦手っぽいので

497 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 00:46:29.39 ID:8iq/aP4z.net]
>>481
文字列を splitlines してループにかけるなり、finditer を使うなりいろいろあると思うけど、なにか試した?

498 名前:デフォルトの名無しさん [2015/07/22(水) 07:03:08.97 ID:UgzmRSIV.net]
>>474
# 一致した(matched)フラグを初期化する
matched = False
count = 0

# File Open
with open('ファイル名') as f:

# ファイルの先頭から、1行ずつ読み込む
for line in f:
# lines にコピーする
lines = line

if matched:
count += 1

if count <= 6:
lines += line

if count = 6:
# linesをファイルに書き込む
break

# if matched: に対応する else:
else:
# その行に、検索パターンがあれば、
if line.indexof(pattern) > -1:
# 一致した(matched)フラグを立てる
matched = True

499 名前:482 mailto:sage [2015/07/22(水) 07:14:09.60 ID:UgzmRSIV.net]
>>474
>483 を修正
# 一致した(matched)フラグを初期化する
matched = False
count = 0
lines = None

# File Open
with open('ファイル名') as f:

# ファイルの先頭から、1行ずつ読み込む
for line in f:

if matched:
count += 1

if count <= 6:
lines += line

if count = 6:
# linesをファイルに書き込む
break

# if matched: に対応する else:
else:
# その行に、検索パターンがあれば、
if line.indexof(pattern) > -1:
# lines にコピーする
lines = line
# 一致した(matched)フラグを立てる
matched = True

500 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 11:01:08.40 ID:Iz7cB0cB.net]
お前ら暇だね



501 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 12:54:57.53 ID:4zVzLLkn.net]
暇ってのは尊い贅沢だぞ
下々は生きるのに忙しいからな

502 名前:482 mailto:sage [2015/07/22(水) 14:10:39.80 ID:UgzmRSIV.net]
>>483-484
修正します。
ただし、漏れも、Pythonは初心者で、
ソースコードを実行したわけではないので、あしからず

503 名前:


>if count = 6:
if count == 6:
[]
[ここ壊れてます]

504 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 17:00:44.90 ID:Hp3Ht5RA.net]
>>474
入力に間違いがない前提

import sys



def getlog(pattern, inp=sys.stdin, out=sys.stdout):
    buf = []

    for line in inp:

        if pattern in line or len(buf) > 0:

            buf.append(line)

        if len(buf) >= 6:

            break

    out.writelines(buf)


with open('input.txt') as i, open('outout.txt', 'w') as o:
    getlog('pattern', i, o)

505 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 17:01:50.60 ID:W3xYZwPB.net]
丸投げくんのことはスルーすけど
>>484改行削除しなくていいのか

506 名前:487 mailto:sage [2015/07/22(水) 17:02:03.67 ID:Hp3Ht5RA.net]
失礼、コピペに失敗した

507 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 18:56:16.91 ID:NL3fu3kF.net]
みんな2chでインデント表現する時って全角スペース?

508 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 20:12:25.74 ID:GPDjs6+w.net]
んなわけねえだろ
ちっとはあたまつかえ

509 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 20:14:38.92 ID:wGm6aIa7.net]
俺はideoneに貼る

510 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 20:41:58.90 ID:E01nq8P+.net]
>>492
頭使えも何も、半角スペースは一文字にまとめられちまうんだから
見た目に空白を維持するなら全角スペースを使うしかない



511 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 21:01:22.54 ID:Hp3Ht5RA.net]
インデントは &160;

512 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 21:03:13.62 ID:Hp3Ht5RA.net]
またミスした &#160;

513 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 22:29:19.11 ID:TVwdgeFO.net]
&lt;てすと

514 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 22:29:52.69 ID:TVwdgeFO.net]
&rm;

515 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 23:09:04.94 ID:GPDjs6+w.net]
馬鹿には無理

516 名前:デフォルトの名無しさん [2015/07/23(木) 12:29:56.79 ID:aHQAOynK.net]
pythonのとあるプログラムで独自の画像オブジェクトがあり。

これをオブジェクトの入子に複数格納することはできないでしょうか

517 名前:デフォルトの名無しさん mailto:sage [2015/07/23(木) 12:43:30.19 ID:ab3XmIzW.net]
[obj1, obj2, obj3]

[[obj1, obj2], [[obj3], [obj4, obj5]]]

518 名前:デフォルトの名無しさん mailto:sage [2015/07/23(木) 12:50:28.05 ID:aHQAOynK.net]
>>501
できましたありがとうございます。

519 名前:デフォルトの名無しさん mailto:sage [2015/07/23(木) 12:59:11.20 ID:ab3XmIzW.net]
いいのかよ
独自の画像オブジェクトって情報は何か意味があるのかと思ってた

520 名前:デフォルトの名無しさん mailto:sage [2015/07/23(木) 13:04:03.50 ID:aHQAOynK.net]
>>503
はい、ちゃんとその後の処理でも画像オブジェクトとして機能しましたので
問題ないようです。



521 名前:デフォルトの名無しさん mailto:sage [2015/07/23(木) 13:54:21.82 ID:JtElrAyf.net]
くらくらするな

522 名前:デフォルトの名無しさん mailto:sage [2015/07/23(木) 14:47:38.00 ID:P0N6qRSq.net]
オブジェクトの入れ子って3重くらいまでなら常識の範囲内か?

523 名前:デフォルトの名無しさん mailto:sage [2015/07/23(木) 15:02:31.50 ID:IBTyWZjg.net]
>501 のことなら
入れ子になってるのはリスト構造だけで
オブジェクトの階層は一つしかないぞ

524 名前:デフォルトの名無しさん mailto:sage [2015/07/23(木) 15:15:00.12 ID:WUAvzM35.net]
意図的にツリーにしてるなら何段でもいいんじゃないの
build.xmlとかpom.xmlは見ると頭痛がするが

525 名前:デフォルトの名無しさん mailto:sage [2015/07/23(木) 15:58:49.63 ID:IBTyWZjg.net]
クラクラクラクラ

526 名前:デフォルトの名無しさん mailto:sage [2015/07/24(金) 19:44:48.05 ID:Sy3v921p.net]
class A():
_def __init__(self):
__print('a' in self)

A()

self.aが存在するか調べたいんですが
TypeError: argument of type 'A' is not iterable
ってエラーになります
どうやって調べるのか教えてください

527 名前:デフォルトの名無しさん mailto:sage [2015/07/24(金) 19:46:37.27 ID:3P6rWc8H.net]
hasattr使え

528 名前:デフォルトの名無しさん mailto:sage [2015/07/24(金) 19:49:10.95 ID:h3JVcYsp.net]
class A():
_def __init__(self):
__print(getattr(self, 'a', None))

529 名前:デフォルトの名無しさん mailto:sage [2015/07/24(金) 19:53:13.65 ID:Z3gsNXcC.net]
self.a

530 名前:デフォルトの名無しさん mailto:sage [2015/07/24(金) 20:12:48.64 ID:h3JVcYsp.net]
例外出ないのか



531 名前:デフォルトの名無しさん mailto:sage [2015/07/24(金) 22:27:25.98 ID:Z3gsNXcC.net]
出たらいかんのか?

532 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 03:07:51.49 ID:lUWpyqrt.net]
たまに使うことがあるんですが、
a = list(range(1000))
len(str(len(a))) ← こうやってるんですが、
桁数をとるのにいい方法ってあります

533 名前:か。 []
[ここ壊れてます]

534 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 05:03:08.65 ID:FlzLI2sd.net]
log10()

535 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 11:07:42.80 ID:/x7wsywu.net]
こことお勉強スレ何でスレ分かれてるのかおしえて

536 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 11:47:14.12 ID:N2oZlVgp.net]
くだすれとは…
多少揺らぎはあるが「くだらない質問はここで聞けスレ」の略
同じ言語で2つ質問スレが立っている場合、
片方は高確率でくだすれを源流としている(ふらっとC#とか)

くだすれが立つとき、本スレは当然くだらない質問で荒れている
荒れているが、その荒れも永遠に続くものではないので
今のように分かれている意味が分からない時期もある

537 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 13:36:52.96 ID:wxu4sip9.net]
モジュールのリロードについての質問なのですが

from mymodule import MyClass

このようにモジュールからあるクラスのみをインポートした場合、
ソースコードを変更した後に再度このクラスのみをインポートするにはどうすればいいですか?
下記の幾つかの方法を試しましたが、いずれも望む結果が得られませんでした。

>>> imp.reload(MyClass)
TypeError: reload() argument must be module

>>> imp.reload(mymodule)
NameError: name 'mymodule' is not defined

>>> from mymodule imp.reload(MyClass)
SyntaxError: invalid syntax

>>> imp.reload(mymodule.MyClass)
NameError: name 'mymodule' is not defined

>>> import mymodule
>>> from mymodule import MyClass
>>> (スクリプトを実行)
(→実行結果はソースの変更が反映されていない)

538 名前:デフォルトの名無しさん [2015/07/26(日) 14:01:49.41 ID:FlzLI2sd.net]
reload(mymodule)

539 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 15:31:07.59 ID:wxu4sip9.net]
>>521

>>> import mymodule
>>> tmp.reload(mymodule)
>>> from mymodule import MyClass

ですね。ありがとうございました。

540 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 17:38:46.20 ID:sjjuAaNb.net]
こんにちわ、Pythonの超初心者です…
PYCファイルからPYファイルへのデコード(逆コンパイル)の方法をおしえてください
いくつかsetup.pyをダウンロードしてはcmdでやってみたんですがどうしても逆コンパイルでつまづいでしまいます…
お願いします助けてください



541 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 17:56:10.36 ID:N2oZlVgp.net]
超初心者がやるようなことじゃねえと思うがな…
デコンパイルしないと命を失うくらいに、どうしてもそれが必要か?

542 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 17:58:50.05 ID:sjjuAaNb.net]
>>524
どおおおおおしても必要です
一度やり始めたからにはきちんとできたほうがいいですし…
お願いします!
助けてください!

543 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 18:14:02.03 ID:N2oZlVgp.net]
uncomyle2は普通に動いたよ
pastebin.com/BM4FZGxa

3はためしてないけど、まあ動くんじゃないか

544 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 18:15:38.65 ID:sjjuAaNb.net]
>>526
すいません
やり方軽くでいいんでおしえてください・・・

545 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 18:30:37.89 ID:N2oZlVgp.net]
コンソールのログなんだからやり方も糞もねえだろ

546 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 18:39:58.48 ID:sjjuAaNb.net]
>>528
すいませんぼくwindowsのcmdでやってるもんでLinuxと違ってよくわからなかったです…
今uncompyle2のソースをすべてダウンロードしてcmdで
python setup.py bdist_rpm
python setup.py install
python setup.py install --home=<dir>

という順序で進めていますが
1番目のbdist_rpmで
error: don't know how to create RPM distributions on platform nt
がでてしまいます…
C直下にフォルダを作成してやってるのになんでしょうかね…
おしえてください!

547 名前:デフォルトの名無しさん [2015/07/26(日) 18:55:11.11 ID:FlzLI2sd.net]
マルチしてるので回答中止な

548 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 19:15:08.45 ID:C5DOIUuU.net]
初心者じゃなくてもそんなことをする機会ってないんじゃないかな
あとWindows使ってるからLinux分かりませんって言い訳にもならない
せっかくサードパーティ製ライブラリを教えてもらったんだからVirtualBoxにLinux入れて試せばいいんじゃないでしょうか

549 名前:デフォルトの名無しさん [2015/07/26(日) 19:47:03.10 ID:FlzLI2sd.net]
>>531
>あとWindows使ってるからLinux分かりませんって言い訳にもならない

おいおい
そのりくつはおかしい

>Linuxと違ってよくわからなかったです

っつってんだから528の主張はLinuxならよくわかるってことだ

あんたが528本人なら話は別

550 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 19:50:48.41 ID:N2oZlVgp.net]
僕もドザーには厳しく当たることにしてるのでこれ以上は嫌ずら
ドザーは死ね
クソマカーも死ね



551 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 21:28:05.08 ID:52hX4QEC.net]
>>532が言ってることがよく分からなかった
とりあえずマルチ4ネって事で終了

552 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 21:36:07.12 ID:2fAT+AOZ.net]
530は別に変なこと言ってないよ。
Linux環境がないからVirtualBoxにLinux入れて試せってことでしょ。
質問者がLinux分かるって言うのは文章からは読み取れない。

553 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 01:45:16.54 ID:7QPACxki.net]
質問者が命を失うぐらいに必要なんだから、もうちょっと待てば、もう質問してこれないはずだよ。

554 名前:デフォルトの名無しさん [2015/07/27(月) 02:09:36.43 ID:/8w8BvTq.net]
夏だね

555 名前:デフォルトの名無しさん [2015/07/27(月) 02:57:18.10 ID:Yd8xNCrh.net]
Windowsで使えないという事は、それだけで弱点と言えます。

NginxをWindowsで運用することはありませんが、それでもWindowsで動きます。
Windowsで動かないという事は、使うなという事を意味します。

NginxがWindowsで動かなかったら、それは使うなという意味ですから、
ここまで広がることは無かったでしょう。

PHPは糞言語と言われつつ、何故ここまで広がったのでしょう。
それはWindowsで動くからです。
Windowsに対応した途端、一気に広まったのです。

556 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 07:55:28.55 ID:rIdflrhB.net]
まだ生きていましたか
仕方がありません
私がとどめを刺してあげましょう

557 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 08:27:41.20 ID:IMvB71j8.net]
>>538
試したけどwindowsでもuncompyle2動くじゃん
ここから導かれる結論は

・あなたのPCにインストールされたWindowsが一般的なものと比較して糞
・あなたのPCは幻覚でPCに見えており、本当はみかん箱か何か

どちらだろう

558 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 08:37:38.50 ID:q4XoOyft.net]
キチガイ荒らしが棲みついてるみたいなので
もれはもぐるわ

しばらく激高した荒らし続くかも知れんが
いなくなるまでしつこい荒らしは当分無視しろよ

スレ過疎っても荒らしのせいだけど
おまいらごめんな

559 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 08:46:15.97 ID:rCgM2BeH.net]
涼しくなった頃にまたおいで。

560 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 15:12:40.83 ID:JJPg7kwZ.net]
class A:
__def v(self):
____print(1)

class B:
__def v(self):
____print(2)

class C(A,B):
__pass

obj = C()

AとBを継承したCクラスでAとBそれぞれのvメソッドを使いたいんですが
obj.v()するとクラスAのvメソッドが呼ばれます
クラスBのvメソッドはどうやって呼び出せますか?



561 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 15:46:37.89 ID:pS+RQVuM.net]
class A:
__def v(self):
____print(1)

class B:
__def v(self):
____print(2)

class C(A,B):
__def v(self):
____A.v(self)
____for i in range(10000000):
________B.v(self)

562 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 15:54:36.38 ID:JJPg7kwZ.net]
>>544
pythonって親クラスに直接アクセスできるんですね

super使う方法を見つけてこれでもいけました
super(A, self).v() # 2

563 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 20:09:54.88 ID:gGLbTc2k.net]
クラスを継承しない場合はobjectを継承しろって言われたことがあるんですが
これって2.7までの話ですよね?

564 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 20:59:12.30 ID:DdDzdSYJ.net]
>>545
むしろAとBが無関係でも動くんだよなぁ、これ

class A:
    def me

565 名前:s(self):
        print('class A method')

class B:
    def mes(self):
        A.mes(self)

b = B()
b.mes()
[]
[ここ壊れてます]

566 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 21:30:52.71 ID:C09rWlqr.net]
あ、ほんとだなんで????????????????????
class A:
def a(self):
print(1)


class B:
def b(self):
print(2)

A.a(object)
B.b(object)

567 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 21:35:54.72 ID:WvAcX5y2.net]
>>546
全然違う
新スタイルクラスを使うならobjectを継承しろ、だ
しかもPython3に旧スタイルクラスは存在しない
旧スタイルクラスを使わないと殺される場合でもなければ新笥スタイルクラスを使え

568 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 23:40:42.98 ID:ZHHP3cwX.net]
Pythonで作成されたアプリケーション(JETCreator)を使用しようとすると、
TypeError:cannot deepcopy this pattern object
というエラーが出て動作しません。
自分が作ったものでなく、AndroidSDK等にも初めから用意されている者なのでプログラムのエラー
ということはないと思います。(現verのSDKには入ってなく、古いverの方からjetフォルダを戴きました。)

569 名前:デフォルトの名無しさん mailto:sage [2015/07/27(月) 23:53:54.90 ID:ZHHP3cwX.net]
>>550
詳細

Tracevack(most recent call last);
File"I:\kaken\sdk\tools\jet\JetCreator.py",line 410, in OnsegmentAdd
saveState = JetState(self,jet_file,self,currentSegmentIndex,self,currentEventIndex)
File"I:\kaken\sdk\tools\jet\JetUtils.py",line 95,in_init_
self.jet_file = copy.deepcopy(jet_file)
File"I:\Python27\lib\copy.py",line 190,in deepcopy
y = reconstruct(x,rv,1,memo)
File"I:\Python27\lib\copy.py"line 334, in_reconstruct
state = deepcopy(state,memo)
File"I:\Python27\lib\copy.py"line 163, deepcopy
y = copier(x,memo)
File"I:\Python27\lib\copy.py"line 257, in_deepcopy_dict
y[deepcopy(key,memo)]= deepcopy(value,memo)
File"I:\Python27\lib\copy.py"line 163, in_deepcopy
y = copier(x,memo)
File"I:\Python27\lib\copy.py"line 298, in_deepcopy_inst
state = deepcopy(state,memo)
File"I:\Python27\lib\copy.py"line 163, in deepcopy
y = copier(x,memo)

File"I:\Python27\lib\copy.py"line 257, in_deepcopy_decit
y[deepcopy(key,memo)]= deepcopy(value,memo)
File"I:\Python27\lib\copy.py"line 174, in deepcopy
y = copier(memo)
TypeError: cannot deepcopy this pattern object

です。

570 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 00:14:18.22 ID:AL/+2NkH.net]
>>550 >>551

すみません自己解決しました。荒らしてしまって申し訳ありませんでした。



571 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 08:56:29.07 ID:m3UChEdn.net]
自己解決したならそれを書けよ

572 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 09:19:38.25 ID:dueMFxCg.net]
例えゴミでもゴミから堆肥に昇格する権利くらいはあったのに

573 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 16:56:02.34 ID:eB7VWbpU.net]
./codes/mycode.py
./test/test_code.py
こんな感じで
./test/がカレントディレクトリとします
test_code.pyから../codes/mycode.pyをimportする場合
import os
import sys
sys.path.append(os.path.join('../', 'codes'))
import mycode
こんなふうに書きましたがこれだとPEP E402に違反します
どうやって書き直したらよいですか?

574 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 17:55:48.59 ID:dueMFxCg.net]
わざわざ変な構成にしてるんだから
PEPの文句なんて無視すればいいじゃん

おすすめ構成は以下

/project/bin/entrypoint.py
/project/mypackage/__init__.py
/project/mypackage/mycode.py
/project/test/test_mycode.py
/setup.pyなど

575 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 18:04:34.02 ID:dueMFxCg.net]
間違えた

/bin/entrypoint.py
/mypackage/__init__.py
/mypackage/mycode.py
/test/test_mycode.py
/setup.pyなど

576 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 18:22:10.22 ID:eB7VWbpU.net]
ええええ、/直下に作るんですか?それってありなんですか?

577 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 18:23:14.73 ID:dueMFxCg.net]
プロジェクトルートの意味だと思って貰えれば

578 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 20:52:02.58 ID:eB7VWbpU.net]
ルートのはそういうことか、なるほどわかりました。
でもおすすめしてもらった構成だとぼくの変わらないと思うんですよね
あとPEPで決められたルールもあるので正攻法がある気がするんですよ

579 名前:デフォルトの名無しさん [2015/07/28(火) 21:05:11.62 ID:9GgK2udL.net]
>>560
Python3 であり正攻法か知らないけれど、
以下の方法はどうでしょう?

import os

abspath = os.path.abspath(__file__)
dirpath = os.path.dirname(abspath)
here = dirpath
parent = os.path.join(here, "..")
libpath = os.path.join(parent, "lib")

print("abspath =", abspath)
print("dirpath =", dirpath)
print("parent =", parent)
print("libpath =", libpath)

580 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 21:14:05.11 ID:ZRk8WaCe.net]
いやPYTHONPATHにパッケージルートを入れるだけだろ
sys.pathが出てくる理由が全く分からない



581 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 21:24:01.05 ID:9GgK2udL.net]
>>562
PYTHONPATH って環境変数でしょう?
環境変数をいじるのは嬉しくないと思う。
それよりは、sys.path.append()使って、
環境変数に触らずにtest_code.pyを実行したい。
というのが>>555の考えなんじゃないの?

582 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 22:12:14.70 ID:c7bvE2d8.net]
setupのtest_suiteでテストパッケージを指定して
setup.pyからテストを実行すればいいんじゃない?

583 名前:デフォルトの名無しさん [2015/07/28(火) 22:14:04.86 ID:dzOUJwwo.net]
普通にインストールしてからテストすればいいんじゃないの

584 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 05:39:43.45 ID:qvSRsKX3.net]
test$ ln -s ../codes codes

585 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 18:48:23.87 ID:C31cMPRb.net]
def test():
・・
continue

while True:
test()

このような感じで、関数内からwhile Trueに対してcontinueする事はできますか?

586 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 19:54:32.01 ID:4360Pw2a.net]
???

再帰ってこと?

多分、したい事の解決方法が間違ってる。
したい事は、なぁに?

587 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 20:04:23.92 ID:C31cMPRb.net]
イカのような処理で例えばtest1()内のチェックでひっかかった場合、
test2()に移行せずwhile True:のはじめからやり直したいんです

while True:
__test()
__test1()
__test2()
__test3()

SyntaxError: 'continue' not properly in ~~~ となります

588 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 20:05:23.12 ID:RH5K4X2w.net]
こんなんやろ?

class Continue(Exception):
def __init__(self, *values):
self.values = values

def test(i):
if i % 2:
raise Continue(i)
return i * 2

def main():
for i in range(10):
try:
v = test(i)
print('{} => {}'.format(i, v))
except Continue as c:
print('continue: {}'.format(c.values))

589 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 20:12:57.40 ID:3xGNJCY0.net]
>>569
成功したらTrueなりFalseを返して判定
import time
def a():
print(1)
return False
def b():
print(2)
return True
def c():
print(3)
def d():
print(4)
while True:
time.sleep(1)
if a():
continue
if b():
continue
if c():
continue
if d():
continue

590 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 20:18:01.61 ID:C31cMPRb.net]
>>571
やりたいことこれです、ありがとうございます。



591 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 20:23:40.48 ID:c3o2n8R7.net]
pythonってちょっと齧った程度なんですが、c++,JSの経験しかない私には文法が独特な感じがしました。
関数には{}使わないんですよね。

592 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 22:10:41.56 ID:cW7qEMuX.net]
{}使わなくていいのがいいところ

593 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 22:16:03.57 ID:4YomwHKV.net]
インデントで構造を表現してる
この構文は賛否あると思うけど、将来{}が導入される機会は無いとわざわざ実装で表明している

594 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 15:26:59.50 ID:qxlVlu0T.net]
後数ヶ月で3.5がリリースされるのに3.4の機能すらよくわかってない
PHPでいうdocs.php.net/manual/ja/doc.changelog.phpみたいな変更履歴ってどこで見れますか?

595 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 16:04:02.56 ID:Z0rCKaW0.net]
日本語はないよ

596 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 19:31:47.32 ID:cCFC5U/T.net]
docs.python.jp/3/whatsnew/
から各バージョンへのリンクがあるよ

597 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 00:49:42.33 ID:u6UInjxJ.net]
Pythonのインデントは百害あって一利なし

598 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 07:55:33.34 ID:zxXRNzjs.net]
と思う吉宗であった

599 名前:デフォルトの名無しさん [2015/07/31(金) 08:33:05.30 ID:709JoO30.net]
暴れん坊Python

600 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 22:48:07.91 ID:wbH0A+JA.net]
外部プログラムを監視させたいのだけれど、皆目わかりません。
ヒントだけでも教えていただけませんか?



601 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 23:20:03.61 ID:hKMcxT/u.net]
もう少し具体的に監視って何だ

602 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 00:28:01.71 ID:ghun761E.net]
whileループで一定時間経過後にループを抜けるようにしたいんですが
なにかいい書き方はありますか?

603 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 00:29:18.18 ID:VbjGDeVR.net]
>>584
何でwhile何だよ?

604 名前:デフォルトの名無しさん [2015/08/01(土) 00:34:41.58 ID:ghun761E.net]
>>585
あ、確かに
forでsleepかませばいいだけですかね?
なんか変にこだわってましたすみません

605 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 02:03:25.71 ID:VbjGDeVR.net]
>>586
男にはこだわりも必要さ。頑張れ。

606 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 06:31:27.99 ID:ed2n0PXB.net]
>>583
証券会社のツールから株価を取得したい。
例えばハイパーSBIで銘柄のコードを入力すると株価が出力されるのだけれど、それをpythonでやる方法がわかりません。

607 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 07:21:30.49 ID:Ere4YETC.net]
spyderでプログラムを起動させると
起動中はコンソールの右上に橙の三角マーク(マウスを当てるとkills the current system〜と出る)が普段は出ているのですが
たまにエラーも吐かずにプログラムが途中で停止し、そのマークも緑の再生ボタン(run again〜)になってしまいます
まったく同じプログラムを何度か起動しても、止まる場所はその時々でまちまちで、原因がさっぱりわかりません
これはいったい何が起こっているのでしょうか?

608 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 10:19:03.40 ID:QcdegDsY.net]
辞書とかリストとかに要素を追加し続けると動作が重くなるんだけど、これってどうしようもありませんか?
要素数は最大で3万件弱、内容は文字列(40~60byte)をファイルから読み込んで追加していくと
読み込んでいく速度が急激に落ちてすごく時間がかかるんです。

609 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 10:22:40.87 ID:kwRHUfwj.net]
読む速度が遅くなるのか
追加する速度が遅くなるのか
判然としない

610 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 10:47:46.62 ID:QcdegDsY.net]
ファイルは700位あって、順次読み込んで文字列を取り出して追加するのですが
挙動を見ている限り追加する速度が遅くなっているみたいに感じます
最初はリストに追加していたのですが遅いので、辞書にしてみたら更に遅くなりました



611 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 11:00:01.80 ID:HfST5fY7.net]
>>588
HyperSBIは外部プログラムとデータのやりとりをする機能を公開していない
よってPythonに限らずどんな言語でも無理

612 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 11:00:15.78 ID:VbjGDeVR.net]
>>592
python以外のc++などで試してみればどうなん? []
[ここ壊れてます]

614 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 11:18:26.97 ID:PBQUMraI.net]
>>592
now = time.time()
#ここで追加or読み込みなど計測したい処理
print( time.time() - now )

これでどの処理にどれだけ時間かかってるかが出力されるので原因が特定しやすいよ
オレの環境では辞書に100byte*10万件追加しても0.05秒(1件あたりじゃなくて全件で)
pythonの辞書の問題じゃなくて多分ファイルを読み込むところが原因な気がするなあ
読み込んだ後にファイルを閉じず(close)にメモリが足らなくなってスラッシングおこしてるとか

ちなみにリストは巨大化すればするほど

615 名前:後ろの方のデータを読み込むのにどんどん時間かかるけど、
辞書は一定の速度で読み書きできるはず
[]
[ここ壊れてます]

616 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 11:41:59.68 ID:AVRmVHoz.net]
>>588
スクレイピングでググってください
丸投げではなく自分で1から勉強してください
難しいスキルは不要なので基礎からやりましょう

617 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 11:43:55.24 ID:AVRmVHoz.net]
>>590
必要であればyieldを使うなりデータを分割して処理するなりしましょう
データをファイルに書き出して分割して読み込んでいく方法もあります

618 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 11:47:08.78 ID:AVRmVHoz.net]
>>581
python process 監視でググってヒットした1ページ目を片っ端から読みましょう

619 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 11:47:26.67 ID:PBQUMraI.net]
>>596
おそらくC系で書かれたアプリのデータをpythonで取得するのはスクレイピングとは何の関係も無い
難しいスキルが不要どころか極めて敷居高いですよ
少なくともオレにはできない

620 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 13:23:00.56 ID:GepW3eXw.net]
>>590
データ用途にもよると思うけど、素直にDB使えばいいんじゃね
sqlite使ってまずオンメモリDBを試してみて、ダメならファイルベースにすればいい



621 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 13:30:55.26 ID:ldei0zHr.net]
証券会社のツールってWeb上のことでしょ
データなんてクライアントツールで提供してるとこなんてないよ

622 名前:デフォルトの名無しさん [2015/08/01(土) 16:42:52.95 ID:waGA91Tw.net]
webで一般公開されてるデータなんて
20分以上遅れてるから使い物にならない

623 名前:デフォルトの名無しさん [2015/08/01(土) 16:43:35.87 ID:waGA91Tw.net]
>>595
>pythonの辞書の問題じゃなくて多分ファイルを読み込むところが原因な気がするなあ
>読み込んだ後にファイルを閉じず(close)にメモリが足らなくなってスラッシングおこしてるとか

+1

624 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 17:28:13.97 ID:zsKVeSSI.net]
ID:waGA91Twは質問者なの?具体的に説明しないとスルー対象だよ

625 名前:587 mailto:sage [2015/08/01(土) 17:43:35.94 ID:omn1LlLs.net]
>>601-602
ウェブ上で公開されているデータを取得するとしたら
area.autodesk.jp/column/tutorial/maya_atoz/headup_display_stock_chart/
が参考になりそうですが、銘柄の範囲と速度を考えると厳しそうです。
ちなみに今はヤフーファイナンス等でリアルタイム株価が取得できます。

あくまで目指すものですが、多くの銘柄の株価を1秒ごとに取得し、スクリーニングをかけたいと考えています。
例えば現在の株価を基準に2、4、6秒後と上がり続けている(=急騰している)→自動で発注させたい。

なんにせよプログラム自体ずぶの素人ですので、ひとまずいろいろ試してみようと思います。

>>593
株価が表示されるということはデータを受信していると認識していました。

>>596
勉強します。

626 名前:デフォルトの名無しさん [2015/08/01(土) 18:51:49.22 ID:HjoVMyMH.net]
まるで夏休みの課題みたいだな

627 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 18:52:27.13 ID:PBQUMraI.net]
>>605
もちろんソフトがデータ自体を受信してるんだろうけどそれを取り出すのは厳しいよ
CだかC+で書かれてコンパイルされたソフトの仕様を完全に解析しないといけない
これはpythonとは全く無関係の話なのでここで質問しても誰も答えられない
なのでもし既に解析した強者がいて情報を公開してれば真似するしか無いかなあ

webで1秒ごとにちゃんとリアルタイム株価が表示されてるのがあれば簡単(でもそんなの無いよね?)
毎秒そのURLにアクセス(requests)してHTMLをパース(lxml or BeatifulSOAP)して株価を取得できる
括弧内はその時に使える便利なpythonライブラリの名前ね
株式投資のことは無知なので的外れな回答だったらごめん

628 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 21:56:07.62 ID:FWfS2 ]
[ここ壊れてます]

629 名前:vhb.net mailto: import sys
sys.stdout.write("\r1")
sys.stdout.write("\r2")

これで1行を書き換えられますが、複数行を書き換える場合はどう書けばいいですか?
1
2
と2行を出力した後に
3
4
と複数行書き換える場合はどう書いたらいいですか?
[]
[ここ壊れてます]

630 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 22:46:53.52 ID:Ere4YETC.net]
>>589
これをコマンドプロンプトから試してみたのですが
python.exeは動作を停止しましたってウィンドウが別に開きます

こう言う時って何が問題な事が多いのでしょう?メモリ?



631 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 22:56:02.17 ID:BLDCtSuf.net]
すみません、sqlite3である特定のkeyで検索するときに、複数カラムで検索するにいはどうしたらいいでしょうか?
column01〜20までありまして。
'select * from table_name where column01, column02, column03 = "%s"' % keyword
また、selectの結果をカウントする方法はありますか?
こちらも調べたのですがわからず。。

632 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 22:57:53.44 ID:kwRHUfwj.net]
sql入門でも読めよ
WHERE句でOR使うだけだろ

633 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 23:01:35.36 ID:kwRHUfwj.net]
>>609
Windowsのそのメッセージは99%アクセス違反
どうせNULLハンドルチェック漏れだろうけど

634 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 23:08:14.18 ID:BLDCtSuf.net]
>>611
ありがとうございます。
そのままかくと冗長化するんですが良い方法ないですか?

635 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 23:30:08.52 ID:Ejo7uJz3.net]
>>613
良い方法を見つけて書くのが腕の見せ所でしょ?
select count(*) 〜〜;

636 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 23:34:37.56 ID:kwRHUfwj.net]
愚かなスキーマでRDB使おうとしているんだから
愚かなコードを書かなければならなくなるのは全く不思議ではない

637 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 00:25:45.12 ID:vRy1WZiH.net]
>>588
そういう情報は、Amazon・FaceBook・楽天などのように、
APIとして公開している会社で、この言語を使って、
こういう具合に作るなど、丁寧に作り方を教えている場合のみ、
ユーザーでもプログラムを作ることができる。
例えば、Googleの地図APIなど

APIを公開していない場合、自分でそのデータ形式を分析して、
プログラムを作るのは、まず無理

>>589
ソースコードのあちこちに、print文を書いて、
どこでエラーが起きているのかを、突き止める

それか、PyCharm を使って、デバッグするとか

>>592
700のファイルを開いて、データを読み込んで、
すぐにそのファイルを閉じているかどうかを、
ソースコードを読んで確かめる

ファイルを開き放しにしていれば、ヤバイ

638 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 03:54:28.60 ID:dTRZmQiN.net]
>>615
時代はKVSだよな

639 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 03:57:09.44 ID:uoA7o0bf.net]
新時代へ突入したらこうなる。

愚かなスキーマでKVS使おうとしているんだから
愚かなコードを書かなければならなくなるのは全く不思議ではない

640 名前:デフォルトの名無しさん [2015/08/02(日) 11:15:57.62 ID:yYb0hZFV.net]
学校の宿題なんですけど
整数N(0〜100)のプラスマイナス3%の範囲をランダムで出力する方法を教えてください



641 名前:デフォルトの名無しさん [2015/08/02(日) 11:17:54.35 ID:yYb0hZFV.net]
あ、あと出力される値はKで(0≦K≦(N*1.03))です

642 名前:デフォルトの名無しさん [2015/08/02(日) 11:45:58.27 ID:UCQE5+8k.net]
>>700
違う!それは違うぞ!!!

643 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 12:49:18.15 ID:+O2Hc9iF.net]
700まで5日くらいかかるか

644 名前:デフォルトの名無しさん [2015/08/02(日) 12:54:45.24 ID:dTRZmQiN.net]
整数 N=0 のプラスマイナス3%の範囲って
0 ≦ 0 ≦ 0
で合ってますか?

645 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 12:56:11.84 ID:+O2Hc9iF.net]
>>618
スキーマレスって「運用でカバー」並だよね
それが許されるのは緊急時だけにして欲しい

646 名前:デフォルトの名無しさん [2015/08/02(日) 14:43:31.31 ID:ULysM4NQ.net]
>>623
そのとおりであってます

647 名前:デフォルトの名無しさん mailto: []
[ここ壊れてます]

648 名前: mailto:2015/08/02(日) 16:31:48.62 ID:dTRZmQiN.net [ from random import shuffle
L = range(101)
shuffle(L)
print '\n'.join('%.2f <= %d <= %.2f' % (n*.97, n, n*1.03) for n in L) ]
[ここ壊れてます]

649 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 00:19:42.59 ID:VCBaRTzn.net]
数値が入った大規模list(できればnumpy.array)より、大きい順に10件の数値を取得したいです
sortするとかなり遅いのでもっと効率的な方法は無いでしょうか
pythonリストはともかくnumpyにはそういう処理があるだろうと思ったのですが見つかりませんでした…

650 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 02:48:06.14 ID:oLPMcLov.net]
最大値の index を pop するのを 10 回繰り返せばどうか、と初心者ながらに思ったけど、下手をすると sort よりも遅いのかな。



651 名前:デフォルトの名無しさん [2015/08/03(月) 02:53:50.78 ID:TVbEWMpV.net]
merge

652 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 05:34:38.13 ID:MJUDpxg+.net]
ソートの計算量は、O(n log n)で、
log n は、nが大きくなるほど増えにくいから、
ただみたいなもの

n = 1,000 = 2^10 のとき、10 = log n だから、
10回popする間に、千個のデータをソートできる

653 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 07:58:49.48 ID:ocR6jyDi.net]
>>627
numpy partial sortでググってみた。
stackoverflow.com/questions/10337533/a-fast-way-to-find-the-largest-n-elements-in-an-numpy-array

654 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 08:10:36.45 ID:mj4jP7t4.net]
さすがstackoverflow様は貫禄があるな

655 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 11:05:55.50 ID:qdkLyF57.net]
>>627
bisect を使えば簡単にできました。
m=10は無視できるとして、O(n)で頑張ったつもりです。
len(ary)が2万くらいの時に、
L.sort() と比較すると倍くらい速いです。

import bisect

def get_min_elements(ary, m):
  L = []
  for x in ary:
    if len(L) < m:
      bisect.insort(L, x)
    else:
      if x < L[m - 1]:
        bisect.insort(L, x)
        L.pop()

  return L

656 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 11:10:27.07 ID:qdkLyF57.net]
>>633は、ち、小さい方から10件だったけど、別にいいよね。。。

m=10なので、
bisect.insort(L, x)
の時の
O(m log m)
は無視できるとして、
O(n(=len(ary))
で頑張ってみました。

657 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 13:32:56.52 ID:J4VhAduO.net]
ユニークな値しか含まれてないリストから指定した値を削除したいんですけど
i = value in lst
if i:
____del lst[n]

これいがいのかきかたをおしえtください

658 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 13:48:07.72 ID:qdkLyF57.net]
>>> L = [1, 2, 3]
>>> L.remove(2)
>>> L
[1, 3]
>>> st = set([1, 2, 3])
>>> st
{1, 2, 3}
>>> st.remove(2)
>>> st
{1, 3}

659 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 14:00:21.61 ID:VCBaRTzn.net]
626です 計測してみました
A list.sort
B >>628さんのmax()で10回取る方法
C >>633さんのbisect
D >>631さんのnumpy+bottleneck (ここだけnumpy)

処理にかかった時間比(N = 10**5)
A : B : C : D = 100 : 65 : 50 : 4 でした
Nが100**4以下だとBが一番遅くなるようです
pythonのlistで処理したい時はC、numpyが使える時はDを使おうと思います
大変勉強になりました 皆さんありがとうございます

660 名前:168 mailto:sage [2015/08/03(月) 14:56:31.14 ID:fmwSGKmS.net]
R なら quantile の probs に 1 - 10/n を指定して、そのパーセンタイル点以上の値をとる要素を抽出するかなぁ。
numpy



661 名前:ヘ percentile で同じことができるみたいね。 []
[ここ壊れてます]

662 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 21:20:25.82 ID:bi4hacJB.net]
x = 1
print 1 + x

x = 2
print 1 + x
  ・
  ・
  ・
x = 1000
print 1 + x

というのを簡単に行うにはどうしたらいいんでしょうか?

663 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 21:35:43.55 ID:gVB3Io0I.net]
for x in range(1, 1001):
print 1 + x

664 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 12:00:37.85 ID:AS8dD+yU.net]
def a(n, m):
print(n)
if m > n : a(n + 1, m)
a(1, 10)

665 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 12:01:17.71 ID:AS8dD+yU.net]
def a(n, m):
_print(n)
_if m > n : a(n + 1, m)
a(1, 10)

666 名前:デフォルトの名無しさん mailto:sage [2015/08/06(木) 21:40:10.45 ID:UihIPuxy.net]
pythonってphpでいうphp.iniのようにファイルで設定する必要はないんでしょうか?

667 名前:デフォルトの名無しさん mailto:sage [2015/08/06(木) 21:41:20.84 ID:3aDya5oU.net]
~/.pythonstartup

668 名前:デフォルトの名無しさん mailto:sage [2015/08/06(木) 23:18:23.30 ID:wkWTZ+KR.net]
print(10/2)
print(10>>1)

何で右シフトだと小数点切り捨てになるんですか?

669 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 01:04:03.51 ID:NNL5NoiN.net]
そもそも右シフトはintの演算子でfloatには使えない
>>> 10.0 >> 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for >>: 'float' and 'int'

Python3から除算の演算子が変わった
C言語系のような整数同士の「従来」の除算は//を使う
>>> 10 // 2
5
数学的な演算結果に近づけた「真」の除算は/を使う
>>> 10 / 2
5.0

670 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 08:06:00.93 ID:3jYJojYP.net]
>>645
小数点以下切り捨てと決めているから。
が答えだけど、納得しないでしょう?

だからさ、CPUの原理を勉強しよう。
bit演算について勉強すると良いよ。
あと、右shift演算は、負の整数にしても面白いんだよ。
>>> -1 >> 1
-1
>>> -1 >> 2
-1
ってなったりする。不思議でしょう?
ふふふ。



671 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 08:08:05.50 ID:3jYJojYP.net]
>>647の続き

更には、rotr, rotlなんて命令もあったりする。
bit列を右回転, 左回転させる命令なんだよ。
8bit CPUの例だけど、
rotr(0b10000001, 1)
を実行すると、
0b11000000
が返ってきたりする。
暗号関係で使われたりするよ。

672 名前:デフォルトの名無しさん [2015/08/07(金) 16:11:37.82 ID:ncOfWd5+.net]
python 2.7なんですけど

print(round(1.05, 1)) # 1.1でOK
print(round(1.55, 1)) # 1.6でOK
print(round(1.65, 1)) # 1.6になるのでNG

何でですか?

673 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 16:19:19.04 ID:1VN8eSce.net]
print(1.65)
してみたらぁ?

674 名前:デフォルトの名無しさん [2015/08/07(金) 16:23:15.22 ID:ncOfWd5+.net]
それしたら1.65になりますけどもここから何が分かるのですか?

675 名前:デフォルトの名無しさん [2015/08/07(金) 16:23:59.53 ID:ncOfWd5+.net]
print(round(1.75, 1)) # 1.8になるのでOK
print(round(1.85, 1)) # 1.9になるのでOK

676 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 18:34:32.46 ID:l3+Klkte.net]
公式のドキュメントを読めば理由は書いてある

677 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 19:28:09.98 ID:EbZJZJ8+.net]
>>653
docs.python.jp/3/tutorial/floatingpoint.html
これの事を言ってるなら今回のと関係ない

>>651
0.05が丸め込まれているのに0.05以上である0.06が丸め込まれないのはバグ

678 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 19:38:55.70 ID:P01jDVzM.net]
はいバグ頂きましたw

679 名前:デフォルトの名無しさん [2015/08/07(金) 20:35:10.77 ID:tWWYLiGh.net]
>>> "{:17.16f}".format(1.05)
'1.0500000000000000'
>>> "{:17.16f}".format(1.55)
'1.5500000000000000'
>>> "{:17.16f}".format(1.65)
'1.6499999999999999'
>>> "{:17.16f}".format(1.75)
'1.7500000000000000'
>>> "{:17.16f}".format(1.85)
'1.8500000000000001'

docs.python.jp/2/library/functions.html#round のノートにある 2.675 はこうなる。
>>> "{:17.16f}".format(2.675)
'2.6749999999999998'

680 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 23:01:29.54 ID:3jYJojYP.net]
>>649
ここに書いてある。
docs.python.jp/3.3/library/functions.html#round
注釈

浮動小数点数に対する round() の振る



681 名前:曹「は意外なものかもしれません:
例えば、 round(2.675, 2) は予想通りの 2.68 ではなく 2.67 を与えます。
これはバグではありません: これはほとんどの小数が浮動小数点数で正確
に表せないことの結果です。詳しくは 浮動小数点演算、その問題と制限
を参照してください。
[]
[ここ壊れてます]

682 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 23:07:52.39 ID:eSh4n7lV.net]
>>650
>>653
なんでこういう馬鹿にした&遠まわしな書き方しかできないのかね、ここ初心者スレでしょ
しかもprintしろとか結局間違ってるし

ちなみに>>656みたいな現象はPythonに限ったことじゃなくて、
floatの値をを使って分岐処理やif文を書くときは気をつけないとバグ作り込むので注意

683 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 23:19:24.80 ID:3jYJojYP.net]
>>649
www.pastebin.ca/3092406
これをC言語で実行してみて下さい。
以下のような結果を得る事が出来ます。

x=1.6499999999999999111822, ndigits=1
x=1.650000, ndigits=1
...
r = 1.6000000000000000888178
r = 1.600000

1.65
と書いても、CPUが解釈するとどうしても誤差が生じてしまって、
1.6499999999999999111822
と解釈してしまうんです。
round(1.6499999999999999111822, 1)
の正しい結果は、
1.6
ですよね?
計算機の勉強が必要だと思います。

684 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 23:28:16.44 ID:3jYJojYP.net]
>>659は、
python3.3 で実際にround()を実行している箇所で主要な部分を抜き出したcodeです。
Python-3.3.0/Objects/floatobject.c
で、double_round を検索したら実際に処理を行っている部分の挙動が分かります。

初心者の方っぽいので一応使い方を書いておきます。
>>659を持ってきてa.cに名前を変更して、
$ gcc a.c -o a -lm
$ ./a
とすると実行できます。

685 名前:デフォルトの名無しさん mailto:sage [2015/08/07(金) 23:50:19.38 ID:3jYJojYP.net]
>>660の続き
詳しい説明は出来ませんので、きちんと理解したいのなら、
浮動小数点数 誤差
で検索してご自分で勉強なさって下さい。

>>> data = list(map(decimal.Decimal, "1.05 1.15 1.25 1.35 1.45 1.55 1.65 1.75 1.85 1.95".split()))
>>> for x in data:
... print(round(x, 1))
...
# bug っぽい挙動

docs.python.jp/3.3/library/decimal.html?highlight=decimal
www.edu.cc.uec.ac.jp/mce/c1-3m/ref/FloatingPoint.html

686 名前:デフォルトの名無しさん mailto:sage [2015/08/08(土) 02:40:51.72 ID:pFFZvIq1.net]
浮動小数点(IEEE754)は2進数で、正確に表現できない。
指数部は、2^n のものしか表現できない

0.5 = 2^-1
0.25 = 2^-2
0.125 = 2^-3

上記を組合せたものは、表現できる
0.25 + 0.125 = 0.375

0.1などは、どの組合せでも作れないので、
循環小数となり正確に表現できない

誤差があるから、「0.1 == 変数」のように書けないので、
範囲を持たせて、以下のようにする

0.1 - a < 変数 < 0.1 + a
a は非常に小さい値

IEEE754 を参照

687 名前:デフォルトの名無しさん mailto:sage [2015/08/08(土) 12:37:55.43 ID:6UCmRx7v.net]
round(1.65+0.000001, 1)

688 名前:デフォルトの名無しさん mailto:sage [2015/08/08(土) 16:54:45.36 ID:7XDpIYnB.net]
>>649
decimal module 使っても、

>>> from decimal import Decimal as D
>>> round(D("1.65"), 1)
Decimal('1.6')

となりました。
これは、bugという事で、pythonのdecimal module developper
が対処するはずです。
近日中に対応してくれると思いますので、しばしお待ち下さい。

689 名前:デフォルトの名無しさん mailto:sage [2015/08/08(土) 17:55:37.35 ID:bskJYfyR.net]
>>664
Decimalの丸めはこうな
Decimal("1.65").quantize(Decimal("0.0"), decimal.ROUND_HALF_UP)

無知なのに意地はんなや

690 名前:デフォルトの名無しさん mailto:sage [2015/08/08(土) 18:15:35.74 ID:wzG7wbxY.net]
しかしDecimalはホント冗長で使いづらいな
もっと何とかならなかったのか



691 名前:デフォルトの名無しさん mailto:sage [2015/08/08(土) 18:52:22.52 ID:bskJYfyR.net]
ネイティブの少数表記が浮動小数点数なのだから、混乱を避ける為にある程度使いづらくなるのは仕方なかろ。

Decimal("0.1") + 0.1

とかが普通に実行出来てしまったら、>>649のような不幸な初心者が量産されてまうわ。

692 名前:デフォルトの名無しさん mailto:sage [2015/08/08(土) 22:08:47.37 ID:t3Zwjigp.net]
PHPだと1.65が1.7になる

693 名前:デフォルトの名無しさん mailto:sage [2015/08/08(土) 22:15:21.63 ID:7XDpIYnB.net]
穴があったら入りたい。

694 名前:デフォルトの名無しさん mailto:sage [2015/08/09(日) 00:30:28.91 ID:dl726Wch.net]
そこに穴はあるじゃろ

695 名前:デフォルトの名無しさん mailto:sage [2015/08/09(日) 06:09:40.90 ID:T7+WUh22.net]
このスレで質問するような人が気づいてることなんて皆とっくに気づいてるんだから安易にバグ認定するのはあかん

696 名前:デフォルトの名無しさん mailto:sage [2015/08/09(日) 22:42:00.68 ID:POd8P+xe.net]
r"aaaa"
このrってなんですかマニュアルのどこのページを見て学べますか

697 名前:デフォルトの名無しさん mailto:sage [2015/08/09(日) 23:03:20.00 ID:LxR15rBc.net]
>>672
どうぞ。

docs.python.jp/3.3/library/re.html
正規表現パターンに Python の raw 文字列記法を使えばこの問題を解決できます。'r' を前に付
けた文字列リテラル内ではバックスラッシュを特別扱いしません。従って、"\n" が改行一文字の
入った文字列になるのに対して、r"\n" は '\' と 'n' という二つの文字の入った文字列になります。
通常、Python コード中では、パターンをこの文字列記法を使って表現します。

698 名前:デフォルトの名無しさん mailto:sage [2015/08/09(日) 23:03:50.16 ID:SZbKyl18.net]
docs.python.jp/3.3/reference/lexical_analysis.html#literals

699 名前:デフォルトの名無しさん mailto:sage [2015/08/10(月) 00:26:16.45 ID:1trpq2mO.net]
raw文字列は確かに分かりにくいね。
俺は意味理解できなくてなんとなく使ってる。

700 名前:デフォルトの名無しさん mailto:sage [2015/08/10(月) 02:33:45.82 ID:xpOq7lBh.net]
raw文字列はWindows環境でパス記述するときには便利。
\で終わるディレクトリ記述しようとするとはまるけど。



701 名前:デフォルトの名無しさん [2015/08/10(月) 04:55:41.13 ID:joKVIITR.net]
久々にスレ伸びてると思ったら
python全然関係ない話題だったでござる

702 名前:デフォルトの名無しさん mailto:sage [2015/08/10(月) 10:08:21.10 ID:A4JvqZRL.net]
def a():
pass

f = 'a'

変数fから関数a()を実行する方法を教えてください

703 名前:デフォルトの名無しさん mailto:sage [2015/08/10(月) 10:14:01.63 ID:Y9npztmj.net]
>>> def a():
... print 'This is a A'
...
>>> f = 'a'
>>> locals()[f]()
This is a A
>>>

704 名前:デフォルトの名無しさん mailto:sage [2015/08/10(月) 10:21:00.93 ID:R47cdcnQ.net]
globals()[f]()
eval(f)()
exec(f + '()')

705 名前:デフォルトの名無しさん mailto:sage [2015/08/10(月) 10:29:09.95 ID:+1c20aQZ.net]
Pythonなら書き方は一つ(キリっ

706 名前:デフォルトの名無しさん mailto:sage [2015/08/10(月) 12:24:34.24 ID:A4JvqZRL.net]
できましたありがとうございました
今bottleのソースコードを見ながら勉強してるんですけど
ソースコードでlocals()とglobals()をググっても見つかりませんでした
bottleではどうやってコントローラーを実行しているのかわかりませんか?

707 名前:デフォルトの名無しさん mailto:sage [2015/08/10(月) 13:16:50.78 ID:R47cdcnQ.net]
「Pythonなら書き方は一つ」で検索しても、それらしいページはヒットしない
煽るならzen of pythonから引用してしほしい

>>682 importlibやgetattrでモジュールの動的なインポートを利用していると思われる

708 名前:デフォルトの名無しさん mailto:sage [2015/08/11(火) 00:51:44.04 ID:Kibzp2Ye.net]
importlibとgetattrとglobals()とlocals()で簡単なルーターを作るところから勉強しようと思います

709 名前:デフォルトの名無しさん mailto:sage [2015/08/11(火) 10:00:55.94 ID:z0h2VMWZ.net]
40x + 300 = 4100
この一次方程式を解くライブラリってありますか?

710 名前:デフォルトの名無しさん mailto:sage [2015/08/11(火) 10:33:58.70 ID:v ]
[ここ壊れてます]



711 名前:443SNvd.net mailto: >>685
試してないけど、SymPyやPyMaximaかな。
[]
[ここ壊れてます]

712 名前:デフォルトの名無しさん mailto:sage [2015/08/11(火) 10:59:40.44 ID:VmWDUo2S.net]
>>> import sympy
>>> x = sympy.Symbol('x')
>>> sympy.factor(x**2 - 4)
-(2 + x)*(2 - x)
>>> sympy.solve(40*x + 300 - 4000, x)
[185/2]
>>> sympy.solve(40.*x + 300 - 4000, x)
[92.5000000000000]
>>> sympy.solve(40*x + 300 = 4000, x)
SyntaxError: keyword can't be an expression
>>> orz

713 名前:デフォルトの名無しさん mailto:sage [2015/08/11(火) 20:22:36.51 ID:XnkwOBLj.net]
scipyとnumpyだけの専門スレが合ってもいいと思うんだけど立ててもいい?

714 名前:デフォルトの名無しさん mailto:sage [2015/08/11(火) 20:39:49.20 ID:BYbKL/Wt.net]
いいんじゃね、といいつつ…

どんなスレ立てても大なり小なり叩かれると思うが
科学技術計算総合スレとでもしておいた方が、叩かれる度合いは少ないだろう

Rスレあったんだ
検索しづらいわ!

715 名前:デフォルトの名無しさん mailto:sage [2015/08/11(火) 20:40:52.49 ID:7cQT55t3.net]
matplotlibとか欲しいし、
もうちょっと広く、「pythonで科学技術計算」とかなら良いかな?
他の人の意見も聞いてね

716 名前:デフォルトの名無しさん mailto:sage [2015/08/11(火) 20:42:57.00 ID:7cQT55t3.net]
>>689
言語が混ざるとつばぜり合いを始める馬鹿がいるので、
python専用にして欲しいと思う

717 名前:デフォルトの名無しさん mailto:sage [2015/08/11(火) 20:56:01.90 ID:flESq3IS.net]
個人的にはnltや機会学習系の話がしたい

718 名前:デフォルトの名無しさん mailto:sage [2015/08/11(火) 23:46:00.42 ID:mq4pk2ON.net]
Matplotlibはいちおうスレがあるよ
自然言語処理や機械学習も言語を限定しないスレはあるね

719 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 09:32:49.05 ID:+VWy6X24.net]
>>688
過疎板だしIDついてるし
このスレでやった方が混乱は少ないと思う

720 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 10:57:41.33 ID:I5afDcIY.net]
a = set([4, 3, 1, 2, 5])
b = set([1, 2,])
print(list(a - b)) # [3, 4, 5]
print(list(b - a)) # []

setに変換して引き算すると順番が狂っちゃうので
[4, 3, 5]って順番をキープした結果を返せる引き算の方法を教えてください



721 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 11:10:39.20 ID:RQEQ2Cbc.net]
list(a - b) でリストにしてるのはなぜ?

722 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 11:16:11.95 ID:tORyfhyI.net]
>>695
A = [4, 3, 1, 2, 5]
B = [1, 2]
diff = set(A) - set(B)
result = [n for n in A if n in diff]

723 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 11:18:07.92 ID:RQEQ2Cbc.net]
>>> a = [4, 3, 1, 2, 5]
>>> b = [1, 2]
>>> reduce(lambda n, m: a.remove(m), b, [])
>>> a
[4, 3, 5]

724 名前:デフォルトの名無しさん [2015/08/12(水) 16:55:12.14 ID:k8XljSWZ.net]
name1, name2, name3・・・といった風に名前を生成してその中に要素を代入したいのですが上手くいきません
たとえば、

list = [x,y,z]
for i, j in enumerate(list):
"name" + i = j

といった感じです
勿論上記のやり方では上手くいきませんが、イメージとしてはこんな感じでlistの中の要素を番号付けされた名前の変数に入れたいのです
どうしたらいいんでしょうか?

725 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 17:31:42.13 ID:7eD+gktf.net]
>>141-142のglobal使いましょう

726 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 17:53:05.65 ID:tORyfhyI.net]
>>699はグローバルよりargparseみたいにnamespace使った方が便利じゃない?

class Namespace:
    pass
ns = Namespace()
L = [10, 20, 30]
for i, j in enumerate(L):
    setattr(ns, 'name'+str(i), j)
print(ns.name0)

727 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 18:43:45.34 ID:i7Ce6lvW.net]
>>699
stackoverflow.com/questions/783781/python-equivalent-of-phps-compact-and-extract
www.php2python.com/

728 名前:wiki/function.extract/ []
[ここ壊れてます]

729 名前:デフォルトの名無しさん [2015/08/12(水) 18:43:56.83 ID:k8XljSWZ.net]
ありがとうございました!

730 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 20:08:36.40 ID:6qYgwLU5.net]
list は予約されている。
>>> list
<class 'list'>

なので、
list = ?
という書き方をしては駄目。

あと、dict使っても出来ます。

>>> L = ["x", "y", "z"]
>>> d = {}
>>> for i, x in enumerate(L):
... d["name" + str(i)] = x
...
>>> d
{'name2': 'z', 'name1': 'y', 'name0': 'x'}



731 名前:デフォルトの名無しさん [2015/08/12(水) 22:04:11.18 ID:zuppFPQO.net]
質問1
a = {1, 2}
print(a[0])

これエラーなんですけどどうやって1の値を取得できますか?

質問2
a = {"0":1}
print(a["0"])

これもキーを指定するとエラーなんですけどどうやってでキーを指定したらいいんですか?

732 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 22:10:12.72 ID:PF0ET0RY.net]
>>705
質問1
setはindex指定できないのでリスト使う
>>> a = [1, 2]
>>> print(a[0])
1

質問2
普通にできるけどなんてエラーでる?

733 名前:デフォルトの名無しさん [2015/08/12(水) 22:43:30.21 ID:zuppFPQO.net]
あ、すみません
質問2は
print(a[0])だとKeyError: 0ってでました
print(a["0"])だとでませんでした
文字列で指定したので取れなかったようです

質問1のはよくわかりません
a = {1, 2}
print(a)は{1, 2}って表示されますが、どうしてキーを指定しなかった場合だと個別に取り出せないんでしょうか?

734 名前:デフォルトの名無しさん [2015/08/12(水) 22:53:11.50 ID:YIqOZZQS.net]
# -*- coding: utf-8 -*-

num_1 = 0

def hoge():
print(num_1)

# これでnum_1は参照はできるが、

def hoge_1():
num_1 += 1
print(num_1)

# これだと参照はできるが、代入はできない。なので

def hoge_2():
global num_1
num_1 += 1
print(num_1)

# このように関数内でnum_1のグローバル宣言をする。そうすると
# num_2に代入できる。

735 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 23:02:21.27 ID:PF0ET0RY.net]
>>707
a = {1, 2}
だとset型を指定していることになるけど,setは順序を持っていないので,indexを指定して要素を取り出すことはできない
中身を取り出したいならfor文にかけるか
>>> a = {1, 2}
>>> for i in a:
... print(i)
...
1
2

いったんリストに変換する
>>> l = list(a)
>>> l[0]
1
とか

736 名前:デフォルトの名無しさん mailto:sage [2015/08/12(水) 23:59:18.78 ID:ZEyNhv4C.net]
「キーを指定しなかった場合だと個別に取り出せない」って何を言ってんのか分かんなくて悩んだけど
{"0":1}
の、キーを指定しない版が
{1, 2}
っていう認識かいな
確かに同じ記号を使ってて分かりにくいよな
他に記号なかったんかいって俺も最初思ったわ

737 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 00:15:08.98 ID:Anx3mf6Z.net]
>>> l = [0, 1]; l
[0, 1]
>>> l += []; l
[0, 1]
>>> l += [2]; l
[0, 1, 2]
#[] で増えないのは仕様ですか?

738 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 00:40:20.39 ID:Pv/NYKUJ.net]
仕様じゃなかったら何なんだ。
それが聞きたいことか?

739 名前:デフォルトの名無しさん [2015/08/13(木) 01:27:49.35 ID:B5UxQ5Jz.net]
空なんだから増えるわけ無いじゃん
こうだろ
l += [[]]

740 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 11:26:21.50 ID:xmv8N9p/.net]
夏だな



741 名前:デフォルトの名無しさん [2015/08/13(木) 13:02:41.78 ID:dWSY8J7e.net]
scipyの日本語マニュアルがほしい

742 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 19:57:26.86 ID:PEz63Oz9.net]
pycon2015だけどチケット高いよ
つうか日本で著名なカンファレンスで金取るのpyconぐらいしか知らないんだけど
収入をスタッフで分けあってるんじゃないだろうね
金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け金儲け

743 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 20:26:30.03 ID:zypo+673.net]
>>716
10000円とか高すぎワロタ

744 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 21:08:18.66 ID:UOPmO2ID.net]
著名なカンファレンスって具体的には何だろう
著名って道端でインタビューしても半分以上知ってるとかそういう意味じゃないよね

745 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 22:07:09.04 ID:7307l9+I.net]
太いスポンサー付いてんだから会場費も賄えるだろ
ひょっとしてけちなスポンサーなのかw

746 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 22:46:05.03 ID:zYX1bnGl.net]
yapcは金取るよ
5000円

俺はyapcに行くけどpyconは行かない
役に立った試しがないから

747 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 23:18:38.29 ID:XFGl8RYP.net]
超初歩的な質問なんですけど
if __name__ =‘’__main__‘’
よ意味がイマイチ分かりません。
どういう意味か教えてください。

748 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 23:43:50.03 ID:mALeQvK5.net]
>>721
docs.python.jp/3/tutorial/modules.html

特に「if __name__ == "__main__"」の件は
docs.python.jp/3/tutorial/modules.html#executing-modules-as-scripts

749 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 23:53:08.79 ID:XFGl8RYP.net]
>>722
なんとなくわかった
ありがと

750 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 23:59:00.58 ID:5Zf3S51H.net]
>>721
実行結果の違いを自分で理解しましょう。

$ cat a.py
print("a1: __name__ is \"{}\"".format(__name__))

if __name__ == "__main__":
print("a2: __name__ is \"{}\"".format(__name__))

$ cat b.py
print("b1: __name__ is \"{}\"".format(__name__))
import a

if __name__ == "__main__":
print("b2: __name__ is \"{}\"".format(__name__))

$ python3 a.py
$ python3 b.py



751 名前:デフォルトの名無しさん [2015/08/14(金) 01:26:08.78 ID:7t8/l02p.net]
ランダムな文字列を特定の文字数から分割することはできるんでしょうか
例えば"abcde"や"12345"を3文字目から分割して、"abc", "de"や"123", "45"にするといった感じです

752 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 02:12:20.51 ID:55h31pll.net]
スライス使う
s = 'abcde'
n = 3
s[:n], s[n:]

753 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 07:31:24.74 ID:qjotB1DM.net]
いい加減に自分で調べようぜ
ここはお前の家庭教師じゃないんだ

754 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 08:13:18.68 ID:UfQw/EAV.net]
漂う一年生の夏休み臭
まぁでもこんなとこで聞いて答え探してちゃあ冬の宿題は無理だろうな
情報科学系は大企業でもない限り学歴は関係ないし、向いてないと思ったなら大学やめるか転科、転部してもいいと思うけどな

755 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 10:02:58.72 ID:7t8/l02p.net]
>>726
ありがとうございました

756 名前:デフォルトの名無しさん [2015/08/14(金) 13:16:29.76 ID:Q/AtP1Be.net]
スレタイ通りに進行している良スレ

757 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 17:20:25.77 ID:LobgVTtd.net]
ここ質問スレなのに説教してるバカなんなの
ちょちょい回答側も適当なこと答えてるし何様なんだろう

758 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 18:05:30.80 ID:qjotB1DM.net]
一冊本読めば分かるような質問されても

759 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 18:34:20.95 ID:UfQw/EAV.net]
>>731
俺様だよ
Pythonのような動的言語の得意な事の一つにメタプログラミングつってな
プログラムを生成するプログラムを作るような生産手段がある。
つまりプログラムの前にプログラムは始まってるんだよ
Pythonを究めればつまり、十年後、二十年後にプログラムするおまえ自身をプログラムすることだってできる
わかるか?説教なんかじゃねーよ
メタプログラミングだ

760 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 18:40:34.94 ID:55h31pll.net]
質問馬鹿、世話焼き馬鹿、煽り馬鹿
馬鹿どもの需要を満たす良スレです
でもエスパー向け質問は勘弁な



761 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 18:47:50.96 ID:1qaFTc/3.net]
ググったら大量にあるような質問とか4ねよと思うかも知れないが
>>725のような質問から分かることは質問者がプログラミング初心者であることだ
複数のプログラミング言語の経験があれば例えばJavaScriptのsubstringみたいなのはどうやるんだろうみたいな疑問から「python substring」でぐぐれば答えにたどり着ける
>>725に必要なことは経験なんだよ
経験を積めば答えの探し方も自ずとわかってきてクソ質問をする回数も減ってくる
さいしょはそういうものだ

762 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 19:16:08.06 ID:kkHnja52.net]
技術書は

763 名前:高いからなあ
疑問一つ解決するにはネットが一番
[]
[ここ壊れてます]

764 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 19:18:02.42 ID:KhWLzGMo.net]
高説は垂れ終わりましたかねクソたれの諸君

765 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 20:24:45.10 ID:RT/486IQ.net]
必要最小限の努力で最大限の効果を発揮する回答をするのが腕の見せ所だろ

766 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 22:13:36.03 ID:LobgVTtd.net]
>>735
そうそうググり方がわかんないんだよね初心者は
なんか一つでも言語かじってれば検索語がすぐ浮かぶし基本質問しなくて済むんだけど
そういう事すら想像できないで説教してる奴はプログラムは書けるかもしれないけど年収低そう

767 名前:デフォルトの名無しさん mailto:sage [2015/08/14(金) 23:19:56.73 ID:OD8R+FZZ.net]
「文字列 分割」で検索すれば一発だろ
っていう想像すら出来ないのか?

768 名前:デフォルトの名無しさん mailto:sage [2015/08/15(土) 00:09:06.75 ID:xP2G+OJc.net]
>>740
君は恵まれているんだよ
「知りたいことの調べ方を教えられずとも知っている」というのは、ある意味超人なのだから

769 名前:デフォルトの名無しさん mailto:sage [2015/08/15(土) 00:11:59.43 ID:ijAlKA58.net]
>>740
splitがヒットする

770 名前:デフォルトの名無しさん mailto:sage [2015/08/15(土) 04:47:08.17 ID:Yk3bSSFS.net]
python始めたころ
'hoge'.length
'hoge'.length()
'hoge'.len()
とかやって途方に暮れたのは良い思い出



771 名前:デフォルトの名無しさん [2015/08/15(土) 13:23:11.13 ID:Ul7UCeMQ.net]
ここで一から聞くよりも
チュートリアルを一通りやってから聞いたほうが効率がいい

772 名前:168 mailto:sage [2015/08/15(土) 13:40:31.23 ID:n2MIk9XB.net]
たしかに超低レベルだけど、ここそういうスレだもんね。
なかよし学級みたいなものだよ

773 名前:デフォルトの名無しさん mailto:sage [2015/08/15(土) 13:41:20.37 ID:vqznTC4Z.net]
変数に複数行の文字列が入っていて
それを各行の先頭に&があったらそこでsplitをしたいのですが、
シンプルな形でするにはどうしたらよいでしょうか

774 名前:168 mailto:sage [2015/08/15(土) 13:50:48.77 ID:n2MIk9XB.net]
>>746
str.split(″¥n&″)

775 名前:デフォルトの名無しさん mailto:sage [2015/08/15(土) 14:00:32.15 ID:vqznTC4Z.net]
>>747
あざす

776 名前:デフォルトの名無しさん [2015/08/15(土) 19:34:44.25 ID:4G4yaXTm.net]
スーパー初心者です
EclipseにPydevというものを入れたいんですが
Unable to read at repositlyみたいなエラーメッセージがでます。
Eclipseかjavaのバージョンがおかしいのでしょうか?
Eclipseは最新java 1.7.045です

777 名前:デフォルトの名無しさん mailto:sage [2015/08/16(日) 00:21:57.41 ID:AC1P33gf.net]
Unable to read at repositly
この英文はスペルも間違っているし、
文法的にもおかしい

正しいエラーメッセージで、検索しろ
eclipse Unable to read 〜

778 名前:デフォルトの名無しさん mailto:sage [2015/08/16(日) 00:35:10.95 ID:Eim8BKO0.net]
ソフトウェアが動かない時はOSも書いてもらわないと回答に困る

779 名前:デフォルトの名無しさん mailto:sage [2015/08/16(日) 10:16:12.86 ID:UepVPRcb.net]
>>749
みたいなエラーじゃエスパーしか回答できないな

780 名前:デフォルトの名無しさん mailto:sage [2015/08/16(日) 10:47:06.87 ID:lDaj3UMn.net]
input.txt
というファイルに
codepad.org/Lm5qAAPj
のように文字列が並んでいます。

このファイルを読み込んで、
同じ内容の行がn個以上
(nは事前にわかる定数)
出現する場合に、
その文字列の一覧を取得し表示したいのですが、
どのように書けば良いでしょうか。

この例でいうとn=3の時
"2015年7月17日"
などが該当します。

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



781 名前:デフォルトの名無しさん mailto:sage [2015/08/16(日) 10:55:57.16 ID:8LWqlGmF.net]
二次のリストにして[行の中身、出た回数]でひとまとめにする。
あとはeachで毎行すべての行の中身と比較して、一緒なら出た回数+1
最後に出た回数が定数以上なら行の中身を出すeach
効率がマックスではないやろけど充分やない?

782 名前:デフォルトの名無しさん mailto:sage [2015/08/16(日) 10:57:59.55 ID:lDaj3UMn.net]
なるほど、ありがとうございます。

783 名前:デフォルトの名無しさん mailto:sage [2015/08/16(日) 11:03:26.16 ID:O32Kimu0.net]
はいよ。

import sys
from collections import defaultdict

if __name__ == "__main__":
n = int(sys.argv[1])
print("n is {}".format(n))

path = "tech752-input.txt"
dd = defaultdict(int)
with open(path, "r") as f:
for _line in f:
line = _line.strip()
dd[line] += 1

for k, v in dd.items():
if v >= n:
print("{:>11s} は {} 回出現しました。".format(k, v))

784 名前:デフォルトの名無しさん [2015/08/16(日) 11:06:02.80 ID:0tax/iFh.net]
宿題の季節ですね

785 名前:752 mailto:sage [2015/08/16(日) 11:14:57.83 ID:lDaj3UMn.net]
>>756
ありがとうございます。
collections
ってやつですか、使ったこともありませんでした。

>>757
宿題でなく、業務の補助です。
コンピューター系の仕事じゃないんですが、
excelファイルの一行目で重複しているものをさがさねばならない状況で
あまりにたくさんあって、手動じゃ厳しい状況でした。

786 名前:デフォルトの名無しさん mailto:sage [2015/08/16(日) 11:46:46.26 ID:UepVPRcb.net]
この丸投げ依頼、ランサーズで見かけたな

787 名前:デフォルトの名無しさん [2015/08/16(日) 11:52:01.60 ID:0tax/iFh.net]
excolの整理するならwin32com使うともっと捗る

788 名前:752 mailto:sage [2015/08/16(日) 12:58:02.61 ID:lDaj3UMn.net]
>>760
ありがとうございます。
ただ汎用性の高い方法が知りたかったので
Python単独にしました。

789 名前:デフォルトの名無しさん [2015/08/16(日) 20:54:41.00 ID:qIQbKUMb.net]
エクセルファイルってpythonの標準モジュールでいけるん?

790 名前:デフォルトの名無しさん mailto:sage [2015/08/16(日) 21:50:03.91 ID:LFerq79m.net]
フォーマットを理解していて自分で解析するなら標準ライブラリでいけると思うよ
解析を自分でやりたくないなら標準ライブラリでは難しい、PYPIから探して用途に合ったものを入れて使う



791 名前:デフォルトの名無しさん mailto:sage [2015/08/16(日) 22:35:19.49 ID:e2KUFoWx.net]
csvでええやん(適当

792 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 00:19:47.15 ID:cHfxWEIf.net]
いまどきエクセルとか時代遅れ。
Windowsがメインの時代は終わった。

793 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 01:35:46.62 ID:yvTEFZww.net]
確かにメソッドをバインドしてるはずなのに XXX instance has no attribute xxx って出る時はどうしたらいいんですか?

class Main:
def __init__(self):
self.XXX = XXX()
self.test = Test(self.XXX)

class Test:
def__init__(self, XXX)
self.XXX = XXX
def hoge(self):
self.XXX.xxx()

class XXX:
def __init__(self):
pass
def xxx(self):
pass

大分省略してますが、大まかな流れはこんな感じでエラーはないはずなんですが・・・

794 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 06:14:35.27 ID:wMu/qLyK.net]
実行すると同じエラーが発生するコードを載せないと的を得ないアドバイスになるよ
とりあえずTestクラスに構文ミスがある

795 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 06:46:37.95 ID:XZr/R9DQ.net]
>>765
Google Apps の Spreadsheet はまだ使いにくいんだわ
慣れ鴨試練けど

796 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 08:35:05.25 ID:yvTEFZww.net]
>>766
自己解決しました
Testクラスの初期化でバインドする前に別の命令でXXXを呼び出していたのが問題でした

797 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 08:40:08.19 ID:yvTEFZww.net]
>>767
ありがとうございました

798 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 11:53:45.23 ID:jAoOCpIM.net]
pythonのメモ化ってサードパーティライブラリを使わない場合はどうやるのかおしえて

799 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 12:03:41.24 ID:HKx5lNza.net]
サードパーティライブラリの
ソースコード読め

800 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 12:39:02.37 ID:hnwd1zgq.net]
"); //]]>-->
801 名前:4" target="_blank">>>754
>あとはeachで毎行すべての行の中身と比較して、
>一緒なら出た回数+1

行の内容を、キーにして、
辞書・連想配列(dic, map)を使えば、効率的
[]
[ここ壊れてます]

802 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 14:15:45.35 ID:wMu/qLyK.net]
>>771
標準ライブラリのデコレーターfunctools.lru_cache()を使う

803 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 16:33:43.57 ID:3iVEaaDQ.net]
ブラウザのクッキーのように、ローカルにデータを保存してキーで呼び出す簡単な仕組みがほしいのですが
ありませんでしょうか
ファイル名をキーにできなくもないですが、ファイル名だと制約が多そうなので
専用の仕組みがないか知りたいです

804 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 16:50:29.97 ID:wMu/qLyK.net]
>>775
標準ライブラリのdbm(シンプル)やsqlite3(多機能)を使う
データが少量ならjson(多言語対応)やpickle(Python特化)で一気に読み書き

805 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 16:57:29.22 ID:3iVEaaDQ.net]
>>776
いろいろあるんですね、標準から順番に試してみます。

806 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 17:31:22.68 ID:BpXeI8EH.net]
具体的に何のデータを呼び出すの?
普通はデータベース(上の人が書いてるsqlite3とか色々)
テキストでも数値でも画像みたいなバイナリでもなんでも保存できる
そこまで大げさじゃなかったらdictにしてローカルへの永続保存にはpickleとか

807 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 17:49:25.09 ID:XZr/R9DQ.net]
>>775
memcached

808 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 17:53:32.11 ID:BpXeI8EH.net]
いやそれじゃローカルへの永続保存できないじゃん
揮発していいんならそもそもdictでいいわけだし

809 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 17:55:31.75 ID:7xSphxbU.net]
>>775
python関係ないなスレチ
localstorageかindexeddbでぐぐれ

810 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 18:00:59.30 ID:BpXeI8EH.net]
>>781
CookieみたいにキーバリューっぽくPythonでデータをやり取りできる簡易ストレージありませんかってことでしょ
localstorageとか全然関係ない



811 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 18:18:31.83 ID:XZr/R9DQ.net]
sqlite3 は良いんだけど面倒じゃん

>>780
永続保存したいときは memcached にさせればいい

812 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 18:30:26.61 ID:BpXeI8EH.net]
>>783
俺の知ってるmemcachedはストレージへの保存はできなかったように思うんだけど今はできるの?
できたとしても大規模なサイト向けの分散メモリキャッシュを>>775に勧めるのは違う気がする

813 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 18:33:58.91 ID:XZr/R9DQ.net]
>>775 は永続化したいとは言ってないよな
PC が起動してる間だけ(半)永続化出来れば良い用途なら memcached を勧める
python のプロセスが終了しても実行単位が分かれてても良いからね

814 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 18:39:27.72 ID:PIyjnu6p.net]
>>785
お前そんなんだからいつまでたっても伸びないんだよ

815 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 21:41:07.78 ID:AC+nB5ru.net]
shelveが挙がってなくて驚愕

自動でpickle/unpickle
バックエンドは可能ならdbmを使用
dict互換インターフェース

初心者には文句ねえだろ

816 名前:デフォルトの名無しさん [2015/08/17(月) 22:02:22.04 ID:HG93N3kS.net]
pythonのパッケージを読み込んだときに、ディレクトリ内のサブモジュールを一括してimportされるようにしたいです
from package import *
じゃなくて
import package
ってしただけで
package.lib1, package.lib2, …
という風に階層的にアクセスできるようにしたいんですが、手軽にできる方法ありませんか?

今は__init__.pyにそのディレクトリのファイルリストを取得してpyファイルのみインポートするようforループ回してるんですが
こんなめんどくさい方法しかないのでしょうか?

817 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 22:15:45.09 ID:AC+nB5ru.net]
__init__.pyに
from . import *
って書いとけば

818 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 22:19:37.26 ID:LdwVCEVY.net]
ID:XZr/R9DQはもうちょっと怒られてもいいと思う

819 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 22:21:13 ]
[ここ壊れてます]

820 名前:.35 ID:AC+nB5ru.net mailto: デコピンでも食らわせとけ []
[ここ壊れてます]



821 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 22:25:19.92 ID:HG93N3kS.net]
>>789
それは試したのですが、dir(package)しても何も読み込まれてません(エラーも出ません)
もちろんグローバルに直接広げられてるわけでもありません
後出しですみませんがpython3.4.1です

822 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 08:34:58.30 ID:+GUozJxI.net]
外字対応で「codecs」あたりを使って色々やっているんですが、
error処理を「replace」や「backslashreplace」にした場合、
置換された時だけ処理を追加したいのですが、
その際の分岐はどのようにすれば出来るでしょうか?

823 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 10:15:30.36 ID:/VHLnea+.net]
置換する前とした後の文字列を比較

824 名前:デフォルトの名無しさん [2015/08/18(火) 11:27:12.95 ID:1sNyIVHN.net]
天才ktkr

825 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 18:46:01.56 ID:LAF+YM5X.net]
>>792
いや教えてもらったことでできるよ
できてないのは教えてもらったとおりにやってないだけ
自分が手抜きして書いた文章で負担は回答者に来ることを忘れるな

826 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 19:02:01.11 ID:aNFP607G.net]
>>794
それしかないかー
ありがとうございます。

827 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 19:42:34.63 ID:61LHAw2c.net]
教えてもらってから「それしかないかー」って言う人嫌い
必死こいて考えてレスした人に失礼じゃないか
注文があるなら最初に「xx以外の方法で」って書いとけよ

828 名前:デフォルトの名無しさん [2015/08/18(火) 20:33:40.72 ID:0mjtCM8s.net]
まぁまぁ

829 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 21:05:13.78 ID:aNFP607G.net]
>>798
なんだかすいませんでした。

830 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 21:28:23.83 ID:2sDrekuo.net]
>>796



831 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 23:34:56.09 ID:yDieNvXT.net]
>>796
どう試したんだお前
from . import *で読み込むためには__all__がいるだろが

832 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 23:55:52.75 ID:pEad/GRS.net]
具体的なことを言わずに質問者を適当に罵倒すると
手軽に偉くなった気になれるのでマジおすすめ

833 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 00:00:27.11 ID:aTZq7rnW.net]
そこらのブログのサンプルコードを見てるとしばしば
if
elif
elif

を使っているのを見ますが、実際には殆どの場合では

if
if
if

で事足りますよね?elifを使う事で何かいいことがあるんでしょうか?

834 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 00:15:08.96 ID:xc/++r0f.net]
殆どの場合・・・ifで事足りる
殆どの場合以外・・・ifで事足りない

単純明快

835 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 00:23:02.41 ID:aTZq7rnW.net]
だとしたら以下のような簡単な条件式でもわざわざ

if int == 1:
elif int == 2:
elif int == 3:

って書いてるのは何ででしょうか?

836 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 00:23:30.33 ID:WfM1PAPC.net]
一連の分岐が分かりやすい

837 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 00:36:57.15 ID:G/CiAypH.net]
ifが複数並んだらどれかの分岐の一つのみが実行されるという意図が明確でない
というよりifが並んだら重複して実行されうるものとして見える
だからそうでない限りはelifを使って、どっかで引っかかったらその後のelif節をパスする意図を明確にする

838 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 00:47:29.32 ID:BLCCc3GJ.net]
つかif-elif-elseで1ブロックなんだから
んでn=1,2,3で処理を振り分けるのもひとかたまりの処理だろ
わざわざ独立したifブロックを複数たてる必要がないべ
意図がわかりづらいコードはあとから読み直すの大変だぞ

839 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 03:02:58.44 ID:1cIU6vdw.net]
>>804
elifをifに換えると上手く動かない例

test_result = 95
if test_result > 90:
    grade = 'A'
elif test_result > 80:
    grade = 'B'
elif test_result > 70:
    grade = 'C'
elif test_result > 60:
    grade = 'D'
else:
    grade = 'E'
print('テストの点は', test_result, '

840 名前:ャ績は', grade) []
[ここ壊れてます]



841 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 05:02:58.82 ID:MH7WCZSE.net]
Pythonにswitchがあったらなあっていつも思う
elifをどんどんつなげていくと、下に行くにつれ息が苦しくなってくる

842 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 07:39:56.25 ID:2JD/ApDH.net]
はい、大きく吸ってー

843 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 07:54:26.07 ID:hnj5IXaX.net]
>>811
Cのswitchの仕様ならいらない

844 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 07:57:40.59 ID:hnj5IXaX.net]
>>798
すばらしい洞察

845 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 08:34:03.16 ID:zU2KMJnx.net]
ではどういうスイッチの仕様がいいのでしょう?
Cのswitchを知らないんだけど、vbaはswitchは仕様もクソもifを見やすくしただけだね。
Aという変数が
条件○
条件△
条件□
どれでもないとき

これ以外のswitchってどんなやろ?

846 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 09:45:17.12 ID:MH7WCZSE.net]
>>813
breakの書き忘れがバグの元になるから
Pythonはswitch系の構文を採用しなかったと聞いたことがある
その思想には産道できるんだが、やっぱりif文が長いと呼吸が…
こういう基本構文をPythonに独自に付け加えるのって難しいのかな?

847 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 09:49:40.96 ID:CQPQ0YpI.net]
>>802
いらねえよバカ

848 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 12:25:13.17 ID:fKGepA2j.net]
pythonにswitchを導入したら、objectの評価がどのタイミングで行われるかが気になるな。
例えば、__eq__を実装したクラスの場合とか。
既に超初心者の範囲の話題ではないが。

849 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 12:33:01.34 ID:/st2usUG.net]
pythonにswitchがないのは
「だらだら長い分岐を書きたくなったら、テーブルとかポリモーフィズム使う事考えろよな!」
という、お前らへのメッセージやで割とマジで

850 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 12:54:27.69 ID:zU2KMJnx.net]
>>819
とまぁこういうこと考える機会になるから、くだすれ向けの話題やろ
switchはswitchの良さがあるけどな
オムロンとか未だにswitchで大きな益をだしとるし



851 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 13:31:02.10 ID:1cIU6vdw.net]
switch文よりパターンマッチの式が欲しい、下みたいなことlambda書かずにやりたい

result = match(10+3, [
    lambda n: 'hoge' if n > 20 else ContinueMatch,
    lambda n: 'fuga' if n > 10 else ContinueMatch,
    lambda otherwise: 'moge'])

852 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 16:42:49.05 ID:N616QwES.net]
>>817
実際にやってみろよバカ

853 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 16:48:39.32 ID:BLCCc3GJ.net]
testdir以下に
__init__.py
from . import *

hoge.py
print("hogehoge")

でimport testdirしても何も出力されない
__init__.pyに__all__ = ["hoge"]指定するとhogehogeって出る

854 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 17:28:30.29 ID:/k7NGekj.net]
で、正解は?

855 名前:デフォルトの名無しさん [2015/08/19(水) 17:59:19.82 ID:hnj5IXaX.net]
__init__.py は何も書かなくていい
在るだけで良い

856 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 18:04:59.57 ID:/k7NGekj.net]
あるだけでいいどころか最近のバージョンでは__init__なくても名前空間パッケージとして扱われたりすんだけど
大本の質問はパッケージ読み込みと同時にサブモジュールを一括ロードしたいって話らしいので

857 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 20:08:53.14 ID:kk+zL38M.net]
手軽にできる方法とか言ってるからどうなんかなあ、__all__に全部書いとけっていうのは
forループを回してプログラムに読み込ませるのさえめんどくさい方法って言ってるので

858 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 20:29:27.08 ID:b9NBarYK.net]
それしかないかー
ありがとうございます。

859 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 20:41:39.12 ID:/k7NGekj.net]
ていうか__init__でそういうループまわすのって
from unko import chinco とかでも一々unko.__init__が反応するから激しく勧めないけどね

それより__all__無しでfrom . import *できたとかいう心霊現象はどうなったのかなーと

860 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 00:21:02.25 ID:I3VPAzEa.net]
標準出力(orファイル)に



861 名前:改行コード(LF)を出力したいのですが、
sys.stdout.write("\n") とすると CR LF が出力されます。
LF だけを出力する方法はありますでしょうか?

ファイルをバイナリモードでオープンする方法も検討したのですが、
バイト列と文字列の違いゆえか、以下のようなエラーになってしまいます。
----------
open("output.txt", "wb") as f: f.write("\n")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' does not support the buffer interface
----------
※文字列(str)を出力したいので、write(b"\n") 以外の方法でお願いします。

環境は
・Python3.4
・Windows 7
です。
[]
[ここ壊れてます]

862 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 00:31:00.81 ID:PhWv3bmG.net]
試してないけど、b'0xa'を出力すればいいんじゃね

863 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 00:48:12.96 ID:sobFc7C1.net]
>>830
open()のキーワード引数にnewline='\r\n'を指定する
書き出すときに\nが\r\nに変換される

with open('output.txt', 'w', newline='\r\n') as file:
    file.write('hello\n')

864 名前:831 mailto:sage [2015/08/20(木) 00:50:02.22 ID:sobFc7C1.net]
あー、ちゃんとレスを読んでなかった失礼
newline='\n'で読み替えて欲しい

865 名前:830 mailto:sage [2015/08/20(木) 01:04:02.38 ID:PhWv3bmG.net]
まちがえた、b'\x0a'だな

with open('hoge.txt', 'wb') as f: f.write(b'\x0a')

866 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 10:39:06.57 ID:pV6cw7bo.net]
>※文字列(str)を出力したいので、write(b"\n") 以外の方法でお願いします。

867 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 12:25:16.58 ID:WAF82kMO.net]
byteをstrで変換すればいいだろ

868 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 13:02:08.90 ID:jAis7ACz.net]
>>830
import os, sys

if __name__ == "__main__":
os.write(0, b"\n")
ss = "ss\n"
konnichiha = "こんにちは\n"
with open("tech829.wb.txt", "wb") as f:
f.write(b'\n')
f.write(ss.encode())
f.write(konnichiha.encode("utf-8"))

869 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 22:37:29.07 ID:FFZPtzFS.net]
pythonって無料で動かせる鯖ないですよね
ていうかvps前提ですよね
パッケージとかアップロードできるわけじゃないですもんね
ここの先輩方はwebにpythonを使ってますか?

870 名前:デフォルトの名無しさん [2015/08/20(木) 23:12:48.33 ID:YEEbYevP.net]
>>838
>pythonって無料で動かせる鯖ないですよね
あるよ



871 名前:デフォルトの名無しさん [2015/08/20(木) 23:14:38.59 ID:YEEbYevP.net]
>>838
>ここの先輩方はwebにpythonを使ってますか?
つかってる。でも無料のとこでは使ってない。

872 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 23:23:56.79 ID:YEEbYevP.net]
>>838
>パッケージとかアップロードできるわけじゃないですもんね
できるよ

何をやりたいか書いたほうが言いと思う

873 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 23:27:49.83 ID:vJWprlG5.net]
>>838
>ていうかvps前提ですよね
なんでそうなる。
ふつうのレンタルサーバで使ってるよ。
最初からPython入ってるけど、自分で使いたいバージョンとモジュールをインストールして使ってる。

874 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 00:54:55.47 ID:YPq0HJeE.net]
==の逆である!=はなんでないんですか?
AはBではないっていうのはどう書けばいいんですか?

875 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 00:56:22.34 ID:egD41OrM.net]
A!=B

876 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 00:57:56.37 ID:cNm3l2b6.net]
もうそろそろ = の反対を ≠ と書くことができる
言語が出てもいいと思う。

877 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 04:30:24.54 ID:MTjZuMcu.net]
え、>>843ってできるよね?

878 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 08:36:21.94 ID:ewvWrXm9.net]
>>843
>>> True != False
True
>>> True != True
False
>>> True != None
True
>>> False != None
True
>>> False != False
False

879 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 08:42:24.19 ID:HouD2Rdc.net]
>>847
ジャバスクリプト

880 名前:がこんなんやったな。 []
[ここ壊れてます]



881 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 08:44:29.55 ID:ewvWrXm9.net]
ジャバスクリプト()には !== とかがあるね

882 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 10:08:00.53 ID:IT5UaqUy.net]
>>847
Noneと真偽値の比較を真偽値同士の比較と一緒に並べるのはどうかと思う
前者の組み合わせは 1 != "Hello" みたいに型が異なるものを比較してる

883 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 10:53:54.00 ID:aXP8e9K+.net]
pythonで水面の波紋を描くとしたら上級者の人はどうしますか?
pygameを使い、同じ中心点で異なる半径の円の画像を生成してリストに入れ、時間をずらして表示するってのを考えているのですがどうでしょうか

884 名前:デフォルトの名無しさん [2015/08/21(金) 11:16:34.63 ID:ewvWrXm9.net]
実際のイメージと違うんだろうなという映像が頭に浮かんだ

885 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 12:18:35.00 ID:+b9Sq2lj.net]
>>851
Pythonと関係ない
ゲーム制作スレで聞いてこい

886 名前:829 mailto:sage [2015/08/22(土) 00:06:34.80 ID:daWP/VMl.net]
>>830です。
>>832さんの方法で期待通りに動作しました。
他の方のご回答も参考にさせていただきます。

ありがとうございました。

887 名前:デフォルトの名無しさん mailto:sage [2015/08/22(土) 01:04:48.69 ID:deKfbB8U.net]
昔<>って使えてたよね

888 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 07:13:51.83 ID:xqAU88hl.net]
例えば a = [(1,3),(2,4),(2,1),(2,3),(4,4)] のようなリストの中から、最初の
(2,X) (※Xは任意) のような要素のインデクスを返す簡潔な方法はなんでしょうか

上の例では1(=(2,4)のインデクス)が欲しいです

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

889 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 07:27:59.75 ID:Mj+ThXGY.net]
for i,l in enumerate(a) :
 if l[0] == 2:
  i #この変数iが欲しいインデックス

関数にするならreturn iで処理終了
しないならbreakでforを抜けないと続行しちゃってその例だと3になっちゃう
enumerateはfor内を何回ループしてるか変数iに入れ続けるもの

890 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 07:41:04.38 ID:6mvTbcD8.net]
help(a)
を実行して、一通りhelpをながめてみる。

または、

docs.python.jp/3.3/library/stdtypes.html#sequence-types-list-tuple-range
4.5. イテレータ型
を一通り読むんですね。



891 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 08:08:57.76 ID:xqAU88hl.net]
ありがとうございます!

892 名前:デフォルトの名無しさん [2015/08/24(月) 09:34:40.43 ID:m0N2dFlX.net]
つうかさisとかいらねえんだよ
なんで==で全て判定できるように作らなかったのか
False==0がTrueとかPHP並に気持ち悪いな
本当P言語はクソだな

893 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 09:50:11.43 ID:t7k5wrbh.net]
False==0は形違いで例外出すべきだね

894 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 16:56:39.48 ID:kccymPOD.net]
真偽値が整数なのはC言語の慣習なので俺は親しみを感じる
でもTypeError出すのも妥当だと思う
別の言語でfalse == 0がfalseなのは驚愕した

895 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 17:07:28.99 ID:NZbDfDwI.net]
>>862
> 別の言語でfalse == 0がfalseなのは驚愕した

驚愕するほどのものかね?
本質的にfalseと0は別のものだろ。

C言語なんか、true == 3がfalseなんだぞ。

896 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 17:35:30.57 ID:kccymPOD.net]
>>863
trueは1だろ、何言ってんだ(真顔)

C言語の仕様の良し悪しは何とも言えない
でもマジで初学がCだと真偽値は整数扱いになる
比較の演算結果からtrueは1、falseは0、嘘じゃないよ

897 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 18:07:18.58 ID:NZbDfDwI.net]
でも、if (3) {} は真だろ。

3がtrueじゃないのに、
真と

898 名前:かおかしいだろ。 []
[ここ壊れてます]

899 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 18:17:42.39 ID:zrEdzFeo.net]
C言語ネイティブで使ってるひとは
int a = 3; だったとして
if(true == a) ← こんなことする馬鹿はいない
if(true == (a != 0)) ← ぎりぎり許せるがまずしない
if(a != 0) ← 結構ある
if(a) ← 普通これ

900 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 18:24:11.18 ID:NZbDfDwI.net]
> if(a != 0) ← 結構ある

結構あるだろ?

この派生で

if(a != false) ← 結構ある
if(a == false) ← 結構ある

じゃあ、falseの反対は・・・? trueだ!
if(a == true)

なんで動かないんだよ。バンッ!



901 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 18:32:22.30 ID:zrEdzFeo.net]
C使ってるひとでtrueと比較するひとはモグリか素人

902 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 18:38:54.04 ID:NZbDfDwI.net]
だから、C言語を知らない人だったら

別の言語でtrue == 3がfalseなのは驚愕した

っていうだろうなって話をしてるんだよ。

903 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 18:49:39.15 ID:CmRZDEoS.net]
すげーどうでもいい

904 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 19:18:00.61 ID:tH5OuHw3.net]
True/False/Noneはマジで恐いから使うのを避けた方がいい
自分は業務の障害対処に自作スクリプトを使った時、Noneとの比較をミスって
二重障害を起こしてしまったことがある

905 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 19:24:28.72 ID:CmRZDEoS.net]
間抜けの報告ありがとう
肥溜めにでも埋まってろ

906 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 19:36:39.85 ID:zrEdzFeo.net]
>>860

x True/False/Noneはマジで恐いから使うのを避けた方がいい

o == はマジで恐いから is を使った方がいい

907 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 20:03:14.24 ID:CzPwxFH3.net]
>>858から12時間もたったしと思って。
>>857
>>> a = [(1,3),(2,4),(2,1),(2,3),(4,4)]
>>> a.index((2, 4))
1
一行で終わり。

908 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 20:51:14.50 ID:kccymPOD.net]
>>865
C言語のifやwhileなどの構文では0か否かで分岐している
それを利用して比較演算を省略するイディオムがある
Pythonにもこのイディオムが取り入れられている

909 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 20:53:20.82 ID:SKpW1Nac.net]
>>874
そういう質問じゃなかったと思う
最初の質問を読み直した方がいいんじゃないか

910 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 21:15:50.90 ID:CzPwxFH3.net]
>>876の考える、
>>856に対する模範解答は>>874以外にありますか?
ないなら黙っていて下さい。



911 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 21:23:32.34 ID:rfufUizD.net]
>>877
(2,X) (※Xは任意) のような要素のインデクスを返す簡潔な方法はなんでしょうか

と書かれているが?

912 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 21:31:11.15 ID:kccymPOD.net]
>>856
任意の値を指定できる回答

>>> a = [(1, 3), (2, 4), (2, 1), (2, 3), (4, 4)]
>>> b = lambda x: a.index((2, x))
>>> b(4)
1

913 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 23:00:52.16 ID:CzPwxFH3.net]
>>878
a.index((2,X))
でいいでしょ?

重要なのは、
a.index()
を答える事なので。

list.index((2, X))の、
Xを変数とするか4を書くかは重要じゃないです。
>>858でdocumentまで指定しているでしょ?

>>879
そんな書き方も出来るんですね。

914 名前:デフォルトの名無しさん [2015/08/24(月) 23:31:55.53 ID:zakjp7f4.net]
setで引き算したいんですけど辞書だとTypeError: unhashable type: 'dict'になります
どうしたら引き算できますか?

a = [
{"age": 10},
{"age": 20},
]

b = [
{"age": 20},
]

print(set(a) - set(b))

915 名前:デフォルトの名無しさん [2015/08/24(月) 23:44:28.66 ID:HMCHLPlU.net]
>>881
ハッシュ化可能なオブジェクトにすればできます
>>> a = [
("age", 10),
("age", 20)
]
>>> b = [
("age", 20)
]
>>>
>>> set(a) - set(b)
{('age', 10)}

916 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 23:55:01.36 ID:tH5OuHw3.net]
>>880
この質問者が>>856で言っている、「Xの部分は任意」というのは
言い方に語弊があって
「タプルの左要素を指定し、右要素を無視して検索」という意味じゃないかと

だから、彼の望んでいる動作はこれだと思う
>>> a = [(1, 3), (2, 4), (2, 1), (2, 3), (4, 4)]
>>> list(map(lambda x: x[0], a)).index(2)
1

917 名前:デフォルトの名無しさん mailto:sage [2015/08/25 ]
[ここ壊れてます]

918 名前:(火) 00:31:52.45 ID:XaboOLTF.net mailto: >>> import itertools
>>> next(itertools.ifilter(lambda (idx, elem): elem[0]==2, enumerate(a)), (None,))[0]
1
[]
[ここ壊れてます]

919 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 00:32:09.48 ID:nd6cZevZ.net]
たまにID:CzPwxFH3みたいな変な人沸くけど無理して回答しなくていいのに

あとlambdaとかリスト内包使うと初心者は動作が全く理解できなさそう
最初はループと条件分岐主体がいいと思うな
ちょっとコード長くなっても可読性高いので

920 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 00:43:31.95 ID:pfa9oRBx.net]
> あとlambdaとかリスト内包使うと初心者は動作が全く理解できなさそう

これって、初心者を馬鹿にしてるよねw

お前、これらを理解するのに
どんだけ時間かかったの?
数日も数週間もかかったのか?

単に知らないだけなのに、
初心者と馬鹿にするのはやめてもらいたい。



921 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 00:54:29.05 ID:pfa9oRBx.net]
あとさ、知らない文法を使う=可読性が低いという
考え方をやめてくんない?

そもそも「知らない文法」というのはだいたいが
可読性を高くするために作られたものなんだからさ。

例えば、球の表面積を求める式は
4πr^2 って言われてすぐに分かるだろう?
可読性高いからな。

でも知識がない小学生にはわからない。
だからといって公式は可読性低いってことになるか?

ようするに知らない人が読めないことを「可読性が低い」と
言ってはだめなんだよ。

922 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 01:14:26.12 ID:zenTVy2g.net]
夏休みは白痴家庭で育った知恵遅れのガキが湧くから文章を読解できないのも仕方ない

923 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 07:50:03.80 ID:Po+lTyIJ.net]
>>887
>例えば、球の表面積を求める式は
>4πr^2 って言われてすぐに分かるだろう?
>可読性高いからな。

暗記してるからね

よんぱいあーるにじょう

でもすぐ分かるけど可読性高いとは言わないよね

924 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 19:23:33.68 ID:pfa9oRBx.net]
>>889
> 暗記してるからね
可読性が高いコード = 暗記した知識ですぐに理解できるコード
でもあるんだが。

極端な話をすれば、全てを暗記してしまえばどんなものでも
可読性は高いと思える。だけど、それは無理。
だから少ない暗記量で多くに対応できる汎用的な知識というのが重要になる。

だから自社専用ライブラリとかオレオレライブラリはやめろ。言語の構文を覚えろ。
より汎用的なライブラリ、広く知られたライブラリを使えって話にもつながる。

> よんぱいあーるにじょう
> でもすぐ分かるけど可読性高いとは言わないよね

当たり前じゃね? 可読性っていうのは
そういう風に、書き方の問題でもあるだから。
句読点がない文章が読みにくいのも同じ。

まとめると(構文などを)知っている・暗記しているかどうかで
変わるようなものは可読性とは関係ない。
可読性とは知識が有る人が読みやすいかどうかで判断するもの。
「俺(や他の人)が知らないから可読性が低い」という言い方は間違いなんだよ。

925 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 19:35:06.88 ID:yb6n8Wdy.net]
長い上にどうでもいい

926 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 20:15:07.59 ID:pfa9oRBx.net]
どうでもいいなら無視しとけよw

927 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 21:11:14.02 ID:T/PhJBrK.net]
>>890
> 可読性が高いコード = 暗記した知識ですぐに理解できるコード
> でもあるんだが。

> まとめると(構文などを)知っている・暗記しているかどうかで
> 変わるようなものは可読性とは関係ない。

なんでやw

928 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 01:51:19.67 ID:pnXHZpep.net]
最近キチガイ長文さん頻出してるね
こういう奴たいていの職場に一人は居るよなあ

929 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 03:45:42.10 ID:ftsbhcOc.net]
pysideはqt5にいつ対応するのでしょうか?
pyqt5のビルド長くて退屈なんです…

930 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 06:22:23.48 ID:nL2sda9W.net]
>>894
でも長文ってだけで間違ったことは言ってないよな?
いや、なにか言い返すならいいんだけどさ。
長文だー、長文だーって喚いてるだけ。



931 名前:デフォルトの名無しさん mailto:sage [2015/08/2 ]
[ここ壊れてます]

932 名前:6(水) 07:40:00.49 ID:pnXHZpep.net mailto: あんなのに反論したらまたしつこく5レスぐらい使って書き散らしてくるんだろうし
結局のところ初心者目線で見る想像力が無くて、ただ自分の目線の世界でだらだらと語るしかない典型的ダメおっさんPG
つーかもしかしたら ID:CzPwxFH3= ID:pfa9oRBxなのかな
糞の役にも立たない回答を失笑されてカチンと来ちゃったのかね
[]
[ここ壊れてます]

933 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 07:43:24.37 ID:0fCLXGvh.net]
今はどこのスレも変なの一人二人いるわ
C#相談室が一番酷いかな
初心者スレと逆転してる

934 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 09:37:32.17 ID:nL2sda9W.net]
お前ら議論しろよw

あいつまじめに勉強てるぜwwwとか
やってることが不良高校生と同じだぞ。

935 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 10:49:31.71 ID:ElP7lUPJ.net]
お前の駄文に議論する価値あんのか?
JR新小岩駅に行け
そして二度とここに来るな

936 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 11:57:36.30 ID:AtwE5MzM.net]
>>897-898
www.lifehacker.jp/2013/03/130305jerks_and_trolls.html
www.lifehacker.jp/2011/11/111031ignoretrolls.html
info.2ch.net/?curid=2078

937 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 12:29:34.60 ID:sdlDeysq.net]
なんやガチなんがおるな(キチガイ的に)

938 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 12:58:53.97 ID:ZW9B1mjA.net]
いいから議論しろよ張り倒すぞ

939 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 13:38:26.33 ID:ftsbhcOc.net]
それじゃネタ振り
みんなguiアプリ作るとき何使ってる?
俺はpysideでqt使ってるんだけど、最近kivyも気になってる

940 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 13:49:01.19 ID:zJ272Tt+.net]
>>904
どんなくだらない雑談はいらねえよカス



941 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 15:53:28.27 ID:nL2sda9W.net]
>>900
なんでそうかっかしてんの?
俺がいるとお前困るの?w
じゃぁいかなーい(笑)

942 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 16:39:45.88 ID:ElP7lUPJ.net]
小学生と変わらんな

943 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 20:52:34.12 ID:nL2sda9W.net]
まったくだよ。
まじめに議論するか何も言う気が
ないなら黙ってればいいのに、
関係ないことをぶつくさ言うだけ。
なんなんだろうね。

944 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 21:01:17.41 ID:nL2sda9W.net]
誰が最初にけんかを売ったのか
見てみると楽しいね(笑)
どこでもやってるんだろうなぁ。

945 名前:デフォルトの名無しさん [2015/08/26(水) 22:15:44.84 ID:ronbLnf1.net]
なんだよもう議論しないのかよカス

946 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 23:06:30.71 ID:xqVlAmo6.net]
>>904
私はHTML+CSS+JavaScriptですね。つまり
Webアプリケーションとして実装してます。

PySideはこの6月ぐらいに開発版のバージョンが2.0になって、
QT5対応に必要ないくつかの変更もされたとか。
QT4のサポートが今年の12月で終わるらしいので、
それまでにリリースされるといいですね。

947 名前:デフォルトの名無しさん [2015/08/27(木) 01:55:39.07 ID:uBflNsZt.net]
Pythonは30分で挫折したけど、議論に参加していい?

948 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 05:57:56.65 ID:ZEsVN2Rf.net]
>>912
挫折するポイントが不明。
そんなのあったっけ?

949 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 08:09:30.23 ID:Sd5tuK/H.net]
議論なんて高尚なことはやってない
(この夏にプログラマLV2になった奴が語っちゃってるだけ)
気にせず話せ

950 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 11:01:44.03 ID:kP+pCLjh.net]
a = ['てst']ってリストからてstを取り出すにはどうするの
a[0]でも例外だし



951 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 12:24:44.89 ID:3PV9QFs8.net]
>>915
俺の環境だとa[0]でちゃんと値を取り出せてるよ
例外の内容を正

952 名前:確に書いて再質問すると良いでしょう []
[ここ壊れてます]

953 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 12:28:46.11 ID:lwpAfeUc.net]
よし、ちゃんと議論してるな
やればできるじゃないか

954 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 22:22:07.50 ID:Idwzm7eN.net]
msvcrtのgetch()で未入力状態は何が返ってくるのでしょうか?None、””で反応しなかったので
教えてください

955 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 22:30:00.43 ID:La0rg2tq.net]
未入力ならブロックするはずだし再現方法が分からん

print ord(msvcrt.getch())

956 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 22:33:31.92 ID:Idwzm7eN.net]
255ですね

957 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 22:47:07.77 ID:Idwzm7eN.net]
chr(255)でもヒットしないですね

958 名前:デフォルトの名無しさん [2015/08/29(土) 01:25:13.74 ID:kSQTrkNz.net]
print(1440778346.4348216 - 1440778346.4348133)

これ結果がおかしくなるのはなぜですか?
どうやって正しく計算結果を出せますか?

959 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 03:13:58.44 ID:AYSgSWUX.net]
暗算できないなら電卓でもいける

960 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 03:18:18.98 ID:nAsI3V8f.net]
エスパーじゃないから、コードだけでなく期待する結果と実際の結果の例がほしい



961 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 08:25:37.47 ID:TDTn35wR.net]
あ、GUIでmsvcrt.getch()やると反応がちがうようです。
コンソールで普通に動きました

962 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 11:45:17.59 ID:D9jd66uE.net]
>>924
ためせばわかるだろ

963 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 12:32:26.05 ID:TDTn35wR.net]
>>919
print ord(msvcrt.getch())
をGUIで実行すると未入力状態で255が返って出力されます。
コンソールでの実行では未入力では何も出力されません
この原因はなんでしょうか

964 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 12:33:28.57 ID:TDTn35wR.net]
それとGUIの場合、キーを押しても255のままです

965 名前:デフォルトの名無しさん [2015/08/29(土) 12:45:19.79 ID:xMZWPx0m.net]
allocconsole

966 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 12:53:30.11 ID:gmx5ty9e.net]
windowsでwinmainから起動したプログラムは標準入出力が無効になっているため
標準入出力を使うプログラムはまともに動作しない
928が言っているAllocConsoleで標準入出力を新たにアタッチするか
別プロセスから起動してパイプを与えることで利用可能になる

967 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 13:09:28.88 ID:TDTn35wR.net]
ありがとうございます。
C++の話ですか?allocconsoleを糸口に調べてみます。

968 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 13:18:47.00 ID:gmx5ty9e.net]
というか、最終的に何がしたいんです?
聞いている限りではmsvcrt.getchを動作させることは過程でしかないんでしょ
最終的に欲しい結果をもっと簡単に得る方法はあるかもしれませんよ
無いかもしれませんが

969 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 13:43:58.41 ID:TDTn35wR.net]
KODI(旧XBMC)の拡張機能を作ろうとしています。
拡張機能のミドルウェアとしてpython2が使用できます。

その中でキー入力を得たいので探しています。
文字列よりもホットキー的なもので使います。
linuxの場合はttyを使わないといけないのかもしれません。
まだ調べていません。

実際にKODIで実験しても同じ状態になりましたので、同様の問題があると思われます。
モジュールは読み込めたので使えることは使えると思います。

970 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 17:17:41.41 ID:TDTn35wR.net]
orz・・・私の知識ではwinmainプログラムから標準入力を取得する方法がわかりませんでした。



971 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 17:51:47.15 ID:TDTn35wR.net]
検証に支障が出る可能性もあるので難しいことはやめます。
無理に標準入力にこだわる必要もないので

972 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 17:55:11.32 ID:Xtar3XIm.net]
>>934
sys.stdin.read()
fgets(stdin, ss, 80 - 1);
知らないとか?

973 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 18:09:57.30 ID:vY8VctDz.net]
>>936
それはエンター押さなければ
ならないのでは?

974 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 18:58:31.84 ID:xMZWPx0m.net]
pygame使っとけ

975 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 19:56:04.67 ID:jCAQiE2w.net]
あと2週間で3.5がでるけど新機能ってどのページに

976 名前:レってるかおしえて []
[ここ壊れてます]

977 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 21:14:43.47 ID:Ld2l5eLL.net]
https://www.python.org/download/releases/3.5.0rc2/

978 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 22:20:34.52 ID:GZ09Elz0.net]
python 3.4のurllib.request.urlopenのタイムアウト

docs.python.jp/3/library/urllib.request.html#module-urllib.request
>任意の引数 timeout は、接続開始などのブロックする操作におけるタイムアウト時間を秒数で指定します (指定されなかった場合、グローバルのデフォルトタイムアウト時間が利用されます)

ってありますがこのグローバルのデフォルトタイムアウト時間ってどうやって設定したり取得できますか?

979 名前:デフォルトの名無しさん mailto:sage [2015/08/29(土) 23:04:07.87 ID:ucYXOKxr.net]
>>941
もっと低層のタイムアウトを使うようになっとる

>ってありますがこのグローバルのデフォルトタイムアウト時間ってどうやって設定したり取得できますか?
グローバルのデフォルトタイムアウト時間よりも、
docs.python.jp/3/library/urllib.request.html#urllib.request.urlopen
のタイムアウト時間を指定したほうがいいと思う

980 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 06:13:26.33 ID:tJkk5ci/.net]
>>940にあるこれって
>Windows users: There are now "web-based" installers for Windows platforms; the >installer will download the needed software components at installation time.

インストーラーがインターネットからダウンロードしながら動作するって意味?
だとしたら企業内のスタンドアロンPCにインスコできなくなるじゃん



981 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 08:37:26.59 ID:6hA230oM.net]
Windows x86-64 executable installer

982 名前:デフォルトの名無しさん [2015/08/30(日) 09:46:10.04 ID:xQDvWigH.net]
py2exeで、urllibとurllib2を使ったプログラムをexe化するとフリーズするのだが、これどうすればいいの? 間違ったコードは書いてないし...

983 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 10:36:20.34 ID:sqP4vjJl.net]
使わなければいいと思いますよ
使わなければ動作しないものではありませんから

984 名前:名無しさん [2015/08/30(日) 11:21:30.28 ID:xQDvWigH.net]
Pyinstallerでもいいだけどさ、ファイル容量半端なくなるからできたらpy2exeつかいたいけどなぁ

985 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 14:12:17.79 ID:sqP4vjJl.net]
そうは言ってもですよ
再現方法すら提示されないのにどうしろと言うんです
pythonのバージョンやpy2exeのバージョンも分からない状態で
入手可能な組み合わせ、考え得るあらゆるコード全てで試すんでしょうか?
あなたはそれが現実的だと少しでも思いますか?

自分の個人的な見解としては、最小のコードで動作した時点で
間違ったコードを書いていないというあなたの見解が間違っていると判断を下しました
pastebin.com/E4FYQpU5
その時点でやる気がなくなりました

986 名前:名無しさん [2015/08/30(日) 14:29:01.69 ID:xQDvWigH.net]
すまそ、環境はPython2.7, py2exe v0.6.9, Win10
ちなみにpyinstallerでは問題なく動作

現象としては、コードミスによるエラーじゃなく、起動してimportまでできているみたいだけどurllib.urlretriexeの部分にさしかかると ~は動作が停止しましたと出る感じ

#-------------------
import urllib
urllib.urlretrieve('www.google.com', 'google.html')

987 名前:名無しさん [2015/08/30(日) 14:32:27.56 ID:xQDvWigH.net]
>>949
あ、あと外部モジュールとかはpy2exeくらいしか入れてない、Python27フォルダ内のファイル変更,移動,削除とかも一切してない

988 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 15:53:07.67 ID:sqP4vjJl.net]
win7 x64 pro + python 2.7.10 x86 + py2exe 0.6.9で止まらない

989 名前:名無しさん [2015/08/30(日) 15:54:30.72 ID:xQDvWigH.net]
まじかw やっぱこのPCが悪いのかー ありがと

990 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 16:09:00.82 ID:tJkk5ci/.net]
つーか明らかにWindows10が臭いだろ



991 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 18:24:43.63 ID:xA3qmXia.net]
監視系の処理をしたくて下のように書いたんですが、
空のブロックは許されないらしいので

992 名前:exceptブロックに適当な一文を入れて解決しました
でも何か不格好な感じもするので真っ当なやり方がありましたら教えて下さい

def monitor():
 a = get()
 try:
  if a != b:
   sth()
 except NameError:
  dummy = 0
 b = a
[]
[ここ壊れてます]

993 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 18:58:14.67 ID:xA3qmXia.net]
b = 0
def monitor():
 global b
こう書かないとbが消えちゃいますね

994 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 18:59:16.66 ID:gWgp6/6g.net]
>>953
Win10 Pro x64、Python2.7.9 x86、py2exe 0.6.9で>>948のスクリプト試したけどちゃんと動いたよ

995 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 19:02:00.23 ID:T6IhtZv4.net]
>>954
シンタックス上何か文を置かないわけにはいかないけど
何もする必要がないときは普通pass文を使うよ
docs.python.jp/3/reference/simple_stmts.html#the-pass-statement

でもプログラムの設計としてあなたコードが妥当かどうかは
具体的にどういう処理をしているのかがわからないのでなんとも

996 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 19:10:33.80 ID:xA3qmXia.net]
>>957
ありがとうございます!本当に何もしないためだけの文があったとは
目的はクリップボードの監視で一つ前のデータを保存したかっただけです

997 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 19:23:28.04 ID:T6IhtZv4.net]
>>958
クリップボードが変更されたときだけ保存するってことだね
NameErrorはどこで発生する例外で何で無視してもいいの?

998 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 19:29:31.90 ID:xA3qmXia.net]
>>959
初回の呼び出しでは保存用変数が空なために
if文で評価するときに未定義のエラーが出るのでその対策としてのつもりです
検索したら出てきた方法なので

999 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 20:03:55.34 ID:T6IhtZv4.net]
>>960
そういう用途なら例外をpassでスルーする形で妥当かな
空文字かNoneで初期化しとくのじゃダメなんかなともちょっと思ったけど
クリップボード周りの実装はしたことないので頓珍漢なこと言ってるかも

1000 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 20:17:13.79 ID:xA3qmXia.net]
>>961
あ、うっかりしてました
>>955みたいにグローバル変数を使うなら例外処理もいらなくなりますね
ともかく目的が果たせて満足です。親身にご指導いただきありがとうございました!



1001 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 23:31:40.78 ID:lCIF9vL7.net]
>>956
GNU系は、Win7 Pro x64 を使うのが定番だが、

ほほう、Win10 Pro x64 でも動きますたか?

1002 名前:デフォルトの名無しさん mailto:sage [2015/08/31(月) 20:35:49.34 ID:bggRqSur.net]
foo(arg1, arg2, arg3)
という関数を呼び出すときにarg2だけ省略することってできますか?

1003 名前:デフォルトの名無しさん mailto:sage [2015/08/31(月) 20:43:07.51 ID:1sJZNQ4o.net]
できません。

前優先なので、
引数の順序を入れ替えて下さい

foo(arg1, arg3, arg2=None)

とかにして下さい

1004 名前:デフォルトの名無しさん mailto:sage [2015/08/31(月) 20:52:04.61 ID:bggRqSur.net]
>>965
分かりました。ありがとうございました

1005 名前:デフォルトの名無しさん mailto:sage [2015/08/31(月) 22:53:28.94 ID:5tXTMn4R.net]
foo(arg1, arg3=arg3)
#どうでもいいけど関数宣言の方はparameterじゃ

1006 名前:デフォルトの名無しさん mailto:sage [2015/09/01(火) 02:21:11.52 ID:sXfua+XA.net]
def foo(arg1, **kwargs):
arg2 = kwargs.get('arg2', defaultvalue)
arg3 = kwargs['arg3']

1007 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 11:21:42.13 ID:BG3f8u9o.net]
最近の大学生ってひでえもんだな
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10149744480
www.python.jp/pipermail/python-ml-jp/2015-September/005973.html
www.python.jp/pipermail/python-ml-jp/2015-September/005971.html

1008 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 13:28:52.07 ID:c+e/eL7q.net]
数値で1.00って表示する方法を教えてください

1009 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 14:35:21 ]
[ここ壊れてます]

1010 名前:.80 ID:twsT9voz.net mailto: 検索する []
[ここ壊れてます]



1011 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 15:36:46.15 ID:KQppFRcC.net]
>>970
"{0:.2f}".format(1)

1012 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 19:22:37.06 ID:MJyzegUy.net]
print('1.00')

1013 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 20:40:51.42 ID:26WurM6V.net]
python3.4の文字の扱いについてご教示願います

title = browser.title
t = title.encode('utf-8')
d = t1.decode('utf-8')
print(d)

変数titleにはWebサイトから取得した文字コードS-JISのページタイトル(GMO証券)が入っています。
titleの内容を文字コードUTF-8に設定したターミナル上に出力する際に文字化けしないように
S-JISからUTF-8に文字コード変換したいのですが、上記内容のコードでは上手くいきません。


原因がわかる方いましたら、お手数ですがご教示願います。


【補足】
・ターミナルの文字コード設定をS-JISに変更すれば、文字化けしないで表示することが出来ます。
・ターミナルはminttyを使用しています

以上

1014 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 20:48:12.64 ID:26WurM6V.net]
申し訳ございません、変数名に誤りがありました。
正しくは以下の通りです。


d = t1.decode('utf-8')


d = t.decode('utf-8')

以上

1015 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:11:18.15 ID:Hq1TyWtW.net]
titleがshift_jisでエンコードされたbytesと仮定して答えます
>>> title = 'GMO証券'.encode('shift_jis')
>>> title
b'\x82f\x82l\x82n\x8f\xd8\x8c\x94'
>>> title.decode('shift_jis')
'GMO証券'

1016 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:19:20.28 ID:twsT9voz.net]
>>974
> S-JISからUTF-8に文字コード変換したい
>>974では、Webサイトからページタイトルを取得した時、
Webサイトが送ってくるページタイトルはsjisでしょ?
なので、Webサイトから取得する文字列はsjisなんだから、
titleをbytesとして受け取らないといけない。

そして、>>976のように、
title.decode('sjis')
とすれば文字化けせずに、utf-8を表示してくれる。

1017 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:22:02.94 ID:26WurM6V.net]
>>976
ご回答有り難うございます。

>titleがshift_jisでエンコードされたbytesと仮定して答えます

申し訳御座いません。データ型の情報が不足しておりました。
type(title)の出力結果は、<class 'str'>です。

1018 名前:デフォルトの名無しさん [2015/09/03(木) 21:31:53.74 ID:ACT9XNdq.net]
馬鹿には無理

1019 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:33:09.40 ID:twsT9voz.net]
>>978
うん、だから、
> type(title)の出力結果は、<class 'str'>
の時点で誤りだよね。

>>977をもう一度読んで。特に、
> Webサイトが送ってくるページタイトルはsjisでしょ?
を百回音読して。

1020 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:44:17.93 ID:26WurM6V.net]
>>980
回答有り難うございます。

> Webサイトが送ってくるページタイトルはsjisでしょ?
SJISの内容のページタイトルが送られてくるので素直にSJISでエンコード→デコードしてあげれば
文字化けしていない正しい内容が得られるからUTF-8に変換する必要なんて無いって事ですかね?

以下の様にコードを修正して再実行してたところやはり文字化けしてしまいます。
んー、バカなので難しいですな。。

title = browser.title.encode('shift_jis')
t = title.decode('shift_jis')
print(t)



1021 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 22:02:58.82 ID:twsT9voz.net]
>>981
>> んー、バカなので難しいですな。。

に、むかついたから、もう教えてやんない
馬鹿な>>978には無理だから諦めろ

1022 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 22:19:08.88 ID:Hq1TyWtW.net]
>>981
もしかしてWindows版インストーラーで導入したPythonを使ってますか?
win版だとminttyの環境はcp932(shift_jis)でないと文字化けします

1023 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 22:59:18.59 ID:pYSbQaf9.net]
この一連の流れでわかるあなたの有能度
・有能 ID:Hq1TyWtW(>>983)
質問者固有の環境にまで考えが及ぶエクセレントな人 解決策を提示

・普通 オレ
browser.titleの時点でbeatifulsoup・seleniumみたいなのでHTMLをパースしてるんだろうと察し、
browser.titleがstr型だということが自明なので文字コードの問題

1024 名前:カゃないとすぐわかる
だからそれpython以外の問題じゃないの?とまではわかった
ただしwindowsが手元に無いし解決策までは提示できないので有能まではいかず

・無能 ID:ACT9XNdq(>>979)
説明不要

・ゴミ ID:twsT9voz(>>982)
browser.titleがstrを返すということがわからなかっただけでpython周辺ライブラリの知識が皆無
なのに的外れな回答をし続けた挙げ句、ぶち切れて捨て台詞
死んだ方がいいレベル 死ね 早く

>>979みたいなこと言われたらそら初心者は「んー、バカなので難しいですな。。」とか書いちゃうのはしょうがないでしょ
pythonろくに知らないし初心者馬鹿にするし、ここの一部の回答者ってホント救えないわ
[]
[ここ壊れてます]

1025 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 23:17:37.02 ID:esByfF4n.net]
>>981
まず根本的に、特定文字コードの文書はbytesであり、デコードするとstr(unicode≠UTF)になります
browser.titleがstrの時点でそれはデコード済みです、誤った文字コード処理ならエラーになっている事でしょう
デコード済みであるstrをエンコードしてbytesにし、同一コードでデコードを行っても何の意味もありません

文字化けの原因はスクリプトではなく、ご自身で書かれている通りターミナルコードとの不一致だと思います
Python3の標準出力は文字エンコーディングを持っていてstrをエンコードしてから出力します、これは
ttp://docs.python.jp/3.4/library/sys.html#sys.stdout
にて解説されていますので、補足や>>983の通りターミナルコードを合わせるか、PYTHONIOENCODINGでUTF-8にするとか
他、実行中に sys.stdout = io.TextIOWrapper(sys.stdout.detach(),'utf-8') などとして変更する方法もあります

1026 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 01:14:57.15 ID:/zhxqmNp.net]
>>983
仰るとおりWindows版インストーラーで導入したPythonを使っています。
cp932で無いと文字化けするのはminttyの仕様だったのですね。納得しました。

>>984
Selenium+BeautifulSoupでスクレイピングを試しているところでした。

>>985
>特定文字コードの文書はbytesであり、デコードするとstr(unicode≠UTF)になります
デコード済みの内容をエンコードしてから再びデコードするという意味無い事してたのか・・・。
分かりやすい解説、その他サンプルの提示ありがとうございます!後ほど試してみたいと思います。

文字コードの理解が浅くターミナルが原因だという事まで考えに及びませんでした。

ご回答下さった皆様ありがとうございましたm(__)m

1027 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 04:06:01.59 ID:x7fRT8f0.net]
>browser.titleがstrの時点でそれはデコード済みです、誤った文字コード処理ならエラーになっている事でしょう

これだな
他の香具師は的外れ

>>986
違うよ
考え直せ

1028 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 07:08:04.13 ID:6Gds/3zT.net]
くだすれPython(超初心者用) その27
peace.2ch.net/test/read.cgi/tech/1441317912/

1029 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 10:24:20.27 ID:efXmgHpK.net]
乙.py

1030 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 11:30:39.46 ID:efXmgHpK.net]
>>978
>type(title)の出力結果は、<class 'str'>です。

↓を読んだ上で↑の返事はさすがに無いわ
>>977
>なので、Webサイトから取得する文字列はsjisなんだから、
>titleをbytesとして受け取らないといけない。



1031 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 17:37:20.44 ID:HNXLj6zd.net]
君ら初心者いじめるの好きだねw

1032 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 19:25:26.13 ID:Z77fhgK9.net]
いや、人が回答を書いているのに人の書き込みをろくに読まずに
> んー、バカなので難しいですな。。
と書いて、自分の頭が悪いのを盾にして、
人の書き込みを読まないから、さすがに怒ったの

初心者いじめたかったら、そもそも何も教えてない

1033 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 20:27:20.03 ID:F3w9cE+J.net]
初心者以前に人の話を聞かない奴はダメだよね

1034 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 20:44:09.48 ID:EI4y/sV7.net]
>>974で違和感があったがwin版の可能性に気づけなかった
>>981のレスのおかげでWindows版を使ってることを推測できた

つまり一連のやりとりは十分な情報を引き出せた

1035 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 21:28:58.95 ID:B3 ]
[ここ壊れてます]

1036 名前:/17KX+.net mailto: 何で質問者が人の書き込みを読んでないとか人の話を聞いてないってことになってんだよ可哀想に []
[ここ壊れてます]

1037 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 21:35:03.89 ID:Z77fhgK9.net]
>>995
ちょっと改変するけど、
>>990

>>977
>なので、Webサイトから取得する文字列はsjisなんだから、
>titleをbytesとして受け取らないといけない。

↑を読んだ上で↓の返事はさすがに無いわ

>>978
>type(title)の出力結果は、<class 'str'>です。

1038 名前:デフォルトの名無しさん [2015/09/04(金) 23:58:33.05 ID:x7fRT8f0.net]
>Selenium+BeautifulSoupでスクレイピングを試しているところでした。

そいつが browser.title を str に変換するときに間違ったエンコードでデコードして文字化けしたんだろう
既に壊れたデータをエンコードしても手遅れ
決してターミナルのせいではない

1039 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 01:43:35.09 ID:jZ9K/01b.net]
たいてい文字化けの原因は、端末を使うからだよ

TeraPad など、日本人の作ったエディタでは、
簡単に文字コードが変更できるので、
文字化けは起こらない

端末などは外人が作っているため、
日本語などはほったらかし

1040 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 02:12:09.52 ID:ZKXW4+L0.net]
超初心者スレでこの対応は辛辣だよなあ
話を聞いていないのではなく、理解できていないだけだろう
sjisだからbytesとして受け取らないといけないって説明も
初心者向けじゃないと思うし



1041 名前:デフォルトの名無しさん [2015/09/05(土) 02:27:54.77 ID:xb8mS1yp.net]
次スレに書けよ

1042 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 02:29:02.99 ID:jZwyv5P2.net]
1000

1043 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

1044 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






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

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

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