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


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

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



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

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

前スレ
くだすれPython(超初心者用) その31
echo.2ch.net/test/read.cgi/tech/1476246889/
関連スレ
Pythonのお勉強 Part52
echo.2ch.net/test/read.cgi/tech/1483756857/
◆関連リンク Python の Home Page
ttp://www.python.org/
◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
ttp://dpaste.com/
ttps://try.jupyter.org/
◆まとめwiki
ttp://python.rdy.jp/

ネットにはデマ情報がいっぱい残ってるので正しい情報をメモ
cmd で UTF-8 使える方法 (chcp 65001 について) ttp://nazochu.blogspot.jp/2011/08/blog-post_26.html
mintty ttp://dogmap.jp/2011/11/15/mintty/
mintty ttp://tanakh.jp/posts/2011-11-15-windows-terminal.html

色々紆余曲折あったけど Git インスコして GitBash 使うのが一番楽っぽい
https://git-for-windows.github.io/

855 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 20:25:35.68 ID:is7goi9i.net]
>>841
これくらいだったら分かりにくくならないかと思ったけどやっぱり分かりづらいか

>>842
なるほど
そっちの方がシンプルでいいな

856 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 20:42:07.88 ID:SRILy9AU.net]
無限ループでwhile Trueを書いていいのはゲームプログラミングぐらいです
このように書くべきです
def choiceInput(prompt, choices):
 print(prompt)
 choice = input('>')
 while choice not in choices:
  print('入力エラー')
  print(prompt)
  choice = input('>')

whileの横に条件式を書くことで第三者が見てもわかりやすいリーダブルコードになります

857 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 20:45:06.83 ID:by7KsFNN.net]
シンプルだけど一瞬え?ってなる

858 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 21:25:30.72 ID:4a5+BdOt.net]
>>844
こっちはちょっと冗長な気がするけどdo-whileとかdo-untilがないから致し方ないね

859 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 21:54:06.09 ID:1b+nwuRS.net]
>>844
>無限ループでwhile Trueを書いていいのはゲームプログラミングぐらいです
どういう理由でそうなんですか?

860 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 21:56:06.37 ID:8d4DwhQ0.net]
def choiceInput(prompt, choices):
 choice = -1
 while choice not in choices:
  print(prompt)
  choice = input('>')
if choice not in choices:
   print('入力エラー')

こうじゃいかんの?

861 名前:デフォルトの名無しさん [2017/03/17(金) 23:04:53.49 ID:scRdPl5f.net]
書いてあるやん

862 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 23:05:23.72 ID:woddruPm.net]
>>844
同じ内容を2回書くのは修正があったときに修正漏れしそうで嫌

863 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 23:19:30.39 ID:AOLqOhzC.net]
def choiceInput(prompt, choices):
  choice = None
  while choice not in choices:
    if choice is not None:
      print('入力エラー')
    print(prompt)
    choice = input('>')
  return choice



864 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 10:25:09.78 ID:nckgi/Sy.net]
>>850
同じ内容を関数にまとめるのは常識

865 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 10:27:37.34 ID:iWX2QE0o.net]
>>851
これが一番しっくりきた

866 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 11:33:37.63 ID:1jN6Nl4i.net]
>>852
それは >>844 に言って欲しいし
あの程度の奴でいちいち関数化するのもどうかと思う

867 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 11:59:15.66 ID:njmdr4yw.net]
>>846
横だけどご存知なら教えて下さい
do〜系の処理系を持たないのはpythonのポリシーか何かですか?

868 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 12:55:48.59 ID:1jN6Nl4i.net]
>>855
Do
 ...
Loop
って言うのが構文的に難しいからでしょ

869 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 14:20:38.66 ID:IfcuZKcb.net]
>>855
https://mail.python.org/pipermail/python-ideas/2013-June/021610.html
Guidoが「馬鹿にはあまりに高度すぎる機能だから拒否する」と述べたので入っていない

プログラミング言語のデザインにポリシーなんて高度なものはなく、基本的に開発者の腹具合だけである
思想というほど成熟したものでもない
俺は嫌いだと言われたら入らない

870 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 14:31:30.97 ID:IfcuZKcb.net]
そうじゃない言語はどれかというとC++とかJavaとか
あれらは委員会による設計をしている
(Javaは怪しいが)独裁者に振り回されることは減る
一方で自分の提案を通そうとするための馴れ合い
仕様の肥大化、策定の長期化を招く

