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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/24(金) 07:50:35.97ID:VD4/++xS
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

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

前スレ
くだすれPython(超初心者用) その38
https://mevius.5ch.net/test/read.cgi/tech/1526522954/
758724
垢版 |
2018/11/06(火) 21:28:34.65ID:QHiQfJwC
>>757
へぇ〜
こんな方法もあるんですか!今試したら動いたけれど、
flask8だとW503 line break before binary operator
って言うエラーが出てました
2018/11/06(火) 21:33:57.41ID:B9fQWZZ6
>>758
アッハイ

or は 行の最後に書かずに
先頭にかけやこのデコスケ野郎

っていうエラーすね。

つまり推奨は
if (text.find(’<’) > -1
or text.find(’>’) > -1
or ....(略) ...):

汚いソースコードの書き方しててすみまそん。。。
2018/11/06(火) 21:37:10.20ID:B9fQWZZ6
詳しい解説は https://github.com/PyCQA/pycodestyle/issues/513 あたりかな
761724
垢版 |
2018/11/06(火) 21:46:50.14ID:QHiQfJwC
>>759
いや、ありがとうございます。。。
2行目を or から始めてもW503でした。あと、E129も出でます。
E129は2行目の or を if の i から数えて8文字インデントしたら消えました。
2018/11/06(火) 22:02:51.74ID:B9fQWZZ6
>>761
検証してくれるやつのバージョンによって推奨される書き方がちガッ獲るようだ… https://lintlyci.github.io/Flake8Rules/rules/W503.html

