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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

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

前スレ
くだすれPython(超初心者用) その11
http://hibari.2ch.net/test/read.cgi/tech/1301383226/
関連スレ
Pythonのお勉強 Part45
http://hibari.2ch.net/test/read.cgi/tech/1321189773/
◆関連リンク
Python の Home Page
ttp://www.python.org/

   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
2デフォルトの名無しさん:2011/11/24(木) 15:26:55.93
最新版直リン - 2.Xが推奨。3.Xはライブラリやドキュメントが使えないことも
ttp://www.python.org/download/
Python のコーディングガイド PEP8
ttp://www.python.org/dev/peps/pep-0008/
Python のコーディングガイド PEP8 - 日本語訳
ttp://www.oldriver.org/python/pep-0008j.html
日本語文字列コード問題まとめ
ttp://python.matrix.jp/tips/string/encoding.html
インタラクティブモードのエンコード
ttp://python.matrix.jp/tips/compatibility/interact_encoding.html
SJISから卒業出来ないひとのための禁じ手
reload(sys); sys.setdefaultencoding('cp932')
Pythonの文字化け対策:sys.setdefaultencodingの謎
ttp://hain.jp/index.php/tech-j/2008/01/07/Python%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91
実行時にdefaultencodingを変更する
ttp://d.hatena.ne.jp/perezvon/20070715/1184469534
PEP-8とか
ttp://www.python.org/dev/peps/pep-0008/
ttp://oldriver.org/python/pep-0008j.html
Google Python Style Guideとか
ttp://google-styleguide.googlecode.com/svn/trunk/pyguide.html
ttp://works.surgo.jp/translation/pyguide.html
3デフォルトの名無しさん:2011/11/24(木) 15:40:31.06
>1 乙
4デフォルトの名無しさん:2011/11/24(木) 17:21:16.58
辞書型で、値の最大値のキー値を求めたいのですが、スマートなやり方ないですか?
d = {0:1,1:2,2:3,4:5,6:7}
list(d.keys())[ list(d.values()).index(max(d.values())) ]
6

もっとスマートな方法ないですか?
Python3.1です
5デフォルトの名無しさん:2011/11/24(木) 17:32:55.92
>>> from operator import itemgetter
>>> max(d.items(), key=itemgetter(1))
(6, 7)
>>> max(d.items(), key=itemgetter(1))[0]
6
6デフォルトの名無しさん:2011/11/24(木) 17:38:17.38
超初心者的には遅そうで心配
7デフォルトの名無しさん:2011/11/24(木) 17:41:20.40
max(d.items(),key=lambda x:x[1])[0]
ってのでも出来るんですね
出来れば処理速度が早いのがいいです
Cythonでコンパイルして利用します
8デフォルトの名無しさん:2011/11/24(木) 18:09:56.51
type()で返ってくる<type 'type'>の解釈を教えてください。
9デフォルトの名無しさん:2011/11/24(木) 19:23:32.09
>>2
勝手に2.X推奨すんなボケ。
男なら迷わず3.Xだろ。
女子供はひっこんでろ。
10デフォルトの名無しさん:2011/11/24(木) 19:38:07.28
さくらのサーバが2、6じゃん
11デフォルトの名無しさん:2011/11/24(木) 19:39:34.36
2.Xマンセー
12デフォルトの名無しさん:2011/11/24(木) 19:58:47.18
漢なら仮想鯖借りて、自分でOSからいれろ。
3.3のα以前版でも入れ放題だぞ!
13デフォルトの名無しさん:2011/11/24(木) 19:59:33.04
超初心者用が復活した途端に質問者のレベルが跳ねあがったのは気のせいか
14デフォルトの名無しさん:2011/11/24(木) 20:14:12.81
そしてお勉強スレのレベルがますます下がるのはいつものこと
15デフォルトの名無しさん:2011/11/24(木) 21:02:55.31
いちょつ
16デフォルトの名無しさん:2011/11/24(木) 21:05:41.83
超低レベルってsocket.*とかの話?
17デフォルトの名無しさん:2011/11/24(木) 21:14:39.05
こんなに需要があるとは思わなかった()
もっと早くたてとけばよかった()
18デフォルトの名無しさん:2011/11/24(木) 21:29:49.12
>>16
質問者のPythonレベルが低いってことだろjk
19デフォルトの名無しさん:2011/11/24(木) 22:02:31.22
Pythonで書く利点を最大限に活かすために
まず最初に覚えるべきことって何ですか?
20デフォルトの名無しさん:2011/11/24(木) 22:05:40.74
import this
21デフォルトの名無しさん:2011/11/24(木) 22:14:07.49
もっと役に立つモジュールおしえてよ
22デフォルトの名無しさん:2011/11/24(木) 22:27:27.07
import __hello__
23デフォルトの名無しさん:2011/11/24(木) 22:58:34.84
insert 006P
24デフォルトの名無しさん:2011/11/24(木) 23:01:03.35
25デフォルトの名無しさん:2011/11/24(木) 23:04:52.11
_winreg
26デフォルトの名無しさん:2011/11/24(木) 23:05:51.71
風のうさぎちゃん
27デフォルトの名無しさん:2011/11/24(木) 23:52:44.13
class Foo(object):
のobjectって何者ですか
一体何を継承しているんですか
28デフォルトの名無しさん:2011/11/25(金) 00:12:51.00
継承ツリーの頂点に位置するのがobjectクラス
__str__みたいにオブジェクトなら誰でも持ってるメソッドが定義してある
dir(object())して出てくるのがたぶんそれ
29デフォルトの名無しさん:2011/11/25(金) 00:24:44.16
クラスってインスタンスを継承することも出来るんですか
class Foo():
foo = Foo
class Fooo(foo)みたいな
何の意味があるんですか
30デフォルトの名無しさん:2011/11/25(金) 00:46:46.30
結局同じオブジェクトを参照してるだけじゃないの?
31デフォルトの名無しさん:2011/11/25(金) 08:58:26.47
stringモジュールにascii_lowercaseなんてものがあるとは知らなかった
今までaからzを手打ちしてて文字が抜けたことが何度も・・・
32デフォルトの名無しさん:2011/11/25(金) 09:45:48.69
ascii_lowercase知らなかったことは、別に問題ないけど、
>今までaからzを手打ちしてて
そこで車輪を発明しようと考えるのは、ちょっと反省したほうがいいぞ・・・
33デフォルトの名無しさん:2011/11/25(金) 10:08:25.64
この世にはコピペという便利なものがあってだな
34デフォルトの名無しさん:2011/11/25(金) 15:54:29.46
>>29
節子それインスタンスちゃう
35デフォルトの名無しさん:2011/11/25(金) 15:56:33.63
>>32
string.base64 はさすがにないな
36デフォルトの名無しさん:2011/11/25(金) 16:53:44.84
こっちのスレのほうが建設的になるのはいつものこと。
37デフォルトの名無しさん:2011/11/25(金) 20:15:21.62
デストラクタをわざわざ呼び出すことが少ないからね
38デフォルトの名無しさん:2011/11/26(土) 01:20:48.15
CUDAスレPython(超初心者用)

かと思った。
39デフォルトの名無しさん:2011/11/26(土) 01:23:23.15
>>34
え、じゃあ何ですか?
40デフォルトの名無しさん:2011/11/26(土) 01:28:47.90
Pythonのソースコードを見ていると
class Foo1():
...def __init__(self)
class Foo2(Foo):
...def __init__(self)
......Foo1.__init__(self)

こんな感じで、派生先のクラス内の初期メソッドで
継承元のクラスの初期メソッドを実行してるのをよく見かけるんですが
これってどういうことなんでしょうか。
そもそも初期化ってどんな場合に必要あるんでしょうか。
あと、pythonのソースで、classのの名前の例がFooになってることが多いと思うんですが
このFooってのは何かの略なんでしょうか?
4140:2011/11/26(土) 01:29:37.06
class Foo1():
...def __init__(self)
class Foo2(Foo1):
...def __init__(self)
......Foo1.__init__(self)

まちがえた、こうです
42デフォルトの名無しさん:2011/11/26(土) 01:33:12.35
pass
43デフォルトの名無しさん:2011/11/26(土) 02:53:33.02
>>40-41
その書き方は古いんじゃなかったっけ?

class Foo1():
 def __init__(self, hoge):
  return hoge

class Foo2(Foo1):
 def __init__(self, fuga):
  return super(Foo2, self).__init__(fuga)

ttp://d.hatena.ne.jp/migimigi/20081122/1227346471
44デフォルトの名無しさん:2011/11/26(土) 02:55:47.54
class Foo1(object):
 def __init__(self, hoge):
  return hoge

class Foo2(Foo1):
 def __init__(self, fuga):
  return super(Foo2, self).__init__(fuga)

まちがえた、こうです
45デフォルトの名無しさん:2011/11/26(土) 03:25:19.07
>>43
super使ってもどうせ自クラスの名前は入力しないといけないようだけど、それ使う利点ってあるの?
46名無しさん@いたづらはいやづら:2011/11/26(土) 03:38:45.49
>>44
TypeError: __init__() should return None, not 'int'
47デフォルトの名無しさん:2011/11/26(土) 03:42:01.34
>>45
super(self.__class__, self).__init__(*args, **kw)
じゃだめか……な。

Python 3.x では super の引数が省略できる。
http://docs.python.org/py3k/whatsnew/3.0.html#builtins
48デフォルトの名無しさん:2011/11/26(土) 04:16:01.67
>>47
super(self.__class__, self).__init__(*args, **kw)

いけるみたいです
49デフォルトの名無しさん:2011/11/26(土) 04:17:41.48
>>> class Foo1(object):
... def __init__(self):
... pass
... def whoami(self):
... print self.__class__
...
>>> class Foo2(Foo1):
... def __init__(self):
... super(self.__class__, self).__init__()
...
>>> f1 = Foo1()
>>> f2 = Foo2()
>>> f1.whoami()
<class '__main__.Foo1'>
>>> f2.whoami()
<class '__main__.Foo2'>
50デフォルトの名無しさん:2011/11/26(土) 06:13:59.61
>>> class Foo1(object):
... def __init__(self):
... pass
... def whoami(self):
... print self.__class__
... def whoismyparent(self):
... super(self.__class__, self).whoami()
...
>>> class Foo2(Foo1):
... def __init__(self):
... super(self.__class__, self).__init__()
...
>>> f1 = Foo1()
>>> f2 = Foo2()
>>> f1.whoami()
<class '__main__.Foo1'>
>>> f2.whoami()
<class '__main__.Foo2'>
>>> f1.whoismyparent()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in whoismyparent
AttributeError: 'super' object has no attribute 'whoami'
>>> f2.whoismyparent()
<class '__main__.Foo2'>
51デフォルトの名無しさん:2011/11/26(土) 06:22:33.37
>>> class Foo1(object):
... def __init__(self):
... pass
... def whoami(self):
... print self.__class__
... def whoismyparent(self):
... print super(self.__class__, self).__class__
...
>>> class Foo2(Foo1):
... def __init__(self):
... super(self.__class__, self).__init__()
...
>>> f1 = Foo1()
>>> f2 = Foo2()
>>> f1.whoami()
<class '__main__.Foo1'>
>>> f2.whoami()
<class '__main__.Foo2'>
>>> f1.whoismyparent()
<type 'super'>
>>> f2.whoismyparent()
<type 'super'>
52デフォルトの名無しさん:2011/11/26(土) 13:29:29.12
>>39
>>29 はクラスの実体ではなくクラスを直接fooと結びつけてるね
だからfooはFooのインスタンスでなくFooそのものじゃね
5347:2011/11/26(土) 16:13:49.71
>>48
よく考えたら、
super(self.__class__, self).__init__(*args, **kw)
とやってるクラスを継承したら無限ループに陥るので駄目だわ。
ごめん。
54デフォルトの名無しさん:2011/11/26(土) 16:29:49.46
super使ってもどうせ自クラスの名前は入力しないといけないようだけど、それ使う利点ってあるの?
55デフォルトの名無しさん:2011/11/26(土) 17:45:58.37
python で suコマンドを実行して、パスワードを入力したいのですが、
どこかに見本は無いでしょうか。
56デフォルトの名無しさん:2011/11/26(土) 19:38:19.74
シェルスクリプトスレに居た人だ
57デフォルトの名無しさん:2011/11/26(土) 19:51:17.77
subprocess.call('su hoge')
58デフォルトの名無しさん:2011/11/27(日) 09:23:00.28
◇       ミ ◇
   ◇◇   / ̄|  ◇◇
 ◇◇ \  |__| ◇◇
    彡 O(,,゚Д゚) /
       (  P `O
      /彡#_|ミ\
       </」_|凵_ゝ

【ラッキーAA】
このAAを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です
59デフォルトの名無しさん:2011/11/27(日) 14:15:35.90
どういう原理で?
60デフォルトの名無しさん:2011/11/27(日) 19:39:31.74
Windows7でpython 2.5使ってます
ドキュメントに書かれてるのと結果が違います

import os
print os.name
-> nt

import platform
print platform.system()
-> Microsoft

どうしたら Windows って出てくるの?
61デフォルトの名無しさん:2011/11/27(日) 23:09:12.88
>>54
多重継承を使わない場合は
従来の方法でおk
62デフォルトの名無しさん:2011/11/28(月) 03:13:29.98
$ python
Python 2.7.2 (default, Oct 25 2011, 04:17:25)
[GCC 4.5.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.name
posix
>>> import platform
>>> print platform.system()
Linux
>>>
63デフォルトの名無しさん:2011/11/28(月) 03:15:19.70
$ python
Python 2.6.6 (r266:84292, Sep 2 2010, 19:26:16)
[GCC 3.3.6] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.name
posix
>>> import platform
>>> print platform.system()
Linux
>>>
64デフォルトの名無しさん:2011/11/28(月) 04:42:12.53
$ python
Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01)
[GCC 4.3.4 20090804 (release) 1] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'CYGWIN_NT-6.1-WOW64'
>>>
65デフォルトの名無しさん:2011/11/29(火) 03:35:03.13
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import os
>>> print os.name
nt
>>> import platform
>>> platform.system()
'Windows'
>>>
66デフォルトの名無しさん:2011/11/29(火) 11:27:00.80
IronPython 2.7.1 (2.7.0.40) on .NET 4.0.30319.239
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.name
nt
>>> import platform
>>> platform.system()
'cli'
>>>
67デフォルトの名無しさん:2011/11/30(水) 23:34:55.18
質問です。
以下のスクリプトを実行してリストから拡張子がmp3のファイルのみ削除したいのですが、実行結果に'test1.mp3'が残ってしまいます。分かる方がいたら教えてください。
環境はWindows xp sp3, python ver 2.7.1 です。

l = ['test0.mp3', 'test1.mp3', 'test2.mp3', 'test3.wma']
for i in l:
  if i.endswith(".mp3"):
    l.remove(i)
print l

>>>['test1.mp3', 'test3.wma']
68デフォルトの名無しさん:2011/11/30(水) 23:45:56.10
>>67
http://www.python.jp/doc/2.3.5/ref/for.html の警告以降を熟読のこと。
69デフォルトの名無しさん:2011/12/01(木) 00:00:00.12
70デフォルトの名無しさん:2011/12/01(木) 00:02:38.74
l = [i for i in l if not i.endswith('mp3')]
71デフォルトの名無しさん:2011/12/01(木) 00:27:37.01
>>68>>69>>70 さん有難うございます。
期待どおりの結果が得られるようになりました。
一応、上手くいった方のスクリプトも書いておきます。

l = ['test0.mp3', 'test1.mp3', 'test2.mp3', 'test3.wma']
for i in l[:]:
  if i.endswith(".mp3"):
    l.remove(i)
print l

>>>['test3.wma']
72デフォルトの名無しさん:2011/12/01(木) 21:07:19.71
>>> a = (1,2,3)
>>> b = a
>>> a += (4,5,6)
>>> a
(1, 2, 3, 4, 5, 6)
>>> b
(1, 2, 3)

>>> a = [1,2,3]
>>> b = a
>>> a += [4,5,6]
>>> a
[1, 2, 3, 4, 5, 6]
>>> b
[1, 2, 3, 4, 5, 6]

そんなもんなのね・・・
73デフォルトの名無しさん:2011/12/01(木) 21:15:37.93
>>> a += (4,5,6)
これって禁止されてないのか
74デフォルトの名無しさん:2011/12/01(木) 21:45:03.24
内部的には、まず元オブジェクトを書き換える __iadd__() の実行を試してみて、
それができなければ __add__() 呼んでオブジェクト差し替えしてるみたいです。

list には__iadd__() もあるが、tupleには __add__() しかない。
まぁ、自分でクラス作るときは、__ixxx__() シリーズを作るべきか否か
気をつけましょう、ってことで。
7540:2011/12/02(金) 00:11:31.16
モジュールをimportをするっていうのは
いわゆるPythonが提供しているクラスを読み込んでくるってことですよね?
import random
random.uniform(2,10)
みたいにクラス.メソッド(引数)って感じで呼び出すのが普通なのかと思っていたら

Pythonって
class test():
...def testMethod(self):
......print "test"
っていうクラスとメソッドがあった場合
この状態で直接クラス.関数名(引数)[test.testMethod'()]って呼び出すとエラーが出るじゃないですか
まずt=test()って言う風にインスタンスを作って
その後t,testMethod()って形で呼び出す形式なのが普通なんですかね?
モジュールとかを読み込んだ後に、クラス.関数名(引数)で呼び出せているのは
モジュールの内部で
class test():
...@classmethod
...def testMethod(self):
......print "test"
っていう風に、内部でクラスメソッドとして定義されているからってことですか?
何でこんな風に内部メソッドの呼び出し方が分かれているんでしょうか
インスタンスを作ると必ず初期メソッドが実行されてしまうから
それを避けるために@classmethodがあるということでしょうか?
インスタンスを作るっていうのは、初期メソッドと一緒に、クラスの内部を使いたいという
両方の条件が揃ってる時だけって解釈でいいんでしょうか?
76デフォルトの名無しさん:2011/12/02(金) 00:56:24.41
>>75
誤字が多くて何言ってるのかわからん。
JavaScript風のオブジェクト指向しかやったことがないなら
一回Javaの薄い本でも読んでみたら?
77デフォルトの名無しさん:2011/12/02(金) 08:36:29.86
importで読み込むのはモジュールであってクラスじゃない
78デフォルトの名無しさん:2011/12/02(金) 08:39:57.97
Javaの薄い本…ゴクリ

>>75
んーと、色んなことを混同し過ぎだよ

モジュール名の後の .
クラス名の後の .
インスタンス(つまりクラスから生成されたオブジェクト)の後の .

それぞれを一度、分けて考えてみて
79デフォルトの名無しさん:2011/12/02(金) 11:20:44.71
>>75
__call__()
80デフォルトの名無しさん:2011/12/02(金) 11:23:42.74
>>40
おまいは基礎からやり直し
81デフォルトの名無しさん:2011/12/02(金) 11:36:17.95
馬鹿には無理
82デフォルトの名無しさん:2011/12/02(金) 11:48:47.15
空中に基礎は打てない
83デフォルトの名無しさん:2011/12/02(金) 13:07:58.64
>>> class Test(object):
... def __call__(self):
... print 'hoge'
...
>>> Test()()
hoge


なんだこりゃ
84デフォルトの名無しさん:2011/12/02(金) 19:34:12.56
>>83
ん?
至極真っ当な動作だと思うけど…
8540:2011/12/03(土) 20:57:30.17
基礎ってどうやってみにつければいいの
C++とか覚えればいいの
86デフォルトの名無しさん:2011/12/03(土) 21:21:21.74
公式チュートリアルを読む
87デフォルトの名無しさん:2011/12/03(土) 23:53:54.58
>>85
あえて言えば Smalltalk かな
88デフォルトの名無しさん:2011/12/04(日) 01:01:33.68
馬鹿には無理
89デフォルトの名無しさん:2011/12/04(日) 03:42:30.77
pythonで基礎は学べるはずだけど
90デフォルトの名無しさん:2011/12/04(日) 12:11:41.54
おすすめの入門本はありますか?
91デフォルトの名無しさん:2011/12/04(日) 14:18:29.36
>>85, >>90
まずはこれを読む。
ttp://www.python.jp/doc/release/tutorial/

分からないことはググる。それでも分からなかったらここで聞く。
92デフォルトの名無しさん:2011/12/04(日) 16:52:02.55
2chのスレから画像だけをダウンロードさせるスクリプトを書きたいんですが、
以下でできません。どうすればいいんでしょうか

import urllib

urllib.urlretrieve( 'http://hibari.2ch.net/', '保存先ディレクトリ')
93デフォルトの名無しさん:2011/12/04(日) 16:58:05.13
>>92
なんでそれでダウンロードできると思ったか知りたい。

reを使ってjpgとかを抜き出したら
短縮URLは知らん。
94デフォルトの名無しさん:2011/12/04(日) 17:01:11.56
馬鹿には無理
95デフォルトの名無しさん:2011/12/04(日) 17:02:23.56
普通はdatからだな
96デフォルトの名無しさん:2011/12/04(日) 17:14:59.34
97デフォルトの名無しさん:2011/12/04(日) 17:26:29.49
>>93
ここに書いてあったんだ。
http://www.gesource.jp/programming/python/code/0006.html

>>96

試したら --OKしか出てこなかった(´・ω・)
98デフォルトの名無しさん:2011/12/04(日) 17:40:45.38
>>97
hoge.py という名前で保存したら
コマンドラインから
./hoge.py http://hibari.2ch.net/test/read.cgi/tech/1322115727/
とか打てばいい
っていうかこれくらいソース見て判断汁
99デフォルトの名無しさん:2011/12/04(日) 22:20:36.00
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|
100デフォルトの名無しさん:2011/12/05(月) 01:50:34.29
まともな回答者がいない
101デフォルトの名無しさん:2011/12/05(月) 03:18:07.31
ならば、君がその一人になりたまえ
102デフォルトの名無しさん:2011/12/05(月) 03:22:51.15
足し算もできない人が簡単な微積の問題持ってきて解き方教えてと言ってるようなもの
解答(ソース)まで出してる人がいるのにまともじゃないとか失礼だよ
103デフォルトの名無しさん:2011/12/05(月) 04:09:10.08
>100 はツンデレ
104デフォルトの名無しさん:2011/12/06(火) 16:02:35.74
pythonを覚えると仕事つける?
26男
IT未経験
105デフォルトの名無しさん:2011/12/06(火) 16:27:53.01
別に
106デフォルトの名無しさん:2011/12/06(火) 22:03:45.82
超初心者です。
samplenode.txtにかかれたノードを1行ごとに読み込んで、読み込んだノードをlineに代入し、
コマンドのtracerouteをかけて、表示したいのですがうまくいきません。下記のようなものを書いてみました。
よろしくおねがいしよろしくお願いします。

f = open('samplenode.txt')
lines2 = f.readlines()
f.close()

import commands

for line in lines2:
print commands.getoutput('traceroute '+line)
107デフォルトの名無しさん:2011/12/06(火) 22:24:15.30
>>106
多分、コマンドの文字列に改行文字が含まれてるからだと思うけど、
どういう風にうまくいかないのかを報告しよう。(エラーが出る、何も表示されない、期待通りの表示がされない、etc)

まずは、line変数の内容を表示してみて。
print line だと見落とすかもしれないので、print repr(line)

改行文字が入ってるので取り除く。 print commands.getoutput('traceroute ' + line.strip())


慣れないうちは、関数の引数のところには式は書かず、一ステップずつ変数にいれていくといいよ。
printデバッグでは改行文字とか見落とす事があるので、インタラクティブ・シェルを活用しよう。

>>> cmd = "traceroute " + line.strip()
>>> cmd
'tracerout x.x.x.x\n'
>>> status,result = commands.getoutput(cmd)
(1, '')
108デフォルトの名無しさん:2011/12/06(火) 22:35:03.62
106です。すいません。次からは報告します。
うまくいきました。改行文字が入っていたことが原因でした。
丁寧な説明、どうもありがとうございました。
109デフォルトの名無しさん:2011/12/07(水) 01:53:20.84
windowsXP、2.7.2です。
状況: 関数Bと関数Cは、関数Aからしか呼び出されません。

関数Bと関数Cを関数Aにネストさている場合とさせていない場合に、
挙動の違いはあるのでしょうか?
この状況では、どちらが一般的な記述方法なのでしょうか?
この状況下でのネスト・非ネストのメリット・デメリットを教えてください。
また、使い分けのセオリーなどはあるのでしょうか。

上記のご回答、宜しくお願いいたします。
110デフォルトの名無しさん:2011/12/07(水) 02:19:32.32
pass
111デフォルトの名無しさん:2011/12/07(水) 04:29:01.18
用語は正しく使わないと伝わらないんじゃね
112デフォルトの名無しさん:2011/12/07(水) 05:42:26.89
>>109
基本はネストさせないで書く(Zen of Python より ネストさせなくていいならしない方がいい)


内部的には、ローカル・グローバルになる等の違いはあるけど、
ネストさせるかどうかの判断基準にするようなことではない。

それよりも、「非公開関数はネストにする」といったルールを運用すると、
「関数 B は A と D からのみ呼び出す」といった場合に、困ることになります。


## 内部関数が便利なのは、
* 引数があまりにも多くなる場合に、スコープ内の引数を省略できる。(クロージャ)
* 関数に渡されたパラメータを元に、関数を動的に生成する場合等。(e.g. デコレータ定義)

## 欠点は、とりあえず思いつく限りでは・・・
* (慣れてない人にとって)コードが読みにくくなる事。デバッグが多少面倒になる。
* インデントが深くなる。
* 再利用しにくい。
* ドキュメント・ツールで自動で文書化出来ない。(※ デコレータ定義用途では、functools.wrapsを使えば可)
* 関数の単体テストが出来ない。


> 状況: 関数Bと関数Cは、関数Aからしか呼び出されません。

こういった状況でネストする場合、大抵はクラスで置き換え可能なので、クラス A のメソッド _B, _C というようにする。

クラスにしない場合では、ネストさせずに 関数 A, _B, _C とします。( '_' プレフィクス付の命名で、内部関数と表明する。命名規則について >>2を読もう)
113デフォルトの名無しさん:2011/12/07(水) 15:17:31.93
ある本に書いてあったのですが、
from math import sqrt
psqrt(pow(4.5-4.2,2)+pow(1-1,2))
のようにすると、
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'psqrt' is not defined
のようなエラーが出ます
これはどのようにすればいいのでしょうか?

Python2.6.6です

114デフォルトの名無しさん:2011/12/07(水) 15:21:46.00
今もう一度やってみて分かったのですが、
これはこの本の誤植のようですね

膨大な誤植の嵐のあるこの本のせいだと分かりました
この件は正誤表にもまだ書かれていないようですが

ご迷惑おかけしました
115デフォルトの名無しさん:2011/12/07(水) 15:30:21.57
日記はチラウラで
116デフォルトの名無しさん:2011/12/07(水) 15:31:43.88
>>113
何て本
117デフォルトの名無しさん:2011/12/07(水) 15:49:17.95
本はあまりオススメできないWebで勉強しろって>>1に書いてもいいかもしれんね
118デフォルトの名無しさん:2011/12/07(水) 15:59:23.71
嘘書いてあったり
内容が古くなってたり
おまけに日本語についての考慮がない本とか
なんでお薦めになってるのか理解不能なのもある
119デフォルトの名無しさん:2011/12/07(水) 17:44:09.90
>>114
この程度の誤植なら修正する必要ないと思ったんじゃないか。
前行で import sqrt してるわけだし。
120デフォルトの名無しさん:2011/12/07(水) 18:51:33.32
math.pow()は別のところでimportしてるんだろか

Pythonなら普通 ** 演算子で済ませると思うし
それを言うなら、二乗の和の平方根(ユークリッド距離)計算したいんなら単に
math.hyport(4.5-4.2, 1-1)
でいいわな

なんつうか、いろいろ解せない「本」ではあるな
121デフォルトの名無しさん:2011/12/07(水) 18:52:17.29
ごめんtypoった
math.hypot(4.5-4.2, 1-1)
の間違い
122109:2011/12/07(水) 19:00:16.28
>>112
クラスは、未だ単純な構造体代わり(関連する変数の集合体)にしか
使った事がないので、関数でネストさせずに_付き命名の方向にします。

丁寧な回答、ありがとうございました。
123デフォルトの名無しさん:2011/12/07(水) 19:14:40.49
powは組み込み関数版がある
124デフォルトの名無しさん:2011/12/07(水) 19:58:50.31
>>123
あ、そーか
どうせ**演算子で使うから組み込みになってるのかな
125デフォルトの名無しさん:2011/12/07(水) 20:18:09.14
>>121
著者乙()
126デフォルトの名無しさん:2011/12/08(木) 00:53:43.92
>>116
「集合知プログラミング」だね。誤植がとにかく多い。
127デフォルトの名無しさん:2011/12/08(木) 22:26:17.10
Python3は2との互換性が無いとの記事を読みました
自分はPythonに関しては今触り始めたばかりで、使っているのはcentOS6に入っている2.6.6なのですが
Python3は今どうなのでしょうか?
まだ3.2なので、Python2系の方が安定性とか考えるとやはりいいのでしょうか?
それとも、まだPython初学者であるので最初から3に行った方がいいでしょうか?
個人的にはPHPにしろMySQLにせよ新しいバージョンをと思っているのですが、
まだバージョンが3.2と浅いということと、後方互換性がないという致命的なものがあるので
どうなのかなと思いまして
処理速度とか、今あるライブラリ、フレームワークなどが後方互換性のなさから使えないとかあれば困る
とかあればアドバイスを頂きたいのですが
128デフォルトの名無しさん:2011/12/08(木) 23:18:43.76
129デフォルトの名無しさん:2011/12/08(木) 23:58:03.10
リンクありがとうございます
どうやら英文によるとライブラリなどの適応はPython3はまだ問題ありということらしいですね
皆さんは、やっぱ2系を使っているのでしょうか?

>安定性は3つ目の数字っすよ
というのは、3,2,2の最後の部分の事を言っているのでしょうか?
それとも、リンク先に何か数字があったのでしょうか?
130デフォルトの名無しさん:2011/12/09(金) 00:38:13.73
古い仕様を「先に」覚える必要はない
131デフォルトの名無しさん:2011/12/09(金) 00:53:29.75
2で何の問題もないけど、3にはどんなメリットがあるの
132デフォルトの名無しさん:2011/12/09(金) 01:20:03.06
>>128 は素人
133デフォルトの名無しさん:2011/12/09(金) 01:22:44.68
2.xについては
2.4以前なら致命的だけど
2.5以降なら何使っても問題ないよ

3.xについては
>今あるライブラリ、フレームワークなどが後方互換性のなさから使えないとかあれば困る
とかあるよ
134デフォルトの名無しさん:2011/12/09(金) 04:09:25.15
これも合わせて参考に。

http://wiki.python.org/moin/Python2orPython3


135デフォルトの名無しさん:2011/12/09(金) 09:45:07.71
>>130
新しい仕様が「普及しない」かもしれないのに?
136デフォルトの名無しさん:2011/12/09(金) 11:12:44.90
Python は Perl とは違うのだよ Perl とか Ruby とか
137デフォルトの名無しさん:2011/12/09(金) 15:40:48.88
結局皆Python2.X使ってるの?
138デフォルトの名無しさん:2011/12/09(金) 15:51:53.24
py3kが普及しないと思ってる奴なんてほとんどいないはず
今は代表的なライブラリの対応待ちとお前移行しろよいやお前からやれよって牽制し合ってる状態
139デフォルトの名無しさん:2011/12/09(金) 16:04:52.68
まあ西暦3000年ごろには普及するとは思うが。
140デフォルトの名無しさん:2011/12/09(金) 16:36:48.75
djangoもzopeも全然Python3に移行できてない事実を考えれば、おのずと答えはわかる。
141デフォルトの名無しさん:2011/12/09(金) 16:48:56.15
Python3は黒歴史になるのかな・・・・・
142デフォルトの名無しさん:2011/12/09(金) 21:33:00.55
Python 3 Wall of Shame
http://python3wos.appspot.com/
143デフォルトの名無しさん:2011/12/10(土) 02:19:20.45
linux環境で端末を開いたとき、[xxx@yyy]$のようにPCによって異なる表示がされると思いますが、
このxxx@yyyの部分をファイル名にコピーする([email protected]など)ようなアルゴリズムを書きたいのですが、
全く検討もつきません。PCごとにxxx@yyyの部分が変わるようにしたいです。
考えていただけませんでしょうか?よろしくお願いします。
144デフォルトの名無しさん:2011/12/10(土) 02:40:24.63
from subprocess import Popen, PIPE
def bq(argv): return Popen(argv, stdout=PIPE).communicate()[0]
'%s@%s' % (bq(['whoami'].rstrip(), bq(['hostname'].rstrip())

せっかく書いたので貼ったけどもっとまともな回答が付くと思う
145デフォルトの名無しさん:2011/12/10(土) 03:10:00.91
ありがとうございます。
tmp.txtを[email protected]に変える場合はどうすればいいですか?
初心者で上の文がよくわからないので・・・
146デフォルトの名無しさん:2011/12/10(土) 04:34:30.85
HOSTNAMEとか環境変数が設定されてる環境なら

import os
filename = "%s@%s.txt" % (os.environ['USER'], os.environ['HOSTNAME'])
147デフォルトの名無しさん:2011/12/10(土) 07:15:49.73
D:\work>python --version
Python 2.7.2
148デフォルトの名無しさん:2011/12/10(土) 09:23:46.64
Python '75
149デフォルトの名無しさん:2011/12/10(土) 11:53:47.77
username = os.getlogin()
hostname = socket.gethostname()
150デフォルトの名無しさん:2011/12/10(土) 12:28:14.33
argparseとか、configparserとか
何でparse[r]にrがついたり、つかなかったりするん。
打つときいつも迷う
151デフォルトの名無しさん:2011/12/10(土) 15:11:02.69
152デフォルトの名無しさん:2011/12/10(土) 18:40:09.63
forを使った、リスト内包文に関して教えてください
foo = [ x * 2 for x in [0,1,2] ]
これは
foo = [ x * 2 for x in range(3) ]
と同じ[0, 2, 4]となりますが、これらはforによって得られたxを前の式に入れるという事は分かります

しかし、次の
loc = [ [ random.random(), random.random() ] for i in range(n) ]
という形が理解できません
例えばこの時、n=3であれば3つのリストがprintによって出力されます

locの[ random.random(), random.random() ]式内にはiという文字が入ってもいないのに
なぜこの場合、要素数になって、それが反映されているのでしょうか?
例えば、PHPなどのようにfor()にて第2引数で処理要素数がしていされている形であれば分かるのですが、
このPythonの記述法はどこからそれらが導かれているのか理解ができませんでした
153デフォルトの名無しさん:2011/12/10(土) 18:51:00.29
>>152
[ random.random(), random.random() ]を三回繰り返してるだけ
154デフォルトの名無しさん:2011/12/10(土) 19:16:18.53
>>153
返答ありがとうございます

printしてみたら、[ random.random(), random.random() ]が3回表示されたので、
挙動は分かったのですが、何故そうなるのかが分かりません
Pythonの場合、for()等で他の言語のように第2引数によって条件などが入りませんが、
そのおかげでこの挙動が自分には理解が出来ません

foo = [ x * 2 for x in range(3) ]の場合は、x * 2にforで得られたxの値が入るに対し、
2つ目のlocの式は何故n回だけ実行されるのかが分かりません

http://python.g.hatena.ne.jp/muscovyduck/20080716/p1
このサイトなどで書かれているのもやはり、x,y等の対応する変数が存在するので挙動は分かるのですが、
locのようなものを解説しているサイトや本を見つけられませんでした
155デフォルトの名無しさん:2011/12/10(土) 19:26:35.76
>>154
for ループの仕組みから理解できていないんじゃないか?
for i in [0, 1, 2] の場合、0, 1, 2を順番にiに代入していき、全て終わったらループが止まる
そのlocの例の場合はiが使われていないだけ

loc = [[ random.random(), i ] for i in range(3) ] とでもしてみれば分かりやすいかな?
156デフォルトの名無しさん:2011/12/10(土) 19:33:13.00
>>155
あっ、ようやく分かりました
ありがとうございました
157デフォルトの名無しさん:2011/12/10(土) 19:56:05.83
python setup.py buildとpython setup.py installはどう違うのですか?
webで検索していると、ライブラリによってはインストール時にbuildの場合とinstallの場合があるようですが
158デフォルトの名無しさん:2011/12/10(土) 19:57:39.11
WindowsでPythonをbatファイルの替わりに使いたいんだけど、
batでdosコマンドを実行したときのように
実行経過を表示することはできるのでしょうか?
159デフォルトの名無しさん:2011/12/10(土) 20:48:38.43
?
160デフォルトの名無しさん:2011/12/10(土) 22:30:23.27
[r["text] for result in search_results for r in result["results"]]

というコードがあるのですが左から順にfor文の内容が実行されていってるようなのですが
リスト内包表記では右から実行される訳ではないんでしょうか?
161デフォルトの名無しさん:2011/12/10(土) 22:41:59.21
簡単な例で試すといいよ

>>> [(i, j) for i in [1, 2, 3] for j in [4, 5, 6]]
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
162デフォルトの名無しさん:2011/12/10(土) 22:44:56.32
左からで正しいよ
[f(x,y) for x in xs for y in ys if cond(x, y)]
こういうのは
ループで言うと、
for x in xs: for y in ys: if cond(x, y): yield f(x,y)
これと一緒だと思えばいい
要はyieldする式が先頭かケツかの違いだけで、普通のループと同じ読み方ができる

163デフォルトの名無しさん:2011/12/10(土) 22:54:27.12
>>161-162
回答ありがとうございます。
どうやら重大な勘違いをしていたようで助かりました。
164デフォルトの名無しさん:2011/12/10(土) 23:04:33.40
>>157
ビルドは環境を構成するだけ (buildディレクトリ)
コンパイルしたりするのはここ。

インストールはsite-packages等へビルドされた環境をコピー
この時ビルドがまだならビルドする。

インストール以外にも配布用のパッケージを作成したりインストーラを生成したりもできる。
165デフォルトの名無しさん:2011/12/12(月) 20:57:14.04
>>158
馬鹿には無理
166デフォルトの名無しさん:2011/12/12(月) 21:40:17.79
以下のソースを作成し、

import csv
reader = csv.reader(file("some.csv", "rb"))
for row in reader:
print row



以下のように実行するとエラーが出ます。
なぜか原因が全くわかりません。

$python csv.py
Traceback (most recent call last):
File "csv.py", line 1, in <module>
import csv
File "/home/aaa/csv.py", line 2, in <module>
reader = csv.reader(file("some.csv", "rb"))
AttributeError: 'module' object has no attribute 'reader'

なんでだ・・・
167デフォルトの名無しさん:2011/12/12(月) 21:50:13.36
csv.pyの名前を変える
168デフォルトの名無しさん:2011/12/12(月) 21:51:33.12
>>167
それ、さっきやりましたがダメでした。
169デフォルトの名無しさん:2011/12/12(月) 21:55:23.67
print csv.__file__
をやってみる。
170デフォルトの名無しさん:2011/12/12(月) 22:45:03.45
>>166
fileじゃなくてopen?

×
reader = csv.reader(file("some.csv", "rb"))


reader = csv.reader(open("some.csv", "rb"))


csv弄る用事があるのを思い出したw
171デフォルトの名無しさん:2011/12/12(月) 23:27:25.60
いろいろセンスのなさが目立つな
172デフォルトの名無しさん:2011/12/12(月) 23:28:04.27
わざとやってるんじゃなかったのか。
173デフォルトの名無しさん:2011/12/12(月) 23:33:23.10
>>170
openは内部的にfileを呼んでるだけだから、
その2つの例はまったく同じことをやっているだけ。
174デフォルトの名無しさん:2011/12/13(火) 01:47:58.64
csv.pyc が残ってる可能性がある。(コンパイル済のキャッシュ)

2.xであれば、ファイル内に日本語含む場合は、csv内の文字コードが・・・
なんて場合に備えて codecs.open がいいかもしれない。
175デフォルトの名無しさん:2011/12/13(火) 17:35:59.02
なんでshebangの意味を教えてくれなかったんだ
linuxでやるときもとりあえず書いて実行する時は$python oppai.pyってやってたわ
それとか
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib.font_manager as fm
font = fm.FontProperties(fname=u'c:\\windows\\fonts\\arialuni.ttf')
みたいな
windowsでは意味のない行やん。なんで教えてくれなかったんだ
176デフォルトの名無しさん:2011/12/13(火) 17:39:52.45
もしかしたらで違ってるかもしれないけど、質問しなかったからじゃないか
177デフォルトの名無しさん:2011/12/13(火) 17:46:31.27
質問はしなかった(´・ω・`)
C習う時に#include<stdio.h>は「おまじない」と言われるみたいになんとなく受け入れてた
くそう。import numpy;(len("python ")-len("./"))*numpy.inf分のタイプ数をロスしたわぁ
178デフォルトの名無しさん:2011/12/13(火) 18:07:33.45
構文ハイライト等のコード判別でshebang読むのとかあるから、書いて損はないよ。