871 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 18:40:35.06 ID:vEldA4mj.net]
python3のクラスで
import unittest
class TestCap(unittest.TestCase):
def test_one_word(self):
text = 'Duck'
self.assertEqual(text, 'Duck')

の場合self.assertEqualはsuper()で呼び出しちゃダメなの?
そもそもどうしてselfが出てくるの?

872 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 20:20:43.59 ID:IfcuZKcb.net]
宗教的な理由のため

873 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 21:48:13.72 ID:G3oyudm3.net]
まあOO自体が一つの宗教
誰が書いても同じようになるというPythonの売りが
OOで見事に消し潰されているのは罪深いことだ



874 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 22:02:42.41 ID:vEldA4mj.net]
つまりどういうことだ

875 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 22:27:57.82 ID:NEZ4wluv.net]
>>862
つまり、そんなこと気にすんなってこと
test ができればオケ

876 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 09:28:19.12 ID:CiiadJVM.net]
>>856
>>857
ありがとう、そうむずかしい構文とは思わなくも思惑は思惑だから仕方ない

>>857
Ritchieにも聞かせたい言葉だな

877 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 10:28:59.82 ID:IinMJCLx.net]
>>864
Python の構文は('_' は空白のつもりね)
1: aaaa
2: __bbbb
3: __cccc
4: dddd
となっていたら 1〜3 をブロックと認識するからブロックの終端の記述がない
なので Do〜While みたいに終端に条件を書かないといけない構文は難しいって話
他の言語は終端があるからそう言う問題は発生しない

878 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 12:32:09.54 ID:xRIvmzBZ.net]
"2017/03/19"みたいな日付とその日の値段が記録されたcsvをパースしてmatplotlibでグラフにしたいんだけど
日付の部分をstrじゃなくて時間の軸として扱うにはどうすればいい?

879 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 12:42:04.00 ID:LWm6dPWw.net]
>>866
strからdatetimeに

880 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 12:59:35.56 ID:xRIvmzBZ.net]
>>867
datetimeのオブジェクトならそのままx軸につっこめる?

881 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 13:13:33.92 ID:LWm6dPWw.net]
>>868
できる

882 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 13:27:30.74 ID:x ]
[ここ壊れてます]

883 名前:RIvmzBZ.net mailto: >>869
ありがとう、strptimeメソッドを使えば文字列から変換できるのね
[]
[ここ壊れてます]



884 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 14:27:32.69 ID:zGHcaEct.net]
tzに注意

885 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 22:28:25.85 ID:Lj5IhMr8.net]
>>865
if-elseと同じじゃない?

886 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 23:52:17.84 ID:W8FwC9AB.net]
print(' '.join(map(str, sorted(set(tmp)))))
#tmp = [3, 4, 2, 1,...N]
#重複削除、並び替え、文字列に変更、つなげて出力


上のようなコードがあるとして、
()のネストはどの位までが許容範囲ですか?

887 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 00:02:48.06 ID:G9+XvfW+.net]
括弧2つまで
toolz.functoolzのpipeとか使う

888 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 00:05:54.26 ID:sXp84j6l.net]
>>873
人それぞれ、ただスタイルガイドには一行は79文字までというのはあるから長すぎるとアウト

889 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 00:14:08.40 ID:3ZZI/KAX.net]
()の数を減らしつつ変数も無いの良いですね!
標準ライブラリとかでも同じ事可能ですか?

890 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 00:26:32.61 ID:G9+XvfW+.net]
>>876
pipeのこと? 自分でpipeメソッドとかpipeオペレータみたいの作ればできるよ
toolz.functoolzのpipeのソース
toolz.readthedocs.io/en/latest/_modules/toolz/functoolz.html#pipe

>>873のコードはこんな感じに
pipe(tmp, set, sorted, partial(map, str), ' '.join, print)

891 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 08:41:28.66 ID:A6CX4sNJ.net]
A= 1:a 2:b 3:c 1:d
B= 1:e 2:f
C= 1:a:e 2:b:f 3:c 1:d:e

