2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2011/11/24(木) 15:22:07.02
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は 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
>>21
http://livedoor.blogimg.jp/kinisoku/imgs/0/b/0b4cfd5d.jpg

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ってのは何かの略なんでしょうか?

41 :40: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そのものじゃね

53 :47: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
2.6の翻訳もあります
http://www.python.jp/doc/release/reference/compound_stmts.html#for

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__() シリーズを作るべきか否か
気をつけましょう、ってことで。

75 :40: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
ん?
至極真っ当な動作だと思うけど…

85 :40: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
ttp://codepad.org/867hG83d

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)
の間違い

122 :109: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
安定性は3つ目の数字っすよ
http://docs.python.org/py3k/faq/general.html#how-stable-is-python

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の部分をファイル名にコピーする(xxx@yyy.txtなど)ようなアルゴリズムを書きたいのですが、
全く検討もつきません。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をxxx@yyy.txtに変える場合はどうすればいいですか?
初心者で上の文がよくわからないので・・・

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つの例はまったく同じことをやっているだけ。

44 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)