自分にとっても、後々、別の処理系・言語をやる場合に、
似たような構文の他の言語と読み間違えるのを防げる。
179デフォルトの名無しさん:2011/12/13(火) 18:35:06.15
>タイプ数をロスしたわぁ
……。
180デフォルトの名無しさん:2011/12/13(火) 19:02:28.41
PEP 397 -- Python launcher for Windows
http://www.python.org/dev/peps/pep-0397/
PEP 397 compatible launcher for Python under Windows
https://bitbucket.org/vinay.sajip/pylauncher/downloads

とかあるから一行目shebang、二行目encoding、次に__doc__置くのは
習慣付けてもいいと思う
shebangきちんと動かすんだったら改行コードもLFにする必要あるけど
標準ライブラリはCRLFだったりするしそこまでする必要はないかな
181デフォルトの名無しさん:2011/12/13(火) 19:18:03.39
タイプ数を節約したいということなら、雛形使って書き始めると良い
182デフォルトの名無しさん:2011/12/13(火) 20:20:37.39
dabbrev
183デフォルトの名無しさん:2011/12/14(水) 00:08:31.69
>>175
2行目はWindowsでも意味はある
184デフォルトの名無しさん:2011/12/14(水) 02:51:50.84
python - ./ ってことは実行時のタイプ数?shebangがないとカレントのファイル直接実行できないけど

python に警告制御等のオプション付きで実行する事があるかもしれないから。
パスの通った場所に置くならともかく、デバッグ時なら実行権限与えたりしない。

複数 python 入ってると shebangで指定される python がどれかわからなくなるかもしれないので
実行する時わざわざ $ python ... で実行するメリットもある。

何度も繰り返し実行するというならシェルの履歴使う。最短なケースでは僅か2タイプで済む。


shebangは書く python foo.py で実行で全然問題ないよ。

タイプ数は、エディタ(雛形挿入)やシェル(履歴)を使いこなせば節約できる。
185デフォルトの名無しさん:2011/12/14(水) 16:20:49.52
日本語勉強しなおせ
186デフォルトの名無しさん:2011/12/14(水) 19:49:10.26
日本語のshebangは何だろう
187デフォルトの名無しさん:2011/12/14(水) 19:52:55.17
殻爆
188デフォルトの名無しさん:2011/12/14(水) 23:05:44.60
井桁爆弾
189デフォルトの名無しさん:2011/12/15(木) 16:01:23.72
#拝啓
190デフォルトの名無しさん:2011/12/15(木) 23:43:28.80
PythonのFrameworkについて教えてください
Djangoとかあるのは知っているのですが、今現在一番使われているものや、個々の違いなどを教えて頂けませんでしょうか?
PHPの場合はCakePHPが一番人気で楽だけど実装が決まってしまう、ZendFrameworkは3番人気だけど、ガチガチにならず各コンポーネントがライブラリのように使えるとかです
宜しくお願いします
191デフォルトの名無しさん:2011/12/15(木) 23:44:01.44
Djangoでいいお
192デフォルトの名無しさん:2011/12/15(木) 23:45:12.02
193デフォルトの名無しさん:2011/12/15(木) 23:49:16.07
194デフォルトの名無しさん:2011/12/15(木) 23:57:11.28
個人的にはFWでも上記で書いたようなZednFrameworkのようなタイプが好きなのですが、
PythonのFWは結構ガチガチ(そのFWから抜けるようなものを実装しようとすると難しい、柔軟性が低い)な感じでしょうか?
本屋に行ってみたのですが、Python系の本は他からすると少ないですが、フレームワークは更に少なかったです
195デフォルトの名無しさん:2011/12/15(木) 23:57:55.39
196デフォルトの名無しさん:2011/12/15(木) 23:59:03.54
>>194
wsgi とか Wekrzeug とか でぐぐれ
197デフォルトの名無しさん:2011/12/15(木) 23:59:59.54
馬鹿には無理
198デフォルトの名無しさん:2011/12/16(金) 22:12:52.87
PythonとMySQLを連携させるにはいくつかライブラリ(モジュール)があるようですが、
どれが一番使われて、いいのでしょうか?
安定性、速度など(トレードオフあもしれませんが)を重視したいです

PythonはcentOSに入っている2.6です
TRAC導入時に以前、SQLite用にはpysqliteを入れてはいたのですが
PythonはSQLiteの情報の方が見つかりやすい気がします
199デフォルトの名無しさん:2011/12/16(金) 22:16:04.11
>>197
自己紹介乙!
200デフォルトの名無しさん:2011/12/16(金) 22:27:27.67
>>193
2006年の情報って…
201デフォルトの名無しさん:2011/12/17(土) 03:12:55.30
202デフォルトの名無しさん:2011/12/17(土) 23:30:37.35
TurboGearsって
http://www.turbogears.org/en/welcome
のどこからダウンロードするんですか?
見当たらないのですが
203デフォルトの名無しさん:2011/12/17(土) 23:34:00.33
204デフォルトの名無しさん:2011/12/18(日) 19:27:03.49
>>203
ありがとうございます
しかしなんかややこしそうですね・・・

Djangoは普通にダウンロード出来ましたが
205デフォルトの名無しさん:2011/12/18(日) 22:23:41.51
スレちというか板ち

【Python】TurboGearsスレ Part 1【Framework
http://kohada.2ch.net/test/read.cgi/php/1176022606/
206デフォルトの名無しさん:2011/12/22(木) 19:09:13.58
centOSでIDLEがないのでyum listで調べてみたら、出てきませんでした
何かpython-toolsがどうたらとか海外のサイトに書かれていました
じゃぁpython-toolsとは何ぞや、と思って検索するに、なぜかVisual Studioしか出来ません
centOSのリポジトリ内に存在するのは確認しました

centOSにてIDLEを使用するにはどのようにすればいいのでしょうか?
また、python-toolsとはどのようなものなのでしょうか?
207デフォルトの名無しさん:2011/12/23(金) 03:03:07.11
>>206
IDLEが欲しい理由ってどんなの?
208デフォルトの名無しさん:2011/12/23(金) 19:45:59.93
IDLE使ってないの?
俺は使ってるけど
俺の使う理由は色、インデント、コピペだな
ターミナルからのpythonコマンドではIDLEに慣れると使いにくい
209デフォルトの名無しさん:2011/12/23(金) 20:39:18.45
別にEmacsでもPyDevでもPyScripterでも
好きなのを使えばよろし
210デフォルトの名無しさん:2011/12/24(土) 01:35:00.86
すいません、ローカルにあるCSVファイルを読み込んで、WEBブラウザに
表で表示できるシステムを作りたいのですが、Zopeなんかを使えば
良いんでしょうか。サンプルソースなんかれば場所を教えてもらえると助かります。
211デフォルトの名無しさん:2011/12/24(土) 01:52:27.35
http://www.python.jp/doc/nightly/tutorial/floatingpoint.html
の訳文についてなんですが、

丸め値を 1 増やしたので、この値は実際には 1/10 より少し小さいことに注意してください;

の部分が小さいではなく、大きいではないでしょうか?
原文は

Note that since we rounded up, this is actually a little bit larger than 1/10;

なので信憑性は高いです。
212デフォルトの名無しさん:2011/12/24(土) 05:28:29.13
>>210
それくらいならZopeなんか使わんでも出来るだろ
213デフォルトの名無しさん:2011/12/24(土) 11:19:37.31
>>212
超初心者なので・・・すいません。
いろいろと調べながら考えたのですが、csvファイルを読み込んで、それをprintで出力するような
スクリプトをつくれば良いということでしょうか。
214デフォルトの名無しさん:2011/12/24(土) 11:30:28.85
WebサーバにCGIスクリプトとして実行させるのがお手軽だと思う
雛形はこんな感じ

import csv
# ...csvを読みこんでHTMLに整形
print "Content-Type: text/html;"
print
print html
215デフォルトの名無しさん:2011/12/24(土) 11:33:16.18
import csv

f = csv.reader(open('a.csv'))
print('<html>\n<head></head>\n<body>')
print('<table>')
for l in f:
print('<tr>')
for td in l:
print('<td>{}</td>'.format(td))
print('</tr>')
print('</table>')
print('</body>\n<html>')
216215:2011/12/24(土) 11:34:32.41
最後で<html>閉じてない。
そこだけ修正しといて
217デフォルトの名無しさん:2011/12/24(土) 13:00:22.12
import random
random.uniform()
みたいに、pythonってモジュール名を頭につけてコマンドを書かなきゃいけないじゃないですか?
何でこういう形式なんでしょうか
C++とかはincludeした後、そのまま関数を使えるのに
218デフォルトの名無しさん:2011/12/24(土) 13:07:18.00
名前が衝突しないようにでしょう

from randam import uniform
from randam import *

というのもあるから調べるといいよ
219デフォルトの名無しさん:2011/12/24(土) 13:11:05.71
>>218
ありがとうございます!
220デフォルトの名無しさん:2011/12/24(土) 16:30:52.37
>>214, 215

以下のソースでうまくいきました。
ありがとうございました。


import csv

csvfile = open("a.csv")
f = csv.reader(csvfile, delimiter=' ')

print "Content-type: text/html"
print

print('<html>\n<head></head>\n<body>')
print('<table>')
for l in f:
print('<tr>')
for td in l:
print('<td>{}</td>'.format(td))
print('</tr>')
print('</table>')
print('</body>\n</html>')

221デフォルトの名無しさん:2011/12/24(土) 16:38:00.42
>>217
>C++とかはincludeした後、そのまま関数を使えるのに

namespace を知らんのか
222デフォルトの名無しさん:2011/12/25(日) 00:28:28.91
usingはおまじないか
223デフォルトの名無しさん:2011/12/25(日) 00:46:12.94
めりくり
224デフォルトの名無しさん:2011/12/28(水) 01:06:07.42
質問お願いします。
文字列の"test"をtuple("test")とすると
("t", "e", "s", "t")と分割されてしまい困っています。
これをタプル化したときに分割されないようには出来ないでしょうか?
225デフォルトの名無しさん:2011/12/28(水) 01:07:44.02
できますん
226デフォルトの名無しさん:2011/12/28(水) 01:08:15.65
("test",)
227デフォルトの名無しさん:2011/12/28(水) 20:40:24.66
文字コードに対応する文字があるか判別する方法教えてください・・・。

0x41と 0x80 を区別したい。

228デフォルトの名無しさん:2011/12/28(水) 21:56:54.11
デコードしてみて例外を捕まえる
229デフォルトの名無しさん:2011/12/28(水) 22:00:53.06
助かります。
230デフォルトの名無しさん:2011/12/29(木) 11:28:46.60
pythonからシェルコマンドを実行するには os.system などを使うそうですが、
これにpythonの変数を渡すにはどうやるんでしょうか?
たとえば
os.system("rm hoge.txt")

file="hoge.txt"
os.system("rm ", file)
みたいにできないでしょうか?
231デフォルトの名無しさん:2011/12/29(木) 11:48:03.91
>>230
プログラミング自体、初心者なのかな?
os.systemに渡してるのはただの文字列だから、
そういう文字列を作っちゃえばOK。例えばこんな感じ。
file = "hoge.txt"
command = "rm " + file
os.system(command)

慣れてきたら
os.system("rm " + file)
とかでもいい。
232デフォルトの名無しさん:2011/12/29(木) 12:17:09.11
win32comでExcelを扱うときの質問。

import win32com.client
xapp = win32com.client.Dispatch("Excel.Application")

として、Excelを使おうとするとき、すでにExcelが起動していると
そのプロセスを掴んでしまうようなんだけど、もうひとつExcelを
起動するようにするにはどうしたらいいんだろう。

VBScriptで次のようにすると、既存のExcelプロセスとは別に
プロセスが起動するよね。そういうことをやりたい。
Set xapp = CreateObject("Excel.Application")

知ってる方おしえてー
233230:2011/12/29(木) 12:24:17.82
>>231
>os.systemに渡してるのはただの文字列だから、
アッー!そうでした・・・。ちょっと恥ずかしすぎる質問でした。
ありがとうございました。
234デフォルトの名無しさん:2011/12/29(木) 12:28:33.31
どういう用途で使うのか知らないけど、
その変数が外来だとするとセキュリティー的に怖いことをやろうとしてるよ。

* rmコマンドへ渡す引数の注意点: ルートのパスと -rf オプションを指定された場合。
* パイプで別のコマンドが実行可能。
* 変数に意図しない空白が含まれてる場合、別々の引数として解釈される。

もし、変数は固定で安全だとと思う場合でも、何かのミスで変数が上書きされて
意図しないコマンドが実行されるというリスクがあるので、早めに対策するのをお勧めです。


参考
ttp://www.python.jp/doc/release/library/subprocess.html の警告 シェル・インジェクションの項
235デフォルトの名無しさん:2011/12/29(木) 13:25:57.33
os.system よりも subprocess.Popen ですよ
236デフォルトの名無しさん:2011/12/29(木) 13:26:29.73
>>232
無理
237デフォルトの名無しさん:2011/12/29(木) 14:07:55.34
>>236
それマジ?ありがとう
238デフォルトの名無しさん:2011/12/29(木) 15:43:18.71
>>232
win32com.client.DispatchEx("Excel.Application")
239デフォルトの名無しさん:2011/12/29(木) 22:09:10.69
>>238
できた。ありがとう!
240デフォルトの名無しさん:2011/12/29(木) 23:32:56.35
Exとかやる気ねえなw
241デフォルトの名無しさん:2011/12/30(金) 00:06:23.86
まあ本家のWin32APIには"ほにゃららExEx()"とかもあるしね・・・
242デフォルトの名無しさん:2011/12/30(金) 08:56:53.08
viのスレかと重た
243デフォルトの名無しさん:2012/01/01(日) 12:19:42.25
Python でcgiを作りたいと思います。
ウェブブラウザーの画面に表示されたボタンを押すと、そのボタンの色が変わるようなサンプルを探して
いるのですが、なかなか見つかりません。なんかヒントをもらえると助かります。
244デフォルトの名無しさん:2012/01/01(日) 12:24:46.85
その程度なら javascript 使え
245デフォルトの名無しさん:2012/01/01(日) 12:42:19.33
print "Content-Type: text/html;\n"
print """<html>
<head><title>change button color</title></head>
<body><button onclick="this.style.backgroundColor = 'black';">click me</button>
</body>
</html>"""

サンプルはDHTMLでぐぐるといっぱいでてくるはず
246sage:2012/01/01(日) 14:09:41.97
あけまして、おめでとうございます。
namedtupleの名前・値の一覧を取り出す方法教えてください。
dictでいう、dict.items() dict.keys() deict.values()
のようなイメージです。よろしくお願いします。
247246:2012/01/01(日) 14:15:43.90
sage間違えました。
248デフォルトの名無しさん:2012/01/01(日) 14:51:46.30
249246:2012/01/01(日) 15:41:23.87
>>248
ありがとうございます。
 _asdict() で辞書に変換してできました。

 まだじっくり読んでいないのですが、name-index-valueの一覧も
 ここを読見込めば出来る様になるのでしょうか。
 第2段階として
 タプル扱いだとindex-value、辞書にするとname-value、
 これを一つの表として出力したいのです。
250デフォルトの名無しさん:2012/01/01(日) 18:20:39.31
>>249
直接的な方法は書いてないかな。。
_fieldsでキーの一覧を得られるので、後はビルトイン関数のenumerateやzipを組み合わせるといい。

for index,value in enumerate(data):

for key,value in zip(data._fields, data):

for index,(key,value) in enumerate(zip(data._fields, data)):
251246:2012/01/01(日) 19:31:08.06
>>250
 ありがとうございます。できました。
 名前と値を個別に取り出してzipで組み合わせて、enumerateの値をindexと見做す。
 という事のようですが、考えつきませんでした。

 現在、引数がlist型なら形式A、tuple型なら形式B、dict型なら形式Cという
 デバッグ表示用関数(ネストに対応できていませんが)を練習として作っています。
 namedtupleなら形式D、という事をしたいのですが、型の判別方法が判りません。
 tupleとnamedtupleを区別する方法を教えてください。typeではダメでした。
 typesやisinstanceを調べてみても判りませんでした。
 重ね重ね申し訳ありませんが、お願いします。
252デフォルトの名無しさん:2012/01/01(日) 20:43:33.19
>>251
これはよくはまるポイントかもしれない。