Aの数字部分をBの数字で検索して
該当する数字があったらBのアルファベットをAに追加して
Cのような結果を得たいのですが
Aの数字が重複していて辞書が使えなくて
どうすればいいのかわかりません。
ご指導よろしくお願いします。
python2.7です。

892 名前:デフォルトの名無しさん [2017/03/20(月) 10:20:35.47 ID:Ia6BH4Hf.net]
ideone.com/G8bzYg

893 名前:854 mailto:sage [2017/03/20(月) 10:42:07.11 ID:nRwuUvF6.net]
>>865
そうか、インデントに意味ある言語でしたっけ
ブロック構造の明示って結構悩ましいですね
重ねてありがとう



894 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 11:01:45.40 ID:6RAbChbA.net]
>>872
else は else ブロックの開始だから終端ではないでしょ

>>880
やってやれなくはないと思うけど見易さとの両立は簡単じゃないと思う

895 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 13:35:45.83 ID:4V6fNJEd.net]
>>878
Aをいっこずつの辞書たちで作ってマージ

896 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 17:16:42.51 ID:l4MXbYf5.net]
>>878
https://gist.github.com/anonymous/c6225d9299726b47ae4e03189ad8ad0f
一応動くものはできたけどけっこう面倒くさいな
python2.7.13で動作確認

897 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 17:22:42.32 ID:c+tYojiZ.net]
素直に改行した方が見やすいと思う

print(' '.join(
  map(str, sorted(
    set(tmp)))))

898 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 17:27:48.11 ID:G9+XvfW+.net]
>>881
>else は else ブロックの開始だから終端ではないでしょ

do-untilにしてuntilブロックの開始として認識しても同じことじゃない?
untilはその後にインデントされたブロックを受け取らないっていうルールを課せばいいだけで
インデント記法の言語だからってdo-while系の実装が他言語より難しいってのは理解できない

899 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 17:43:29.84 ID:XdgtrFwn.net]
>>878
codepad.org/83uNtpXa

900 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 18:33:03.42 ID:LcNjV7jZ.net]
>>885
いや、だからできないって話じゃなくて
> untilはその後にインデントされたブロックを受け取らないっていうルールを課せばいいだけ
と言うような特殊ルールが必要でしょって話
実際の見た目も...
1: do
2: __aaaa
3: __bbbb
4: until ...
5: while ...
6: __cccc
7: __dddd
8: if ...
9: __eeee
人によるんだろうけど俺には6行目が until ブロックの始まりのように見えてしまう

901 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 18:35:52.50 ID:sXp84j6l.net]
まあGuidoは心の中で普通のwhileで十分やろとか思ってそうだな

902 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 18:58:19.86 ID:MXp+WHcu.net]
1: do
2: __aaaa
3: __bbbb
4: __until ...

なら、そう不自然でもないでしょ。関数のdef~returnと似た感じで。
まあ必要だとは思わんが。

903 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 19:03:55.76 ID:sXp84j6l.net]
untilがブロックの中にあるのはキモすぎるなと、主観だけど



904 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 19:10:07.12 ID:MXp+WHcu.net]
じゃあキーワードを breakif にするとか。

905 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 19:57:03.67 ID:LcNjV7jZ.net]
>>891
それなら
while True:
__aaaa
__if condition:
____break
で充分なような気がする

906 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 20:18:16.81 ID:A6CX4sNJ.net]
>>882 >>883 >>886
みなさん
ありがとうございます!
勉強しながらトライしてみます。

907 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 20:38:40.38 ID:MXp+WHcu.net]
>>892
だから、それ必要ないってポリシーなんでしょ。構文的に難しいって理由じゃなくて。

908 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 20:42:18.91 ID:G9+XvfW+.net]
>>887
インデントされたブロックを受け取らない文なんてPython書いてればいくらでも使うじゃん 特殊じゃないよ
それにuntilの下に必ず空行入れるから6行目がuntilブロックの始まりに見えるなんてこともまずないでしょ

俺は>>889のほうが不自然に感じるかな
for-elseやif-elseを考えるとuntilだけブロック内ってなんか違う気がする

909 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 20:57:25.03 ID:kRRsPMR+.net]
プログラムの先頭でimportしたモジュールを使うクラスをほかのプログラムから呼ぶ時って
呼び出す側のプログラムでもimportしなきゃならないの?