今どきはどーするのが一番正しくてグッドなのか、
誰か他の回答者を待とう (´・ω・`)
2018/11/07(水) 00:09:47.09ID:kPzZvNDI
>>738
beautifulsoupとurllibっす
2018/11/07(水) 00:53:42.51ID:QtFDoqkC
>>763
beautifulsoupなら
soup.a['href']
soupはBeautifulSoupオブジェクトな
2018/11/07(水) 01:15:28.23ID:+978RLDn
>>744
Ruby の、CGI.escapeHTML みたいな、HTML エスケープだろ

Python にも、そういう関数があるはず。
ライブラリを探せ

全言語にある!
Google に「html escape」と入れれば、補完で全言語が出てくる。
php, javascript, java, ruby, python ズラズラっと

そういう一般的な関数を、自作したらダメ。
自作したものは、ライブラリよりも品質が低いから
2018/11/07(水) 01:23:13.15ID:mTAgM1WN
キチガイ避けには「ruby」でNGワード登録が簡単・便利
767724
垢版 |
2018/11/07(水) 10:31:30.88ID:eBlvm3p7
>>754
from xml.sax.saxutils import escape
text = 'あいうえお'
text = f'~{text}~'
text = escape(text, {'*': '&#42;', '~': '&#126;', '': '', '': ''})
上は実際には半角です。

textをSlackに送信すると、Slackでは、~あいうえお~と表示して欲しいんですが、
&#126;あいうえお&#126;
と、表示されてしまいます。
どこが間違えてますか?

あと、
* を置き換える文字列は&#42;(半角で)のように、
` を置き換える文字列
_ を置き換える文字列
ってどうやって調べたらよいんでしょうか?

>>762
自分のバージョンはPython 3.6.4、flake8 3.6.0でした
2018/11/07(水) 12:02:53.55ID:gi2gLu8r
最低限↓に目を通してからslackの話を続けて貰えるか?
https://api.slack.com/docs/message-formatting#how_to_escape_characters
769デフォルトの名無しさん
垢版 |
2018/11/07(水) 13:51:51.54ID:A06G1xNF
https://docs.python.jp/3/library/html.html
770デフォルトの名無しさん
垢版 |
2018/11/07(水) 18:19:51.85ID:aDO62va+
https://dotup.org/uploda/dotup.org1686239.png

>>> import numpy as np
>>> from PIL import Image
>>> im = Image.open('dotup.org1686239.png')
>>> np.array(im)
>>> np.array(im)[:,-1::-1,:]
>>> Image.fromarray(np.array(im)[:,-1::-1,:]).save('dotup.org1686239_rev.png')

便利やね
python だぁぃすき
771デフォルトの名無しさん
垢版 |
2018/11/07(水) 18:32:37.21ID:fvfWV4IU
conveert dotup.org1686239.png -flop dotup.org1686239_rev.png

ImageMagickのが簡単だよ
チンポ だぁいすき
2018/11/08(木) 17:18:54.41ID:vDDK8kog
if random.randint(0,1):
step=1
else:
step=-1

この場合のrandom.randintってどういう意味?
乱数で0か1が発生した場合に1、その他の数字のときelseって意味じゃないよね?
よくわからん
2018/11/08(木) 17:21:04.79ID:/8FytPr/
スクレイピングなんですがjava?でコンテンツが作られている動的なページはSeleniumのようなwebBrowserをさわって値を取るしか無いんでしょうか
vbaで似たようなのを作ったんですが読み込み等が遅く、処理の高速化を考えていたのですがSeleniumだと実現できないでしょうか
2018/11/08(木) 17:44:25.17ID:AFbSMZjK
random.randintで0がでたらfalse
1が出たらtrueじゃない?
2018/11/08(木) 18:13:45.79ID:KFTKKYEO
>>774
コード読むとその解釈で合ってると思うけど、そのプロセスが理解できない
randint(a,b)ってa~bの中で整数を生成するんだよね?
randint(0,1)なら0か1のどちらかを生成する
つまりわからん
2018/11/08(木) 18:30:34.85ID:AFbSMZjK
多分わからないのはbool型についてかな
ちょっと検索して出てきたから読んだらいいかも
https://note.nkmk.me/python-bool-true-false-usage/
777デフォルトの名無しさん
垢版 |
2018/11/08(木) 18:47:09.00ID:5iWhW6P3
>>775
PyhonのTrue, Falseは0, 1と等価
実際True+Trueを評価すると2になる
2018/11/08(木) 19:50:06.88ID:KFTKKYEO
TrueとFalseがランダムに生成されるんだろ
つまりif節の中にTrueもFalseも入ってることになんね?
2018/11/08(木) 19:51:27.62ID:UKor1bXF
ならんよ>>778
2018/11/08(木) 19:54:09.65ID:KFTKKYEO
俺がアホなのか
全くスッキリと理解できないw
2018/11/08(木) 20:06:42.76ID:AFbSMZjK
if random.choice([True, False])
こう書き換えれば少しはわかりやすいかな
2018/11/08(木) 20:21:32.77ID:KFTKKYEO
if random.randint(0,1)==True:
と同じ意味だよね?
これなら簡単に理解できるけど、==Trueがなくても文法として成立するのがよくわからない
2018/11/08(木) 20:23:05.84ID:UKor1bXF
暗黙の了解で省略されてるだけ
英語の関係代名詞的なさむしん
2018/11/08(木) 20:30:18.68ID:KFTKKYEO
>>783
マジかよ
人に優しくない言語やんけ!
何時間悩んだと思ってんや
2018/11/08(木) 20:32:58.15ID:UKor1bXF
もう忘れないだろうから
悩んだことはむだではない
タブンネ
2018/11/08(木) 21:02:16.60ID:dNW1RU/q
主流言語はみんなそんな感じなんだけどPythonは比較演算子強制でも良かった気もしないでもない。
でも、
bool値を返すisBigメソッドを実装したクラスChinkoがあったとして…
myChinko = new Chinko(16)
if myChinko.isBig():
と自然な英文風に書けるというスゴイ利点もある!
ちなみに12以下だとFalseを返します
787デフォルトの名無しさん
垢版 |
2018/11/08(木) 21:03:49.60ID:JRn9O86F
>>778
1とTrue、0とFalseを同一として認識するのは明らかに間違っている
788デフォルトの名無しさん
垢版 |
2018/11/08(木) 21:04:47.54ID:j6Jh7/pK
自然言語風に書けるのはデメリットやぞ
2018/11/08(木) 21:15:17.71ID:dNW1RU/q
冗談やで。俺は比較演算強制がよかった
2018/11/08(木) 21:16:04.42ID:fqxKHZms
ネェ、チンコダッテ?( ´д)オクサン(д` )アラヤダワァ
2018/11/08(木) 21:53:09.37ID:QbjXdk8c
>>782
==trueとか言うゴミコード書くなよ
792デフォルトの名無しさん
垢版 |
2018/11/08(木) 22:07:08.42ID:j6Jh7/pK
ゴミって些末な事ばかり気にしてゴミコードってゆうよねw
2018/11/08(木) 22:09:00.10ID:Sh+rXr23
言うをゆうって書く人は初等教育を受けてるのかしら
794デフォルトの名無しさん
垢版 |
2018/11/08(木) 22:14:43.87ID:j6Jh7/pK
言うはゆうて読むんやで
2018/11/08(木) 22:24:11.22ID:lbifDjkh
誰も読み方について話してないぞ。相当な馬鹿だな
796デフォルトの名無しさん
垢版 |
2018/11/08(木) 22:30:06.41ID:j6Jh7/pK
バカのくせに人の事バカってゆうの恥ずかしいよバカw
2018/11/08(木) 22:32:56.23ID:KFTKKYEO
ちなみにこういう省略って他にどんなのある?
他の文法で省略あったらまた騙されるなー
2018/11/08(木) 22:53:42.09ID:PhR3Qfyw
perlはエゲツナイぞー
2018/11/08(木) 23:07:43.11ID:QbjXdk8c
==Trueが必要だと思う奴はその戻り値に対しても==Trueしとけw
2018/11/08(木) 23:17:51.55ID:yMIHOz65
the reason why ~ みたいなもんだな
2018/11/08(木) 23:20:05.30ID:QHwNiY6E
>>773
5ch みたいな動的または、ajax などの非同期処理で、ページの内容を取得しているものは、
その内容が読み込まれるまで、その要素や内容は存在しない

5ch なら、まず空のHTML を送ってくるから、ajax で読み込まれるまで、内容が存在しない

漏れはRuby で、Selenium WebDriver を使って読み込んでいる。
その要素が出現するまで、wait される。
簡単なのは10秒ぐらい、sleep すればよい

5ch なんか、バグが多いから、JavaScript が無限ループしたりして、
30秒待っても、Selenium WebDriverから、そのページへアタッチ出来ないこともある
2018/11/08(木) 23:22:35.59ID:a5prroZo
「Ruby」でNGワード登録が簡単・便利
2018/11/08(木) 23:44:41.94ID:mrd9U+a3
50%の確率で2つの処理を選択したい場合によりスマートな書き方はありますか?今はべたべたにこう書いてます
if np.random.rand() > .5:
do1()
else:
do2()
804デフォルトの名無しさん
垢版 |
2018/11/09(金) 02:19:40.37ID:19dRG8QF
(do1 if np.random.rand() > .5 else do2)()
2018/11/09(金) 04:00:11.42ID:bq31MDXV
すごい!そんな書き方があるのですね。
よければ何という記述方法か教えてもらえますか?(どうやって調べたら出ますか)
2018/11/09(金) 04:18:51.46ID:Je0vwCJT
np使う理由はあるの?
2018/11/09(金) 08:30:00.34ID:0hfWLYYN
pycharmでshadows name xxx from outer scopeっていうwarningが出るんだけど、これは何が問題なんや
2018/11/09(金) 09:42:26.78ID:VXODTqLC
同じ名前の変数が定義されたことで
外のスコープの変数が隠されている
という警告
2018/11/09(金) 09:43:04.08ID:VXODTqLC
Warningに書いてある通りだな
810デフォルトの名無しさん
垢版 |
2018/11/09(金) 10:18:23.10ID:19dRG8QF
>>805
三項演算子
可読性下がるから使い過ぎはお勧めしない
811デフォルトの名無しさん
垢版 |
2018/11/09(金) 11:58:21.04ID:p9aTnaT/
ちょうど1/2の確率が欲しいとき
if random.rand(0, 1) > .5:
が正解?
それとも
if random.rand(0, 1) >= .5:
が正解?
どっちも間違い?
812デフォルトの名無しさん
垢版 |
2018/11/09(金) 12:04:45.46ID:mwKVhTqG
どっちも間違い

だが少なくとも
random.rand() > .5
では偏りが生じる
2018/11/09(金) 12:40:54.60ID:0q7AG6jo
>>811
0×1の配列?
814デフォルトの名無しさん
垢版 |
2018/11/09(金) 12:41:31.35ID:ZavMgXDP
Openpyxlでエクセルシートをリスト化した後
シート名を条件に抽出することはできますか?
すみません、調べてもわかりませんでした。
2018/11/09(金) 13:11:43.28ID:XhL65g6u
>>811俺だったらこうする
if random.randrange(2):

「一定回数抽選すると、AとBの出現率が必ず1:1になる」ことを求めているならシャッフルを使う
a=[0]*50+[1]*50
random.shuffle(a)
2018/11/09(金) 13:44:15.88ID:lOOqdq/Y
deapのbase.Fitnssでweightsの動き方がよくわからないんですが
仕様を説明したサイトはありますか?
2018/11/09(金) 13:47:08.53ID:iep8j/69
>>814
シート名は .get_sheet_names()でリストでとってこれるから
とってきたあと
1つ1つのシート名でifすればいいだろ
2018/11/09(金) 13:49:25.70ID:iep8j/69
>>816
https://deap.readthedocs.io/en/master/api/base.html はもう読んでる?
2018/11/09(金) 14:27:01.20ID:D1KL18mO
python2.7 pandasのto_csvでの出力、文字コードについてです
utf8のdfがありコレをsjis(sjisで表現出来ない文字は無視や?置き換えで良い)にしてcsvにしたいです
調べると
with codecs.openでencoding='cp932' errors='ignore'で出力ファイルを開き
df.to_csv(ファイルオブジェクト, encoding='cp932')
で出来ると書いてあったのですが普通にUnicodeエラー出ます
何が原因でうまくいかないんでしょうか、また他の解決法なにかありませんかね
2018/11/09(金) 15:23:15.00ID:iep8j/69
>>819
ソースコードの文字コードは何で書いてる
OSは何よ

Unicodeエラーの内容は略さず書いて
821デフォルトの名無しさん
垢版 |
2018/11/09(金) 16:18:25.51ID:aAkZVDrn
PythonがWEBで覇権取れば最強のスクリプト言語になるのにな
Djangoとかいうゴミはいいから早くRailsとかLaravel並みにいいフレームワーク作ってくんね?
822デフォルトの名無しさん
垢版 |
2018/11/09(金) 17:36:50.37ID:rwK1ciOK
GoogleってWEB開発にPython使ってるらしいけどフレームワークはDjangoなのかな?
社内で別のフレームワーク使ってんだったら公開してほしいな
2018/11/09(金) 19:22:48.23ID:lOOqdq/Y
>>818
それは読んだんですが多目的最適化で10倍や100倍に設定したら具体的にどう評価を変えているのかが書いていなかったので
2018/11/09(金) 19:31:33.70ID:iep8j/69
>>823
weights って重み付けだから、
いっぱいのときも逐一自分で指定するもんじゃないの

>多目的最適化で10倍や100倍に設定したら具体的にどう評価を変えているのか
俺にはちょっとなにいってるのかよくわかんない(´・ω・`)

各重みの最適値さがしなら
プロジェクト・しらみつぶし が たぶん一番いい・・・
2018/11/10(土) 12:15:02.20ID:seRmY1tJ
https://stackoverflow.com/questions/42866743/lambda-function-explanation/42867119

repeating_data = reduce(lambda l, x:
l.append(x) or l if x not in l else l,
columns['Hello'], [])

Columns["Hello"] has [1,1,2,3,4,5,6,6,7,8,9,9,10,0]


このlambda式のl.appned(x) or lの"or l"と
if x nor in l else lの"else l"がよくわからないんですが、
つけないとエラーになるので必要なのでしょうが、どのような意味なのでしょうか?
826825
垢版 |
2018/11/10(土) 12:26:13.87ID:seRmY1tJ
質問ばかりで申し訳ないのですが、なぜこの式でreduceを使っているのかもよくわかりません。
reduceでぐぐるとすべて畳み込んで計算すると書いてあるところが多いのですが、関数がl.append(x) or lなので違うのでしょうか?
2018/11/10(土) 13:07:05.83ID:u9Es1usX
>>825-826
条件式(他言語のいわゆる三項演算子や条件演算子と呼ばれる物の代替)
https://docs.python.org/ja/3/reference/expressions.html#conditional-expressions
そしてlist.appendの戻り値はNoneなので常にorの右辺が評価され返される

つまり新しいリストに含まれていなければ追加し、さもなければそのまま
あとは先方のレスにもset使えと書かれてると思うけど。reduceの動作は以下
https://docs.python.org/ja/3/library/functools.html#functools.reduce
828826
垢版 |
2018/11/10(土) 13:46:44.78ID:seRmY1tJ
>>827
丁寧なレスありがとうございます。list.appendの戻り値がNoneだなんて意識しないで使ってました。
破壊的メソッドだからなんだそうですが、自分でもうちょっと勉強してみます。
829826
垢版 |
2018/11/10(土) 15:23:32.40ID:seRmY1tJ
if x not in l else lの"else l"を省略すると
SyntaxError: invalid syntax
が出るんですが、通常のif文の場合はelse以下がなくても問題ないと思うのですが、
なぜこの場合はだめなのでしょうか?
2018/11/10(土) 15:39:38.87ID:hLxIIZfE
>>829
それは
> if x not in l else l
じゃなくて
> l if x not in l else l
なの
>>827が言う条件式って奴
式1 if 条件 else 式2
で、条件が真と評価されるなら 式1
条件が偽に評価されるなら 式2
を返す
なので else 式2 がないと困っちゃう
(None を返すという選択肢もあったとは思うけど)
2018/11/10(土) 15:48:08.55ID:seRmY1tJ
>>830
else lのlをNoneにしてみたら、
TypeError: argument of type 'NoneType' is not iterable
とでてしまいました。
でもなんとなく前よりはこの式がわかったような気がします。
どうもレスありがとうございました。
2018/11/10(土) 17:30:59.29ID:16GnFLu/
>>829
>>827が条件式(他言語に倣って三項演算子と呼ばれることも)だって教えてくれてるじゃん

値1 if 条件 else 値2
条件が真と評価されたら値1を、偽と評価されたら値2を返す
2018/11/10(土) 18:12:02.74ID:hLxIIZfE
>>825
そもそもこのラムダ式がちょっとトリッキーなんだよね
lambda l, x: l.append(x) or l if x not in l else l
俺なら
def f(l,x):
__if x not in l:
____l.append(x)
__return l
を定義して
repeating_data = reduce(f, columns['Hello'], [])
ってやると思う
834デフォルトの名無しさん
垢版 |
2018/11/10(土) 18:14:37.23ID:GvdPZ72d
>>831
lをNoneにするってのは830の間違い
2018/11/10(土) 18:59:26.03ID:8RKiULCU
>>830
偽の時は空値返す二項版条件演算子みたいな糞を実装してる言語って何?
有効な使い道が思いつかん
2018/11/10(土) 19:30:23.53ID:hLxIIZfE
>>835
もっと用途限定だけどC#のnull条件演算子が近いかな
2018/11/10(土) 19:41:48.00ID:LcpJu9SU
>>836
用途限定どころか目的からして完全に別物
2018/11/10(土) 20:21:45.94ID:hLxIIZfE
はいはい w
2018/11/10(土) 20:55:57.38ID:2vwbQ9QW
恥ずかしい奴だな
2018/11/10(土) 21:43:36.94ID:Kjka4QLz
やっかいなnullを扱いやすくする為に実装された演算子と
偽を受け取ったぐらいで無駄にNoneを返す>>830がかんがえたさいきょうのじょうけんしきなんて別物どころか真逆だよな
実際、Noneを返したんじゃ>>831こうなるだけだし
2018/11/10(土) 21:48:48.39ID:zCsM6it1
理解できないお前のことだなww
2018/11/10(土) 21:52:55.81ID:hLxIIZfE
>>840
> やっかいなnullを扱いやすくする為に実装された演算子と
実装の目的と

> 偽を受け取ったぐらいで無駄にNoneを返す>>830
演算子の機能の区別もつかないアホだったのか…

> 実際、Noneを返したんじゃ>>831こうなるだけだし
マジでアホなの?
リスト要求される所にNone与えただけの話だぞ、それ w
2018/11/10(土) 21:55:57.70ID:nSd/jMeD
Nane「私のためにケンカしないで!!」
2018/11/10(土) 22:00:38.04ID:jxhvzDRc
>>843
誰だお前は
2018/11/10(土) 22:04:59.17ID:4gO6mVIc
>>844
ウンコ「おならです」
2018/11/10(土) 22:06:25.70ID:hPdKPv7V
肛門「よし通れ!」
2018/11/10(土) 22:10:53.93ID:aFLDlH5i
くだすれ貫禄のくだらなさで不覚にも吹いた
848デフォルトの名無しさん
垢版 |
2018/11/10(土) 22:11:20.00ID:7gTt1pZ+
まだまだ
2018/11/10(土) 22:19:58.98ID:WPq8ZeKj
判定を失敗すると恐ろしいことになるんだなあ…
2018/11/10(土) 22:55:34.73ID:jXgJ1KMY
早まってnull条件演算子とかエルビス演算子って言わなくて良かったわ
2018/11/10(土) 23:22:42.45ID:sSiPAoa8
>>850
そういうのは需要があるから実装されてるんだよ
Noneなんて返されても無駄なチェックコードが増えるだけ
単にelseで適切な値を返すだけでいい
2018/11/10(土) 23:50:26.34ID:hLxIIZfE
>>851
> 単にelseで適切な値を返すだけでいい
仮定の話しができない低能乙 w
2018/11/11(日) 08:48:46.33ID:rNrNUiDF
真っ赤っかですな
単芝も紅葉するんだ
2018/11/11(日) 08:57:40.67ID:cKV3qXJe
低能先生は低能連呼から最終的に殺人に走ったので気をつけてね。
2018/11/11(日) 10:16:25.06ID:3JRsWB+V
>>854
ソースよろしくww
2018/11/11(日) 10:30:49.61ID:ZIQY97Xr
ttps://ja.wikipedia.org/wiki/%E7%A6%8F%E5%B2%A1IT%E8%AC%9B%E5%B8%AB%E6%AE%BA%E5%AE%B3%E4%BA%8B%E4%BB%B6
2018/11/11(日) 11:34:11.51ID:LFgZgESJ
へーっ、こんな事件があったんだな
フルボッコされての犯行か
ならまともな反論もできなくなった>>853とか言ってやれよww
■ このスレッドは過去ログ倉庫に格納されています