namedtupleはクラスではなくて、tupleを直接継承したクラスを生成する * 関数 * なので。
また、現状では namedtupleのみに 共通するベースクラスがなく、isinstanceでは通常のtupleとの区別が付きません。
(※ ttp://bugs.python.org/issue7796)

例えば今回のケース(_fieldsを使う場合)なら、こうかな

if isinstance(obj, tuple):
  if hasattr(obj, "_fields"):
    namedtuple用のコード
  else:
    通常のtuple用のコード


hasattrは、このケースのみの対策というわけではなく、通常の型を判別して処理を別ける場合でも、
isinstanceの代わりに属性の有無のみでチェックする方法がよく使われます。
253246:2012/01/01(日) 22:02:39.85
>>252
 try: expect: で試行錯誤していました。hasattrの方がスマートです。
 やっと本質的なコードに入れます。
 ありがとうございました。
254デフォルトの名無しさん:2012/01/01(日) 22:21:17.05
hoge/__init__.pyとhoge/_hoge_main.pyの2ファイルからなるhogeパッケージで、カスタム例外
クラスhoge.Errorとこのクラスを継承したサブクラスを作成し、_hoge_main.pyからraiseしている
のですが、_hoge_main.py内で、
class Error(Exception): pass
のように定義すると、Tracebackの最後で、
hoge._hoge_main.Error
と表示されてしまいます。できれば、
hoge.Error
と表示されるようにしたいのですが、どのような方法が良いでしょうか? 自分で思いついたのは、
・__init_.py で、各Errorクラスを定義し直して、_hoge_main.Error = Errorで上書きする
・_hoge_main.pyの各Errorクラスの定義で__module__ = 'hoge' とする
の2つですが、あまり良い方法には思えませんでした。
Pythonのバージョンは3.2です。
255デフォルトの名無しさん:2012/01/01(日) 22:48:08.68
>>254
 __repr__ メソッドを上書きする。

第3者にとってはモジュールのパスが判り辛くなるかもしれないので、その点は気をつけて。
256255:2012/01/01(日) 22:59:41.08
読み違えたかもしれない。
hoge.Error がimportされた先のパスで表示されてしまうって問題?
257デフォルトの名無しさん:2012/01/01(日) 23:13:49.82
> hogeパッケージで、カスタム例外 クラスhoge.Errorとこのクラスを継承したサブクラスを作成し、...

> _hoge_main.py内で、class Error(Exception): pass のように定義すると、
> Tracebackの最後で、 hoge._hoge_main.Error と表示されてしまいます。

よく読むと、Errorがどこで定義されてるのかわからなくなった(汗
2重に定義しようとしてる?

hoge/__init__.py で定義すれば hoge.Error だし
hoge/_hoge_main.py で定義すれば hoge._hoge_main.Error と表示されます。

推測だけど、やりたい事はこう?
hoge/__init__.py で Error クラスを定義して、hoge/_hoge_main.py で from . import Error
258254:2012/01/01(日) 23:30:31.06
上手く説明できなくてすみませんでした。
やりたい事は>>257の最後に書かれている通りであっているのですが、
hoge/__init__.pyで、from . import _hoge_main しているのに、hoge/_hoge_main.py でも
from . import Error したら、2つのモジュールが互いにimportするからマズいのでは?と思って
他の方法を探していたのでした。
from . import Errorしても問題が無ければ、そうしたいのですが大丈夫でしょうか?
259デフォルトの名無しさん:2012/01/02(月) 00:49:45.14
>>258

相互 import では幾つか注意が必要なので、出来れば避けた方がいいです。

相互 import で気をつける点は、トップレベルが実行される時点ではまだimportするモジュールの属性を参照出来ない事。
つまりfrom/importが出来ない。import hogeとして、hoge.Errorを関数内で使うようにする。

後、気になったのは、hoge/_hoge_main.py を直接実行したりしないかという点だけど・・・(名前にmainとあるので)
その場合は from . import Error が出来ないかな。

他の対策。遅延import
 * それ程頻繁に呼び出される関数でなければ、関数内で import する。
260デフォルトの名無しさん:2012/01/02(月) 10:20:02.06
>>244
javascriptですか。

>>245
とりあえず動きました。
ありがとうございました。

実はインターネット上のサーバーの監視するものを作っていまして、本体はなんとかpythonで
作れたのですが、webブラウザからそのスクリプトを実行する簡素なフロントエンドを作ろうと考えています。

その場合、フロントエンドはpython よりも javascriptの方が適しているのでしょうか。調べているのですが、
なかなか結論が出なくて。
261デフォルトの名無しさん:2012/01/02(月) 11:31:31.92
python でいいよ
ていうか両方使っちゃだめなのか?
262デフォルトの名無しさん:2012/01/02(月) 11:32:16.33
老若男女、猫も杓子もインターネットを使うようになった今日、
無料情報と有料情報の違いを知らない人が多すぎる。
無料情報は、大半が釣りだと思っておいて間違いない。
263デフォルトの名無しさん:2012/01/02(月) 12:39:17.87
釣りを釣りだと分からない人に、無料情報を使うのは難しい
264デフォルトの名無しさん:2012/01/02(月) 12:45:09.43
おまいらも初詣とか行くときは釣りに気をつけろよ
265デフォルトの名無しさん:2012/01/02(月) 16:27:36.16
>>251
Python 3.2.2 (default, Sep 29 2011, 23:09:11)
> import collections
> nt = collections.namedtuple('Point', 'x y')
> t = tuple()
> nt.__class__
<class 'type'>
> t.__class__
<class 'tuple'>
> isinstance(t, type)
False
> isinstance(nt, type)
True
> isinstance(t, tuple)
True
> isinstance(nt, tuple)
False

Python 2.7.2+ (default, Oct 4 2011, 20:03:08)
> import collections
> nt = collections.namedtuple('Point', 'x y')
> t = tuple()
> isinstance(nt, tuple)
False
> isinstance(t, tuple)
True
> isinstance(nt, type)
True
> isinstance(t, type)
False
266デフォルトの名無しさん:2012/01/02(月) 17:23:06.82
>>265

namedtuple使ったことないのかな?
tはタプルのインスタンスだけど、その nt はタプルを継承した"クラス"
インスタンス同士で区別が付くかどうかを比較しないと意味がないよ。

> n = nt(0,0)
> isinstance(n, type)
False
> isinstance(n, tuple)
True
267デフォルトの名無しさん:2012/01/02(月) 18:02:55.24
>>266
使ったことなかったです。
2度目の正直で

>>> import collections
>>> nt = collections.namedtuple('Point', 'x y')
>>> p = nt(0, 0)
>>> t = tuple()
>>> t.__class__
<class 'tuple'>
>>> p.__class__
<class '__main__.Point'>
>>> type_p = type(p)
>>> p1 = nt(1, 1)
>>> isinstance(p1, type_p)
True
>>> isinstance(p, type_p)
True
>>> isinstance(t, type_p)
False

(・∀・)デキタ!!
268デフォルトの名無しさん:2012/01/02(月) 18:09:06.62
>>267の追加
>>> nt2 = collections.namedtuple('Space', 'x y z')
>>> s = nt2(1, 2, 3)
>>> type_s = type(s)
>>> type_s
<class '__main__.Space'>
>>> isinstance(s, type_s)
True
>>> isinstance(s, type_p)
False
>>> isinstance(p, type_s)
False
>>> isinstance(p, type_p)
True
>>> isinstance(t, type_s)
False
>>> isinstance(t, type_p)
False
(・∀・)イイ!
269デフォルトの名無しさん:2012/01/02(月) 18:19:19.91
連投すまんとです

>>> isinstance(s, (type_p, type_s))
True
>>> isinstance(p, (type_p, type_s))
True
>>> isinstance(t, (type_p, type_s))
False

(・∀・)カンペキ!!
270デフォルトの名無しさん:2012/01/02(月) 18:33:18.75
>>> isinstance(t, tuple)
True
>>> isinstance(p, tuple)
True
>>> isinstance(s, tuple)
True
>>> tuple == type(t)
True
>>> tuple == type(p)
False
>>> tuple == type(s)
False
>>> isinstance(t, tuple) and tuple == type(t)
True
>>> isinstance(p, tuple) and tuple == type(p)
False
>>> isinstance(s, tuple) and tuple == type(s)
False

最後のTrue, Falseでtuple, namedtupleを見分けることが
(・∀・)デキタ!!
271デフォルトの名無しさん:2012/01/02(月) 21:08:25.94
>>270
おめ・・・と言いたいところだけど残念、もう一歩。

そのコードで判別できるのは タプルかタプルを継承したクラスのインスタンスかどうかなので、
例えば、namedtupleで生成したクラス以外の タプルを継承したクラスの場合を考えてみよう。

class Foo(tuple): pass

> x = Foo()
> isinstance(x, tuple) and tuple == type(x)
False

これだと namedtupleと同じ結果だから、
xは namedtuple用のコードで処理されることになるけど _fields属性がないので AttributeError になる。
対して _fieldsの有無でnamedtupleかどうかを判別してれば、通常のタプルとして処理されるのでエラーにはならない。


namedtupleで作られるクラスが共通のインターフェースでも継承してくれれば
もっと判り易く判別するコードが書けるようになるはずなのだけどね。※1

その辺りの議論はここにあって (No way to find out if an object is an instance of a namedtuple) ttp://bugs.python.org/issue7796
> Detecting _fields is the simplest thing we can do right now.
ということで _fields での判別が、現状(<3.2)では最も簡単な判別方法と締められてる。

# ※1 ただし、Pythonでは厳密な型チェックよりも、
# ダックタイピングの利点を活かす為、規格のみのチェックの方が好まれる。
272デフォルトの名無しさん:2012/01/02(月) 22:11:25.05
(´・ω・`)ショボーン (´;ω;`)ウッ…
273デフォルトの名無しさん:2012/01/03(火) 00:26:36.71
>>272
ドンマイ。やりたいことの意図はわからなくはないよ。

isinstance(obj, INamedTuple) みたいな判別をしたい場合の参考にどうぞ
namedtupleにインターフェースっぽいものを仕込むサンプル。

ttp://ideone.com/ZVkIv
274デフォルトの名無しさん:2012/01/05(木) 01:30:26.44
>>> a = bytes.fromhex('00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f')
>>> print('{:s}'.format(a))
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'

bytesを表示した時に全てhexで表示して欲しいんですが、
良い対処方法はないでしょうか?

\t と表示されるのではなく、\x09の様に表示して欲しいのです。
binary data を扱っている時に表示桁数が揃っているとdebugし易いんです。
275デフォルトの名無しさん:2012/01/05(木) 03:50:30.64
>>274
プレフィクスに拘らないなら binascii.hexlify

問題の原因・・・エスケープシーケンスの処理は bytes型のrepr関数内で行われてるので、
対処方法は、それさえ避けるようにすればok。方法はいくつか考えられるけど、
デバッグ用途なら reprモジュール使って独自にフォーマットする例を挙げてみる。

from reprlib import Repr
class DebugRepr(Repr):
  def repr_bytes(self, obj, level):
    return "b'{}'".format("".join(map("\\x{:02x}".format, obj)))

repr = DebugRepr().repr
print(repr(a))

勿論、bytes型限定であれば、上記のrepr_bytesを普通の関数にして使ってもいい。
276デフォルトの名無しさん:2012/01/05(木) 13:47:35.71
binascii.hexlifyでいくことにしました。
ありがとうございました。

binascii.b2a_qp(a)がいい感じだったんですけどねぇ。。。

>>> import binascii
>>> binascii.hexlify(a)
b'000102030405060708090a0b0c0d0e0f'
>>> binascii.b2a_uu(a)
b'0 $" P0%!@<("0H+# T.#P \n'
>>> binascii.b2a_base64(a)
b'AAECAwQFBgcICQoLDA0ODw==\n'
>>> binascii.b2a_qp(a)
b'=00=01=02=03=04=05=06=07=08=09\n=0B=0C\r=0E=0F'
>>> binascii.rledecode_hqx(a)
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
>>> print(a)
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
>>> binascii.rlecode_hqx(a)
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
>>> binascii.b2a_hqx(a)
b'!!%#!`3&"JF)#3S,$!d1$`'
277デフォルトの名無しさん:2012/01/05(木) 21:45:36.35
[5,2,1,0,5]のようなリストがあるとき、最大値の要素番号を取得するにはどうしたらいいでしょうか?
上のリストのように最大値を持つものが2つ以上ある場合は0,4のどちらでもokです。
できるだけ高速に取得したいです
278デフォルトの名無しさん:2012/01/05(木) 22:23:05.09
maxとindex使えばいいだけですね。すれ汚し失礼しました
279デフォルトの名無しさん:2012/01/05(木) 23:45:26.14
dive into python 3の日本語版サイトが英語になってる。
HTMLのリンクも切れてる。読んでた途中の俺涙目。
280デフォルトの名無しさん:2012/01/06(金) 00:04:56.74
Mark Pilgrim半失踪の煽りを喰らったか
281デフォルトの名無しさん:2012/01/06(金) 00:16:38.61
>>279 レポジトリなかったかな・・とぐぐってみた。中身確かめてないけど
hg clone https://code.google.com/p/diveintopython3-ja/
282デフォルトの名無しさん:2012/01/06(金) 00:30:36.50
>>281の生存確認
clone後にbuild_ja.pyを実行しないといけないけれどlocal環境で読めてます。

資料系のsiteはscrapbookの使用をお勧めします。
それかnetに繋げれなくても、local環境で参照できるように設定しておくとか。

>>280
Mark Pilgrim失踪の話を初めて聞いたのですが顛末を教えて頂けないでしょうか?
283デフォルトの名無しさん:2012/01/06(金) 14:53:08.91
>>282
ローカルの設定にとまどいましたが日本語版の生成ができました!
ありがとうございます。
重要なものはローカルにとっておくように習慣つけようと思います。
284デフォルトの名無しさん:2012/01/07(土) 12:40:42.61
Python(Windows版)インストールに関してご存知の方がいれば教えてください.
バージョンは2.5でも3.2でも変わらないのですが,msiを実行した直後にWindowsInstallerのエラーが出て以上終了します.
もしかしたらOSが未対応なのかもしれなくて,WindowsXPのMedia Center Edition SP3です.
このOSではPython環境を導入できないのでしょうか?
285デフォルトの名無しさん:2012/01/07(土) 13:14:09.79
msiが壊れてるとか(MD5を確認)、64bit版だったりとか、ウィルス対策ソフトが邪魔してるとか
286デフォルトの名無しさん:2012/01/07(土) 13:47:51.31
>>284
エラー内容を書け
287デフォルトの名無しさん:2012/01/07(土) 21:04:38.43
>>286
python-3.2.2.msi
"Install for all users"を選択した後にエラー.

特に提示できそうな内容がないんだけど,WindowsInstallerのエラー署名に関して.
AppName: msiexec.exe
ModName: msihnd.dll

PythonがMedia Center Editionに対応してないと明記されているページが見つからないので,
もしあれば教えてください.諦めが付きます.
288デフォルトの名無しさん:2012/01/07(土) 21:09:40.73
for all users ってことは管理者権限でインスコしないといけないんじゃない?
もし他の選択肢(for current userとか)があればそっちを試してみるとか
289デフォルトの名無しさん:2012/01/07(土) 21:19:26.94
>>288
レスthx
管理者権限だし,試せる選択肢は全て試し済ですね.
290デフォルトの名無しさん:2012/01/07(土) 21:23:57.21
WindowsInstallerのバージョンは?
291デフォルトの名無しさん:2012/01/07(土) 21:44:23.75
>>290
msiexecで確認した.
V4.5.6001.22159
292デフォルトの名無しさん:2012/01/07(土) 21:46:53.74
cygwinにもpython付いてるよ
293デフォルトの名無しさん:2012/01/07(土) 22:19:54.22
エラーの原因がわからないと何ともいえないので、まずは詳細ログ出力

msiexec /i python-3.2.2.msi /L*v python.log

Media Center Editionは知らないので他の方に任せた。

他に気になった点、
2.5って公式では今はソースのみ配布になってるはずだけど、
MSIということはactivepythonの方だったりする?
294デフォルトの名無しさん:2012/01/07(土) 22:26:19.81
2.5.4のmsiなら落とせるよ
http://www.python.org/download/releases/2.5.4/
295デフォルトの名無しさん:2012/01/07(土) 23:00:56.59
>>294
それはセキュリティfixの当たってない古いバージョン

activepythonだったら 2.5.6 の msi がある
http://www.activestate.com/activepython/downloads
296デフォルトの名無しさん:2012/01/07(土) 23:05:48.60
>>293
こんなログの吐き方があるんだ.
勉強になります.

ログは吐いたけど出力量が多いのと端末情報も多少入ってるので全upは厳しいかも.

何かgrepしたい文字列とかないですか?

ちなみにログの最後は以下で終わってる.
MSI (c) (A4:50) [23:00:15:979]: Note: 1: 2235 2: 3: ExtendedType 4: SELECT `Action`,`Type`,`Source`,`Target`, NULL, `ExtendedType` FROM `CustomAction` WHERE `Action` = 'SelectDirectoryDlg'
297デフォルトの名無しさん:2012/01/07(土) 23:43:41.36
grep -i error
298デフォルトの名無しさん:2012/01/08(日) 00:53:23.34
>>296

関連あるかどうか分からないけど、追加で確認事項 wscript.exeのバージョン確認

MSI内のカスタムアクションでwscriptが使われてるらしく、
WScriptのバージョンアップでインストールが成功した報告例あり。

ttp://mail.python.org/pipermail/python-bugs-list/2004-December/027038.html


MSIログは、"Return value 3" になってるとこを検索。エラーで失敗してるアクション)
299デフォルトの名無しさん:2012/01/08(日) 01:50:53.65
インストーラーをNASとかローカルHDD以外から実行するとエラーになるのあったりするけどその辺はどう?
300デフォルトの名無しさん:2012/01/08(日) 02:27:02.55
よろしくお願いします
txt = "abc123, aaaaa, abc3210"
txtのような文章があるときに、re.compile('abc(\d+)')のような正規表現でsearchをかけています。
この場合に、最初に一致したものだけでなく、txtに含まれる一致するもの全てを取り出したいのですが、どのように書けばいいのでしょうか?

301デフォルトの名無しさん:2012/01/08(日) 02:53:28.89
findall,finditerを使う
302デフォルトの名無しさん:2012/01/08(日) 13:49:37.47
>>298
WScript.Echo("WScript.Version:" & WScript.Version)
5.7
303デフォルトの名無しさん:2012/01/08(日) 18:02:27.96
他に誰か同じOSの人いればそれで試してもらった方が早いと思うけど。
304デフォルトの名無しさん:2012/01/09(月) 02:41:15.02
Dive Into Python 3の日本語訳直ってるね
305デフォルトの名無しさん:2012/01/09(月) 16:35:28.76
python-twitterでGetFollowers()を使うと
twitter.Api instance must be authenticatedのエラーが出るようになった。。。
Oauth関連が原因なんでしょうか…原因分かる人いたらよろしくお願いします。
306デフォルトの名無しさん:2012/01/09(月) 17:07:35.54
>>304
ほんとだ
金曜日にローカルで日本語版作ったけど結局待てば直ってたわけかw
307デフォルトの名無しさん:2012/01/10(火) 00:31:33.89
>>306
>>279で書いた時みたいに涙目にならないようにlocal環境構築しておく。
急げ、後悔先に立たずだ
308デフォルトの名無しさん:2012/01/11(水) 18:03:06.04
tkinterのテキストボックスを検索してタグを付けたいのすが、下記のコードだと正規表現を使うと、当たり前ですがキーワードの長さが取得出来ません。"(Y|y)ou"は当然7文字カウントしてしまいます。どうしたら検索結果ぴったりにタグが付けられるのか全く思いつきません。
from tkinter import *
def search_it(keyword_from,widget):
...if "C" not in widget.mark_names():
......widget.mark_set("C","1.0")
...try:widget.tag_delete("it")
...except:pass
...keyword=keyword_from.get()
...keyword_length=len(keyword)#正規表現を使うとlengthがおかしなことになる。
...ini=widget.search(keyword,"C",exact=False,regexp=True)
...end=ini+"+"+str(keyword_length)+"chars"
...widget.tag_add("it",ini,end)
...widget.tag_config("it",foreground="#FF0000",font="arial 18 bold")
...widget.mark_unset("C")
...widget.mark_set("C",end)
...widget.see(ini)
root=Tk()
ent=Entry(root)
ent.pack()
btn=Button(root,text="search",command=lambda:search_it(ent,tex))
btn.pack()
tex=Text(root)
tex.pack()
root.mainloop()

import 2ch
try:2ch.tell_me_a_hint(search_it)#お願いします。
except:pass
309デフォルトの名無しさん:2012/01/11(水) 18:12:47.46
>>308
モジュール名の先頭に数字は使えない
http://www.python.jp/doc/release/reference/lexical_analysis.html#identifiers
310デフォルトの名無しさん:2012/01/11(水) 18:35:11.93
>>308
Tkinter.Text.searchで得られるのは文字が見つかった開始位置のみだよね?

マッチした文字に対して長さを調べるか、終了位置を別に調べるようにする。
多分、re.search使った方が簡単。

他の方法。他の正規表現の内容次第だけど、大文字小文字の区別のみなら
Tkinter.Text.search の nocase=True オプションで正規表現使わずに済ませられる。
311308:2012/01/11(水) 20:13:08.36
>>309
素早い添削有難うございます。すっかり忘れていました。
>>310
教えて頂いたオプションで済みそうですが、reを使ってトライしてみます。
有難うございます。
312310:2012/01/11(水) 20:35:39.55
>>311
countオプションでマッチした長さを得られるみたい
だけど、値の受け取り方が・・・Tcl/Tk知らないとちょっと解りにくいね

cnt = tkinter.IntVar()
ini = widget.search(keyword,"C",exact=False,regexp=True,count=cnt)
keyword_length = cnt.get()

NOTE: re.searchだとPythonの正規表現、regexp=TrueではTclの正規表現が使われる。
pythonからはre.searchの方が柔軟に使えそうだけど、pyhon<=>tk間での文字コード絡みの問題はどうなってるのか知らない。
313308:2012/01/11(水) 21:14:03.01
>>312
わー‼できたー!
重ねて御礼申し上げます。
コードの意味は確かによく分かりません。
314デフォルトの名無しさん:2012/01/13(金) 13:25:54.59
なんでこんなことになってるの?

>>> False <= 2
True
>>> False <= -2
False
>>> int(False)
0
>>> int(True)
1
>>> 1 == True
True
>>> 0 == True
False
>>> True + 1
2
>>> 1 + True
2
>>> n = 1
>>> n += True
>>> n
2
>>> m = True
>>> m += True
>>> m
2
>>> x = True
>>> x
True
>>> x += 0
>>> x
1
315デフォルトの名無しさん:2012/01/13(金) 13:28:26.00
>>> True and True
True
>>> True and 1
1
>>> True * True
1
>>> True / True
1.0
>>> True ** True
1
>>> 1.0 == True
True
>>> 1.01 == True
False

正直、迷惑なんですけど
特に最後の
>>> 1.0 == True
True
のくせに
>>> 1.01 == True
False
とか

    ∧___∧    / / / /
  ⊂( ・∀・)  、,Jし //  パン
   (几と ノ   )  て.
  //'|ヽソ 彡  Y⌒Y `Д´) ←Guido
/ノ / | \ 彡
ヽ/、/ヽ/ ヽ/   
316デフォルトの名無しさん:2012/01/13(金) 14:49:21.83
いや、別に。
317デフォルトの名無しさん:2012/01/13(金) 15:12:15.41
なにが迷惑なのかまったくわからん
318デフォルトの名無しさん:2012/01/13(金) 15:18:19.22
何がおかしいのか分からない
319デフォルトの名無しさん:2012/01/13(金) 15:36:57.71
boolはintのサブクラス
というか1.0とTrueを比較したいと思うことがあんまりない
320デフォルトの名無しさん:2012/01/13(金) 16:08:08.43
>>> bool(1.01)
True
>>> bool(1.0)
True
321デフォルトの名無しさん:2012/01/13(金) 16:34:29.39
こういうことか

>>> float(True)
1.0
322デフォルトの名無しさん:2012/01/13(金) 16:56:00.12
ワロタ
>>314-315 は CS を知らんのだな

>>> True and 3
3
>>> True & 3
1
>>> 3 and True
True
>>> 3 & True
1
>>> True and 2
2
>>> True & 2
0
>>> 2 and True
True
>>> 2 & True
0
323デフォルトの名無しさん:2012/01/13(金) 17:03:02.30
short-circuitのの話ではなくTrueとFalseを1と0と同じように扱ってるところを
疑問に感じてるんだろう
324デフォルトの名無しさん:2012/01/13(金) 17:05:34.63
というか&&じゃやなくて&か…CSって何の略?
325デフォルトの名無しさん:2012/01/13(金) 17:10:31.84
customer satisfaction
326デフォルトの名無しさん:2012/01/13(金) 17:10:50.82
>CSって何の略

と言ってるようではお里が知れるというもの
327デフォルトの名無しさん:2012/01/13(金) 17:14:12.82
>>326
くだすれでそんなドヤ顔されても困っちゃいますYO
とっとと何の略か答えてどうぞ
328デフォルトの名無しさん:2012/01/13(金) 17:49:51.64
> CS =ChinShu
>  DIを観測すると頻繁に観測される特異状態。β波を大量に発する。
>  近年、β波は低下してきている。
http://kumagaya.tumblr.com/post/197982477/di-dame-insei-dii-dame-insei-index

あー、あのころが懐かしいよ
329デフォルトの名無しさん:2012/01/13(金) 17:52:05.94
certified secretary
330デフォルトの名無しさん:2012/01/13(金) 18:37:09.34
主に互換性の為(シーケンスのインデックスにブール値が使われたりもする)
ブール値の算術演算は許容されてるけど、ブール値の直接比較はやらないようにとスタイルガイドで言及してるよ。

bool型がどうしてそうなってるか、詳しく知りたければPEP読んで
ttp://www.python.org/dev/peps/pep-0285/
331デフォルトの名無しさん:2012/01/13(金) 19:14:30.26
python2.7.2 windows xp です。

状況
キーに英単語・数字・数値 が使われている辞書をキー順でソートしたい。
数値は、int・float・long いずれも使用されている。

ソート条件
1: 英字は、大文字・小文字を区別しない。
sorted(dic.items(), key=lambda x: str(x[0]).lower())
2: 数字は、数値と区別しない(数値として扱い小→大)。
3: ソート自体は文字コード順で行う(3系でも動くよう比較値の型を統一)。

質問1
1と2と3が両立する、sortedに渡すためのkey関数が浮かびません。
レシピをお願いします。
質問2
数値・数字を下記の様な文字列に変換するstr.format()の書き方を教えてください。
小数点前と小数点後の可能な最大桁数も知りたいです(元が数値なので制限があるかと)。
Python 2.7ja1 documentationの書式指定ミニ言語仕様を読みましたが、
具体的な書き方が解かりませんでした・・・。
2:の解決に数値・数字とも最大桁数に揃えて文字列扱いすれば…と思った次第です。

0.12 0000.120
1 0001.000
1.2 0001.200
1.234 0001.234
11 0011.000
12.34 0012.340

質問もうまく書けていないと思いますが、よろしくお願いします。
332331:2012/01/13(金) 19:20:58.80
すいません。最後の例が解かりずらいので。下記です。

format前
0.12
1
1.2
1.234
11
12.34

format後
0000.120
0001.000
0001.200
0001.234
0011.000
0012.340
333デフォルトの名無しさん:2012/01/13(金) 20:07:37.19
'%08.3f'
334デフォルトの名無しさん:2012/01/13(金) 20:44:33.03
>>331
これでほしいものになってるかちょっと分からんけど……
keyfunc()は以下のようなタプルを返す関数
1.23 -> ('', 1.23)
'Python2.72' -> ('python\0', 2.72)
'1 + 1 = 2' -> ('\0 + \0 = \0', 1.0, 1.0, 2.0)

import re
pattern = re.compile('\d+(?:.\d+)?')
def keyfunc(x):
    if not isinstance(x, basestring): return ('', x)
    xs = []
    def matched(m):
        xs.append(float(m.group()))
        return '\0'
    s = pattern.sub(matched, x)
    return tuple([s.lower()] + xs)
335デフォルトの名無しさん:2012/01/13(金) 20:58:55.60
ああこれじゃダメだな、ごめんごめん
336デフォルトの名無しさん:2012/01/14(土) 01:01:17.66
>>331 質問1

以下、手抜きコードだけど、たたき台くらいにはなるかな?
考え方の基本は334と同じ、複数の条件でソートする場合はタプルを返す関数を渡すとすっきりする。

# for key,val in sorted(dic.items(), key=keyfunc):

def keyfunc(keyval):
  key,_ = keyval
  try:
    n = float(key)
    s = ""
  except (TypeError, ValueError):
    n = float("NaN")
    s = key.lower()
  return (s, n)

参考:
辞書順ソートで数字は数値として比較する(例 バージョン番号つきファイル名のソート)
http://codepad.org/eEXhZoJv
337336:2012/01/14(土) 06:57:24.77
"inf" や "nan" って文字列も数値扱いになるので、
float(key) の例外のみでの判断はまずいかもしれない。

型が混在する場合、3.xでのbytes型の扱いに注意。3.xではそれぞれ別のキーになる。
print({"foo": 1, b"foo": 2})
338デフォルトの名無しさん:2012/01/14(土) 14:04:16.98
まじか
これはひどい
339331:2012/01/14(土) 15:58:15.31
>>333-337
ありがとうございます。動きました。
>>335-335
>"inf" や "nan" って文字列も数値扱いになるので〜。
3行(INF、NAN、 try中のif文)追加してみました。
目的は達しますが何だか…今はこれしか浮かびません。
def keyfunc(keyval):
INF = float("inf")
NAN = float("nan")
key,_ = keyval
try:
n = float(key)
if (n == INF) or (n != n):raise TypeError
s = ""
except (TypeError, ValueError):
n = float("NaN")
s = key.lower()
return (s, n)
すいません追加質問です。return (s, n) をreturn (n, s) にしてみたところ、
下記の様に?な結果がでました。理由が判る方、解説をお願いできないでしょうか。
1
1.234
ABC
1.2(str)
KING
JUN
0.12(str)
340331:2012/01/14(土) 16:01:24.81
>>335-335 → >>336-337 です。
全角を使ったのですが、インデントが全然効いていません…。
341デフォルトの名無しさん:2012/01/14(土) 16:17:05.01
馬鹿には無理
342デフォルトの名無しさん:2012/01/14(土) 16:19:31.30
>>341
自己紹介乙
343デフォルトの名無しさん:2012/01/14(土) 19:41:42.99
>>340
&nbsp;
344デフォルトの名無しさん:2012/01/14(土) 20:03:36.08
tracerouteを行なった結果をテキストファイルに出力したものをから、後ろの3つの数字だけを
別のテキストファイルに出力したいのですがどのように書けばよいかわかりません。
テキストは以下のような形になっています。よろしくお願いします。
traceroute to ja.wikipedia.org (208.80.152.2), 30 hops max, 60 byte packets
1 ntt.setup (192.168.1.1) 0.121 ms 0.134 ms 0.159 ms
2 118.23.8.17 (118.23.8.17) 6.037 ms 6.577 ms 7.064 ms
3 118.23.5.137 (118.23.5.137) 4.971 ms 5.388 ms 5.368 ms
4 122.1.164.213 (122.1.164.213) 7.556 ms 9.341 ms 11.167 ms
5 60.37.55.165 (60.37.55.165) 6.195 ms 6.151 ms 6.154 ms
6 60.37.27.89 (60.37.27.89) 6.470 ms 5.355 ms 5.761 ms
7 ae-5.r21.tokyjp01.jp.bb.gin.ntt.net (129.250.11.53) 5.790 ms 7.090 ms 6.670 ms
8 as-2.r21.snjsca04.us.bb.gin.ntt.net (129.250.4.44) 114.218 ms 113.157 ms 113.279 ms
9 equinixexchange.ir1.sanjose-ca.us.xo.net (206.223.116.85) 122.223 ms 122.167 ms 122.115 ms
10 vb2001.rar3.la-ca.us.xo.net (207.88.13.110) 125.873 ms 132.449 ms 125.843 ms
11 vb15.rar3.dallas-tx.us.xo.net (207.88.12.45) 149.345 ms 149.826 ms 149.540 ms
12 207.88.14.42.ptr.us.xo.net (207.88.14.42) 182.000 ms 182.215 ms 181.906 ms
13 w006.z207088246.xo.cnc.net (207.88.246.6) 187.915 ms 187.107 ms 187.082 ms
14 rr.pmtpa.wikimedia.org (208.80.152.2) 186.903 ms 186.520 ms 186.758 ms
345デフォルトの名無しさん:2012/01/14(土) 20:14:19.14
エポックからのミリ秒文字列をdatetimeに変更したいのですがどうしたらよいでしょうか。
346デフォルトの名無しさん:2012/01/14(土) 21:07:59.69
>>339

ソート結果がおかしくなる原因:float("nan")
NANは不定値なのでこういう振る舞いをする。当然ソート結果はおかしくなる。

NAN >= 0 # False
NAN <= 0 # False
NAN == NAN # False
NAN is NAN # True

文字列の時は数値が比較されることはないはずなので
float型ならなんでもいいと思ってて、不用意にnanいれてしまったのが原因かな。

タプルを返す時は、なるべく要素数と型を揃えた方が都合が良いんだけど、
気にならなければ、文字列の場合は1要素のタプルを返すでもok

一応、文字の時・数値の時で 要素数と型を揃えたタプル(n, s) を返す場合だと、
例えば、文字列の時に返す数値(n)を float("-inf") や float("inf") とすると、
文字優先・数値優先のソートが可能になります。
347デフォルトの名無しさん:2012/01/14(土) 21:16:08.78
>>344
import re, fileinput
findall_ms = re.compile(r"(\d+\.\d+) ms").findall
for line in fileinput.input():
  print(" ".join(findall_ms(line)))

# python findall_ms.py < a.dat > b.dat

348331:2012/01/14(土) 23:22:57.11
>>346 重ね重ねありがとうございます。

>NANは不定値なのでこういう振る舞いをする。当然ソート結果はおかしくなる。
n!=n(NaN!=NaN)という条件を書いているのだから気付くべきでした。

文字列のinf、NaNは下記で回避
INF = float("inf")
NAN = float("nan")←不要に気付いたので削除します。
if (n == INF) or (n == -INF) or (n!=n): raise TypeError
文字列の時に返す数値
float("inf")
で、先に進める事にします。この後もキーがタプルの場合の処理。要素が日本語の時は
文字コードではなくその文字を表示。ネストしていたらどうするか等、問題山積みです。
デバック用自家製pprintの道は険しいです。
またお世話になる事は確実です。今後もよろしくお願いします。
349デフォルトの名無しさん:2012/01/14(土) 23:28:34.42
>>347
ありがとうございます。
350デフォルトの名無しさん:2012/01/15(日) 04:49:14.94
>>345
datetime.fromtimestamp
351デフォルトの名無しさん:2012/01/15(日) 08:38:28.51
floatで変換するのがダメならast.literal_eval使う手もある
352デフォルトの名無しさん:2012/01/15(日) 16:20:52.01
VPythonって何?
353デフォルトの名無しさん:2012/01/15(日) 19:19:12.34
UNIX系OSのシェルで実行するPythonスクリプトを作成しているのですが、
パイプを使った標準入力の受け取り方について良い方法を探しています

echo "hoge" | ./test.py
で、"hoge"を取得して処理をしたいという状況です

sys.stdinを使用して取得まではできたつもりなのですが、
単純に ./test.py といったパイプ無しでの実行のときに一定時間後落ちます
パイプでの標準入力が無い場合は別の処理をしたいのですが、良い方法がありますでしょうか

よろしくお願いします
354デフォルトの名無しさん:2012/01/15(日) 19:32:38.64
すみません、できたっぽいですorz

勘違いしてるといけないので一応、書いておきますと
sys.stdin.isatty()
を確認しました
355デフォルトの名無しさん:2012/01/16(月) 02:28:29.56
>>351
他の単語で不都合が出そう Trueとか

>>348
ソートに使う関数(1度のソートで複数回呼ばれる)ってことで、出来るだけシンプルにしようと思ったんだけど
他の型にも対応する&デバッグ専用であればパフォーマンスより拡張性優先にした方がいいかな。

try/except による判別では、対応する型が増えるとネストが深くなりそうなので
明示的に、型による分岐にした方が良さそうです。率直に記述するなら if isinstance の列挙。
ttp://codepad.org/E0PEyX7Q

>自家製pprint
簡単な実装方法としては、pprint.PrettyPrenter や repr(reprlib).Repr のサブクラスを作って拡張する方法があるよ。
356デフォルトの名無しさん:2012/01/16(月) 18:10:16.42
突然だけど、このページの文字コードの解説が分かりやすかった
http://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
357デフォルトの名無しさん:2012/01/17(火) 10:16:41.48
http://pc11.2ch.net/test/read.cgi/tech/1217836194/339

339 :デフォルトの名無しさん:2008/08/23(土) 08:36:00
    PythonのUnicodeEncodeErrorを知る
    http://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html

    よくまとまってた。あとで読む
358331(348):2012/01/17(火) 21:13:41.51
>>355
コードサンプルありがとうございます。参考にさせて頂きます。
359デフォルトの名無しさん:2012/01/17(火) 23:43:18.40
setdefaultencoding 禁止
360デフォルトの名無しさん:2012/01/18(水) 21:46:40.56
elementtreeに読み込まれたxmlの任意のelementを取得し、
そのelementの親となっているelementを返すコードを書きたいのですが検討が付きません。
サンプル等教えて頂けないでしょうか?
361デフォルトの名無しさん:2012/01/18(水) 23:19:16.66
ElementTreeの要素は親要素への参照を持たないので
ひと手間かける必要がある
http://effbot.org/zone/element.htm#accessing-parents

でもlxmlなら直接書ける
http://lxml.de/tutorial.html#the-element-class
>>> root is root[0].getparent() # lxml.etree only!
True
362360:2012/01/18(水) 23:47:03.94
>361
ご回答有難うございます。
ElementTree以外のxmlライブラリ利用も考えてみましたが、
なるべく標準ライブラリで済ませたいため今回はlxmlは見送ろうと思います。
363デフォルトの名無しさん:2012/01/21(土) 00:24:47.15
list = [apple1,apple3,apple4,apple2,banana2,banana1,banana5,banana3,banana4]

こんな感じで末尾に数字つきの文字列のリストがあったとして
これをapple1,apple2,apple3,apple4,banana1,banana2....という風に
リスト内の順番を数字順に並び替えるにはどうするのが1番早く出来ますでしょうか?
364デフォルトの名無しさん:2012/01/21(土) 00:27:57.70
L = ['apple1','apple3','apple4','apple2','banana2','banana1','banana5','banana3','banana4']
L.sort()
365デフォルトの名無しさん:2012/01/21(土) 00:54:39.63
>>364
なんと1瞬・・・pyてょnすげーです
ありがとうございます・・・
366デフォルトの名無しさん:2012/01/22(日) 01:36:40.63
while 文の中で、かなり時間のかかる処理を行うのですが、キーボードから入力で、breakさせ
たいと考えています。どんなやり方があるでしょうか。
367デフォルトの名無しさん:2012/01/22(日) 01:45:09.69
Ctrl+C
368デフォルトの名無しさん:2012/01/22(日) 04:09:42.80
369デフォルトの名無しさん:2012/01/27(金) 17:58:23.24
PYTHONとC++との組み込みと使い方に詳しいページってありますかね?
370デフォルトの名無しさん:2012/01/27(金) 18:05:31.70
特定のシステム上のpythonが使えるメモリの上限値を調べる事って出来ますか?
具体的にはandroid端末のsl4a上で使えるpythonのメモリの上限値を調べたいです
371デフォルトの名無しさん:2012/01/30(月) 22:29:53.24
住所の文字列を渡して、google mapがブラウザに表示されるスクリプトを探しているのですが
どっかに無いでしょうか?
372デフォルトの名無しさん:2012/01/30(月) 23:19:47.06
>>371
import webbrowser, urllib
webbrowser.open('http://maps.google.co.jp/maps?q=' + urllib.quote(u'東京都千代田区永田町1丁目7番1号'.encode('utf-8')))
373デフォルトの名無しさん:2012/01/31(火) 23:48:02.65
http://www.nslabs.jp/monkey-python-02.rhtml#s3

このサイトを見て次のようにプログラムを組んだのですが、うまくいきません。

# -*- coding:utf-8 -*-
import Tkinter

def on_clicked():
print "ボタンが押された!"

window = Tkinter.Tk()
button = Tkinter.Button(window, text = "押してください。", command = on_clicked)
button.pack()
window.mainloop()

本当だったら、端末からスクリプトを実行したら、ウィンドウが出て、ボタンを押すと”ボタンが押された!”と表示されるはずなのですが…
374デフォルトの名無しさん:2012/01/31(火) 23:53:05.34
失礼。どうなるか書くのを忘れてました。
実行したら何も出ずに終了してしまいます。
あまりにもくだらない質問かもしれませんが、ご教授おねがいします。
375デフォルトの名無しさん:2012/01/31(火) 23:59:43.70
>>373
端末って本当に端末?アイコンをダブルクリックで実行とかしてない?
とりあえずOSとPythonのバージョンを
376デフォルトの名無しさん:2012/02/01(水) 00:05:07.20
>>375
あぁ…。ほんと色々書くの忘れてますね…。申し訳ない。

Ubuntu Linux 11.10
Python 2.7

です。

端末から実行してます。
対話モードで四則演算とか
簡単なスクリプト

print "hoge"

とかならできるので、端末の使い方を誤っているわけではないと思います。
377デフォルトの名無しさん:2012/02/01(水) 00:22:10.65
ああ、そういうことか。インデントするのはprint文だけでいいよ
>>373だとon_clicked関数を定義するだけで呼びださないスクリプトになってる

def on_clicked():
    print "ボタンが押された!"

window = Tkinter.Tk()
button = Tkinter.Button(window, text = "押してください。", command = on_clicked)
[...]
378デフォルトの名無しさん:2012/02/01(水) 00:42:14.08
>>377
できました!
ありがとうございます。

今回の失敗は、

def on_clicked():
print "ボタンが押された!"

で関数を定義して、その続きもインデントしたままだと、その内容もon_clicked関数の中身として処理されてしまう。
という解釈でいいでしょうか。
379デフォルトの名無しさん:2012/02/01(水) 00:55:18.69
>>378
です。
> 字下げするのを止めたところがその関数の終わりになります。
380デフォルトの名無しさん:2012/02/01(水) 01:01:07.43
>>379
ありがとうございます。
少しかじった程度のC言語のノリで字下げしまくってたら、Pythonでそれは命取りでした。
字下げを使うというのがPythonの大きな特徴だと言うのに…。

助かりました。ありがとうございます。
381デフォルトの名無しさん:2012/02/01(水) 01:42:02.28
>>380
できたならいいけど。
C言語のノリで字下げって、Cでも普通はそんな字下げはしないよ……

Cでは`}'を入力したらエディタが勝手に字下げを1段戻してくれたけど、
Pythonでは`}'を入力するかわりに字下げを戻すんだ。
382デフォルトの名無しさん:2012/02/01(水) 16:44:39.87
Pythonの書きやすさは、エディタの能力によって大きく左右される。
383デフォルトの名無しさん:2012/02/01(水) 17:02:38.15
>>373の行頭からの連続した半角空白がインデントされて見えてる人いる?
いたら環境教えてほしい
384デフォルトの名無しさん:2012/02/01(水) 17:22:13.92
v2cだと半角spcすら見えない
2ch mateで1個分
385デフォルトの名無しさん:2012/02/01(水) 17:34:17.52
>>383
dat を直接見ればよかろう。
Jane Style なら >>373 にカーソルを合わせれば見えるし。
386デフォルトの名無しさん:2012/02/01(水) 18:18:10.45
>>384
> 2ch mateで1個分
ああやっぱりそういうブラウザあるのか。どうもありがとう