910 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 21:09:14.26 ID:6EO7QiL7.net]
試せよと言いたいが結論から言えばimportしなくていい

911 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 21:09:25.37 ID:LcNjV7jZ.net]
>>895
> インデントされたブロックを受け取らない文なんてPython書いてればいくらでも使うじゃん 特殊じゃないよ
具体的によろしく

912 名前:854 mailto:sage [2017/03/20(月) 21:10:05.29 ID:nRwuUvF6.net]
>>883
w(゚∀゚)
殿下は永遠だ

913 名前:854 mailto:sage [2017/03/20(月) 21:15:18.73 ID:nRwuUvF6.net]
>>889-892
機能としての繰り返し構造で「一度は処理する」流れはある!
あるにはあるが、コーディング上の特質まで拘る言語だと存在が難しいかもしれない
アセンブラ時代では普通に処理・判断・分岐の流れで繰り返す事があったが
pythonの見栄えを含めたルールに今ひとつしっくり来ないね

言語って難しいと別な意味で思う



914 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 21:28:14.72 ID:6EO7QiL7.net]
どうでもいい
話してる暇があったら僕の考えた最強の言語でも作ってみろ
誰もお前の妄想なんか体現してやらねーよ

915 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 21:54:45.70 ID:G9+XvfW+.net]
>>898
print(“foo”)
__print(“bar”)

916 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 12:53:28.65 ID:l9q4915F.net]
クラスに実装したメソッドが増えすぎて読みづらくなってきたので、C++のように別ファイルに分割しようとおもうのですが、Pythonだとどうやるのが一般的なのでしょうか?

917 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 13:00:44.91 ID:RBsv5qkl.net]
>>902
そうか、
(制御フロー文で)インデントされたブロックを受け取らない文
って書いてないとダメな人もいるのね...

918 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 13:54:42.63 ID:Z6nDRQUG.net]
>>903
できない
Pythonにおいては一般的ではない

919 名前:デフォルトの名無しさん [2017/03/21(火) 14:09:34.83 ID:6WWBsw/3.net]
>>900
while True:
..hoge
..fuga
..if until==False: break

920 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 14:11:41.64 ID:ymW1yDlu.net]
>>903
---file hoge.py---
class Hoge:
...method1

---file fuga.py---
class Fuga(Hoge):
...method2

---file hage.py--
class Hage(Fuga):
...method3

921 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 14:32:22.05 ID:l9q4915F.net]
>>905,907
レスありがとうございます。
別のオブジェクトからコマンドを受けて、各コマンドに対応したメソッドで処理をするコマンドプロセッサのようなクラスを作っています。
同じ階層の機能を実装したメソッドが増えすぎた場合というのはどのような形で管理するのでしょうか?

922 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 14:37:22.69 ID:6WWBsw/3.net]
各コマンドに対応したメソッドを定義したオブジェクトを作って call かな
そのオブジェクトはメソッドごとに違うクラスで
全て共通の抽象クラスから派生したものにするとかね

923 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 15:47:09.08 ID:U/W71QG6.net]
あのすいません、hogeとは何ですか?
調べても意味が分かりませんでした。



924 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 15:50:43.25 ID:uzSvvu2S.net]
>>910
メタ構文変数と言って特に意味はない、名前付けに困ったらとりあえずあてはめておくもの

925 名前:デフォルトの名無しさん [2017/03/21(火) 16:28:28.16 ID:F9uzFhK1.net]
>>910
穴がほげる事

926 名前:デフォルトの名無しさん [2017/03/21(火) 16:28:49.49 ID:F9uzFhK1.net]
穴=セキュリティホールな
つまり脆弱性が出来る事をhogeという

927 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 16:58:01.02 ID:jV0Y+t/Y.net]
>>903
モジュールに分割
次点でMixin
Single Inheritanceで継承構造を深くするのはオススメしない

928 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 17:32:09.44 ID:jV0Y+t/Y.net]
>>904
インデントは字句解析のレベル
インデントされたブロックを受け取らないかどうかは構文解析のレベル

インデントされたブロックを受け取らないかどうかは
制御フロー文かどうかとは全く関係なく決められるルール

結局>>865の主張には全く根拠がない

929 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 19:12:46.26 ID:72kEtT2Q.net]
>>915
> 見易さとの両立は簡単じゃないと思う
の意味が理解できてないのかなぁ
まあ、感覚的なものだから俺はそうは思わないって言うんだろうな
もう引っ込みつかなくなってるみたいだし

930 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 19:31:01.92 ID:l9q4915F.net]
>>909
やはりそうなりますよね。
ちなみになんですが、私、オブジェクト指向を始めたばかりでそのようなオブジェクトやクラスを呼ぶ名称がとんと見当がつかないのですが、
抽象クラスやその具象クラス、オブジェクトにつける名前と言うのはどういった名前になるのでしょうか……
少し例を教えていただけると有り難いです。

>>914
Mixinというのは初めて知りました。これは何故次点なのですか?
またモジュールに分割というのは>>909と同じような作り方でしょうか?

931 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 19:47:37.03 ID:2crVP7Yr.net]
hogeって書くとジジィ扱いされるよな。。実際、ジジィなんだけど。

932 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 19:59:09.85 ID:3q/SWegZ.net]
こんなのどうかな
do:
  aaa
  bbb
:until ccc == ddd
while True:
  eee
  fff

933 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 20:02:36.48 ID:zOC6lCjq.net]
hooとかfooはノリノリな感じがして好き



934 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 20:10:29.82 ID:Wm5e28fx.net]
私「フッ、こういうのはメタ構文変数と言って、ノリノリな感じが語源になったわけではないのだよ」
私「どれWikipediaで調べてからマウンティングするか」

https://ja.wikipedia.org/wiki/メタ構文変数
>プログラミング言語Pythonでは、メタ構文変数に spam, ham, eggs などを使う。

私「!?」

935 名前:デフォルトの名無しさん [2017/03/21(火) 20:11:48.49 ID:Abf9RIR5.net]
Pythonを使う前に空飛ぶモンティパイソンを100回見よう!

936 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 20:12:00.13 ID:uzSvvu2S.net]
hage

937 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 20:40:10.13 ID:wMSmjxpw.net]
>>917
Rubyは多重継承できない単一継承モデルだから、親クラスは1つのみ。
継承関係にない、便利な関数・utilityなどは、横からmixinする。
mixinされたモジュールも、継承チェーンに入れられる

Object ← 親 ← 子
Object ← utility ← 親 ← 子

Pythonでも、調べてくれ

938 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 20:51:30.07 ID:jV0Y+t/Y.net]
>>916
もう恥ずかしいからやめてくれよ〜
>>889の形式だって>>892とパーサーの処理はそう変わらないんだから何も難しいことなんてないだろ?

indentがブロックの開始でdedentがブロックの終端
そういうルールなだけで括弧やdo/end使ってる言語と基本同じだよ
python使ってるやつはそんなことも知らないのかって思われる

939 名前:デフォルトの名無しさん [2017/03/21(火) 21:55:47.37 ID:kMyYv3zx.net]
なんかKeyErrorってコンパイルしたら出てくるけど考えられる原因って何かある?

940 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 21:57:34.32 ID:uzSvvu2S.net]
>>926
辞書型オブジェクトから存在しないキーを取ろうとすると出るエラー、解決策はググれ

941 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 22:02:37.33 ID:5glqzG46.net]
while ループ中で最初にa=0という変数を作っての最後でa+=1しても
2周目で0に戻らないためにはどうすればいいですか?

942 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 22:03:59.43 ID:uzSvvu2S.net]
>>928
aの宣言をループの外でやるかその目的ならforループに置き換えるのが分かりやすいかなと

943 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 22:11:03.98 ID:5glqzG46.net]
>>929
外で宣言してもなぜか0に戻るんですよね



944 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 22:13:18.30 ID:uzSvvu2S.net]
>>930
pastebin辺りかこのスレでもいいからソース貼ってみて?

945 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 22:18:12.79 ID:72kEtT2Q.net]
>>925
誰もパーサーの処理なんて問題にしてないのに何を必死になってるんだい?
マジで引っ込みつかなくなってるじゃん w

946 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 22:21:21.56 ID:5glqzG46.net]
pastebin.com/bmD2DHrn

これでいいです?まだ作りかけだけど

947 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 22:22:46.16 ID:jV0Y+t/Y.net]
>>932
インデントがパーサー以外の何に関係してんの?
息吐くように嘘をつくなよホント