興味ある人向け
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/struct/text.html#h-9.1
387デフォルトの名無しさん:2012/02/02(木) 04:19:08.62
インデントなら navi2ch 最強。
388デフォルトの名無しさん:2012/02/02(木) 18:15:56.95
Dive into Python を読んでいますが、
>>> by = b'd'
をそのままコピペすると
>>> >>> by = b'd'
File "<stdin>", line 1
>>> by = b'd'
^
SyntaxError: invalid syntax
というエラーが出てしまいます
by = b'd'
だけコピペするのが面倒なのですが何か良い方法はありませんか?
>>> sys.ps2
'... '
>>> sys.ps1
'>>> '
というので設定すればいけるのかな?と思いましたがよく分かりませんでした。
389デフォルトの名無しさん:2012/02/02(木) 18:32:01.75
390デフォルトの名無しさん:2012/02/02(木) 18:33:04.82
そのくらいコピペじゃなくて自分で入力しよう
391デフォルトの名無しさん:2012/02/02(木) 18:33:33.83
>>389
PCが物故割れた
392デフォルトの名無しさん:2012/02/02(木) 21:55:31.54
Tkinter の raise と lower の使い方がよくわかりません。
下のTcl/Tkスクリプトと同じ動作をTkinterで実現するにはどうしたら良いでしょうか?

#!/bin/sh
# the next line restarts using wish \
exec wish "$0" "$@"

set flag 0
canvas .c0 -bg "white"
canvas .c1 -bg "green"
pack .c0
pack .c1 -in .c0

bind . <1> {if {$flag == 0} {lower .c1; set flag 1} else {lower .c0; set flag 0}}
393デフォルトの名無しさん:2012/02/03(金) 19:34:33.48
1/6000 * 1/3000 * ... ぐらいの桁の掛け算を何度も繰り返すのですが
桁落ち、アンダーフローなどが心配で、対数か何かを使ってどうにか出来ないでしょうか?
ふざけた質問だと思いますがよろしくお願いします。
394デフォルトの名無しさん:2012/02/03(金) 19:42:45.79
有理数として表現できるなら、
fractions
一択

詳しくは、
http://diveintopython3-ja.rdy.jp/native-datatypes.html#fractions
ネイティブデータ型 - Dive Into Python 3 日本語版

有理数の事で悩んでいたんなら、>>393は少なくとも
http://diveintopython3-ja.rdy.jp/table-of-contents.html#native-datatypes
に一通り目を通さなければならない。

時間に余裕があるなら、こっちも
http://diveintopython3-ja.rdy.jp/index.html
395デフォルトの名無しさん:2012/02/03(金) 19:48:41.45
>>394
fractions見てみましたが使えそうです。
早い回答ありがとうございました。

また一度Dive Into Python3も熟読してみます。

396デフォルトの名無しさん:2012/02/03(金) 19:50:16.64
>>394を修正

有理数として表現できるなら、fractions 一択
2.7でも3.0でも使えるよ。

有理数の事で悩んでいたんなら、>>393は少なくとも
http://diveintopython3-ja.rdy.jp/table-of-contents.html#native-datatypes
に一通り目を通さなければならない。

他の便利な型について詳しくは、
http://diveintopython3-ja.rdy.jp/native-datatypes.html#fractions
ネイティブデータ型 - Dive Into Python 3 日本語版

時間に余裕があるなら、こっちも
http://diveintopython3-ja.rdy.jp/index.html
397396:2012/02/03(金) 19:55:53.94
>>395
実は私も最初から読んでいる所なんだ。
で、昨日ちょうど読んだ後だったから、こんなに速い回答が出来たんだ。

ああ、もうっ!

有理数として表現できるなら、fractions 一択
2.7でも3.0でも使えるよ。

有理数の事で悩んでいたんなら、>>393は少なくとも
http://diveintopython3-ja.rdy.jp/native-datatypes.html#fractions
に一通り目を通さなければならない。

他の便利な型について詳しくは、
http://diveintopython3-ja.rdy.jp/table-of-contents.html#native-datatypes
ネイティブデータ型 - Dive Into Python 3 日本語版

時間に余裕があるなら、こっちも
http://diveintopython3-ja.rdy.jp/index.html
398デフォルトの名無しさん:2012/02/03(金) 20:07:13.56
どんだけーw
399デフォルトの名無しさん:2012/02/03(金) 21:02:30.45
>>395
これも読もう

ユニットテスト - Dive Into Python 3 日本語版:
http://diveintopython3-ja.rdy.jp/unit-testing.html
400デフォルトの名無しさん:2012/02/03(金) 21:22:29.16
関数の定義の仕方によってはそうでない使い方も出来ますが、
デコレータは一般的にはクロージャみたいなものになるという解釈でいいでしょうか。

関数Aを関数Bで包んだ場合は、関数B内で定義した関数Cを返すようなので。
401デフォルトの名無しさん:2012/02/05(日) 13:33:00.30
以下のように、先頭に整数文字列の値を使って

25, 大阪府
2, 青森県
1, 北海道
47, 沖縄県

以下のようにソートしたいと考えています。

1, 北海道
2, 青森県
25, 大阪府
47, 沖縄県

python でスマートにソートするにはどんな方法が考えられますかね。
402デフォルトの名無しさん:2012/02/05(日) 13:51:03.67
>>> L = ["25, 大阪府", "2, 青森県", "1, 北海道", "47, 沖縄県"]
>>> L.sort(key=lambda e: int(e.split(',')[0].strip()))
>>> print '\n'.join(L)
1, 北海道
2, 青森県
25, 大阪府
47, 沖縄県
403デフォルトの名無しさん:2012/02/05(日) 15:57:36.13
pythonの勉強をしようと思い
http://coreblog.org/ats/minpy-web-is-now-free-to-read
ここのみんなのPythonってのを呼んでサンプルを実行してるんですが

46ページの

ドキュメントルートのcgiserver.py↓
import SimpleHTTPServer
SimpleHTTPServer.test()

を実行して

cgi-bin/test.py↓
#!/usr/bin/env python
print "Content-type: text/html\n"
print "<html><body>Python is awesome !</body></html>"