948 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 22:32:09.98 ID:uzSvvu2S.net]
>>933
ループ内に既に存在するaと変数名が被ってるからどちらかの変数名を変えないと

949 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 22:48:38.55 ID:EOakUJK/.net]
いつまでdo-whileの話してんだよ
いい加減死ねよADHD野郎

950 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 23:02:57.79 ID:72kEtT2Q.net]
>>934
嘘?
意味わからん
誰も実装の話なんてしてないのに w

951 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 23:07:50.55 ID:jV0Y+t/Y.net]
>>917
Mixinが次点なのは一つのクラスにメソッドを定義する必然性を感じなかったから

モジュール分割はこの場合は各コマンドの意味的カテゴリ別にクラスを分割するイメージで書いたけど
>>909の人が書いてるようなコマンドパターン的なやり方もいいと思う
その場合でもある程度のまとまりでモジュールにすることになるんじゃないかと

952 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 23:18:48.13 ID:2crVP7Yr.net]
>>921
ファーー!

953 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 23:31:39.75 ID:5glqzG46.net]
>>935
動きました。ありがとう



954 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 00:01:29.44 ID:hOsz3hmd.net]
>>938
なるほど……。最早スレチかもしれませんが、
「コマンドの処理部を一つのオブジェクトにまとめて、コマンド受付用の公開インターフェイスを用意して内部で各コマンドに対応するメソッドに振り分ける」
みたいな感じで作っていたのですが、pythonというかオブジェクト指向っぽくするにはどうしたら良いのでしょうか?
この辺はもうデザインパターンを学べという感じでしょうか?

955 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 00:34:58.08 ID:vhfzvoEm.net]
>>941
その作り方で別にいいと思うけど?
例えばこのサンプルでcat/dog/bearに対応するメソッドが各クラスになってるのが普通に分割するイメージ
https://www.safaribooksonline.com/library/view/python-cookbook-2nd/0596007973/ch04s17.html

こっちはコマンドパターンのイメージ
python-3-patterns-idioms-test.readthedocs.io/en/latest/FunctionObjects.html
Undo/Redoとかも必要ならこっちのほうがいいかもね

956 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 00:51:52.54 ID:hOsz3hmd.net]
>>942
参考URLありがとうございます。
今のところコマンドパターンが使いやすそうではあるのですが、まだ作り始めたばかりなので一度アプリケーション全体の設計も見直してみようと思います。
遅くまで皆様ありがとうございました。

957 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 17:02:16.91 ID:/LjNvXVg.net]
pythonにopencvを入れたいです
VSからc++で使うためにソースからcmakeで前にビルドしたのですが
pythonに入れるにはまた最初から入れ直しですか?
今あるopencvのソース拾って動いてくれたりしませんか??

958 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 17:32:47.40 ID:vhfzvoEm.net]
pythonバインディング付きでビルドしてるなら
PYTHONPATHにopencvのパスを追加するかPYTHONPATHが通ってるところに必要なファイルのリンクをはるか

959 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 17:36:21.25 ID:/LjNvXVg.net]
ありがとうございます。
バインディングが付いているか調べる方法はありますか??

960 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 17:41:33.53 ID:MH0mX7xP.net]
ビルド済みDLL同梱のがあるでしょ

961 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 17:51:32.15 ID:/LjNvXVg.net]
DLLだけ拾ってできますか??
opencv自体はもうあるので重複を避けたいです。

962 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 18:27:50.62 ID:vhfzvoEm.net]
少し調べればすぐ分かることなんだから
聞く前にまず自分で調べなよ

963 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 20:02:01.65 ID:pQEBF+SX.net]
>>948
初心者のくせに欲張りだね君は



964 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 22:12:43.36 ID:MH0mX7xP.net]
おそらく数年前の導入方法を引きずってるんでしょう
現在では、パッケージマネージャから簡単にインストールできるのに

965 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 22:18:25.20 ID:E3vl/zz6.net]
そのパッケージマネージャをマネージするパッケージマネージャをマネージするパッケージマネージャをマネージするのはパッケージマネージャ?

966 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:01:24.38 ID:hMrdA28p.net]
もしかして全般的に3.6より2.7の方が速い?

967 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 12:19:32.96 ID:JkO5l9za.net]
>>923
hage
hige
mage
を支持します

968 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 12:41:45.82 ID:AyyVp0Pm.net]
>>944
>pythonに入れるにはまた最初から入れ直しですか?
>今あるopencvのソース拾って動いてくれたりしませんか??

python用のcvモジュールが「ソースからcmakeで前にビルドした」ときに造ってあればOK

969 名前:デフォルトの名無しさん [2017/03/23(木) 12:43:03.50 ID:39r6GGlR.net]
>>953
プログラミングをする上でよくもこんな糞な質問が出来たな
速いかどうかは自分でベンチマーク取って確かめろ

970 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 13:29:43.51 ID:dT4NbpKb.net]
>>954
tingeは?

971 名前:デフォルトの名無しさん(霧の向こうに繋がる世界) [2017/03/23(木) 18:36:24.71 ID:ijnHsh0m.net]
みなさんHTTP/2への対応はお済みですか?
nghttp2がないとHTTP/2が使えないPythonってダメですね
Goにユーザー取られちゃいますよ

972 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:04:11.68 ID:atuvna0D.net]
使えますが

973 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:42:39.16 ID:J2eFkRx5.net]
Goは舎弟なので、取られるとか言う間柄にはない



974 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:46:18.43 ID:qu7cQuqJ.net]
GoもPythonも使ってるけど言語としての性格が根本的に違うのに取られるも何も無いと思うが

975 名前:デフォルトの名無しさん [2017/03/23(木) 19:51:41.15 ID:xoR/oCcH.net]
どう違うんだ?なんなら詳しく聞いてやろうか?

976 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:53:19.53 ID:10TW5lfi.net]
何様だよ
ご教示くださいかプリーズって言え

977 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:57:30.18 ID:10TW5lfi.net]
というか本当に新参の半分は引き取って貰えると助かる
機械学習ブームのせいで出来損ないばかり増えすぎだ

978 名前:デフォルトの名無しさん [2017/03/23(木) 19:58:23.66 ID:xoR/oCcH.net]
じゃあ聞いてやるからご教示くださいかプリーズ

979 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 20:15:04.23 ID:WvFZIAo6.net]
>>964
すまんな、パイソンのこと何もよう分からんけど見よう見まねでコード書いてるわ

980 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 20:49:30.79 ID:Q5D12GoP.net]
>>964
ここは初心者スレ、嫌なら去るのはおまえだ

981 名前:デフォルトの名無しさん [2017/03/23(木) 20:52:13.77 ID:8mLShO/C.net]
>>967 禿同。

982 名前:デフォルトの名無しさん [2017/03/23(木) 22:29:57.12 ID:xoR/oCcH.net]
無能なベテランの俺は居てもいいんか?

983 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) ]
[ここ壊れてます]



984 名前:23:03:49.08 ID:dT4NbpKb.net mailto: ええんやで []
[ここ壊れてます]

985 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 18:02:09.03 ID:yAGaZT8A.net]
パイソンのプログラムの中で、コマンドを実行したい時
例えばプログラムの中でコンソールを起動してpipを実行したい時はどうすればいいですか?

986 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 18:07:03.42 ID:39OHyuzh.net]
>>971
標準ライブラリのsubprocess使う
https://docs.python.jp/3/library/subprocess.html

987 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 18:16:24.02 ID:yAGaZT8A.net]
>>972
記入漏れすみません。
使い方としては、別のコンソールを立ち上げてメインプログラムとは別で走らせたいのですが、無理ですか??

988 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 18:22:21.87 ID:39OHyuzh.net]
>>973
窓出したいってこと?それとも非同期で走ってればおk?

989 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 18:28:33.70 ID:yAGaZT8A.net]
>>974
窓は出来れば出したいです。
メイン起動→サブ呼び出し→同時進行→メイン終了→サブはまだ止まらない→サブ側の窓でctrl-c押された時でサブ終了
という形が理想なのですが。

990 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 19:21:03.39 ID:FFzzXdlf.net]
てす

991 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 19:22:46.85 ID:FFzzXdlf.net]
>>975
とりあえずこんなもんでどうかな
ttp://pastebin.com/9K6PLv5A

992 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 19:23:24.24 ID:FFzzXdlf.net]
長文打ったら何かが規制に引っかかって全俺が泣いた