にブラウザでアクセス(http://127.0.0.1:8000/cgi-bin/test.py)しても
test.pyの中身が表示されるだけ(つまりファイルは見えている)でpythonとして動いてくれないです。

cygwinでやってるのですが、それが駄目とかってありますか?
OS:Windows7 pythonのバージョン2.6です。

cgiserver.pyを実行しているログには↓のようなものが出ます
$ python server.py
Serving HTTP on 0.0.0.0 port 8000 ...
********** - - [05/Feb/2012 15:52:51] "GET /cgi-bin/test.py HTTP/1.1" 200 -
********** - - [05/Feb/2012 15:52:51] code 404, message File not found
********** - - [05/Feb/2012 15:52:51] "GET /favicon.ico HTTP/1.1" 404 -

何か原因が分かりましたらお願いします
404デフォルトの名無しさん:2012/02/05(日) 16:09:00.45
>>403
どこのページかくらい書けよ
SimpleHTTPServerじゃなくてCGIHTTPServer
405403:2012/02/05(日) 16:15:21.51
>>404
動きました。ありがとうございます。
前のページのプログラムと同じと思い込んでいました。


一応ページは書いておいたつもりでしたが↓
http://coreblog.org/ats/minpy-web-is-now-free-to-read
ここのみんなのPythonってのを呼んでサンプルを実行してるんですが

46ページの
406デフォルトの名無しさん:2012/02/05(日) 16:39:17.45
ローカル環境(ampps)でDjangoのお勉強したいんですがインストールの仕方がわかりません、誰かAMPPS使ってる方いませんか?
407デフォルトの名無しさん:2012/02/05(日) 16:51:40.89
>>401
L = ['25, 大阪府', '2, 青森県', '1, 北海道', '47, 沖縄県']
L.sort()
408デフォルトの名無しさん:2012/02/05(日) 17:29:19.42
>>401
import sys
print '\n'.join([','.join(r) for r in sorted([s.split(',') for s in sys.stdin.read().splitlines()], key=lambda x: int(x[0]))])
409デフォルトの名無しさん:2012/02/05(日) 17:45:20.26
repr(), str()って何が違うんでしょうか?
str()だけあればいいと思いますが。
410デフォルトの名無しさん:2012/02/05(日) 18:15:08.39
>>409
http://www.python.jp/doc/release/tutorial/inputoutput.html#tut-formatting

str() 関数は、値を表現するときに人間にとって読みやすい形式の文字列を返します。
一方、 repr() は、インタプリタが読めるような (あるいは、等価な値を表現するための
構文がない場合には SyntaxError を送出させる) 表現にするためのものです。
人間が利用するための特別な表現をもたないオブジェクトでは、 str() は repr() と
同じ値を返します。数値や、リストや辞書などの構造体のような多くの値は、どちらの
関数でも同じ表現になります。文字列と浮動小数点は特別で、二つの別個の表現と
なります。
411デフォルトの名無しさん:2012/02/05(日) 18:57:56.35
>>409
かなりぶっちゃけた言い方をすると
str()がユーザー向け、repr()がプログラマ向け
の文字列を得るために使う
412デフォルトの名無しさん:2012/02/05(日) 18:59:02.60
理念的にはevalしたときに元通りになるのがrepr
413デフォルトの名無しさん:2012/02/05(日) 19:41:49.36
>>412
おお、カッコいい
414デフォルトの名無しさん:2012/02/05(日) 20:06:14.21
rep = repr(obj)
ev = eval(rep)
obj == ev

さあ、結果や如何に!
415デフォルトの名無しさん:2012/02/05(日) 20:08:19.37
>>> obj = 'abc'
>>> rep = repr(obj)
>>> ev = eval(rep)
>>> obj == ev
True
>>> id(obj)
3075397632
>>> id(ev)
3075397632
416デフォルトの名無しさん:2012/02/05(日) 20:15:41.41
>>> import datetime
>>> obj = datetime.datetime.now()
>>> rep = repr(obj)
>>> ev = eval(rep)
>>> obj == ev
True
417デフォルトの名無しさん:2012/02/05(日) 20:22:26.30
repr(float('inf')) がおかしいって誰が言ってた
418392:2012/02/06(月) 06:54:34.43
どなたか分かる方はいらっしゃらないでしょうか?
419デフォルトの名無しさん:2012/02/06(月) 07:21:08.82
c0 = tk.Canvas(...)
c0.lower()
420デフォルトの名無しさん:2012/02/06(月) 11:01:51.32
>>417
言ったのは多分以前の自分。
nanもダメ。
421デフォルトの名無しさん:2012/02/06(月) 11:33:24.13
理念的って書いてあるじゃない
422デフォルトの名無しさん:2012/02/06(月) 13:56:47.83
'float("inf")'を返せばいいんじゃね
423デフォルトの名無しさん:2012/02/06(月) 14:17:54.28
そりゃ観念的だね
424デフォルトの名無しさん:2012/02/06(月) 14:58:32.30
>>419
下のようにしたのですがダメでした。
何が悪いのでしょうか?

from Tkinter import *
root = Tk()
c0 = Canvas(root, bg = 'white')
c1 = Canvas(root, bg = 'green')
c0.pack()
c1.pack(in_ = c0)
c1.lower()
root.mainloop()
425デフォルトの名無しさん:2012/02/06(月) 15:39:43.14
お昼ごはんに理念のわかめスープ飲んだ

>>424
from Tk import *
Misc.lower(c1)

Tkinter.pyのソースコードにそれっぽいことが書いてあるから
参照したらいいかも
426デフォルトの名無しさん:2012/02/06(月) 15:40:29.24
あ、まちがえた。from Tkinter import *
427デフォルトの名無しさん:2012/02/06(月) 18:15:59.48
>>425
お陰様で無事動きました。
ありがとうございました!

Tcl/Tkの経験があればTkinterも何となくわかるかと思っていたのですが、
かえって違いに戸惑ってしまってます。
そのうち慣れるでしょうけど、それまでは苦労しそうです。
428デフォルトの名無しさん:2012/02/06(月) 22:32:31.34
海外のアルゴリズムを教える題材にPythonを使うのが多いらしいのですがそういうサイトはあるのでしょうか
C言語のアルゴリズムの本読んでるんすけど難しいです
429デフォルトの名無しさん:2012/02/06(月) 22:48:52.35
430デフォルトの名無しさん:2012/02/06(月) 23:33:39.52
>>429
さっそくありがとうございます。
地道にやっていこうと思います。
431デフォルトの名無しさん:2012/02/07(火) 07:24:23.27
MacでPythonをやるにはどういった開発環境が良いでしょうか?
Ankiというソフトウェアをビルドしようとしています
432デフォルトの名無しさん:2012/02/07(火) 07:52:26.26
Mac ならシステムに最初から Python がはいってるから、そのままで OK だけ
ど、特定のバージョンが必要とかの場合は MacPorts から入れるのが簡単。
PyQt4 とか Beautiful Soup とかが必要のようだけど、MacPorts だとそれもま
とめてインストールできる。

433デフォルトの名無しさん:2012/02/07(火) 19:37:57.86
>>432
有難うございます
難しいですが少しずつ理解して行きたいです
434デフォルトの名無しさん:2012/02/07(火) 23:54:45.89
外部サイトのRSSから自動でスクレイピングして画像やテキストの一部を自分のサイトの指定の場所に表示したいんですが、どういう手順でやればよろしいのでしょうか

ちなみについさっきローカルでDjangoインスコしたばかりのド素人です(^q^)
はじめてのLL言語れす(*^o^*)
教えておにーちゃん!
435デフォルトの名無しさん:2012/02/08(水) 00:12:10.51
そーいうの不愉快だから止めた方がいいよ
436デフォルトの名無しさん:2012/02/08(水) 00:36:14.79
>>434
同じようなの作ってるけどbeautifulsoupとmechanizeでやってみてるよ
437デフォルトの名無しさん:2012/02/08(水) 00:42:32.20
>>435
すいませんでした。反省します。

>>436
そしてありがとうございますおにーちゃん
438デフォルトの名無しさん:2012/02/08(水) 20:50:57.39
>>> [[10]]
[[10]]
>>> ((10))
10
なにこの違い
困るんですけどw
439デフォルトの名無しさん:2012/02/08(水) 20:52:47.49
釣り針でかすぎるけど、困る例を一つでも挙げれたら100万円やる
440デフォルトの名無しさん:2012/02/08(水) 20:56:39.37
リストのリストから最大値&最小値を見つける関数があってですな
439のタプルのケースを食わせるとあきまへんねん
441デフォルトの名無しさん:2012/02/08(水) 20:59:13.44
>>> ((10,),)
((10,),)
442デフォルトの名無しさん:2012/02/08(水) 20:59:56.96
((10,),)
443デフォルトの名無しさん:2012/02/08(水) 21:03:53.06
444デフォルトの名無しさん:2012/02/08(水) 21:05:31.30
だよな、最初438がタプルを使おうとしてるとは思わなくて何がしたいのか理解不能だった
445デフォルトの名無しさん:2012/02/09(木) 01:17:52.17
((10,),)
446デフォルトの名無しさん:2012/02/09(木) 15:50:27.48
((((;゚Д゚))))
447デフォルトの名無しさん:2012/02/09(木) 16:58:22.47
数字が1桁から2ケタへと移行する場合のsortがうまくいきません。
どうしたら直りますか

#1〜2ケタの数字の場合
list=["apple2","apple10","apple11","apple1","apple4","apple5","apple6","apple3","apple15","apple7","apple8","apple12","apple13","apple9","apple14"]
list.sort()
print list

>result
>['apple1', 'apple10', 'apple11', 'apple12', 'apple13', 'apple14', 'apple15', 'apple2', 'apple3', 'apple4', 'apple5', 'apple6', 'apple7', 'apple8', 'apple9']

#1桁の数字のみの場合
list=["apple2","apple1","apple4","apple5","apple6","apple3","apple7","apple8","apple9"]
list.sort()
print list

>result
>['apple1', 'apple2', 'apple3', 'apple4', 'apple5', 'apple6', 'apple7', 'apple8', 'apple9']

#数字を全て2ケタにした場合
list=["apple02","apple10","apple11","apple01","apple04","apple05","apple06","apple03","apple15","apple07","apple08","apple12","apple13","apple09","apple14"]
list.sort()
print list

>result
>['apple01', 'apple02', 'apple03', 'apple04', 'apple05', 'apple06', 'apple07', 'apple08', 'apple09', 'apple10', 'apple11', 'apple12', 'apple13', 'apple14', 'apple15']

448デフォルトの名無しさん:2012/02/09(木) 17:03:07.72
>>447
「python 自然順ソート」でググれ
449デフォルトの名無しさん:2012/02/09(木) 17:07:27.02
>>447
L.sort(key=lambda x: int(x[5:]))

x[5:]が手抜きっぽくて嫌なら

import re
L.sort(key=int(re.match(r'apple(\d+)', x).groups(1)))

"apple01"を作るときに"apple%02d" % numとかでゼロパディングするのもいい
450449:2012/02/09(木) 17:11:24.29
あれなんか二番目がおかしい。ごめん
L.sort(key=lambda x: int(re.match(r'apple(\d+)', x).groups(1)))
451デフォルトの名無しさん:2012/02/09(木) 19:16:07.76
apple限定かい!

PHP の natsort って、おもしろいけど本当に役に立つのかねえ。
1.05 と 1.5 はバージョン番号なら同一視してほしいけど、
ふつうの小数では別に扱ってほしいし。


452デフォルトの名無しさん:2012/02/09(木) 20:51:57.58
>>448
ググってみます。
>>451
apple限定じゃないほうが良いです。。
453デフォルトの名無しさん:2012/02/09(木) 23:19:07.74
>>452
import re
L.sort(key=int(re.match(r'[^\d]*(\d+)', x).groups(1)))
454デフォルトの名無しさん:2012/02/09(木) 23:31:12.60
re.search(r'\d+\Z', ...)
455デフォルトの名無しさん:2012/02/10(金) 01:13:25.90
>>454
iPhoneでみるとなんかモザイクみたいだ
456デフォルトの名無しさん:2012/02/11(土) 12:14:21.84
test={
'a':{'j':'1'},
'b':{'i':'2'},
'c':{'k':'3'},
}
を数字の箇所の値で降順にソートしたいのです。
つまり
c k 3
b i 2
a j 1
と表示されるようにしたいのですが、
どのようにすればいいのでしょうか?
457デフォルトの名無しさん:2012/02/11(土) 13:03:48.26
>>456
sorted(test.items(), key=lambda item: item[1].items()[0][1], reverse=True)
458デフォルトの名無しさん:2012/02/11(土) 13:16:58.83
>>457
はやっ!
   。 。
  / / ポーン!
( Д )
辞書の辞書(辞書の入れ子)のsortってこうするんですね。
うまくいきました。ホントに助かりましたm(_ _)m
459デフォルトの名無しさん:2012/02/12(日) 00:35:41.47
python3だと、items()はリストじゃなくてビューオブジェクトを返すから、items()[0]ができないけどね。
460デフォルトの名無しさん:2012/02/13(月) 02:10:48.93
IDLEは起動しないわ
TkinterはDLLロードエラー出るわ
糞だな
461デフォルトの名無しさん:2012/02/13(月) 02:41:49.89
462デフォルトの名無しさん:2012/02/13(月) 03:21:26.47
えすぱぁ
463デフォルトの名無しさん:2012/02/13(月) 16:26:12.19
Python3.2.2でvirtualenvで環境を作ろうとするとエラーになります。
Python3.2.2をインストールした後、distributeをインストール、easy_installでpipをインストール
pipでvirtualenvをインストールして、エラーらしいエラーは出ないで終わりましたが、
virtualenvで環境を作ろうとするとエラーになります。
環境はwin7で、virtualenvを引数無しで実行するとヘルプメッセージが表示されるので、インストールは成功しているみたいです。
どなたか解決策をご存じの方はいらっしゃいませんでしょうか?

E:\Data\Python>python -m virtualenv main
New python executable in main\Scripts\python.exe
Fatal Python error: Py_Initialize: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
ERROR: The executable main\Scripts\python.exe is not functioning
ERROR: It thinks sys.prefix is 'e:\\data\\python' (should be 'e:\\data\\python\\
main')
ERROR: virtualenv is not compatible with this system or executable
Note: some Windows users have reported this error when they installed Python for
"Only this user". The problem may be resolvable if you install Python "For all
users". (See https://bugs.launchpad.net/virtualenv/+bug/352844)
464デフォルトの名無しさん:2012/02/13(月) 16:30:40.83
よくこのエラーが出るけど、
「このユーザーだけ」
って選択した時なんだよね。

あなたが「全てのユーザ」を選択するとこの問題は解決するかもしれない。
465デフォルトの名無しさん:2012/02/13(月) 16:32:25.35
>>464に追加

インストール時の話です。
こっちもみてね。
https://bugs.launchpad.net/virtualenv/+bug/352844
466デフォルトの名無しさん:2012/02/13(月) 21:22:59.58
専用エディタ導入したけど使い難いな
でも関数の説明が出るのは嬉しい
467デフォルトの名無しさん:2012/02/13(月) 23:27:25.06
>>466 何使ってますの?
468デフォルトの名無しさん:2012/02/14(火) 00:51:14.93
カーソルを動かしたいのですが
c言語のgotoxyに対応するような命令ってありますか?
469デフォルトの名無しさん:2012/02/14(火) 01:44:46.17
>>468
curses
470デフォルトの名無しさん:2012/02/14(火) 16:14:51.89
>>469
調べて見たけど結構複雑だな
ubuntuで動作することを祈ろう
471デフォルトの名無しさん:2012/02/14(火) 21:20:51.09
>>467
PyScripter
変数名にnとか割り当ててn = 1とかやろうとするとn<SPACE>の時に変換されてて気付いたらよく分からない文字になってたりする
今までIDE使ったことなかったから大変
472デフォルトの名無しさん:2012/02/14(火) 23:30:20.19
x打つつもりが、いきなりxrangeになったりするのは、IDEオプションの
Code CompletionのComplete as you typeのチェック外したら出なくなったよ。
俺も使い始めたばかりで、それが正しい対処かわからんけど。
473デフォルトの名無しさん:2012/02/14(火) 23:40:45.75
これでいい野田
474デフォルトの名無しさん:2012/02/15(水) 00:39:53.16
反対の産生ー
475デフォルトの名無しさん:2012/02/15(水) 15:08:11.51
L = [1, 2]
T = (1, 2)

L == T
>>> False

となるのですが、一度どちらかをlist, tupleに変換しないといけないんでしょうか?
それとも良い方法があったりしますか?
476デフォルトの名無しさん:2012/02/15(水) 16:34:42.66
L === T
477デフォルトの名無しさん:2012/02/15(水) 16:38:28.33
478デフォルトの名無しさん:2012/02/15(水) 16:50:43.13
>>> reduce(lambda x, y: x and (y[0] == y[1]), zip([1,2,3], (1,2,3)), True)
True
>>> reduce(lambda x, y: x and (y[0] == y[1]), zip([1,2,3], (1,9,3)), True)
False

順序気にしないなら
>>> L = [1, 2]
>>> T = (2, 1)
>>> set(L) == set(T)
True
479デフォルトの名無しさん:2012/02/15(水) 16:54:15.43
>>476
死ね
>>> L = [1, 2]
>>> T = (1, 2)
>>> L == T
False
>>> L === T
File "<stdin>", line 1
L === T
^
SyntaxError: invalid syntax

>478
そこまでするくらいなら素直に、
tuple(L), list(T)やってろって話ですかね・・・
set()はちょっと検討してみます。
480デフォルトの名無しさん:2012/02/15(水) 18:20:22.41
ランバダってなんなの?
481デフォルトの名無しさん:2012/02/15(水) 19:08:23.40
ひょっとして無名関数のことかな
482デフォルトの名無しさん:2012/02/15(水) 19:20:09.50
λ...
483デフォルトの名無しさん:2012/02/15(水) 20:50:26.76
λ人λ人λ人λ人λ人入人λ人λ人λ人入人λ人λ人λ
484デフォルトの名無しさん:2012/02/15(水) 21:15:43.74
ランダバダバダバランダバダバダバ
485デフォルトの名無しさん:2012/02/15(水) 21:21:25.72
λ

って



と似てるな
486デフォルトの名無しさん:2012/02/15(水) 21:51:57.37
ええ
487デフォルトの名無しさん:2012/02/15(水) 22:10:53.74
ソートするとき、以下のように"key=lambda"ってのが良くでてきますが、
検索しても意味がわかりません。どなたかヒントをお願いできないでしょうか。

sorted(a, key=lambda x:x[1], reverse=True)
488デフォルトの名無しさん:2012/02/15(水) 22:15:59.43
本当によく出てくるの?
489デフォルトの名無しさん:2012/02/15(水) 22:19:04.28
>>487
公式のチュートリアルにちゃんと解説があるよ
http://www.python.jp/doc/nightly/tutorial/controlflow.html#tut-lambda
490デフォルトの名無しさん:2012/02/15(水) 22:20:24.17
491デフォルトの名無しさん:2012/02/15(水) 23:48:43.02
>>489、490

ありがとうございます。なんとなくわかってきました!

492デフォルトの名無しさん:2012/02/16(木) 00:06:26.59
Matplotlibを使ってみたくて、http://fonnesbeck.github.com/ScipySuperpack/から
インストールしました。
動くかどうかのtestとして、
>>> import matplotlib.pyplot as plt
を入力したところ
No module named dateutil.rrule
というエラーがでてきてしまいます。

解決方法がわかる方、教えてください。
493デフォルトの名無しさん:2012/02/16(木) 00:09:01.75
>>492
マルチ
494デフォルトの名無しさん:2012/02/16(木) 00:11:03.46
>>492
マルチって何ですか?
495デフォルトの名無しさん:2012/02/16(木) 00:12:13.60
496デフォルトの名無しさん:2012/02/16(木) 00:13:33.76
複数のスレで質問してるってこと
分からなければ
googleにマルチってなんですか?って聞いてみて
497デフォルトの名無しさん:2012/02/16(木) 00:19:42.05
申し訳ありません。
数週間このエラーから抜け出せずにいたので、
焦ってしまいました。
気を悪くした方、ごめんなさい。
498デフォルトの名無しさん:2012/02/16(木) 00:21:44.27
すすすすすすすすすすす数週間!
499デフォルトの名無しさん:2012/02/16(木) 00:36:55.74
>>498
そうなんです。プログラミングをはじめようと思い、PythonでMatplotlibを使って
グラフなど描いていろいろやろうと思ったのですが、全然うまく行かず…
Google先生に聞いて、いろいろ試したのですが、うまく行かず今日に至った次第です。
500デフォルトの名無しさん:2012/02/16(木) 04:33:51.52
必要なモジュールが足りないんだろ
入れて来い
501デフォルトの名無しさん:2012/02/16(木) 10:03:06.61
>>499
何だ、君マルチだったのか。

Mac使いだったらMacPortsであっさり
インスコできるはずだから、一旦
Superpack消して入れ直してみなよ。
502デフォルトの名無しさん:2012/02/17(金) 14:01:19.00
unicodeのテキストの文字列を
一行づつ画像化して出力したいのですが
文字列を画像化するにはどうしたらいいですか?

PIL画像を作ったり編集したりは出来るのですが
文字を入れる方法が分かりません
503デフォルトの名無しさん:2012/02/17(金) 14:21:34.23
ImageMagickを使うとか
504デフォルトの名無しさん:2012/02/17(金) 14:44:10.88
超初歩的な質問で申し訳ないのですが、
テキストの読み込みに関してどう書いていいのかわかりません。
テキストには名前、打数、安打数、本塁打数、と1行毎に書いてありそれが9人分続いているとします。
最終的にoutputは名前、打率、本塁打数と1人1行ずつprintします。

txtの読み込みとループに関して簡単にでいいので解説お願いします。
505デフォルトの名無しさん:2012/02/17(金) 14:50:06.34
>>503
なんか
以下のサイト見つけたけどPILのバージョンが宜しく無いみたいなんで
インスコし直してきます
ttp://www.geocities.jp/showa_yojyo/note/python-pil.html#id13
506デフォルトの名無しさん:2012/02/17(金) 15:11:50.08
Python3.2

with open('tech504.txt') as f:
for line in f.readlines():
line = line.rstrip()
sp = line.split('、')
out = sp[:2] + sp[3:]
print('、'.join(out))

tech504.txt
名前1、打数1、安打数1、本塁打数1
名前2、打数2、安打数2、本塁打数2
名前3、打数3、安打数3、本塁打数3
名前4、打数4、安打数4、本塁打数4
名前5、打数5、安打数5、本塁打数5
名前6、打数6、安打数6、本塁打数6
名前7、打数7、安打数7、本塁打数7
名前8、打数8、安打数8、本塁打数8
名前9、打数9、安打数9、本塁打数9
507デフォルトの名無しさん:2012/02/17(金) 15:14:26.17
>>506
以下の行は
for line in f.readlines():

以下の行に修正
for line in f:
508502:2012/02/17(金) 16:29:13.54
すいません、どうも
t.txtのunicodeの日本語の文字列が文字化けしてしまいます
どうしたら文字化けせずに画像に出来るのでしょうか?
import Image
import ImageDraw
import ImageFont

# 大きめのキャンヴァスを用意しておく。
img = Image.new('RGB', (600, 400), 'white')
dr = ImageDraw.Draw(img)
# HG 明朝体を使ってみる。
fnt = ImageFont.truetype('hgrme.ttc', 24, encoding='utf-8')

# 長めのテキストを用意する。
f = file("t.txt","r")
text = f.read()

f.close()

width = 0
height = 0

for line in text.splitlines():
ext = dr.textsize(line, fnt)
dr.text((100, height+(400/2)), line, font=fnt, fill='red')
width = max(ext[0], width)
height += ext[1]

# 余白をトリムする。
#img = img.crop((0, 0, width, height))
img.save("test.png")
509デフォルトの名無しさん:2012/02/17(金) 16:41:29.00
text = f.read().encode('utf-8')
510デフォルトの名無しさん:2012/02/17(金) 16:41:29.23
hgrme.ttcは存在するのか?
511デフォルトの名無しさん:2012/02/17(金) 16:43:37.54
普通にunicodeでやったらうまくいったが
512デフォルトの名無しさん:2012/02/17(金) 16:50:51.46
>>509
encodeじゃなくてdecodeだろ

>>510
存在しないとIOErrorになる
513502:2012/02/17(金) 16:57:45.39
>>509
駄目でしたOTL
Message File Name Line Position
Traceback
<module> C:\Users\***\desktop\1.py 27
exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

>>510
確認しましたがありました

>>511
テキストファイルがおかしいのでしょうか?
Upします。
パスはpです
出力画像
http://www.dotup.org/uploda/www.dotup.org2650080.png.html
http://www.dotup.org/uploda/www.dotup.org2650085.txt.html
514502:2012/02/17(金) 17:01:03.50
>>512
decodeにしてみたけど駄目でした
Message File Name Line Position
Traceback
<module> C:\Users\***\desktop\1.py 27
decode C:\Python26\Lib\encodings\utf_8.py 16
exceptions.UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: invalid start byte
515デフォルトの名無しさん:2012/02/17(金) 17:02:15.39
'utf-16'
516デフォルトの名無しさん:2012/02/17(金) 17:05:48.23
f.read().decode('utf-16')
517502:2012/02/17(金) 17:06:27.46
>>515
うおおおおお
できましたあああ!!!
有難うございます!!!
518デフォルトの名無しさん:2012/02/17(金) 17:14:31.91
ユニコード色々有り過ぎでヤだお
519504:2012/02/17(金) 17:26:40.15
>>506
素早い回答ありがとうございました。
ですが求めている物とは少し違いました。

fileが以下のように各行に1つずつのときに
"名前 打率: .nnn 本塁打: aa"と表示されるようにしたいのです。

tech504.txt
長野
578
164
17
マートン
579
180
13
宮本
474
143
2

説明が悪く大変申し訳ありません。
520デフォルトの名無しさん:2012/02/17(金) 17:38:24.07
'\n'.join(out)
521デフォルトの名無しさん:2012/02/17(金) 18:10:46.33
この本読んだひといますか?
感想聞かせてください

WSGIウェブプログラミング
ttp://www.amazon.co.jp/dp/4877832882/

書評悪すぎてわろす
522デフォルトの名無しさん:2012/02/17(金) 18:15:51.52
じょ、情報を小出しにするなとあれほど。。。
単に興味で聞くだけなんだけど、これなんのために必要だったの?

n = 4
with open('tech504.txt.1') as f:
out = []
for i, line in enumerate(f):
line = line.rstrip()
if i % n == 2:
continue
out.append(line)
if i % n == n - 1:
print("名前: {}, 打率: .{} 本塁打: {}".
format(out[0], out[1], out[2]))
out = []
523デフォルトの名無しさん:2012/02/17(金) 18:22:06.70
せめて回答する側はインデントしようよ
524デフォルトの名無しさん:2012/02/17(金) 18:39:44.52
datではインデントされてるよ
525デフォルトの名無しさん:2012/02/17(金) 18:48:18.29
>>522
申し訳ありません。
目的は課題です。求める打者数も項目もずっと多いですが。
526デフォルトの名無しさん:2012/02/17(金) 19:23:38.99
for 名前, 打数, 安打数, 本塁打数 in zip(*[iter(open('tech504.txt'))]*4):
 print(名前, 打数/安打数, 本塁打数)
527デフォルトの名無しさん:2012/02/17(金) 19:39:02.38
どっちもひどい
528デフォルトの名無しさん:2012/02/18(土) 05:52:36.14
酔った勢いでかいてみた
# -*- coding: utf-8 -*-

file = "tech504.txt"
person = []
pgroup = []
cnt = 0
# こんなくそデータを処理する仕様はks
# 出題者よデータの変更を求む!
with open(file) as f:
for line in f:
line = line.rstrip()
if cnt <= 3:
person.append(line)
cnt +=1
else:
pgroup.append(person[:])
del person[:]
person.append(line)
cnt = 1
pgroup.append(person[:])

for line in pgroup:
print line[0], " 打率:", float(int(line[1]) / int(line[2])), "本塁打:", line[3]

529デフォルトの名無しさん:2012/02/18(土) 06:09:44.37
# coding: utf-8
rec = [] # 名前、打数、安打数、本塁打数
f = open('2ch.txt')
while 1:
    line = f.readline().rstrip()
    if not line: break
    rec.append(line)
    if len(rec) == 4:
        name = rec[0].decode('utf-8')
        ba = round(float(rec[2]) / float(rec[1]), 3)
        ba = str(ba)[2:5]
        hr = int(rec[3])
        print u"名前: %s 打率: .%s 本塁打数: %s" % (name, ba, hr)
        rec = []
f.close()
530デフォルトの名無しさん:2012/02/18(土) 19:03:46.86
文字列の2次元リストを、x[1]を昇順に、x[2]も昇順なら以下のソースでうまくいくのですが、
x[2]のみ降順ソートする方法がわかりません。

x:(x[1],-x[2])のように-をつけるエラーが出ます。
どうすれば良いでしょうか。

#!/usr/bin/python
# coding: UTF-8

l = [['D', '100', '3000'],
['B', '100', '2000'],
['A', '500', '4000'],
['C', '200', '5000'],
['C', '200', '3000'],
['C', '200', '2000'],
['E', '400', '1000']]

for e in sorted(l, key=lambda x:(x[1],x[2])):
print e[0], e[1], e[2]
531デフォルトの名無しさん:2012/02/18(土) 19:19:56.27
-int(x[2])
532デフォルトの名無しさん:2012/02/18(土) 19:20:59.63
むやみやたらにキャストすると遅くなるけどね
533デフォルトの名無しさん:2012/02/18(土) 20:03:07.97
>>531
ありがとうございました。うまくいきまいした。

もうひとつだけ質問させてほしいのですが、
以下のようなリストがあって、1番目の要素を固定して、2番目の要素だけでソートする
ことは出来るでしょうか。

(元のとおりにきりん、ぞう、ぱんだの順番で並べたい)

ソート前
['きりん', '300', '3000'],
['きりん', '100', '2000'],
['きりん', '500', '4000'],
['ぞう', '400', '5000'],
['ぞう', '200', '3000'],
['ぱんだ', '400', '1000']
['ぱんだ', '200', '2000'],

ソート後
['きりん', '100', '2000'],
['きりん', '300', '3000'],
['きりん', '500', '4000'],
['ぞう', '200', '3000'],
['ぞう', '400', '5000'],
['ぱんだ', '200', '2000'],
['ぱんだ', '400', '1000']
534デフォルトの名無しさん:2012/02/18(土) 22:03:04.52
なんか松本引越センターを思い出したw
535デフォルトの名無しさん:2012/02/18(土) 22:24:54.63
a0 = [x[0] for x in a]
a.sort(key=lambda x: x[1])
for x0, x in zip(a0, a):
 x[0] = x0
自分の頭をひねらない人はプログラムやめたほうがいいよ。
536デフォルトの名無しさん:2012/02/18(土) 22:27:56.12
安定ソートの出番ですな
537デフォルトの名無しさん:2012/02/18(土) 22:29:24.87
>>535
これは無知からくる悪い見本
538デフォルトの名無しさん:2012/02/18(土) 22:33:06.05
>>533
というか、なんでそんなデータ構造にした?
539デフォルトの名無しさん:2012/02/18(土) 22:57:46.97
以下の2次元リストで都道府県に対してindexメソッドを使うことはできますか?
その場合どうすればよいでしょうか。

[1,'東京',0]
[2,大阪,0]
[3,神奈川,0]

540デフォルトの名無しさん:2012/02/18(土) 23:03:20.24
>>539
たまには自分の頭で考えてみればいいんじゃないかな?
541デフォルトの名無しさん:2012/02/18(土) 23:06:11.72
賛成の反対の反対
542デフォルトの名無しさん:2012/02/18(土) 23:19:22.88
>>535
すいません、マジでこれ俺には理解不能です。
もうちょっとやさしく教えてもらえると助かります。
まず1行目からつまずきました。

543デフォルトの名無しさん:2012/02/18(土) 23:27:09.27
numpyのarray型で特定の要素だけ加算したりすることは出来ますか?
a = array([[1,2],[3,4]])
a = a[1,1] + 3

[[1,2],[3,7]
みたいにしたいのですが,これを行うには行列の大きさを同じにしないと無理でしょうか?
544デフォルトの名無しさん:2012/02/18(土) 23:30:19.97
最低でも一冊は、Pythonの入門書読め。
金無いなら、

http://diveintopython3-ja.rdy.jp/index.html
これ一通り読め。

次からは diveintopythonも>>1に入れてよ。
>>950お願い。
545デフォルトの名無しさん:2012/02/18(土) 23:31:20.79
>>544>>542宛て
546デフォルトの名無しさん:2012/02/18(土) 23:32:45.85
a[1][1] += 3
547デフォルトの名無しさん:2012/02/18(土) 23:40:45.58
>>544
入門書はどれがいいの?
548950:2012/02/19(日) 00:57:01.58
>>544
了解
549デフォルトの名無しさん:2012/02/19(日) 02:49:46.64
マトリックスみたいなコンソールにバババっとコードみたいなのが流れる奴って何分で作れますか?
from sys import stdout
from random import shuffle
chrs = 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 @ . < > $ # % _ , '
for i in range(1000):
    ls = [c for c in chrs]
    shuffle(ls)
    for c in ls: stdout.write(c)
551デフォルトの名無しさん:2012/02/19(日) 06:02:48.43
>>550を盛大にパクってrandomやstringのヘルプ見つつ10分ほど
Windowsではこれしないと動かないかも
http://support.microsoft.com/kb/101875/ja

import sys
from random import randint
from string import ascii_letters, digits, punctuation
chars = ascii_letters + digits + punctuation
chars = chars + ' ' * len(chars)
size = len(chars)
try:
    sys.stdout.write('\033[1;32m') # green
    while 1: sys.stdout.write(chars[randint(0, size - 1)])
finally:
    print '\033[0m' # reset
552デフォルトの名無しさん:2012/02/19(日) 06:16:53.64
>>534
ぱんだは同業他社だなw
553デフォルトの名無しさん:2012/02/19(日) 06:19:40.32
きりんにも同業他社があるしww
554デフォルトの名無しさん:2012/02/19(日) 07:13:28.42
>>551を盛大にパクってWin32APIのヘルプ見つつ10分ほど
cmd.exeで動くバージョン

import sys
from random import randint
from string import ascii_letters, digits, punctuation
from ctypes import *

class CONSOLE_SCREEN_BUFFER_INFO(Structure):
  _fields_ = [('w', c_short), ('h', c_short), ('x', c_short), ('y', c_short),
  ('a', c_int), ('l', c_short), ('t', c_short), ('r', c_short), ('b', c_short),
  ('maxw', c_short), ('maxh', c_short)]
b = CONSOLE_SCREEN_BUFFER_INFO()
h = windll.kernel32.GetStdHandle(-11)
c = windll.kernel32.GetConsoleScreenBufferInfo(h, byref(b))
windll.kernel32.SetConsoleTextAttribute(h, 10) # green
chars = ascii_letters + digits + punctuation
chars += ' ' * len(chars)
size = len(chars)
while True: sys.stdout.write(chars[randint(0, size - 1)])
windll.kernel32.SetConsoleTextAttribute(h, b.a) # reset
555デフォルトの名無しさん:2012/02/19(日) 07:20:01.76
ああ最後の二行こっちで
  try:
    while True: sys.stdout.write(chrs[random.randint(0, sz - 1)])
  finally:
    windll.kernel32.SetConsoleTextAttribute(h, b.a)
556デフォルトの名無しさん:2012/02/19(日) 09:26:10.77
できました
回答して頂いた方ありがとうございました
557デフォルトの名無しさん:2012/02/19(日) 10:13:36.10
死ね,俺死ね
下らないことで詰まってた
俺死ね
558デフォルトの名無しさん:2012/02/19(日) 11:24:27.01
では私は生きよう
559デフォルトの名無しさん:2012/02/19(日) 11:50:29.86
ではプロセスは子を含めて殺しておこう
560デフォルトの名無しさん:2012/02/20(月) 23:43:41.44
浮動小数の比較で

a=1.0
b=1.0
if a <= b :

みたいにするのは、やめたほうがいいですか?
a=1.0 とすると実際は a=1.00000000001 みたいになってて <= の評価が
うまくいかない可能性を危惧しています。とりあえず今のところ問題なさそうなんですが。
Fortranやってたときは、よくこんなふうにやってました。

eps=1e-30
a=1.0-eps
b=1.0
if( a <= b) then
561デフォルトの名無しさん:2012/02/21(火) 00:19:40.00
>>> 1/10.
0.10000000000000001
>>> 1/10. == 0.1
True
>>> 1/10. > 0.1
False
562デフォルトの名無しさん:2012/02/21(火) 00:36:56.87
>>> 0.1
0.10000000000000001
>>> 0.2
0.20000000000000001
>>> 0.3
0.29999999999999999
563デフォルトの名無しさん:2012/02/21(火) 00:40:51.45
>>560
Pythonでも後者のようにしたほうがいいと思う
比較する値の差をとって、それが十分小さいか調べる

decimalモジュールやNumPyが使えるのかもしれないけどよく知らない
564560:2012/02/21(火) 00:46:19.34
>>561
確かにそうなりますね。
結局、気にしないでOKということでいいですか?
565デフォルトの名無しさん:2012/02/21(火) 00:51:11.32
気にしないのはダメ
566デフォルトの名無しさん:2012/02/21(火) 01:18:42.28
比較対象を有効桁で丸めて比較すれば?
567デフォルトの名無しさん:2012/02/21(火) 01:25:35.45
>>560
Python3.2では、i, jはdouble型として扱われていて、
以下のような比較をしていたので、
比較に関する問題で、Cで起き得る問題はPythonでも起き得ると考えていいと思う。

float_richcompare()
{
Compare:
PyFPE_START_PROTECT("richcompare", return NULL)
switch (op) {
case Py_EQ:
r = i == j;
break;
case Py_NE:
r = i != j;
break;
case Py_LE:
r = i <= j;
break;
case Py_GE:
r = i >= j;
break;
case Py_LT:
r = i < j;
break;
case Py_GT:
r = i > j;
break;
}
PyFPE_END_PROTECT(r)
return PyBool_FromLong(r);
}
568560:2012/02/21(火) 01:36:48.21
ありがとうございます。
やっぱり気にすることにします。
569デフォルトの名無しさん:2012/02/21(火) 02:01:12.54
実行速度より、誤差が怖いのならdecimal使った方がいいとおも。
とりあえず、1万桁ぐらいの値でも正確に判別できているみたいだから、
decimal使えば?

d1 = Decimal('0.111')
>>> d1._int, d1._exp
('111', -3)

>>> d00 = decimal.Decimal('0.' + '0' * 10000)
>>> d01 = decimal.Decimal('0.' + '0' * 9999 + '1')
>>> d00 < d01
True
>>> d00 > d01
False
>>> d00 == d01
False

>>> d88 = decimal.Decimal('0.' + '8' * 10000)
>>> d89 = decimal.Decimal('0.' + '8' * 9999 + '9')
>>> d89 - d88
Decimal('1E-10000')
>>> d89 > d88
True
>>> d89 == d88
False
>>> d89 < d88
False
570デフォルトの名無しさん:2012/02/21(火) 02:20:23.44
なんか、引き算すると28桁までしか精度保証してくれないみたい

>>> d1 = decimal.Decimal('1')
>>> d9 = decimal.Decimal('9')
>>> d1.as_tuple()
DecimalTuple(sign=0, digits=(1,), exponent=0)
>>> d19 = d1 / d9
>>> d19
Decimal('0.1111111111111111111111111111')
>>> d19.as_tuple()
DecimalTuple(sign=0, digits=(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), exponent=-28)

なので、こんな風にしてprecを設定しましょうって書いてあったよ。

>>> from decimal import *
>>> getcontext().prec = 6
>>> Decimal(1) / Decimal(7)
Decimal('0.142857')
>>> getcontext().prec = 28
>>> Decimal(1) / Decimal(7)
Decimal('0.1428571428571428571428571429')
571デフォルトの名無しさん:2012/02/21(火) 02:56:45.20
>>566
正解
572デフォルトの名無しさん:2012/02/21(火) 03:40:43.66
a=1.0
b=1.0
if round(a,1) <= round(b,1) :
573デフォルトの名無しさん:2012/02/21(火) 04:16:43.30
>>> f = 0.0
>>> for i in xrange(100):
... f += 0.001
...
>>> f
0.10000000000000007
>>> f = 0.0
>>> for i in xrange(10):
... f += 0.01
...
>>> f
0.099999999999999992


if a <= b :
これじゃだめだな
574デフォルトの名無しさん:2012/02/21(火) 04:20:39.34
>>560
Fortranならうまくいくのか?バグ増産してたんじゃね?

>>> f = 0.0
>>> for i in xrange(10):
... f += 0.01
...
>>> f
0.099999999999999992
>>> f - (1e-30)
0.099999999999999992
>>> f = 0.0
>>> for i in xrange(100):
... f += 0.001
...
>>> f
0.10000000000000007
>>> f - (1e-30)
0.10000000000000007
575デフォルトの名無しさん:2012/02/21(火) 07:44:05.77
eps=1e-30
とかじゃなく、その言語が提供している定数使おうぜ
Fortranはしらんけど、Pythonはこう、

>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024,
max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021,
min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16,
radix=2, rounds=1)
>>> sys.float_info.epsilon
2.220446049250313e-16
>>> a = 1.0 - sys.float_info.epsilon
>>> b = 1.0
>>> a <= b
True
>>> a == b
False
576デフォルトの名無しさん:2012/02/21(火) 11:39:34.94
比較の不等号を反転させて、その結果のnotをとればいいじゃない
577デフォルトの名無しさん:2012/02/21(火) 14:00:29.66
はあ?


    ,,,..-‐‐‐-..,,,
   /::::::::::::::::::::::::ヽ        _,..-‐‐-..,,,
  l::;;-‐‐-:;;::::::::::::ヽ//-‐,,__ /:::::::::::::::::::::ヽ
  l:l    ヽ:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ
  ヽ   /   :::::::::::::::::::::::::::::::::::::;-'^~~^'‐;;:l
   ~ヽ/      ::::::::::::::::::::::::::U::ヽミ   .ll
    / / ̄^ヽ   ::::::::::::::::::::::U:::ヽ  ,.ノ ∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧
    /  |  ・ .|     :/ ̄^ヽ:::::::l'^~ .<
  ‐/-,, ヽ,_,,ノ      |  ・  |:::::::l  <
   l  ~^''     `‐'   ヽ.,_,,ノ  :l  <   | ヽ                     / ̄ ̄\
  '''l^^~~~    / ̄ ̄ヽ    -‐‐‐--l-  <   |  ヽ   __                  |
   ヽ、 ,,,,  | |||!|||i||!| |   ~^'‐..,,_/  <  /    \   |ノ      ――――     /
    / (:::::} | | |ll ll !!.| |    ,,,, イ~'''  < /      \ 丿 アアァァ           |
    l:  ~~  | |!! ||ll| || |   {:::::) ::l    .<                            ●
   l:      | | !   | l    ~~  l   <
   l、     ヽ`ニニ'ノ       ,l>    V V V V V V V V V V V V V V V V VV V V V V
   /^‐-,,____,,,,,,,,..................,,,,,,,__,,,.--ヽ
   ~‐‐'~             ^'‐‐~
578デフォルトの名無しさん:2012/02/21(火) 15:19:08.35
>>> float(numpy.finfo(numpy.float32).tiny)
1.1754943508222875e-038
>>> float(numpy.finfo(numpy.float64).tiny)
2.2250738585072014e-308
>>> float(numpy.finfo(numpy.double).tiny)
2.2250738585072014e-308
579デフォルトの名無しさん:2012/02/22(水) 01:27:16.78
これで machine epsilon は求まりますか?

f = 1.0
while f != f / 2.0:
f /= 2.0
print f
580デフォルトの名無しさん:2012/02/22(水) 01:28:35.01
訂正
f = 1.0
while f != f / 2.0:
  f /= 2.0
  print f
581デフォルトの名無しさん:2012/02/22(水) 05:13:48.78
正規表現である文字を大文字にするとき、どう書けばいいんでしょうか
文字列'foobar'の'o'を'O'に変換

※perl
my $s = 'foobar';
$s =~ s/(o)/\u$1/g;
print $s; #=>'fOObar'

※python
s = 'foobar'
× s = re.sub(r'(o)', r'\u\1', s)
× s = re.sub(r'(o)', '\\1'.upper(), s)
582デフォルトの名無しさん:2012/02/22(水) 05:30:31.59
re.sub('o', lambda m: m.group().upper(), s)
583581:2012/02/22(水) 05:58:51.72
>>582
マッチオブジェクトを受け取る関数をsubの第2引数にできるんですね。
マニュアルを見るとsubの第2引数は文字列または関数となっていますが、実感してませんでした。
メタシンボルの\uは無理としても、式の戻り値が入らないのが不思議でならず、そこで止まってしまってたんですが
やっとクリアになりました。ありがとうございます!
584デフォルトの名無しさん:2012/02/22(水) 08:59:17.97
BeautifulSoup 4.0Betaを、Python3.1にインストールしようとして、tar.gzを展開した後
$sudo python3.1 setup.py install
を実行すると次のエラーで失敗します
-------------
(略)
running install_lib
byte-compiling /usr/local/lib/python3.1/dist-packages/bs4/doc/source/conf.py to conf.pyc
File "/usr/local/lib/python3.1/dist-packages/bs4/doc/source/conf.py", line 43
project = u'Beautiful Soup'
                ^
SyntaxError: invalid syntax
-------------
なにか対策はあるでしょうか?
pythonはDebian Squeeze標準のpython3.1です
585デフォルトの名無しさん:2012/02/22(水) 09:13:54.32
2to3
586デフォルトの名無しさん:2012/02/22(水) 09:38:35.52
>>585
tar.gzを展開した場所で
 $ find ./ -name *.py -exec 2to3 -w {} \;
のあと
 $ sudo python3.1 setup.py install
を実行したら問題なくインストールできました!

このツールをすぐ使おうとしてpythonを始めたもので……
ありがとうございました
587デフォルトの名無しさん:2012/02/22(水) 09:56:49.02
2.7も入れて使い分けたらいいんじゃねーの
588デフォルトの名無しさん:2012/02/23(木) 06:50:22.36
Udacityに参加してる人いる?
俺はプログラミング自体初心者に近いからCS101に挑戦中でふ。
589デフォルトの名無しさん:2012/02/23(木) 11:40:58.23
コマンド呼び出しと関数呼び出しの両方ができるスクリプトはできないのでしょうか?
test_disp.pyは引数を表示する機能があります。

import sys
def main(argv='default'):
import sys
if len(sys.argv) == 2:
argv = sys.argv[1]
print 'called by command ', argv
else:
print 'called by module ', argv

if __name__ == '__main__':
main()

これを下記のtest_caller.pyから呼び出して、
import test_disp
test_disp.main('./test_disp.py')

called by module test_disp.py
と表示させたいのですが、'argv' is not definedとなります。
どうすればいいのでしょうか?
590デフォルトの名無しさん:2012/02/23(木) 13:03:25.37
馬鹿には無理
591デフォルトの名無しさん:2012/02/23(木) 13:31:22.87
普通にデバッグしてね
592デフォルトの名無しさん:2012/02/23(木) 14:06:23.08
import sys
def main(argv='default'):
if __name__ == '__main__':
# '''
# if len(sys.argv) == 2:
# '''
argv = sys.argv
print('called by command', argv)
else:
print('called by module', argv)

# if __name__ == '__main__':
# print('__main__')
main()
593デフォルトの名無しさん:2012/02/23(木) 14:38:05.56
>>589
インデントがおかしい

def main():
    if len(sys.argv) > 1:
        print ...
    else:
        print ...

if __name__ == '__main__': main()

とかしなきゃだめ
594デフォルトの名無しさん:2012/02/23(木) 15:47:05.07
>>593,592
ありがとうございました。うまくいきました。
インデントエラーが出てないので、てっきり意図通りになっていると
勘違いしてました。
それにしてもここは、本当にまともな掲示板ですね。
私がよく訪れる仕事関係の板は、ソマリアみたいなところなんで、
びっくりしました。
この板とpythonと回答者に幸あれ。
595デフォルトの名無しさん:2012/02/23(木) 15:54:11.13
>>594
うっさい市ね!
596デフォルトの名無しさん:2012/02/23(木) 16:52:12.56
ここまで全部自演
597デフォルトの名無しさん:2012/02/23(木) 16:57:16.12
むかしはアンチスレが一番まともだったんだが
いまはここなのか
598デフォルトの名無しさん:2012/02/23(木) 17:26:49.11
なんか殺伐として来たな。
599デフォルトの名無しさん:2012/02/23(木) 20:27:11.59
対象をよく知ってるアンチほど怖いものはない
600デフォルトの名無しさん:2012/02/23(木) 21:27:42.66
ソマリアの比喩がなんなのか分からん
悪い意味で言ってるんだろうなーくらいは検討つくけど
601デフォルトの名無しさん:2012/02/23(木) 23:06:39.95
>>600
ソマリアつったら海賊問題だろ
海賊仕事関係の板
つまり594は海賊
602デフォルトの名無しさん:2012/02/23(木) 23:47:59.69
糞詰まらんし
603デフォルトの名無しさん:2012/02/23(木) 23:52:14.18
ストッパおすすめ
604デフォルトの名無しさん:2012/02/24(金) 16:14:26.19
糞が詰まった
605デフォルトの名無しさん:2012/02/25(土) 10:31:02.95
すみません。
質問させてください。

あるメソッドのテストを行っています。
そのメソッドは引数として整数を一個取り、その整数の範囲は1~100とします。
そのため、テストとして0や101を入れると例外が返ってくることを期待するテストを作ることを考えています。
しかし、そのときふと思ったのですが、引数の型が整数に限定されている場合、引数の型チェックも行うべきなのでしょうか?
今までJava、C#しか経験していないため、変数に型が無い言語でどのようにすべきなのか良くわかりません。

初心者丸出しの質問かもしれませんが、よろしくお願いいたします。

606デフォルトの名無しさん:2012/02/25(土) 10:36:27.55
>>605
isinstanceを使うんだが、テストについてはこのリンクが極めておすすめ
Python3だけど

第9章. ユニットテスト
http://diveintopython3-ja.rdy.jp/unit-testing.html
607デフォルトの名無しさん:2012/02/25(土) 13:08:47.13
その程度だったら、
assert isinstance(a, int) and 1 <= a <= 100
って一番最初に書いといて、以降はその仕様は忘失の彼方だな・・・
608デフォルトの名無しさん:2012/02/25(土) 13:17:07.38
>>606
情報ありがとうございます。
リンク先を読ませていただきましたが、一般的なTDDの説明かと思いました。
いまいち、変数に型がないことによるメリットがわかりませんでした。
その辺をわかりやすく解説してあるサイトなどありましたら、教えていただけると助かります。

よろしくお願いいたします。
609デフォルトの名無しさん:2012/02/25(土) 13:27:16.06
30
30
28カ所
約28カ所
約28箇所
不明

のような文字が1行づつに入力されたテキストファイルがあるのですが、
これから数字のみを抜き出したいと考えているのですが、どのようにすればよいでしょうか?
数字だけであれば全角文字をifで半角数値に置換すればいいかと思うのですが、
それ以外の文字を削除する方法が思いつきません。
610609:2012/02/25(土) 13:28:55.66
すみません 書き漏れがありました

40箇所か39カ所
のような2つ数字が現れる文字もあるかもしれません。
その場合は最初に出てきた数次だけ抜き出したいです
611デフォルトの名無しさん:2012/02/25(土) 14:04:53.49
正規表現を使って最初に出てきた数字だけをリストに放り込んでいくのはダメなん?
612デフォルトの名無しさん:2012/02/25(土) 18:05:45.24
import re

with open('tech509.txt') as f:
for l in f:
l = l.rstrip()
print('l =', l)
# num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)+', l)
# or
num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)', l)
if num_str:
print('num_str =', num_str.group())
print()

tech509.txt
aaaaa30お前のカーチャンでーべそw
あいうえお30お前のカーチャンでーべそw
かきくけこ28カ所お前のカーチャンでーべそw
mmmmmm約28カ所お前のカーチャンでーべそw
fed@@@@約28箇所お前のカーチャンでーべそw
mふぃfじゃいえいえいふぉえ不明お前のカーチャンでーべそw
ffieie40箇所か39カ所お前のカーチャンでーべそw
613デフォルトの名無しさん:2012/02/25(土) 18:06:37.24
609でしたーざんねーん
無念、無念の誤読〜
614デフォルトの名無しさん:2012/02/25(土) 18:14:07.22
ちゃんと仕様を確認していませんでした。
はいはい、どうもすいませんっした。

import re

with open('tech609.txt') as f:
for l in f:
l = l.rstrip()
print('l =', l)
# num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)+', l)
# or
num_str = re.findall(r'((約|か)?([0-90-9]+)(箇所|カ所)?|不明)', l)
if num_str:
print('num_str[2] =', num_str[0][2])
# print('num_str =', num_str)
print()
615デフォルトの名無しさん:2012/02/25(土) 18:20:54.26
はいはい、これで完璧っすかね
何回もやり直してすいませんっした

import re

with open('tech609.txt') as f:
for l in f:
l = l.rstrip()
print('l =', l)
# num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)+', l)
# or
num_str = re.search(r'(約|か)?([0-90-9]+)(箇所|カ所)?|不明', l)
if num_str.groups()[1]:
print('num_str.groups()[1] =', num_str.groups()[1])
# print('num_str =', num_str)
print()
616デフォルトの名無しさん:2012/02/25(土) 18:31:23.89
なんで最初の一個だけでいいの?
別に言わなくてもいいんだけどさ。
私の感覚的にはnumsが正解なんだけど。

import re

with open('tech609.txt') as f:
for l in f:
l = l.rstrip()
print('l =', l)
num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?)|不明', l)
# or
if num_str.groups()[1] or 1:
print('num_str.groups()[1] =', num_str.groups())
# print('num_str =', num_str)
num_str = re.findall(r'(約|か)?([0-90-9]+)(箇所|カ所)?|不明', l)
if num_str:
print('num_str =', num_str)
nums = [tup[1] for tup in num_str]
print('nums =', nums)
print()
617デフォルトの名無しさん:2012/02/25(土) 18:38:10.70
ここだけ

nums = [tup[1] for tup in num_str if tup[1]]

↑に修正だわ
618デフォルトの名無しさん:2012/02/25(土) 19:36:47.47
「数字だけを抜き出す」のが要望としか読めないんだけど、他の文字をマッチングさせてるのはなぜだろう
619デフォルトの名無しさん:2012/02/25(土) 19:41:57.51
〜カ所という形式でなく、

一、関係ない場所で20日、98度などといった形式での数値があると予想できる
二、仕様変更に対する耐性をつけておくため
三、自分でも必要とする時があるかもしれないので自分の感覚通りのものを拵えておいた
620デフォルトの名無しさん:2012/02/25(土) 20:07:07.43
#Python 2.7
import re, codecs

r = re.compile(u'[01234567890123456789]+')
f = codecs.open('test.txt', 'r', 'utf-8')
l = f.readlines()
f.close()
n = [re.search(r, s).group(0) if re.search(r, s) else '' for s in l]

for s in n:
print s
621デフォルトの名無しさん:2012/02/25(土) 20:22:35.78
そういえば、スタックとヒープを可視化しながらPythonコードを1行ずつ実行してくれる、初心者向け素敵Web実行環境は既出ですか?
ttp://people.csail.mit.edu/pgbovine/python/tutor.html#mode=edit
622デフォルトの名無しさん:2012/02/25(土) 20:42:50.00
pdb使ったらいいんちゃうん?
あと、>>621のいうスタックは、localsのことだろうと思う。
623デフォルトの名無しさん:2012/02/25(土) 21:36:24.88
pythonでクラス作っていますが、インスタンス変数、クラス変数へのアクセス制御(private,publicなど)はどうすればいいのですか?
624デフォルトの名無しさん:2012/02/25(土) 22:16:26.99
property
_underscore_name
625デフォルトの名無しさん:2012/02/25(土) 23:02:08.02
>>624
ありがとうございます。
命名規則で対処できたんですね
626デフォルトの名無しさん:2012/02/26(日) 01:12:10.81
そういうお約束にしましょうよって話。
まあ、これくらいは読んでおいてね。

Python のコーディングガイド PEP8 - 日本語訳
http://www.oldriver.org/python/pep-0008j.html

メソッド名とインスタンス変数

関数の場合と同じルールを使う。lowercase 方式で命名し、可読性を上げ
るためにアンダースコアで単語を区切る。

非公開なメソッドとインスタンス変数にのみ、先頭にアンダースコアを1
つ使って命名する。

   ....省略されました。続きを読むにはワッフルワッフルと入力して下さい。

継承のための設計

クラスのメソッドやインスタンス変数(つまり「属性」)を公開すること
の是非を、常に考慮する。どちらがいいか分からないときには、非公開に
する。公開属性を非公開にするよりも、非公開属性を公開にするほうが容
易である。

公開属性にするということは、あなたのクラスを他人が使うことを想定し、
将来の非互換性を避けることを約束したということだ。非公開属性にする
ということは、他人が使うことを想定しておらず、変更したり削除したり
するかも知れないということだ。

   ....省略されました。続きを読むにはワッフルワッフルと入力して下さい。

あと、最低でもこれ一通り読め。
http://diveintopython3-ja.rdy.jp/index.html
627デフォルトの名無しさん:2012/02/26(日) 01:57:11.94
>>622
グローバルなのも表示されとるよ。

デバッガ使えば似たようなことできるのは知ってるが、
初心者でも手軽に使えそうだし、特にmutable, immutable関連での頻出の質問に対する
かなり明確な答えになると思われるし、初心者向きスレには需要あるかと思って貼ってみた。
628デフォルトの名無しさん:2012/02/26(日) 03:21:30.42
>>623
アクセス制御なんてない
629デフォルトの名無しさん:2012/02/26(日) 09:58:23.94
>>626
了解。
まずは、勉強させてもらいます。

>>628
pythonにカプセル化とかの概念はないのですか?
630デフォルトの名無しさん:2012/02/26(日) 10:02:01.50
概念はあるでしょ。

言語仕様で縛るか、お約束でやるかの違い。
631デフォルトの名無しさん:2012/02/26(日) 13:10:45.72
透明どころか手を中に突っ込めるカプセル
632デフォルトの名無しさん:2012/02/26(日) 13:55:27.36
こういうシンプルな書き方ってできないのですか?
for x in a_list if a_condition(x):
 do_something(x)

こう書けるのはわかりますが、filter とか lambda とか面倒で気に入らない
for x in filter(lambda x: a_condition(x), a_list):
 do_something(x)

こう書けるのもわかりますが、無駄に冗長でウンコ臭い
for x in [x for x in a_list if a_condition(x)]:
 do_something(x)
633デフォルトの名無しさん:2012/02/26(日) 14:03:43.20
for x in a_list:
    if a_condition(x): do_something(x)
634デフォルトの名無しさん:2012/02/26(日) 14:06:25.76
def is_odd(n):
return n % 2

a_list = [i for i in range(10)]

for x in filter(is_odd, a_list):
print(x, 'is odd.')
635デフォルトの名無しさん:2012/02/26(日) 14:14:31.83
>>633-634
やっぱりそういう書き方しかないですか?

>>633
それ do_something(x) が複数の文になるとインデント2段になりますよね

>>634
a_condition(x) をいちいち関数定義するのは面倒ですね
636デフォルトの名無しさん:2012/02/26(日) 14:30:07.95
>>632の一番上は分かりにくくないかい?
continue使えば?ってなりそうな気がした。

def is_odd(n):
return n % 2

a_list = [i for i in range(10)]

for x in a_list:
if not is_odd(x):
continue
print(x, 'is odd.')
637デフォルトの名無しさん:2012/02/26(日) 14:35:54.48
>>636
うーん。もし書けるなら、これの方が
for x in a_list if is_odd(x):
 print(x, 'is odd.')

これより簡潔で分かりやすいと思うんだけど
for x in a_list:
 if not is_odd(x):
  continue
 print(x, 'is odd.')
638デフォルトの名無しさん:2012/02/26(日) 15:12:04.71
そうかもなあって思っちゃってる。
continueがない分いいってか。
うーん、、、

for x in a_list if is_odd(x):
for x in filter(is_odd, a_list):

上2つは等価なfor文だけど、
修正が大変とかで上の文法は採用されなかったんだろか。
上の方を満たすためにfilter()用意したんじゃないかな?
って思ってる。
ここは我慢してPythonに合わせるしかないんじゃないの?

話を元に戻して、

> こういうシンプルな書き方ってできないのですか?
> for x in a_list if a_condition(x):
>  do_something(x)

↓って言われちゃう。できないっぽいねぇ

for x in a_list if is_odd(x):
^
SyntaxError: invalid syntax
639デフォルトの名無しさん:2012/02/26(日) 15:21:18.40
>>638
>修正が大変とかで上の文法は採用されなかったんだろか。

SyntaxError: invalid syntax ってなることからわかるように、
文法を変えないといけないからでしょ。

特定の場合に便利だからといって、どんどん文法を増やすと
それ以外の場合に却って使いにくくなったりするからねぇ。
640デフォルトの名無しさん:2012/02/26(日) 15:51:17.81
書ける
for x in a_list:
 if is_odd(x):
  print x

書ける
for x in a_list:
 if is_odd(x): print x

書けない
for x in a_list: if is_odd(x): print x
641デフォルトの名無しさん:2012/02/26(日) 17:15:20.82
もうpythonじゃなくていいんじゃないの?
自分の好きな書き方が出来る言語を探せばいい
無ければ作ろう
642デフォルトの名無しさん:2012/02/26(日) 17:55:55.38
    お断りします
        お断りします
            お断りします
      ハ,,ハ ハ,,ハ ハ,,ハ ハ,,ハ
     ( ゚ω゚ )゚ω゚ )゚ω゚ )゚ω゚ )  お断りします
    /    \  \  \  \    お断りします
  ((⊂  )   ノ\つノ\つノ\つノ\つ))   お断りします
     (_⌒ヽ ⌒ヽ ⌒ヽ ⌒ヽ       お断りします
      ヽ ヘ } ヘ }  ヘ } ヘ }
  ε≡Ξ ノノ `Jノ `J ノ `J ノ `J
643デフォルトの名無しさん:2012/02/26(日) 18:46:27.49
なくなるなら宝石が先
644デフォルトの名無しさん:2012/02/26(日) 19:03:06.98
>>643
いや
641は632に対してね
645デフォルトの名無しさん:2012/02/26(日) 22:15:44.71
いろいろ考えたけど
内包表記やラムダなどを駆使して関数的に美しく書くなんてのは
Python では目指さない方が良さそうだというところに落ち着いた
やって出来ない事はないけど、やっぱり関数型言語ではないので
関数的なスタイルで読みやすいコードを書くのは難しい。

凝ったことはせずに
素直に手続き的に書いて関数も一つ一つ def する
というのが Python のコツっぽいかな?
646デフォルトの名無しさん:2012/02/26(日) 22:39:15.16
>>626
リンクのdive into python3はまとまっていてわかりやすそうかと思いました
python3を対象としていますが、今からpython勉強する場合は3がいいでしょうか?
なんか、ネット徘徊していると、2を勉強すべしとの意見も多いので困っています
よろしくお願いいたします

647デフォルトの名無しさん:2012/02/26(日) 22:57:21.03
どっちかで迷うくらいなら、3系がいいと思うよ。
私は3系のみ勉強している。
2系を折角勉強したのに、3系では邪魔知識になるとか嫌でしょ。
既存のPythonの資産を使いたいとかなら、
2系の勉強も考えた方がいいかも知れないけど、
そうじゃないなら3系からの勉強でいいと思う。

>>646が、Pythonをなぜ使いたいのかが一番大きい。
648デフォルトの名無しさん:2012/02/27(月) 06:28:08.91
Python3の現時点のデメリットは対応ライブラリが少ないくらいで至急何か作る必要がなければ困らないと思うよ
Python2は文字コードべったりなんでunicodeの暗黙の変換とかかなり分かりにくい
649デフォルトの名無しさん:2012/02/27(月) 08:06:32.98
勉強するだけなら Python 3 でも構わないかもね。
現実に使うのは厳しいが。
650デフォルトの名無しさん:2012/02/27(月) 08:12:40.46
どうしても、本人がどうしたいかになるんだよね。
651デフォルトの名無しさん:2012/02/27(月) 11:53:03.88
u"3だと日本語書くためにいちいちuつけなくていいから楽"
652デフォルトの名無しさん:2012/02/27(月) 12:08:34.16
全角だし
653デフォルトの名無しさん:2012/02/27(月) 19:57:44.25
つ[from __future__ import unicode_literals]
654デフォルトの名無しさん:2012/02/27(月) 22:12:03.40
>>649
目的が勉強だけって…
それはプログラミングやる意味ないんじゃ…
655デフォルトの名無しさん:2012/02/27(月) 23:00:49.73
勉強の意味が
数学や英語の学業としての勉強じゃなくて、
学んでいるという意味の勉強じゃないのかな?
656デフォルトの名無しさん:2012/02/27(月) 23:04:47.16
プログラム言語なんてその言語特有のお約束を覚えればいいだけじゃん
制御構文や変数はどの言語だって共通してるし

つまり
657デフォルトの名無しさん:2012/02/27(月) 23:06:42.91
>>647
単純に、Linuxのソフトウェア調べる仕事していて、pythonのコードに出くわすことが多かったからです
今現在のLinuxで動いているpythonとすると2系が多いですかね
個人的には3が勉強したいですけど
658デフォルトの名無しさん:2012/02/27(月) 23:24:21.45
Python製のフレームワークって今何がHOTなの?
659デフォルトの名無しさん:2012/02/27(月) 23:28:07.90
>>657
両方勉強するのはだめなの?
660デフォルトの名無しさん:2012/02/27(月) 23:41:16.90
ライブラリの多さがpythonの利点なんだし
Python3なんて選択肢に入らない
661デフォルトの名無しさん:2012/02/27(月) 23:47:18.01
最初はどっちかに絞った方がいいと思ます。
二兎追うものは一兎も得ず
っていうじゃないですか。
どちらも理解できれば一番いいけど、そう上手くいくかな?

> Linuxのソフトウェア調べる仕事していて、pythonのコードに出くわすことが多かったからです

今度は、どんな目的で調べているかによる。なんつって。
範囲が広いんだよねー。

中身を読んでるってことですよね。
ふむ。
改良や開発目的で調べてるの?
そのソフトウェアの開発者達が、
後継の開発を2で行うって言ってるんなら、2の勉強だろうし、
3で行うってのが多勢なら3だろうし。
662デフォルトの名無しさん:2012/02/28(火) 00:07:28.87
smtplibについて質問させてください。

会社のメールサーバーに対して

> telnet XXX.XXX.XXX.XXX 25
を実行するとうまくつながるのですが、

以下のように実行するとエラーが発生します。
原因が何かヒントをいただけないでしょうか。
import smtplib
s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25)


c:\test\python
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import smtplib
>>> s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python27\lib\smtplib.py", line 242, in __init__
(code, msg) = self.connect(host, port)
File "c:\python27\lib\smtplib.py", line 302, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "c:\python27\lib\smtplib.py", line 277, in _get_socket
return socket.create_connection((port, host), timeout)
File "c:\python27\lib\socket.py", line 571, in create_connection
raise err
socket.error: [Errno 10061] 対象のコンピュータによって拒否されたため、接続できま
せんでした。
>>>
663デフォルトの名無しさん:2012/02/28(火) 00:09:29.04
>>661
中身は読んでいますけど、ほとんど趣味ですね
会社から要求されているのは単純な使い方と性能のみ
でも、個人的に興味持って色々と調べています

ま、趣味なんで、3勉強してみます
664デフォルトの名無しさん:2012/02/28(火) 00:28:07.37
こちらからもちょっと質問させて下さい。

> telnet
>>> import smtplib

って同一PCかつ同一OSでの実行結果?
それぞれの環境でpingがとおることは確認済?

まあ、これが答えのような気もするけど。
socket.error: [Errno 10061] 対象のコンピュータによって拒
否されたため、接続できませんでした。
665デフォルトの名無しさん:2012/02/28(火) 01:20:53.58
scipyとmatplotlibが移植されたんで、自分的には3でも結構逝ける。
666デフォルトの名無しさん:2012/02/28(火) 01:46:09.75
俺はいつも逝ってる
むしろ吊ってるし詰んでる
667デフォルトの名無しさん:2012/02/28(火) 05:58:14.65
>605
>今までJava、C#しか経験していないため、変数に型が無い言語でどのようにすべきなのか良くわかりません。

>608
>いまいち、変数に型がないことによるメリットがわかりませんでした。

型はある
型宣言が無いだけ
668デフォルトの名無しさん:2012/02/28(火) 06:05:53.88
>632
for x in filter(a_condition, a_list):
 do_something(x)
669デフォルトの名無しさん:2012/02/28(火) 06:14:14.91
ワッフル ワッフル
670デフォルトの名無しさん:2012/02/28(火) 06:31:08.22
>>662
telnetでサーバからのリプライは確認した?
220 <ホスト名> ESMTP Sendmail ... とか返ってくるはずだけど
671デフォルトの名無しさん:2012/02/28(火) 06:43:35.75
>>670
はい、返ってきました。
これがうまくいっているので、どうしてエラーが起こるのかわからないんです…
672デフォルトの名無しさん:2012/02/28(火) 07:13:17.56
>>671
となるとちょっとわからない。ごめん
wiresharkでも使ってtelnetとsmtplibの通信内容を比べてみては
673デフォルトの名無しさん:2012/02/28(火) 07:17:43.69
wiresharkじゃなくてdebug設定では
674デフォルトの名無しさん:2012/02/28(火) 07:30:31.34
-v
-vvv
675デフォルトの名無しさん:2012/02/28(火) 07:37:01.98
>>667
メリット教えてやれよ
676デフォルトの名無しさん:2012/02/28(火) 09:38:41.68
>>675
ダックタイピングができる
677デフォルトの名無しさん:2012/02/28(火) 16:14:31.80
>>667
値に型があるんであって、変数に型はないでしょ
678デフォルトの名無しさん:2012/02/28(火) 16:31:13.65
変数はオブジェクト型またはプリミティブ型もしくはNoneです
679デフォルトの名無しさん:2012/02/28(火) 17:53:02.28
Pythonにはプリミティブ型なんて無い。
Noneもただのオブジェクト。
680デフォルトの名無しさん:2012/02/28(火) 18:15:00.11
pythonにはオブジェクトしかない

お前もオブジェクトにしてやろうか
681デフォルトの名無しさん:2012/02/28(火) 21:05:46.33
ひぃいぃ
682デフォルトの名無しさん:2012/02/28(火) 21:27:45.80
ジェクジェクにしてやろう
683デフォルトの名無しさん:2012/02/28(火) 21:29:29.76
壊れてすっかり職場のオブジェ
684デフォルトの名無しさん:2012/02/28(火) 23:04:10.42
>>671
[Errno 10061] は、WSAECONNREFUSED のことだろうから、
接続先のサーバーで smtp サーバーが動作していない (正確には、
該当のポートをリッスンしている奴がいない) ことを示している。

本当に、telnet と同じサーバーに繋ぎにいこうとしてる?

もしくは、s = smtplib.SMTP('XXX.XXX.XXX.XXX', 025) なんてしてないよね?
685デフォルトの名無しさん:2012/02/28(火) 23:16:28.49
>>684

> もしくは、s = smtplib.SMTP('XXX.XXX.XXX.XXX', 025) なんてしてないよね?

これはどうしてダメなんですか?
025のゼロがダメなんでしょうか。すいません。
686デフォルトの名無しさん:2012/02/28(火) 23:57:53.76
>>685
8進数だから
687デフォルトの名無しさん:2012/02/29(水) 00:25:20.84
>>> s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25)
Traceback (most recent call last):
...

から見るにそんなことはしていなそうでしたが。

同一PCかつ同一OSでの実行結果?
それぞれの環境でpingがとおることは確認済?

とりあえず、pingは通りましたが送信できずに困ってますとかって言って欲しい。
688デフォルトの名無しさん:2012/02/29(水) 03:55:30.51
良心的に見て
>>> s = smtplib.SMTP('192.168.080.025', 25)
とかがアウトっていう意味か

ping が通ったからと言って telnet (IP) 25 が通る保障はどこにもない
689デフォルトの名無しさん:2012/02/29(水) 03:58:36.06
そしてpingが通らなくてもSMTP接続出来ることなんていくらでもある
690デフォルトの名無しさん:2012/02/29(水) 05:48:42.36
そして>662を読めといいたい
691デフォルトの名無しさん:2012/02/29(水) 07:00:15.35
こういう話だったらいいなあ
http://ja.wikipedia.org/wiki/Outbound_Port_25_Blocking

以下smtplib.SMTPでもdebuglevelが使えるようなので
今回の件には役に立ちそうにないけど一応

import smtplib
smtplib.SMTP.debuglevel = 1
con = smtplib.SMTP(hostname, 25)
... debug情報がずらずら ...
692デフォルトの名無しさん:2012/02/29(水) 14:21:38.30
クライアントの PC は同じ環境からアクセスしてんのかな
あと telnet するときの IP と smtplib.SMTP するときの IP
( XXX.XXX.XXX.XXX の部分 ) は本当に同じなのかな
693デフォルトの名無しさん:2012/02/29(水) 22:21:00.17
pythonでインスタンスのアドレスを知る方法ってないんでしょうか?
ずっと勘違いしてて id でアドレス表示してるのかと思ったら
全然そんなことないですよね
id の仕様を見ても「識別子」としか明言してなくてアドレスだとは一言も言ってないし
694デフォルトの名無しさん:2012/02/29(水) 22:38:44.02
help(id)
695デフォルトの名無しさん:2012/02/29(水) 23:35:05.47
あってるよ

Python/bltinmodule.c [926/2392行][38%]
static PyObject *
builtin_id(PyObject *self, PyObject *v)
{
return PyLong_FromVoidPtr(v);
}

PyDoc_STRVAR(id_doc,
"id(object) -> integer\n\
\n\
Return the identity of an object. This is guaranteed to be unique among\n\
simultaneously existing objects. (Hint: it's the object's memory address.)");
696デフォルトの名無しさん:2012/03/01(木) 15:22:17.92
あってるね
697デフォルトの名無しさん:2012/03/01(木) 22:48:39.27
(1) (2) (3) を同じPC(Windows XP)で実行しました。
スクリプトからの接続を拒否する仕組みってあるのでしょうか?

-----------------------------------------------
(1) pingを実行した場合、以下のように成功します。

c:\test>ping 100.100.100.100

Pinging 100.100.100.100 with 32 bytes of data:

Reply from 100.100.100.100: bytes=32 time<1ms TTL=63
Reply from 100.100.100.100: bytes=32 time<1ms TTL=63
Reply from 100.100.100.100: bytes=32 time<1ms TTL=63
Reply from 100.100.100.100: bytes=32 time<1ms TTL=63

Ping statistics for 100.100.100.100:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms









698デフォルトの名無しさん:2012/03/01(木) 22:49:08.93
-----------------------------------------------
(2) telnet を実行した場合、以下のように成功します。

c:\test>telnet 100.100.100.100 25

220 xxx.xxx.co.jp ESMTP Postfix


699デフォルトの名無しさん:2012/03/01(木) 22:50:13.53
-----------------------------------------------
(3) pythonを以下のように実行するとエラーが出ます。

c:\test>python
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import smtplib
>>> smtplib.SMTP.debuglevel=1
>>> con = smtplib.SMTP('100.100.100.100', 25)
connect: ('100.100.100.100', 25)
connect: (25, '100.100.100.100')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python27\lib\smtplib.py", line 242, in __init__
(code, msg) = self.connect(host, port)
File "c:\python27\lib\smtplib.py", line 302, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "c:\python27\lib\smtplib.py", line 277, in _get_socket
return socket.create_connection((port, host), timeout)
File "c:\python27\lib\socket.py", line 571, in create_connection
raise err
socket.error: [Errno 10061] 対象のコンピュータによって拒否されたため、接続できま
せんでした。
>>>
700デフォルトの名無しさん:2012/03/01(木) 23:52:26.58
単にファイアウォールにひっかかってるだけじゃないの?
701デフォルトの名無しさん:2012/03/01(木) 23:54:28.83
>>698
この先に進もうとしようとすると同じように失敗しない?
telnetでどうやってメール送れたの?
受信確認はどうやったの?
702デフォルトの名無しさん:2012/03/02(金) 00:42:02.63
>>700
例えばノートンなんかに
(telnet.exeの通信は止められていないけど)
python.exeの通信が止められてる可能性があるってことか
703デフォルトの名無しさん:2012/03/02(金) 02:22:05.12
ファイアウォールというかセキュリティソフトのチェックかもな
telnet.exe は既に許可ソフトに登録済みなのを自分で忘れてるだけだろ
704デフォルトの名無しさん:2012/03/02(金) 19:39:38.90
かもとだろって、両立するの?
705デフォルトの名無しさん:2012/03/02(金) 19:54:24.88
自然言語では両立するでしょ。
706デフォルトの名無しさん:2012/03/02(金) 20:24:24.48
嘉本さんのこと言うなー
707デフォルトの名無しさん:2012/03/02(金) 20:31:16.20
(馬)鹿本だろう
708デフォルトの名無しさん:2012/03/02(金) 20:36:14.76
ぶるるるぁ
709デフォルトの名無しさん:2012/03/02(金) 20:51:13.63
webページをダウンロードして内容をファイルに書くところで詰まってるんだけど、

Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
open('D:\P/output.txt', 'w').write(mainline)
TypeError: expected a character buffer object

と出るんだけどどうしたらいいの書き込もうとする文字列が一定以上の量だとエラー出る感じだけど
710デフォルトの名無しさん:2012/03/02(金) 21:21:04.13
type(mainline)
確認してみたら?
文字数が変わると内部でmainlineのtype変えてるんじゃないの?
711デフォルトの名無しさん:2012/03/02(金) 21:40:50.14
import StringIO
open('D:\P/output.txt', 'w').write(StringIO.StringIO(mainline).getvalue())
712デフォルトの名無しさん:2012/03/02(金) 23:37:00.57
>>699
>connect: ('100.100.100.100', 25)
>connect: (25, '100.100.100.100')

なんで二行でるんだ?

とりあえず、con = smtplib.SMTP('100.100.100.100') で試してみて。

>>700
多分、それはない。
もし、そうなら、10060 (WSAETIMEOUT) になるはず。
713デフォルトの名無しさん:2012/03/03(土) 00:34:59.65
>>701

今日試しました。
telnetでメールが送信できました。
以下のサイトを参考にました。
http://www.nurs.or.jp/~telnet/smtp.html

受信はメールソフトを使いました。

なんでだめなのか、さっぱりわかりません。
714デフォルトの名無しさん:2012/03/03(土) 00:38:30.40
>>712

何度かためしましたが、確かに二行が表示されます。

> とりあえず、con = smtplib.SMTP('100.100.100.100') で試してみて。

やりましたが、結果は全く同じです。
ひとつわかったことがあります。

IPアドレスを100.100.100.100じゃなくて、でたらめな値に変えても全く同じエラーが発生します。
telnetを使って100.100.100.100 でメール送信できたので、ipアドレスが間違っていることはありません。
smtplib のソースにデバッグコードを埋め込んでどこまでうまく動いているか、切り分けするしかないんでしょうか。

715デフォルトの名無しさん:2012/03/03(土) 00:44:54.17
ファイアウォールというかセキュリティソフトのチェック
telnet.exe は既に許可ソフトに登録済みなのを自分で忘れてるだけ
716デフォルトの名無しさん:2012/03/03(土) 00:54:29.66
多分PCから出れてないわ
みんながいうようにファイア・ウォールが原因だと思うぞなもし
一度ファイア・ウォール、セキュリティ関係諸々を停止させてから試してみなよ
そしたら上手くいくと思う
717デフォルトの名無しさん:2012/03/03(土) 00:57:53.99
localhost, 127.0.0.1だったらうまくいくんだっけか?
718デフォルトの名無しさん:2012/03/03(土) 00:58:29.82
職業別の人気順位
      (an・an調べ)
http://xbrand.yahoo.co.jp/category/lifestyle/7380/1.html
1位 システムエンジニア
2位 公務員
3位 銀行&商社マン
4位 警察・消防・自衛官
5位 マスコミ・営業マン・広告マン
6位 企業経営者
7位 医師
8位 弁護士、公認会計士
719デフォルトの名無しさん:2012/03/03(土) 00:59:02.50
馬鹿には無理
720デフォルトの名無しさん:2012/03/03(土) 13:48:30.90
すいませんけど、これからPythonを勉強したいんですけど、
Pythonには2と3があると聞きました。
今から勉強するなら3から始めたほうがいいのですか?
3はソフトが少ないので、2をやったほうがいいとも聞いたのですが。
721デフォルトの名無しさん:2012/03/03(土) 13:52:29.85
どっちでも構わないけど自分が入門に使おうとしているサイトまたは
本で使われている系列に合わせるのが混乱が少なくていいと思うよ
722デフォルトの名無しさん:2012/03/03(土) 13:52:36.75
書籍やネット上の情報は2のが多いんじゃね
723デフォルトの名無しさん:2012/03/03(土) 14:01:36.70
2をやったほうがいい
724デフォルトの名無しさん:2012/03/03(土) 14:06:11.66
>>723
できれば理由も教えて下さい。やっぱり >>722 情報が多いのとソフトが多いからですか?

2を勉強して将来3をやると3に馴染みにくいとかありますか?
725デフォルトの名無しさん:2012/03/03(土) 14:32:02.28
>>724
2系のよろしくない・思わしくない設計方針を3系で刷新してるんだ。
2から入ってPython2にドップリ浸かると、
Python2の洗練されていない思想を取り込むことになる。
現在では3系のために洗練した設計思想があるんだから、
2系の古い知識は知らなくてもいいじゃないかって思う。
綺麗なことだけ知っておけばいいじゃないですか。

ただ、2系でしか用意されてないlibraryを使いたいってんなら別だよ。
2系を使えばいいんじゃないの?って思う。
726デフォルトの名無しさん:2012/03/03(土) 14:34:03.59
>>724
3の発展スピード<<学習スピードなら、2一択。
727デフォルトの名無しさん:2012/03/03(土) 14:37:10.43
別に、プログラミング言語なんて何個やったっていいと思うけど
728デフォルトの名無しさん:2012/03/03(土) 14:40:20.97
いや、PythonかScalaかC言語かって話じゃないんだ
729デフォルトの名無しさん:2012/03/03(土) 14:40:59.72
2をやったら3が出来なくなるとか言ってるの?
730デフォルトの名無しさん:2012/03/03(土) 14:44:29.29
誰もいってないぞ
どこにんなこと書いてあった?
731デフォルトの名無しさん:2012/03/03(土) 14:45:51.61
>>729
ついつい2で書いてしまって3が身につかなくなる恐れがある(体験談)
732デフォルトの名無しさん:2012/03/03(土) 14:46:13.24
何を言いたいのかよく分からん。初学者は2をやれば良いんじゃないの
733デフォルトの名無しさん:2012/03/03(土) 14:48:11.10
2をやった上で3もやれば何故そうなっているのか理解が進む
2でも3でも基本は一緒
作ってる人も一緒
734デフォルトの名無しさん:2012/03/03(土) 14:58:33.55
2.xをちゃんと理解してる人は
3.xへの移動も楽だしすぐ終わる。
735デフォルトの名無しさん:2012/03/03(土) 15:03:35.79
横ですまんが2から3に移行されてないライブラリで影響の大きいのってどういうの?
736デフォルトの名無しさん:2012/03/03(土) 15:07:07.02
これの上の方にあるやつ
http://python3wos.appspot.com/
737デフォルトの名無しさん:2012/03/03(土) 16:34:41.22
>>735
Web フレームワークがほぼ全滅。
あと MySQLdb。
つまり LAMP 系は 3 では使いものにならない。
738デフォルトの名無しさん:2012/03/03(土) 16:39:20.10
>>737
ありがちょ参考にさせてもらう
739デフォルトの名無しさん:2012/03/03(土) 20:55:26.48
なんで3から2のライブラリとかモジュールとか使えるようにしなかったんだろう
ctypesでさえ出来てることなのに
740デフォルトの名無しさん:2012/03/03(土) 22:44:57.78
そう思うならお前がやれ
741デフォルトの名無しさん:2012/03/03(土) 22:54:36.87
>>739
えっ?
使えるけど?
742デフォルトの名無しさん:2012/03/03(土) 23:01:23.16
     /: : : : : __: :/: : ::/: : ://: : :/l::|: : :i: :l: : :ヽ: : :丶: : 丶ヾ    ___
     /;,, : : : //::/: : 7l,;:≠-::/: : / .l::|: : :l: :|;,,;!: : :!l: : :i: : : :|: : ::、  /     ヽ
    /ヽヽ: ://: :!:,X~::|: /;,,;,/: :/  リ!: ::/ノ  l`ヽl !: : |: : : :l: :l: リ / そ そ お \
   /: : ヽヾ/: : l/::l |/|||llllヾ,、  / |: :/ , -==、 l\:::|: : : :|i: | /   う う  前  |
.   /: : : //ヾ ; :|!: イ、||ll|||||::||    ノノ  イ|||||||ヾ、 |: ::|!: : イ: ::|/   な 思 が
   /: : ://: : :ヽソ::ヽl |{ i||ll"ン    ´   i| l|||l"l `|: /|: : /'!/l     ん う
 ∠: : : ~: : : : : : : :丶ゝ-―-      ,  ー=z_ソ   |/ ハメ;, :: ::|.   だ ん
   i|::ハ: : : : : : : : : : : 、ヘヘヘヘ     、  ヘヘヘヘヘ /: : : : : \,|.   ろ な
   |!l |: : : : : : : : :、: ::\    、-―-,      / : : :丶;,,;,:ミヽ   う  ら
     丶: :ハ、lヽ: :ヽ: : ::\__  `~ "      /: : ト; lヽ)   ゝ
       レ `| `、l`、>=ニ´        ,  _´ : :} `   /
         ,,、r"^~´"''''"t-`r、 _  -、 ´ヽノ \ノ   /    お ・
       ,;'~  _r-- 、__     ~f、_>'、_         |  で  前 ・
      f~  ,;"     ~"t___    ミ、 ^'t         |  は  ん ・
      ,"  ,~         ヾ~'-、__ ミ_ξ丶     |  な  中 ・
     ;'  ,イ ..          ヽ_   ヾ、0ヽ丶    l         /
     ( ;":: |: :: ..          .`,   ヾ 丶 !    \____/
     ;;;; :: 入:: :: ::      l`ー-、   )l   ヾ 丶
     "~、ソ:: :い:: :     \_  ノ ,    ヾ 丶
743デフォルトの名無しさん:2012/03/03(土) 23:03:04.27
バイト列の途中の数バイトを除去する場合、

a_bytes = a_bytes[:n] + a_bytes[n + m:]

みたいなかんじでいいですか。
もっと賢い方法とかあるんでしょうか。

python 3.2.2 です。
744デフォルトの名無しさん:2012/03/03(土) 23:26:40.10
>>743
a_bytesがリストなら、
del a_bytes[x:y]
745743:2012/03/03(土) 23:55:03.91
>>744
すんません、書き方が悪かったでしょうか。バイト列ってのは bytes オブジェクト、
>>> type(a_bytes)
<class 'bytes'>
のつもりでした。
746デフォルトの名無しさん:2012/03/04(日) 00:02:57.99
bytesって例外起こすでしょ?
bytearray()だったら話は分かるのだが。
つーことでお勧め

>>> n = 3
>>> m = 2
>>> a_bytearray = bytearray(b'abcdefgh')
>>> a_bytearray[:n]
bytearray(b'abc')
>>> a_bytearray[n:]
bytearray(b'defgh')
>>> a_bytearray[n+m:]
bytearray(b'fgh')
>>> a_bytearray[n:] = a_bytearray[n+m:]
>>> a_bytearray
bytearray(b'abcfgh')
747743:2012/03/04(日) 00:58:06.01
>>746
> bytesって例外起こすでしょ?

そーなんですか、勉強します。

> bytearray()だったら話は分かるのだが。
> つーことでお勧め
(以下略)

なるほど、ありがとございます!!
748デフォルトの名無しさん:2012/03/04(日) 01:14:15.72
bytesの方でこれやると例外吐くよ。
>>> a_bytearray[n:] = a_bytearray[n+m:]
なんか代入しようとすると駄目。

あと、id()の結果が上と下で変わるよ。
bytearrayでは変わらないけどbytesでは変わる。
つまり、bytesでは最初のa_bytesを削除している。
bytearrayはa_bytearrayを使い回している。

>>>id(a_bytes)
>>>a_bytes = a_bytes[:n] + a_bytes[n + m:]
>>>id(a_bytes)

>>> id(a_bytearray)
>>> a_bytearray[n:] = a_bytearray[n+m:]
>>> id(a_bytearray)

なんでこんな風になってるのか知らね。
なんかPythonって変更できるtypeできないtypeあるよね。
list() tuple(), bytearray() bytes(), set() frozenset()
これなんでなの?ここだけとっつきにくいと思う。
749デフォルトの名無しさん:2012/03/04(日) 01:37:21.79
馬鹿には無理
750デフォルトの名無しさん:2012/03/04(日) 15:17:34.65
numpyのarray型で特定の要素だけ加算したりすることは出来ますか?
a = array([[1,2],[3,4]])
a = a[1,1] + 3

[[1,2],[3,7]
みたいにしたいのですが,これを行うには行列の大きさを同じにしないと無理でしょうか?
それともこういうときはリスト使うものですか?
751デフォルトの名無しさん:2012/03/04(日) 15:32:45.81
752デフォルトの名無しさん:2012/03/04(日) 15:36:23.83
>>> a = numpy.array([[1,2],[3,4]])
>>> a
array([[1, 2],
   [3, 4]])
>>> a[1,1] += 3
>>> a
array([[1, 2],
   [3, 7]])
753デフォルトの名無しさん:2012/03/04(日) 16:33:58.88
いつもお世話になっています。

xlrd というExcelの読み出しを行うモジュールを使ってセルの内容の読み出しを行っています。
古いバージョンのExcelのデータは何の問題もなく読み出せるのですが、最新のバージョンの
Excelのセルを読み出すと(文字列の場合)、

text:u'10\u53f0

という値が読み出せます。
ユニコードの値"53f0"(漢字の'台'です)から'台'に変換する関数、メソッドはあるでしょうか?

754デフォルトの名無しさん:2012/03/04(日) 16:45:41.07
csvモジュールか何か使ってる?
とりあえずs.encode('utf-8')なりs.encode('cp932')とか
755デフォルトの名無しさん:2012/03/04(日) 16:51:57.55
それは別に Excel のバージョンと関係なくて、単にデータに日本語が
はいってるだけでは?

xlrd は Unicode に対応しているから、普通の unicode データとして
扱えばよろしいです。

> ユニコードの値"53f0"(漢字の'台'です)から'台'に変換する関数、メソッドはあるでしょうか?

という言葉の意味がわからないのですが、もし str 型に変換したいと
いう意味でしたら、encode します。

756デフォルトの名無しさん:2012/03/04(日) 16:58:33.20
>>754, 755

すいません、以下のようにしたらうまくいきました。

>>> s = u'\u53f0'
>>> print s


ありがとうございました。
757デフォルトの名無しさん:2012/03/04(日) 17:00:13.86
えっ
758デフォルトの名無しさん:2012/03/04(日) 17:06:01.36
えっなにそれ怖い
759デフォルトの名無しさん:2012/03/04(日) 17:27:14.34
で、次に出力をリダイレクトしてまたはまると。
760デフォルトの名無しさん:2012/03/04(日) 17:41:32.52
2.x の repr や str は ASCII の制限を引きずってるからな
761デフォルトの名無しさん:2012/03/04(日) 18:14:11.80
すいません、やっぱりうまくいきません。

str型に '53f0'が格納されているとき、'台'に変換する方法をご教授いただけないでしょうか。
762デフォルトの名無しさん:2012/03/04(日) 18:34:35.64
763デフォルトの名無しさん:2012/03/04(日) 18:53:01.45
>>761
文脈気にせずその質問にそのまま答えるなら
unichr(int('53f0', 16)).encode('utf8')
764デフォルトの名無しさん:2012/03/05(月) 01:23:18.47
馬鹿には無理
765デフォルトの名無しさん:2012/03/05(月) 02:13:00.11
初心者です。
pythonのCGIで、サーバ上のXMLファイルを開き、
要素の変更・追加・削除等をして、そのファイルを上書き保存することは可能ですか?
イメージとしては、XMLファイルの内容を全て変数に保存し、
ファイルの中身を全て消してから、保存した変数の値を書き込むのでしょうか。
ググりましたが、コレという記事がありませんでした。
定石(常識)があればご指導お願いします。
766デフォルトの名無しさん:2012/03/05(月) 04:11:44.44
可能
767765:2012/03/05(月) 08:23:35.21
具体的にはどういったライブラリを使えばいいですか?
768デフォルトの名無しさん:2012/03/05(月) 09:03:16.84
cgiとElementTreeあたり
769デフォルトの名無しさん:2012/03/05(月) 10:49:28.92
lxmlが定番だけど、大掛かりなことせず標準ライブラリで済ませたかったらminidomとか。
770765:2012/03/05(月) 13:49:10.98
>>768-769
ありがとうございました。
よく見る名前で良かったです。
771デフォルトの名無しさん:2012/03/05(月) 14:30:50.22
Beautiful Soupも忘れないであげてください
772デフォルトの名無しさん:2012/03/05(月) 15:59:17.32
>>771
大丈夫ですよ、この私がpython for androidでスクレイピングに使ってますよ
773デフォルトの名無しさん:2012/03/05(月) 16:20:07.38
ってことは落ち目ってことかーちぇー
774デフォルトの名無しさん:2012/03/05(月) 16:30:19.93
この私を愚弄するのですか!!!

まあいいです
775デフォルトの名無しさん:2012/03/05(月) 22:18:53.45
ねえおっさん、今いくつ?
いい年してノリノリで言ってて恥ずかしくない?ねぇ?
776デフォルトの名無しさん:2012/03/05(月) 22:21:08.02
すみません、調子に乗りました
19の浪人生です(^q^)
777デフォルトの名無しさん:2012/03/05(月) 22:57:26.45
謝ってやんのかっちょわりー
なんでお前はいつもそう、中途半端なんだ
一つのことをきちんとやりきりなさい
そんなだから浪人なんかするんだ
778デフォルトの名無しさん:2012/03/05(月) 23:26:13.28
Scrapyはあんあり使われてないのはなんでなん?
779デフォルトの名無しさん:2012/03/06(火) 00:31:11.26
>>772
python for androidって使い勝手とかどうなの?
ちょっと気になってる
780デフォルトの名無しさん:2012/03/06(火) 08:44:04.52
>>779
割と普通の2.6として使えますね
内蔵エディタと外部エディタを好みで選べていい感じです
android独自拡張をimportすれば読み上げや通知メッセージ、ダイアログなんかも出せます
外部モジュールはSDカードに適当に展開してパスを通せば動きます

honeycombタブレットにUSBキーボードを繋げてやってますが、取りこぼしも皆無でそこそこ快適ですね
781デフォルトの名無しさん:2012/03/06(火) 11:20:45.26
>>780
そか、ありがと
782デフォルトの名無しさん:2012/03/06(火) 14:38:20.42
pythonを頑張って勉強したら何が作れんの?


超初心者だから何も分からないので
783デフォルトの名無しさん:2012/03/06(火) 14:54:45.02
784デフォルトの名無しさん:2012/03/06(火) 15:02:03.73
皆さんはプログラミングで最終的に何かやってやると思ってされてるわけですか?野望的な
785デフォルトの名無しさん:2012/03/06(火) 15:05:29.29
いつかラーメンタイマーを作ってやろうと思ってPython勉強してます

>>783
それ、実装言語はPythonでないのも一杯混じってるから誤解されそう
にしてもこんなのもあるんだね。ADVゲーム作りたい人には良さそうだ
http://ja.wikipedia.org/wiki/Ren%27Py
786デフォルトの名無しさん:2012/03/06(火) 16:26:47.82
ElementTreeで書き出したxmlファイルは、一行に入れ子のタグが書かれているんだけど、
これを人の目で分かりやすいように整形する簡単な方法はありますか?
prettyなんちゃらしかない?
787デフォルトの名無しさん:2012/03/06(火) 16:49:30.99
お前らすごいけど、ネタソフト作ってんじゃねーよ

Sage は数学の非常に幅広い分野をカバーするソフトウェアである。その
範囲は計算機代数、組み合わせ、数値計算など多岐に及ぶ。工学的応
用に加え基礎科学の研究もカバーしている。

Sage は2005年2月24日にフリーソフトウェアとして GNU General Public
License の元で最初のバージョンが公開された。その開発目的は Magma、
Maple、Mathematica (いずれも計算機代数ソフトウェア)、MATLAB の代替
となるフリーかつオープンソースなソフトウェアを提供することであった[1]。
788デフォルトの名無しさん:2012/03/06(火) 18:45:45.10
チュートリアルで煮詰まったのでipythonを試してるんですが
shプロファイルはどう呼び出せばいいんでしょうか?
それから%run?のようなマジックファンクションのリファレンスを引くと
エスケープシーケンスが生のまま表示されます。
解決策を教えてもらえませんか?
バージョンは
ubuntu10.04
bash4.1.5
urxvt9.06に256色パッチ当てた物
python2.6.5(プリインストール版)
ipython0.12  です。
789デフォルトの名無しさん:2012/03/06(火) 19:15:56.19
MacOSX Lion
Python 2.7.1
wxPython 2.8

class MyFrame(wx.Frame):
>def __init__(self, parent, id, title):
>>wx.Frame.__init__(self, parent, id, title, size=(390, 200))
>>panel = wx.Panel(self, -1)
>> ・
>> ・
>> ・
>>tc3 = wx.TextCtrl(panel, -1)
>>btn = wx.Button(panel,-1 ,'Start', (70, 30))
>>self.Bind(wx.EVT_BUTTON, self.Print, btn)
>> ・
>> ・
>> ・
>def Print(self, event):
>>print self.tc2.GetValue()
#oppao
app = wx.App()
MyFrame(None, -1, 'uites.py')
app.MainLoop()

このような感じで書いてるんるんだけど、実行すると
AttributeError: 'MyFrame' object has no attribute 'tc2'
とエラーが出てしまう・・。

ボタン押した時にprint self.tc2.GetValue()したいけどオブジェクトにtc2の属性がないと言われてもよくわかりません。
どういうふうに記述すれば良いのでしょうか。教えてもらえると助かります!お願いします。
790デフォルトの名無しさん:2012/03/06(火) 19:20:42.14
self.tc2 = wx.TextCtrl(panel, -1)
791デフォルトの名無しさん:2012/03/06(火) 20:48:04.83
>>789
そりゃtc2無いのに無理だろ
792デフォルトの名無しさん:2012/03/06(火) 22:49:15.63
ぎゃああコピーミスった
print self.tc2.GetValue()でした
793デフォルトの名無しさん:2012/03/06(火) 22:56:34.24
えっ?
794デフォルトの名無しさん:2012/03/06(火) 22:59:16.57
うおおおお
print self.tc3.GetValue()だよ!

人間寝ないとだめですね
795デフォルトの名無しさん:2012/03/06(火) 23:14:23.16
みんなのPython Webアプリ編
って本がLindocで無料公開されてるね
Lindocに会員登録すると無料でダウンロードできる
今月いっぱいまでだから速攻落とした。連投スマソ 寝てきます
796デフォルトの名無しさん:2012/03/07(水) 01:18:33.42
前は登録なんかしなくても落とせたんだけどな
797デフォルトの名無しさん:2012/03/07(水) 11:16:56.58
売れないからpdfで配布してんだろ
買ってしまった人には還金しろ
798デフォルトの名無しさん:2012/03/07(水) 19:11:00.17
diclistって無いの?

>>>diclist = []
>>>diclist["一つ"] = "人より力もち"
>>>diclist["二つ"] = "故郷後にして"
>>>print diclist[0]
人より力もち
>>>print diclist["二つ"]
故郷後にして

みたいなの。
799デフォルトの名無しさん:2012/03/07(水) 19:52:55.63
これどうするつもり何?

>>>diclist = []
>>>diclist["一つ"] = "人より力もち"
>>>diclist["二つ"] = "故郷後にして"
>>>diclist[0] = "いろはにほへ"
>>>diclist[1] = "とちりぬるを"

keyとして数値を使用させないclassを自作するくらいしか手はないね。
800デフォルトの名無しさん:2012/03/07(水) 20:08:28.16
801798:2012/03/07(水) 20:59:30.21
似たようなものを作ってしまってから、幾ら何でも用意されていないのはおかしいと思ったので尋いたんだよぅ。

>>799
それは上書き。

>>>diclist["一つ"]
いろはにほへ
>>>diclist[0]
いろはにほへ

どうでもいいことだが「いろはにほへ」で区切る例を初めて見た。
802デフォルトの名無しさん:2012/03/07(水) 21:03:39.60
死ね
803デフォルトの名無しさん:2012/03/07(水) 21:18:44.44
なんか、Pythonスレといいここと言い荒らしがいるねー
804デフォルトの名無しさん:2012/03/07(水) 21:35:11.45
>>801
799の言ってる意味が分かってないでしょ
805801:2012/03/07(水) 22:37:26.19
真面目な質問なのに、どこが荒らしやねん。。。

>>804
>>801に書いた返答が的外れなら、たぶん分かってないと思う。
806デフォルトの名無しさん:2012/03/07(水) 22:58:53.85
>>805
もらったレスを読み直してご覧よ
807デフォルトの名無しさん:2012/03/07(水) 23:00:41.51
ああPHPのあれね
808デフォルトの名無しさん:2012/03/07(水) 23:02:25.10
diclist.values()[0]
809デフォルトの名無しさん:2012/03/07(水) 23:09:00.07
% python
Python 2.7.2 (default, Jan 31 2012, 13:19:49)
[GCC 4.6.2 20120120 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import *
>>> od = OrderedDict(a=10, b=20, c=30)
>>> od.values()
[10, 30, 20]

アルェー
810デフォルトの名無しさん:2012/03/07(水) 23:53:30.33
キーワード引数だと最初に通常の辞書に変換されるんじゃね
811デフォルトの名無しさん:2012/03/08(木) 00:00:51.01
>>805
d[N]としたたとき
keyとしてのNなのかindexとしてのNなのかが曖昧だから

>>809
od = OrderedDict(a=10, b=20, c=30)

od = OrderedDict({'a':10, 'b':20, 'c':30})
つまり
d = {'a':10, 'b':20, 'c':30}
od = OrderedDict(d)
と同等だからね
812デフォルトの名無しさん:2012/03/08(木) 01:54:02.17
真面目な質問です。
Python で、
'ffab05ff'
という文字列から、
'\xff\ab\05\xff'
という文字列に変換するにはどうすれば良いのでしょう?
元の文字列は 0-9 a-f しか使われておらず、
文字列の長さは必ず偶数ですが、最大長は不明です。
813デフォルトの名無しさん:2012/03/08(木) 01:55:08.55
訂正します。

誤 '\xff\ab\05\xff

正 '\xff\xab\x05\xff
814デフォルトの名無しさん:2012/03/08(木) 02:23:46.80
>>> import binascii
>>> binascii.unhexlify('ffab05ff')
'\xff\xab\x05\xff'
815デフォルトの名無しさん:2012/03/08(木) 02:39:10.00
s = 'ffab05ff'
i = iter(s)
struct.pack('>%dB' % (len(s) / 2), *[int(''.join(_), 16) for _ in zip(i, i)])
816デフォルトの名無しさん:2012/03/08(木) 03:01:15.66
出来ました。
ありがとうございました。
817デフォルトの名無しさん:2012/03/08(木) 04:24:46.94
真面目な質問です。
a = 1 if b == 0 else 2 if b == 1 else 3

a = 1 if b == 0 else (2 if b == 1 else 3)
は等価ですか?
818デフォルトの名無しさん:2012/03/08(木) 04:26:29.77
a = 1 if b == 0 else 2 if b == 1 else 3

a = (1 if b == 0 else 2) if b == 1 else 3
は等価ではないですか?
819デフォルトの名無しさん:2012/03/08(木) 04:28:25.00
a = 1 + 2 if b == 1 else 3

a = 1 + (2 if b == 1 else 3)
は等価ですか?
a = (1 + 2) if b == 1 else 3
は等価ではないですか?
820デフォルトの名無しさん:2012/03/08(木) 05:42:05.84
>>810-811
あああそういうことか。サンクス
821805:2012/03/08(木) 07:57:19.15
おはよう!!
>>809
ああ、たぶん OrderedDict が求めていたものみたい。
たぶんというのは実行環境(python 2.6)では使えないようなので。

結局、上述 diclist みたいな?は無いので自作classを使うしかないと解った。
皆さんありがとうございました。
ぶちゅー <- 御礼の接吻
822デフォルトの名無しさん:2012/03/08(木) 08:04:32.18
大失敗した、助けるんじゃなかった;;
黙っておくべきだった;;
823デフォルトの名無しさん:2012/03/08(木) 12:52:37.99
>>821
Python 2.6 では easy_install ordereddict

して

from ordereddict import OrderedDict

とすれば OK のはず。
824デフォルトの名無しさん:2012/03/08(木) 13:59:09.54
pythonのpublic private protectedってrubyみたいに独特なものですか?
ちゃんとJavaみたいにアクセス権できてますか?
825デフォルトの名無しさん:2012/03/08(木) 14:09:00.98
_ および __ による超強力なアクセス制限機構を備えておりますが何か
826デフォルトの名無しさん:2012/03/08(木) 14:09:24.72
  _人人人人人人人人人人人人人人人人人人_
  > Ruby初心者スレの残党がいたぞ殺せ! <
   ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

    三 ( ^P ( ´P)( ^P)
   三 ( ∪ ( ∪ ー(‐∪─→
   三 / 》 ̄ 》 ̄ ̄ 》  ̄\
 三三 | U   U    U ・ |
  三 と|            ι| |        三┏(;´R`)┛三┏( ;´R`)┛三┏( ;´R`)┛
  三 /_∧∨ ̄ ̄ ̄ ̄/_∧U        三   ┛┓  三   ┛┓   三   ┛┓
827デフォルトの名無しさん:2012/03/08(木) 14:31:29.55
>>819
よく分からんけど考える必要ないでしょ
そんな糞な考えせんから分からん
試す気にもならん
828デフォルトの名無しさん:2012/03/08(木) 15:26:53.95
これって許されていいの?
例外吐いてくれる所じゃないの?
>>> a = 8,
>>> a
(8,)
829デフォルトの名無しさん:2012/03/08(木) 15:41:49.69
それ要素がひとつのタプルだけど別にいいんじゃない?
830デフォルトの名無しさん:2012/03/08(木) 15:46:04.10
831デフォルトの名無しさん:2012/03/08(木) 18:19:12.05
>>814-815
今更だが
'ffab05ff'.decode('hex')
832デフォルトの名無しさん:2012/03/08(木) 19:06:45.44
>>831
ありがとう。
833デフォルトの名無しさん:2012/03/08(木) 20:30:35.18
あるリストから、条件にマッチする最初の要素を取り出すのって、Pythonではどうかきますか。
Rubyなら list.find {|x| x == foobar } と書くやつです。
[ x for x in list if x == foobar ][0] かなとおもったけど、マッチしない時に例外が。
834デフォルトの名無しさん:2012/03/08(木) 21:16:09.35
([ x for x in list if x == foobar ] + [None])[0]
835デフォルトの名無しさん:2012/03/08(木) 21:18:47.75
try ... exceptで振り分けて処理するんじゃないかな
空リストだったらIndexErrorが上がってくる
836デフォルトの名無しさん:2012/03/08(木) 21:20:58.82
try except書くくらいならwhile break書いたほうが良くね
837デフォルトの名無しさん:2012/03/08(木) 21:21:43.51
それはないか
838デフォルトの名無しさん:2012/03/08(木) 21:53:44.53
>>834-836
いい方法なさそうですね。
for x in list:
 if x == foobar:
  break
else:
 x = None
いけてねー!
もっといい方法を求む!
839デフォルトの名無しさん:2012/03/08(木) 22:03:15.99
例外起きたらそこでこかしたままでええんちゃうん?
条件に合わないもん突っ込んどった方が悪いんちゃうん?
840デフォルトの名無しさん:2012/03/08(木) 22:11:47.66
要素が整数や文字列で、リストに同値が含まれているか調べるだけなら
>>> 3 in [1,2,3]
True
>>> 4 in [1,2,3]
False
841デフォルトの名無しさん:2012/03/08(木) 22:13:24.09
>>838
834で何が不満なの?
842デフォルトの名無しさん:2012/03/08(木) 23:15:04.37
next((x for x in list if x == foobar), None)
843デフォルトの名無しさん:2012/03/08(木) 23:20:32.24
そんな関数があったのか
844デフォルトの名無しさん:2012/03/09(金) 00:43:48.27
わかりやすくって怒られるぞ
845デフォルトの名無しさん:2012/03/09(金) 06:53:30.64
素直に例外出すべき事例だろ
846デフォルトの名無しさん:2012/03/09(金) 07:12:53.72
forでぶん回してbreakで抜ける。これで勝つる
forにelseをつけるのはインデントミスくさくていけてない
847デフォルトの名無しさん:2012/03/09(金) 15:06:52.63
789ですが解決しました

class Tc:
def __int__(self, textctrl1, textctrl2, textctrl3):
self.tc1 = textctrl1
self.tc2 = textctrl2
self.tc3 = textctrl3

こんな感じでべつにクラス作ってprint self.tc3.GetValue()したらできた。
しかし強引な気もする
848デフォルトの名無しさん:2012/03/09(金) 15:19:06.54
それ、解決っていうのか?
849デフォルトの名無しさん:2012/03/09(金) 15:32:53.92
というか>>790で回答されてるじゃないか

x tc3 = wx.TextCtrl(panel, -1)
o self.tc3 = wc.TextCtrl(panel, -1)

インスタンスへの参照をselfで指定してないからエラーになる
850デフォルトの名無しさん:2012/03/09(金) 19:32:10.49
個人的にはPythonから勉強したいのですが日本ではRubyのほうが仕事があるような感じなので
どちらを選択していいのか迷ってます
ここの先輩方は何故Pythonを選んだのでしょうか?
851デフォルトの名無しさん:2012/03/09(金) 19:34:28.74
>>850
世界に目を向けているから。
852デフォルトの名無しさん:2012/03/09(金) 19:38:30.69
>>850
Rubyのほうに枯れているライブラリがない場合に(略
853デフォルトの名無しさん:2012/03/09(金) 23:33:48.05
>>850
西洋かぶれ
854デフォルトの名無しさん:2012/03/09(金) 23:48:32.88
goooooooooooogleには巻かれろが家訓なので
855デフォルトの名無しさん:2012/03/10(土) 03:42:51.12
>>850
モンティパイソンが好きだから
856デフォルトの名無しさん:2012/03/10(土) 04:15:17.44
Rubyは初めてソースを見たときに気持ち悪くなったから使っていない
857デフォルトの名無しさん:2012/03/10(土) 05:44:13.56
「みんなのPython」のタプルの説明のページ、例として挙げられているのが、
IPとドメインネームの対応表で、IPアドレスがタプルにして、それをキーにした
辞書としているんですけど、これって文字列でも実現できますよね。
わざわざタプルの例にするメリットなんなのでしょう?
読んだけど説明がありませんでした。
858デフォルトの名無しさん:2012/03/10(土) 06:20:23.34
IPアドレスだと意味ない。
IPアドレスとポートのタプルみたいなのだと意味あるかもしれん。
859デフォルトの名無しさん:2012/03/10(土) 07:10:00.06
バーチャルホストか何かの話?だとしても辻褄が合わないので見てみた
初版64ページ

>>> ipmap = { (0, 1, 2, 3):"host.name.com",
...           (0, 2, 1, 3):"some.dname.com" }

朝からごめん
860デフォルトの名無しさん:2012/03/10(土) 11:55:36.78
>>857
タプルをキーに出来るけど
リストはキーに出来ないとか
そういう説明なら良かったのにね
861デフォルトの名無しさん:2012/03/10(土) 18:51:33.13
IPアドレスってタプルで表現する意味ないよね
ダメな本だなあ
862デフォルトの名無しさん:2012/03/10(土) 19:46:58.74
CUIのアプリケーションを作ろうとしています。
cmd や sys を使えば、「keyword+return」 で処理が出来ますが、
「半角英数一文字」のみで処理をする方法は有るのでしょうか?
863デフォルトの名無しさん:2012/03/10(土) 20:09:52.30
>>862
cursesのgetchでいけると思う
864デフォルトの名無しさん:2012/03/10(土) 20:12:04.54
865デフォルトの名無しさん:2012/03/10(土) 20:23:15.53
Windows環境で、以下のスクリプトを実行するとエラーが発生します。
回避方法をご教授いただけないでしょうか。

path = 'c:\' + path


以下、エラーの内容

D:\test>python file_delete.py
File "file_delete.py", line 34
path = 'c:\' + path
^
SyntaxError: EOL while scanning string literal

866デフォルトの名無しさん:2012/03/10(土) 20:31:43.59
>>865
'c:\'
'c:\\'
867デフォルトの名無しさん:2012/03/10(土) 20:36:19.28
>>863
ありがとうございます!出来ました!

>>864
ありがとうございます。
実はマカーでして、OSX/Ubuntu辺りをターゲットにしていました。
書かずにスミマセンorz
868デフォルトの名無しさん:2012/03/10(土) 21:19:56.12
base, query_str = url_string.split('?')
とすると、url_string に '?' がふくまれているときは動きますが、
ふくまれていないときはエラーになります。
これを避けるには
lst = url_string.split('?')
if len(lst) == 1:
 base = lst[0]
 query_str = None
else:
 base, query_str = lst
とする必要がありますが、いくらなんでも面倒です。
もっと簡単にする方法はありませんか。
869デフォルトの名無しさん:2012/03/10(土) 21:46:54.35
base, query = url.split('?', 1) if '?' in url else (url, None)
870デフォルトの名無しさん:2012/03/10(土) 22:26:04.69
>>> url_string = 'http://localhost?q=sample'
>>> re.findall('\?(.*)', url_string)
['q=sample']
>>> re.findall('\?(.*)', 'http://localhost/')
[]
871デフォルトの名無しさん:2012/03/10(土) 22:27:57.29
Python3.xでCGIで動かせるCMSでこのソースコードは読んで勉強しとけっていうお勧めのありますか?
872デフォルトの名無しさん:2012/03/11(日) 00:46:01.65
関数の引数として受け取った値が、リストなら をするという処理を書きたいのですが、
変数がリストかどうかをチェックするにはどうすればよいでしょうか?
873デフォルトの名無しさん:2012/03/11(日) 00:51:35.76
isinstance(hoge, list)
874デフォルトの名無しさん:2012/03/11(日) 10:56:01.39
質問させてください。
python 3の勉強を始めたものです。

現在、クラスを実装し、そのインスタンス変数をカプセル化する方法を調べています。
とりあえず、デコレータ(@...)を使う方法と組み込み関数(propery(...))を使う方法があるとわかったのですが、python 3ではどちらが推奨なのでしょうか?
また、そのgetter、setterを作りたいのですが、インスタンス変数が"__abc"の場合、名前はどのようにすべきでしょうか?
単純に"abc"なのか、get(or set)abcなのか、それ以外の規則があるのかよくわかりません。

よろしくお願いいたします。
875デフォルトの名無しさん:2012/03/11(日) 13:47:12.13
dat=[{'dic': {'data1': 1, 'data2': {'data4': 'str1', 'data3': 4}}},
{'dic': {'data1': 2, 'data2': {'data4': 'str2', 'data3': 5}}},
{'dic': {'data1': 3, 'data2': {'data4': 'str3', 'data3': 6}}}]

このようなリストを"data4"でソートする方法を教えて下さい
よろしくお願いします
876デフォルトの名無しさん:2012/03/11(日) 15:29:19.25
>>785
2chにスレありますがな
ノベルゲームエンジンRen'Pyで日本人向けゲームを
http://toro.2ch.net/test/read.cgi/gamedev/1286533306/
877デフォルトの名無しさん:2012/03/11(日) 15:37:32.44
>>865
path = r'c:\' + path
878デフォルトの名無しさん:2012/03/11(日) 15:52:05.74
>>875
datの形式自体を見直した方がいいと思う
879デフォルトの名無しさん:2012/03/11(日) 15:59:13.65
>>878
ちょっとサンプルがダメすぎましたね Dict in Dict ならなんでもいいんですがちょっとひねりすぎました
実際にはJSONなのでもうちょっと複雑です
880デフォルトの名無しさん:2012/03/11(日) 16:28:16.46
>>875
print("before")
for x in dat:
print(x['dic'])
print("----------------------=")
dat.sort(key=lambda x:x['dic']['data2']['data4'], reverse=True)
print("after")
for x in dat:
print(x['dic'])
881デフォルトの名無しさん:2012/03/11(日) 16:31:30.08
>>877
だうと。
882デフォルトの名無しさん:2012/03/11(日) 16:31:35.99
>>880
おおお ありがとうございます!
883デフォルトの名無しさん:2012/03/12(月) 01:54:47.91
path = os.path.join('c:/', path)
884デフォルトの名無しさん:2012/03/12(月) 16:31:12.89
これから勉強する場合pythonってまだ2.7使ったほうがいいものですか?
885デフォルトの名無しさん:2012/03/12(月) 19:15:12.67
a)次の式を因数分解せよ。
1) x**3 + 1
2) 2 * x**3 - 16
3) 27 * x**4 - x
4) x**6 - y**6
886デフォルトの名無しさん:2012/03/12(月) 19:15:49.16
>>884
やりたいことによると思います。
自分の使いたいライブラリや改造したいソフトウェアが2系なら、2系しか無いでしょう。
勉強したいだけ、もしくはフルスクラッチで何かつくるなら、3系がお勧めです。
887デフォルトの名無しさん:2012/03/12(月) 19:16:43.50
b) a = √8 + 1 の小数部分を b とするとき
a**3 + 3 * a * b + b**2
の値を求めよ。
888デフォルトの名無しさん:2012/03/12(月) 19:18:29.79
学校の宿題をここに書くなよw
889デフォルトの名無しさん:2012/03/12(月) 19:19:15.56
c) x を変数とする関数を f(x) = (a + 1)**2 - 2 * x + 1 とする。
0 <= x <= 1 の範囲でこの関数の最小値は a の関数で表わされる。
これを m(a) とする。
m(a) を求めよ。
890デフォルトの名無しさん:2012/03/12(月) 19:20:34.51
宿題じゃなくて理解確認テストです。
numpy とか sympy とか使ってサクサクっと解いて見てください。
891デフォルトの名無しさん:2012/03/12(月) 19:39:54.81
課題は自分で解きましょう
892デフォルトの名無しさん:2012/03/12(月) 21:02:55.10
実行結果だけ示せばいいってことだよな?
893デフォルトの名無しさん:2012/03/12(月) 21:11:08.08
>>886
とりあえず3.2から勉強したいと思いますが3.3が出るらしいので3.3が出るまで待ちます
894デフォルトの名無しさん:2012/03/13(火) 09:34:41.21
andoroid向けはSL4Aぐらいしかないですか
895デフォルトの名無しさん:2012/03/13(火) 09:49:36.49
>>893
さすがにその必要はないと思う・・・
先延ばししたい言い訳なら留めないけど・・・
896デフォルトの名無しさん:2012/03/13(火) 16:57:58.54
何か3.0〜3.2と3.3はまた仕様が変わるからって言われたんですよ
897デフォルトの名無しさん:2012/03/13(火) 18:43:44.80
>>896
3も結構ドラスティックに変わってるから4からやるといいんじゃないかな
898デフォルトの名無しさん:2012/03/13(火) 19:13:45.25
でも4もまた色々変わって5になると思うし、
4になってからすぐにはじめるというのもどうかな?とは思う。

こっからは真面目な話なんですけど、
zshrcには以下の設定をしています。
alias grep='grep --color'

vim上で
:!grep aaa a.txt
とした時に検索結果に色付けをしてくれません。
これはvim側の問題でしょうか?それともzsh側の問題でしょうか?
899デフォルトの名無しさん:2012/03/13(火) 20:14:46.02
全然真面目じゃない件。
900デフォルトの名無しさん:2012/03/13(火) 21:25:26.41
Python2.6です
携帯で自分の書いた絵を写真に取ったんだけど
斜めに取れてしまう。
アプリとかで撮った写真をきっちり正面から取ったように
自動で加工してくれるっていうのがあるってきくけど
スマホ持ってない。
それでPC用のを自作しようと思ったんだけど
PILに画像の自由変形のコマンドがなさげなんだけど
どうしたらいいんだろうか?
901900:2012/03/13(火) 21:32:05.03
自分的には
1、撮影した紙の縦横の比率を入力
2、写真上の紙の4隅を指定
3、4隅を1で指定した比率で変形
とか以外と簡単じゃん?とか思ったけど
持ってる本には.rotateと.resizeぐらいしか
関係ありそうなものは無かった
902デフォルトの名無しさん:2012/03/13(火) 22:07:52.71
gimp python
903900:2012/03/13(火) 22:11:14.46
あーgimpをpythonコマンドで
動かす奴かぁ・・・
盲点だったわ・・・
904デフォルトの名無しさん:2012/03/13(火) 22:15:05.66
905デフォルトの名無しさん:2012/03/14(水) 21:15:26.39
【政治】知られざる危険性…近く閣議決定されるとの情報がある亡国の法案=“人権救済機関法案” 自民・稲田議員が警告★3
http://uni.2ch.net/test/read.cgi/newsplus/1331711675/22

電話番号、アドレスの詳細

電話は勇気ないという人でも、せめてメールくらいは送ってみて
◆◆◆◆◆◆拡散に 御協力 お願いします◆◆◆◆◆◆
人権侵害救済法(人権委員会設置法案)に反対する声明を、
一般の方々が電話及びFAX抗議してもらうためのチラシを作成(訂正)しました。

人権委員会設置法案(人権侵害救済法案)が3月中下旬に閣議決定されるかも知れません。
1通でも多く反対メール・電話・FAXをよろしくお願い致します。

3枚組みで、1・2枚目は人権法案の危険性を訴える内容の例文。
電話で読み上げるなり、そのままFAX送信できるようにまとめています。
また各自が意見を追加できるように空欄を入れました。
(FAX送付のために文字を大きくしました)
3枚目は、政党や主要閣僚の電話・FAX連絡先を一覧にしています。

特に、保守派とされる自見庄三郎 (郵政大臣;国民新党)、
松原 仁(国家公安委員会委員長)へ集中してFAXお願いいたします。
さらに連立与党の国民新党の亀井静香代表宛にもお願いいたします。


あまりに危険な人権侵害救済法案・法務省がQA

■久々の本気でおねがいします2!!人権擁護法案!! ひめのブログ
http://bbs.unionbbs.org/test/read.cgi/news/1323182085/37
906デフォルトの名無しさん:2012/03/14(水) 22:58:46.79
C, Java, C#使いです。
変数に型が明示できない言語を始めて勉強しているのですが、利点がいまいちわかりません。
pythonの利点がわかる解説やソースコードを紹介していただけないでしょうか?

よろしくお願いいたします。
907デフォルトの名無しさん:2012/03/14(水) 23:29:30.57
すみません。
連続で質問させてください。
今、戻り値を3個返す関数を作っています。
その関数の3個の戻り値を別々のリストに入れたいのですが、どうすれば短くかけるでしょうか?

今は、
a, b, c = hoge()
a_list.append(a)
b_list.append(b)
c_list.append(c)
みたいな書き方になっています。

良い方法があれば教えてください。

よろしくお願いいたします。
908デフォルトの名無しさん:2012/03/14(水) 23:39:39.56
list(hoge())
909デフォルトの名無しさん:2012/03/14(水) 23:54:35.59
for f,v in zip([a_list,b_list,c_list],list(hoge())): f.append(v)
いまいちだな
910デフォルトの名無しさん:2012/03/14(水) 23:58:45.96
for ch in ['a', 'b', 'c']: exec "%s_list.append(%s)" % (ch, ch)

説教が来ても文句は言えないな
911デフォルトの名無しさん:2012/03/15(木) 00:06:09.47
map(list.append, (a_list, b_list, c_list), hoge())
912デフォルトの名無しさん:2012/03/15(木) 00:15:17.40
>>906
「T型の要素を集めたリストと、T型の値と、『T型の要素を集めたリストと、T型の値の2つを引数にとり、T型の要素を集めたリストを戻す関数』の3つを引数にとり、T型の要素を集めたリストを戻す関数…ただしT型とは呼び出し側が自由に指定出来るものとする」

…なんてのを明示したくないなあ
Pythonを始めとして最近のスクリプト言語は
関数自体を引数に渡したりとか日常的にやるから型を明示すると複雑になりがち
実際は自分のスコープで気にする型情報なんてそのごくごく一部なわけで…
静的型言語と呼ばれるものでも、型推論などの形で
明示せずに済む方法があったりするよ
913デフォルトの名無しさん:2012/03/15(木) 00:22:01.75
>>907
職場だと、そのままにしておかないと不評をくらわないか
914デフォルトの名無しさん:2012/03/15(木) 01:16:08.33
>>911
これはいいものをみた
915デフォルトの名無しさん:2012/03/15(木) 10:56:04.25
>>914
問題は、b_listが実はlistを継承した俺様list型オブジェクトで、
appendがオーバーライドされてた時にハマる、ってことだが。
916デフォルトの名無しさん:2012/03/15(木) 10:57:41.41
追加。
Python3ではmapはリストではなくイテレータオブジェクトを返すから、
mapしただけでは中身が実行されない。
917デフォルトの名無しさん:2012/03/15(木) 14:51:21.52
918デフォルトの名無しさん:2012/03/15(木) 16:18:29.97
ありがとう
英語わからないせいでjavascriptしか勉強出来なかったんだ
がんばる
919デフォルトの名無しさん:2012/03/15(木) 16:20:34.16
ありがとうを撤回する
920デフォルトの名無しさん:2012/03/15(木) 20:18:40.16
テキストエディタは何がおすすめ?
eclipse見たいな統合開発環境じゃない、普通のエディタがいいです
IDLEじゃないのがいいです

情報おねがいいたします
921デフォルトの名無しさん:2012/03/15(木) 21:26:19.30
vim
922デフォルトの名無しさん:2012/03/15(木) 21:29:12.26
vimにもう一票 gVimにしとけ
923デフォルトの名無しさん:2012/03/15(木) 21:46:33.32
大昔に、gVimをwindowsで使ってみたけど、インデントに違和感があった記憶がある
924デフォルトの名無しさん:2012/03/15(木) 22:20:08.73
秀丸

それはテキストエディタの原点である。
かつて世界を震撼させたWindows95のような存在である。
秀丸こそが真のテキストエディタであり
その王者の貫禄を見せ付け今も人気のテキストエディタである。
925デフォルトの名無しさん:2012/03/15(木) 22:43:23.49
>>924
でも、お高いんでしょ?
926デフォルトの名無しさん:2012/03/16(金) 00:01:40.95
ひでまるおってちゃんと税金払ってたのかな?>シェアウェア収入
927デフォルトの名無しさん:2012/03/16(金) 00:05:49.45
禿丸かぁ。覚えとこ
928デフォルトの名無しさん:2012/03/16(金) 00:19:58.77
NotePad++
929デフォルトの名無しさん:2012/03/16(金) 00:44:24.42
Emacsの使えない自分は
vim ? SPE or PyScripter ? Eclipse&PyDev
で使い分けてる
930デフォルトの名無しさん:2012/03/16(金) 01:11:28.67
IDEとかエディタとか色々調べるのが面倒だから、vim一択やな(´・ω・`)
931デフォルトの名無しさん:2012/03/16(金) 01:22:31.56
sublime
932デフォルトの名無しさん:2012/03/16(金) 03:28:24.73
SL4Aの標準エディタ
地味に使いやすい
933デフォルトの名無しさん:2012/03/16(金) 19:17:01.34
vimで=の自動整形がうまくいかないんだけど
vim派の人はどうしてるのん
934デフォルトの名無しさん:2012/03/16(金) 19:38:44.22
>>933
そもそも=コマンドで自動整形出来るのって本来はC言語とLispだけじゃ?
たまたまそれらの言語に準じた文法だと適用出来たりするだけで…

というか、インデントがブロックであるPythonで
あまり自動整形に任せたいと思ったことがないんだが
(変なインデントにされたらバグりかねんし)
どういうのを自動整形したいの?
935デフォルトの名無しさん:2012/03/16(金) 20:07:26.67
python3.2でcx_Freezeを使う時、このURL(http://tmlife.net/programming/python/cx_freeze-python-exe.html)の通りに、
setup.pyを組んで実行したのですが、
from cx_Freeze import setup,Executable
           ^
SyntaxError:invalid character in identifierとエラーが出てうまくいきません。

解決策を知っている方、教えてください。

936デフォルトの名無しさん:2012/03/16(金) 20:18:42.48
その一行ではなく他でエラー起こしてるんじゃない?
エラーメッセージと該当箇所を前後ふくめてそのまま貼ってみて
937デフォルトの名無しさん:2012/03/16(金) 20:26:55.09
>>933
tidy使ってる
938デフォルトの名無しさん:2012/03/16(金) 20:31:01.23
>>936
エラーメッセージです。
File "setup.py",line 5
from cx_Freeze import setup, Executable
            ^
SyntaxError:invalid character in identifier

^の位置はsの下です。

コード
# cording: utf-8
# cx_Freeze 用セットアップファイル

import sys
from cx_Freeze import setup, Executable
#セットアップ
base = None
sys.platform == 'win32' : base = 'Win32GUI'
# exe にしたい python ファイルを指定
exe = Executable(script = 'helloworld.py',
base = base)
# セットアップ
setup(name = 'sample',
version = '1.0',
description = 'converter',
executables = [exe])


939デフォルトの名無しさん:2012/03/16(金) 20:45:29.16
>>938
> from cx_Freeze import setup, Executable
全角空白が入ってるよ
940デフォルトの名無しさん:2012/03/16(金) 21:02:08.24
>>939
ありがとうございます。
今度は
File "setup.py", line 10
sys.platform == 'win32' : base = 'Win32GUI'
^
SyntaxError: invalid syntax
と出てきたのですが...

教えて頂きたいです。
941デフォルトの名無しさん:2012/03/16(金) 21:43:36.19
940です。
解決しました。
942デフォルトの名無しさん:2012/03/17(土) 01:07:26.24
算数の式の立て方レベルでつまずいている気がするのですが、教えてください。


アメリカでは、1ガロン当たりのマイル数で車の燃費を測ります。
しかし、メートル法では、100km当たりのリットル数で計算されるのが普通です。

1ガロン当たりのマイル数から100km当たりのリットル数に変換するconvert_mileageという関数を書いてください。


というものです。(オライリーの始めてのコンピュータサイエンス 2.10 練習問題)
どうかご教授ください。
943デフォルトの名無しさん:2012/03/17(土) 01:14:08.16
ただの単位変換だが
944デフォルトの名無しさん:2012/03/17(土) 01:20:44.82
>>942
1ガロンが何リットルか、1マイルが何キロメートルかは調べたの?
945デフォルトの名無しさん:2012/03/17(土) 01:23:23.29
>>943
それがわからない…!
946デフォルトの名無しさん:2012/03/17(土) 01:27:27.38
>>944
問題としてはこのままなのです。
ググったところ、1ガロンで3.7…リットル、1マイルで1.6…kmでした。
947デフォルトの名無しさん:2012/03/17(土) 01:36:47.22
日本だとどっちでもなくて、km/L だからねえ。
948デフォルトの名無しさん:2012/03/17(土) 01:37:37.77
>>942
それはさすがに小学校からやり直せとしか言えない。
まだ小学生だったらすまん。
949デフォルトの名無しさん:2012/03/17(土) 01:38:06.38
km/Lに変換することとは問題の難易度が変わるの?
950デフォルトの名無しさん:2012/03/17(土) 01:47:13.36
逆数になっているから、ただの単位変換ではないな。
悩むほどの問題じゃないとはおもうけど。
951デフォルトの名無しさん:2012/03/17(土) 02:17:04.74
>>949
なじみのない単位を、別のなじみのない単位に変換しても、
答が正しいかどうか常識で判断できないので、難易度が上がる。

K&Rでも、Hello world の次の例題は摂氏・華氏変換だし、
初心者スレとして悪くない題なんじゃないかとは思うが。
952デフォルトの名無しさん:2012/03/17(土) 02:36:21.08
そもそも1ガロン当たりのマイル数に馴染みがないからなあ
953デフォルトの名無しさん:2012/03/17(土) 02:58:23.04
>>942
課題は自分で解きましょう
954デフォルトの名無しさん:2012/03/17(土) 03:00:40.68
>>933
自分は、vimに元々入っている、python用のインデント設定ファイルを削除して、自分でインデントやるようにしています
なんか、間違った使い方の気もしますが、どうなんでしょ?
955デフォルトの名無しさん:2012/03/17(土) 03:52:36.57
>>947
そういうことではなくてですね。
956デフォルトの名無しさん:2012/03/17(土) 03:53:22.04
>>948
勉強をしてこなかったつけが回ったのだと思います。
957デフォルトの名無しさん:2012/03/17(土) 03:53:46.31
>>950
わかるなら教えてよう
958デフォルトの名無しさん:2012/03/17(土) 03:54:09.04
>>953
そこをなんとか!
959デフォルトの名無しさん:2012/03/17(土) 05:42:27.67
ガロンあたりのマイル数をxとすると
1ガロンで走行できる距離はxマイルである。
1マイルをaキロメートルとすると
1ガロンで走行できる距離はaxキロメートルになる。
次に1ガロンをbリットルとすると
bリットルで走行できる距離はaxキロメートルになる。
したがって1キロメートルの走行に必要なリットル数はb/ax、
100キロメートルの走行に必要なリットル数は100b/axとなる。
960デフォルトの名無しさん:2012/03/17(土) 11:39:13.11
知的障害者がわいてきたな
961デフォルトの名無しさん:2012/03/17(土) 13:42:56.80
http://www.google.com/search?q=(3.14mi%2Fgal)%5E-1+in+l%2Fkm
3.14のところにすきな数字をいれればOK
962デフォルトの名無しさん:2012/03/17(土) 13:46:44.00
http://www.google.com/search?q=(3.14mi%2Fgal)%5E-1+in+l%2F100km
修正。
100kmあたりだった。
963デフォルトの名無しさん:2012/03/17(土) 14:00:23.51
964デフォルトの名無しさん:2012/03/17(土) 15:35:06.64
>>959
目が覚めたら噛み砕きます!ありがとう!!
965デフォルトの名無しさん:2012/03/17(土) 15:35:29.71
>>962
ふむ…?
966デフォルトの名無しさん:2012/03/17(土) 15:36:02.28
>>963
なんだこれーーー!!!
いただくありがとう!
967デフォルトの名無しさん:2012/03/17(土) 16:46:12.33
>>962
リッター 1キロかい!
968デフォルトの名無しさん:2012/03/17(土) 23:53:42.12
ん?
戦車だとリッター200メートルとかだぞ。
969デフォルトの名無しさん:2012/03/18(日) 05:55:32.63
そのかわり、燃料タンクがアホみたいにデカい
970デフォルトの名無しさん:2012/03/18(日) 06:31:53.93
971デフォルトの名無しさん:2012/03/18(日) 13:02:59.26
python3.x系で書ける無料クラウドサービスってありませんか?
972デフォルトの名無しさん:2012/03/19(月) 23:13:40.62
['a', 'b', 'c']と['c', 'd', 'e']とがあって、重複しないものを選んで合体させたいんですが、
一番スマートな方法は何でしょうか。

cが重複するので['a', 'b', 'c', 'd', 'e'] になって欲しいです。
973デフォルトの名無しさん:2012/03/19(月) 23:21:49.58
>>> L1, L2 = ['a', 'b', 'c'], ['c', 'd', 'e']
>>> set(L1) | set(L2)
{'a', 'c', 'b', 'e', 'd'}
>>> list(set(L1) | set(L2))
['a', 'c', 'b', 'e', 'd']
974デフォルトの名無しさん:2012/03/19(月) 23:47:17.31
>>> u,i=numpy.unique1d([2,1,3]+[3,4,5], return_index=True)
>>> list(u[i.argsort()])
[2, 1, 3, 4, 5]
975デフォルトの名無しさん:2012/03/20(火) 02:24:21.83
2つのcsvファイルから、差分があるレコードを抽出するには、どう書けばいいですか?
csvモジュールを使って、リストとして読み込み、同一のレコードがあるかはindexで調べられたのですが、差分があるレコードの抽出方法がわからないです。

例:['Key1','Key2','val']でvalの値が違うレコードを抽出
976デフォルトの名無しさん:2012/03/20(火) 02:35:21.23
>>975
>>> [1,2,3]==[1,2,3]
True
>>> [1,2,3]==[10,20,3]
False
>>> (lambda x,y : x[2]==y[2])([1,2,3],[10,20,3])
True
977デフォルトの名無しさん:2012/03/20(火) 04:41:21.31
>>140 >>737

Django が 1.5 で Python 3 を実験的にサポートする予定。
https://www.djangoproject.com/weblog/2012/mar/13/py3k/
978デフォルトの名無しさん:2012/03/20(火) 10:58:17.32
>>> L1, L2 = ['a', 'b', 'c'], ['c', 'd', 'e']
>>> set(L1).union(L2)
set(['a', 'c', 'b', 'e', 'd'])
979デフォルトの名無しさん:2012/03/20(火) 12:05:50.71
text0 = "test0"
text1 = "test1"
text2 = "test2"

のとき、
for i in range(3):
print textのi番目

のようにiを動かすだけで、全部のtext*をモニタに表示するにはどうすれば
よいのでしょうか?宜しくお願いしますm(_ _)m
980デフォルトの名無しさん:2012/03/20(火) 12:24:55.02
特別な理由がなければ

textlist = ["test0", "test1", "test2"]
for i in range(3): print textlist[i]

がおすすめ
981デフォルトの名無しさん:2012/03/20(火) 12:25:44.04
訂正
for text in textlist: print text
982デフォルトの名無しさん:2012/03/20(火) 12:33:57.40
>>> text0 = "test0"
>>> text1 = "test1"
>>> text2 = "test2"
>>> for t in zip(text0,text1,text2):
... print(t[0],t[1],t[2])
...
('t', 't', 't')
('e', 'e', 'e')
('s', 's', 's')
('t', 't', 't')
('0', '1', '2')
983デフォルトの名無しさん:2012/03/20(火) 12:34:46.26
>>> for t in zip(text0,text1,text2):
... print(t)
でもよかったな。
984979:2012/03/20(火) 12:48:51.72
>>983
教えてくださって、ありがとうございます。
ただ、そのやり方では100個のファイルfile001.gif〜file100.gifを
を読み込む場合、全てfile001からfile100まで登録しないと
駄目なような気がします。for文で一括して登録する方法は
無いのでしょうか?


985デフォルトの名無しさん
import glob
fnames = glob.glob("./imgs/file*.gif")

fnames = ["file{:03}.gif".format(i) for i in range(1, 101)]