993 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 19:26:17.69 ID:FFzzXdlf.net]
あーそうそう窓を出すって動作が環境依存だからWinでしか動かんよ



994 名前:974 mailto:sage [2017/03/24(金) 19:30:45.29 ID:Ixoq+e04.net]
>>977
これです、ありがとうございました!

995 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 19:31:41.62 ID:Ixoq+e04.net]
あ、書いてなかったですね、すみません。
winなので大丈夫です、ありがとうござます!

996 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 19:44:11.88 ID:FFzzXdlf.net]
>>980
startで別窓出せるから覚えとくといいよ、後こいつcmdの組み込みだからshell=True無いと実行できないから気をつけて

997 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 15:01:15.96 ID:dW0T51Nu.net]
pythonのリストで

def dice():
....return (random.randint(1, 601) % 6) + 1

status = []
for lp_0 in range(5):
....status.append(dice())

上記のような方法で関数からのretuen値を5回リストに入れる場合for文でまわさないで書く方法ありますか?

998 名前:デフォルトの名無しさん [2017/03/25(土) 15:09:28.97 ID:5MnOmzEx.net]
np.random.random_integers(1, 6, 5)

999 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 15:38:20.94 ID:dW0T51Nu.net]
>>984
random_integersは初めて知りました
ありがとうごさいます

1000 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 15:47:29.60 ID:5MnOmzEx.net]
私も初めて知りました

1001 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 15:54:15.22 ID:ZSinSYil.net]
くだすれPython(超初心者用) その33
echo.2ch.net/test/read.cgi/tech/1490424742/

1002 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 18:23:32.35 ID:EmT9w5Dp.net]
rrule(YEARLY, bymonth=(1,7), dtstart=from, until=to)

上記のように明示的に変数に値を入れて渡すタイプの関数について
text = 'bymonth=(1,7), dtstart=from, until=to'として
rrule(YEARLY, text)的なことをやりたいのですがこのままではできず。。
何かできる方法はありますでしょうか?

1003 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 18:31:58.35 ID:AXTU3a0H.net]
>>988
ちょっと違うけどこれでどう?
qiita.com/yoichi22/items/e9e8b7fa8704c3dfd000



1004 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 18:40:43.97 ID:5MnOmzEx.net]
そういう問題じゃなくて本気でテキストを渡したいみたいなので
jsonとかじゃだめなの?

1005 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 18:45:18.29 ID:AXTU3a0H.net]
パーサー通して辞書にしちゃえばいける、そのままは無理

1006 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 18:46:31.43 ID:AXTU3a0H.net]
いや関数側いじれるなら可変長引数使えばできるな

1007 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 20:11:45.64 ID:++OH//Pd.net]
自分だけで使うプログラムならexecやevalに頼るのもありか
人に使わせるのはやめとけ

1008 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 20:12:38.04 ID:LRDwX3vu.net]
textをstringで受け取って関数内でsplitする

1009 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 20:13:27.03 ID:EmT9w5Dp.net]
>>989-992
回答ありがとうございます。

www.yoheim.net/blog.php?q=20160609
www.yoheim.net/blog.php?q=20160610
色々調べていたのですが、上記の話であっていますでしょうか?
勉強がてらコーディングしています。
もし違う話とかでしたら参考URL教えていただけると助かります。

1010 名前:デフォルトの名無しさん [2017/03/25(土) 20:15:37.56 ID:MW++xTd7.net]
>>987
たておつ!

1011 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 20:24:08.31 ID:EmT9w5Dp.net]
>>989-992
text = {
'bymonth':(1,7),
'dtstart':from_date,
'until':to_date,
}
rrule(freq, **test_text)

上記のようにしたらできました!
色々教えていただいてありがとうございました。勉強になりました。

1012 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 13:38:04.98 ID:WjbALPaU.net]
うめ

1013 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 14:02:36.05 ID:eOEOi6dr.net]




1014 名前:デフォルトの名無しさん [2017/03/26(日) 14:10:42.99 ID:bcDXrrDg.net]
おかか

1015 名前:854 mailto:sage [2017/03/26(日) 14:33:34.16 ID:9Nbedpcg.net]
皆よろ昆布1000
次スレ
>くだすれPython(超初心者用) その33
>echo.2ch.net/test/read.cgi/tech/1490424742/

1016 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef