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


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

くだすれPython(超初心者用) その46【Ruby禁止】



1 名前:デフォルトの名無しさん [2020/01/02(木) 15:56:54.08 ID:ZUrZA+uS.net]
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
  スクショをImgur等にうp といった 手抜き(クソ行為)禁止。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と
  実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。

◇Python公式サイト◇ www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/

〇前スレ〇
くだすれPython(超初心者用) その45【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1571188632/

492 名前:デフォルトの名無しさん [2020/02/06(Thu) 10:35:45 ID:GAMNd4TG.net]
>>486
すみませんです…どうやって検索したらよいかお教え頂けましたら…

493 名前:デフォルトの名無しさん [2020/02/06(Thu) 11:07:22 ID:d7NhcEcy.net]
教えてやるからどこかにパースしてるHTMLを全部置け
そしてどの要素が欲しいかHTMLの中に <!--この要素が欲しい--> と書け

494 名前:デフォルトの名無しさん mailto:sage [2020/02/06(Thu) 11:20:21 ID:xfRnZ+h4.net]
JavaScriptで動的になったからSelenium使えって書いてた

495 名前:デフォルトの名無しさん [2020/02/06(Thu) 11:27:31 ID:GAMNd4TG.net]
有難うございます。
すみません、keywordは山として以下のようにして取得を目指しており
それで<!-- --> でほしいのですが 以下の表記方法ではだめでしょうか。




urlKeyword = parse.quote(keyword)
url = 'https://www.google.com/search?hl=jp&q=' + urlKeyword + '&btnG=Google+Search&tbs=0&safe=off&tbm=isch'

headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/10.0",}
request = req.Request(url=url, headers=headers)
page = req.urlopen(request)

html = page.read().decode('utf-8')
html = bs4.BeautifulSoup(html, "html.parser")

elems = html.select('.rg_meta.notranslate')


この最後の.rg_meta.notranslate のあたりで目的の画像を一つ一つ取り出せなくなっていると分析しています。

496 名前:デフォルトの名無しさん [2020/02/06(Thu) 11:28:23 ID:GAMNd4TG.net]
一昨日くらいまでは取れておりました。
現在も、 ではグーグル画像検索そのものが取れてないとか何かブロックされているのか?と言うと
elems= の前に 例えば print(html) とするとGoogle画像検索結果の画面全体は取れているのです。
しかしそれは全体像なので、個々の1枚1枚を取得してphpmyadminに格納したり、とかそれが狙いであるので
elems = のところでつまずいてはやはりまずい具合です。

そして目的の画像検索結果、 例えば 山で検索して


<!--
<img class="rg_i Q4LuWd tx8vtf"
src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-iid="0" data-iurl="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcRFWZJ-G8GOvPEcPPJZqy_IqLTMokKOyW_VAdDON2S_9V6cnOQZ" jsname="Q4LuWd"
alt="「山」の画像検索結果" />
-->
↑この要素が欲しいものです
ここのimgのclassにrg_i というものがありこれはヒントの一つ?かと想像したりするのですが
data-iurl= のこれが取得したい画像のURLだと思います。 URLで hrefでなく こういう書式で表示されているのだな、と思いますが
ここを取得したいと思っております。
すみませんが;宜しくお願い致します;

497 名前:デフォルトの名無しさん [2020/02/06(Thu) 11:42:27 ID:GAMNd4TG.net]
>>490
左様でございますか。一応使ったことはありますが
ちゃんと使いこなせるのかどうか…うーむ…

498 名前:デフォルトの名無しさん mailto:sage [2020/02/06(Thu) 12:10:59 ID:xAE/eJ0Q.net]
改行を含めてfindする方法ってないですか?

499 名前:デフォルトの名無しさん mailto:sage [2020/02/06(木) 12:25:05.18 ID:PruBe/51.net]
>>492
他に使ってなさそうで欲しい属性分かってるんだったら
elems = html.select('img[data-iurl]')
これでよくね

あとfirefox10でも47でもないいい加減なUAはやめとけ

500 名前:デフォルトの名無しさん mailto:sage [2020/02/06(Thu) 12:35:55 ID:/hIhK6yv.net]
要素を非同期処理で読み込むから、要素が存在しないとか、
サイトの構成が変わったとか、
XPath/CSS セレクターが間違っているとか、
相手がアクセスをブロックしてくるとか

スクレイピングは、相手のサイトを分析するのが難しいのと、
適切に限定される、セレクターを作るのが難しい

API が公開されているなら、APIを使った方がよい

漏れは、Ruby で、Selenium WebDriver, Nokogiri などで、
Chrome, Edge などのブラウザーを自動操作して、スクレイピングするけど

ここに書いておいた

【VBScript】WSHについて話し合うスレ【JScript】
https://mevius.5ch.net/test/read.cgi/tech/1578522041/24-27



501 名前:デフォルトの名無しさん [2020/02/06(Thu) 12:41:43 ID:zAec24ND.net]
>>494
改行=\n または \r\n

502 名前:496 mailto:sage [2020/02/06(Thu) 12:45:42 ID:/hIhK6yv.net]
>>492
Base64 は、HTML でもよく使う

Base64の文字列で、PNG/JPEG画像を、HTMLファイルに直接埋め込める

<img src="data:image/png;base64,xxxxx..." />

503 名前:496 mailto:sage [2020/02/06(木) 12:59:31.10 ID:/hIhK6yv.net]
>>492
適切に、1つに限定される、セレクターを作るのが難しい!
以下で、特定できないのか?

class="rg_i Q4LuWd tx8vtf"
data-iid="0"
jsname="Q4LuWd"

それか、img 要素の外側で、id など、限定される要素を探すか。
基本的には、idを探さないと特定できない

idを振っていない場合は、そのサイト特有のルールを発見しないといけない!

例えば、5ch のスレ内では、id が無いから、
data-id に投稿番号が入っているので、それを使うとか

このように、相手のサイトを分析するのが難しい!

504 名前:デフォルトの名無しさん [2020/02/06(Thu) 13:30:53 ID:GAMNd4TG.net]
>>495
firefoxのUA、修正します。すみませんでした;

そして、以下でやってみましたが
elems = html.select('img[data-iurl]')
なぜか出来ずに、うむむ…と申し訳ありません、さらに研究してみますが…

505 名前:496 mailto:sage [2020/02/06(木) 14:30:31.06 ID:/hIhK6yv.net]
>>496
にも書いたけど、
要素をAjax で非同期処理に読み込むから、またimg 要素が存在しないとか?

Ruby で、Selenium WebDriver を使えば、要素が出現するまで、自動的にwait する。
await みたいに、非同期処理を同期的に書ける

506 名前:496 mailto:sage [2020/02/06(木) 14:34:29.34 ID:/hIhK6yv.net]
もっと簡単に、10〜20 秒ぐらい、sleep したら、img 要素が出現しないのか?

507 名前:デフォルトの名無しさん [2020/02/06(Thu) 16:58:26 ID:GAMNd4TG.net]
一応成功致しました!

>>500
結果としてelems = html.select('img[data-iurl]')
で、このelemsとしては取れていたようです!

ここは元々elems = html.select('.rg_meta.notranslate')
であったと最初に出しましたが このelemsを
↓(適当〜8行くらい)
------------------
for ele in elems:
eledict = dict()
ele = ele.contents[0].replace('"','').split(',')
for e in ele:
num = e.find(':')
eledict[e[0:num]] = e[num+1:]
imageURL = eledict['ou']・・・・・
--------------
というような感じで使っていたのですが img[data-iurl]の今回? 目的のurl自体はスムーズに取れていたようで

for ele in elems:
imageURL = ele.get('data-iurl')

今回elemsのeleを ele.get('data-iurl') で、1枚づつ取ることができたようでした。
有難うございました!

508 名前:デフォルトの名無しさん [2020/02/06(Thu) 20:03:36 ID:bDkEju7l.net]
asyncioってわかる人いますか?

509 名前:デフォルトの名無しさん [2020/02/07(金) 07:27:17 ID:cGGfIEk4.net]
知ってるよ(どの程度を期待してるのか知らないけどな)

510 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 07:30:51.90 ID:u54KGCZV.net]
thread
threading
multiprocessing
concurrent.futures
asyncio

この辺の違いがよく分からない



511 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 08:43:13.34 ID:sQ9sQIGh.net]
>>506
それらはOSやCPUを自力で作れる神クラスの技術者でないと理解できないし、使いこなせないと思う
一般人である自分もドキュメントを読んでみたが、チンプンカンプン(死語)だった
さっさと忘れてPythonを楽しみましょう

512 名前:デフォルトの名無しさん [2020/02/08(土) 10:13:41 ID:gJJFnkpu.net]
GUIやるなら、threadかasyncioのどちらかは必須。

513 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 10:16:19 ID:I0dCURwg.net]
プロセスとスレッドの違いは知っておいて損はない

514 名前:デフォルトの名無しさん [2020/02/08(土) 10:19:32 ID:0YppiA+B.net]
GUIやるならC#+VisualStudioが一番

515 名前:デフォルトの名無しさん [2020/02/08(土) 10:26:34 ID:iJq/sxyx.net]
Macにも持っていけるの?
>>510

516 名前:デフォルトの名無しさん [2020/02/08(土) 10:32:22 ID:0YppiA+B.net]
Mac持ってないからわからん
俺は自分用ツールしか作ったことない

517 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 10:37:32 ID:VCX1KXbd.net]
なんで情弱しか使わないMacに対応しなきゃいけないんですか!(半ギレ

518 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 11:10:45 ID:E/mrDwXz.net]
Windowsは情強だけ使っていればよろしい

519 名前:デフォルトの名無しさん [2020/02/08(土) 11:12:38 ID:K7+uW5ie.net]
シェア一割のくせに態度だけ見てると九割くらいありそうだよなw

520 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 12:15:26 ID:E/mrDwXz.net]
Mac以外の残り9割の殆どがゴミ



521 名前:デフォルトの名無しさん [2020/02/08(土) 12:37:42 ID:W0we+YOR.net]
売れない芸人が一丁前に何か言ってるわ

522 名前:デフォルトの名無しさん [2020/02/08(土) 13:20:07.76 ID:iJq/sxyx.net]
Windows/Mac/iOS/androidに対応したGUIを作ることができます
そう、pythonならね

523 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 13:33:43.29 ID:9Nn74D/R.net]
React Native + Expo

アシアルのMonaca(Cordova/PhoneGap) + Onsen UI もある

524 名前:デフォルトの名無しさん [2020/02/08(土) 13:47:48 ID:YnTe+96U.net]
普通にWindowsで作ったC#はLinuxでもMacでもMonoで動くぞ

525 名前:デフォルトの名無しさん [2020/02/08(土) 13:48:05 ID:YnTe+96U.net]
GUI含めて。

526 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 14:36:46.22 ID:FKWW677q.net]
>>520
.netcoreだよね?

527 名前:デフォルトの名無しさん [2020/02/08(土) 14:46:34 ID:KXr/QwX0.net]
Monoって書いてるだろ

528 名前:519 mailto:sage [2020/02/08(土) 15:35:46.13 ID:9Nn74D/R.net]
C# では、Microsoft が、

>>519
や、Unity などに対抗するために、Xamarin/Mono を買収した

529 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 16:54:09 ID:DP9vcaNb.net]
>>515
ワロタ!(・∀・)

530 名前:デフォルトの名無しさん [2020/02/08(土) 17:09:56 ID:Gwq8LIiY.net]
Ruby禁止だけじゃなくMono/C#も禁止するか



531 名前:デフォルトの名無しさん [2020/02/08(土) 17:19:51 ID:szXf7gpM.net]
qtって汚いよな

532 名前:デフォルトの名無しさん [2020/02/08(土) 17:28:08 ID:uuv8oSvR.net]
RADツールもないもんな
知らんけど

533 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 17:29:00 ID:0wE1WgKD.net]
>>515
開発者のMacのシェアは約30%、Windowsは約45%、Linuxが25%
Windowsはシェア半分もない

534 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 17:46:35.97 ID:Ewdvkn0R.net]
世代交代しか訴えられないんじゃぁ、ぶてぃじぇっじもたいした候補じゃねーなぁ

535 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 17:51:48.56 ID:lxxY/dO6.net]
やっぱ一番かっこいいのはkivy?

536 名前:デフォルトの名無しさん [2020/02/08(土) 20:33:49.47 ID:Y+Ds/PpP.net]
>>506>>507
良くわかるけど
Pythonやるにはあまり関係ないよ?

537 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 21:53:48 ID:tg7wd02h.net]
>>506
ソフトエンジニアならわからないと馬鹿にされるんだろうが
でも、この底辺スレに来る連中はエンジニアではなく低レベルのサンデープログラマが
ほとんどで分からない奴が大多数だろ(もちろん俺もわからん)

538 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 22:16:28 ID:DP9vcaNb.net]
>>506
プロセス(OSから見えてる単位)→スッドレ(プロセスの下にわさわさ増殖可能)→コア(CPUの部品)

1プロセス=1CPU
プロセスとプロセスの間の情報やり取りはゲキムズ&低速。

スッドレとスッドレの間はやり取りOKだけど、
メモリを奪い合わったり書き換えっこになったりしないように要注意。
あと、旧来は1スッドレ1コアが普通だったけど、
今は2スッドレ1コアが普通になりつつあり、
多スッドレ→1コアする場合はメモリ領域の扱いに注意が必要。

(どのスッドレも同時にみんな手をつないでゴール!を強要されない計算の場合は)
1つのプロセスからいっぱいスッドレわかせて計算するより、
いっぱいプロセス湧かせて順次まとめあげる方が、高速&効率が良いはずである。
だが、
多プロセス化するとメモリはもっさり消費される傾向なので、
ほんとのところは、
やりたいことが同期を強く求めてるかどうかと、マシンスペックによるのである。

539 名前:デフォルトの名無しさん [2020/02/08(土) 22:17:55 ID:0YppiA+B.net]
突っ込まないぞ

540 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 22:18:40 ID:0wE1WgKD.net]
スッドレスッドレ
(わさわさ)



541 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 22:31:02 ID:DP9vcaNb.net]
(つづき)
さきにあげた並行処理をPythonにさせるとき使うライブラリが506の質問であがってるさいしょの3ツ。

threading : スッドレをいっぱいわかせることができる(マルチスッドレ)
multiprocessing : プロセスを複数作れる

ケツ2つはやはり並行処理なのだが、
「ノンブロッキング処理」とゆうのをさせるためのもので、
投入されたPythonのバージョンが違う(concurrent.futuresの方が古い)のと、
とっつきやすさが違う(concurrent.futuresの方が人類にはとっつきやすい)。
これらを使うメリットがあるのは下の3条件を満たしてるとき。特に3についてはよく考えろ。
1.過程で、ボトルネックなクソ重い処理がある
2.それが何度もやってくる
3.ボトルネックの通過完了時刻が全部バラバラになってもおk(追い越しOK)で、
  最終的にまとまればいい。

もっと詳しくは
ggってHitした↓でもよんでくれ。
ttps://qiita.com/icoxfog417/items/07cbf5110ca82629aca0

542 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 22:31:57 ID:DP9vcaNb.net]
ココハ ゴジャースナ(・∀・)スッドレ ダヨ!!!

543 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 01:28:40 ID:JzPk4jqf.net]
>>534
ハードウェアマルチスレッディングとソフトウェアによる通常のマルチスレッドをごちゃまぜに理解してるようだな。
勉強してからもう一度書き込むように。

544 名前:デフォルトの名無しさん [2020/02/09(日) 07:52:13.11 ID:CdDouLVX.net]
>>> (10).to_bytes(2,'big')
b'\x00\n'

期待している結果となりません。
b'\x00\x0a' にならないのは何故?

545 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 08:44:46 ID:vHnIKgeN.net]
>>540
ドキュメントのbyteオブジェクト関連の項目を読むと書いてあるが
文字として見せた方がわかりやすいと思われるバイト値は
16進ではなく文字で表示する方針なのだそうだ
だから値としては正しく格納されているので気にしなくてよろしい

546 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 09:24:21 ID:CdDouLVX.net]
>>541
納得しました
誰得の方針なのか、モヤモヤは残りましたが…

547 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 09:30:32 ID:vHnIKgeN.net]
>>542
ところで、この(値).to_bytes()っていう書き方は初見なんだが
いつからある機能なんだろうか(自分の知識はver.3.3で止まっている)
JavaっぽくてPythonらしくないと感じるのだが

548 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 09:51:55.28 ID:CdDouLVX.net]
>>543
int.to_bytes(length, byteorder, *, signed=False)

New in version 3.2.
だそうです

549 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 10:38:09 ID:hMxVM0F3.net]
flaskでsms認証つけたいんですけど何がおすすめでしょうか?
アカウントにユーザーのメルアド、氏名、住所もつけておきたいです。

550 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 10:56:43 ID:vHnIKgeN.net]
>>544
サンクス
一つ賢くなったよ



551 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:03:20 ID:uG+JJfG5.net]
知識が増えただけで賢くはなって無いんじゃないの

552 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:07:52 ID:vHnIKgeN.net]
>>547
人の会話に茶々入れるんじゃないよ
即NGだ

553 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:26:42 ID:uG+JJfG5.net]
会話に茶々入れたくなければ公開掲示板なんかで聞かなきゃいいじゃん
つまりいくらでも茶々入れていいのが2ch5chでしょ
その基本を無視して俺ルールをいきなり押し付けられても困る

で、賢さってのは知識量のことなワケ?

554 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:27:51 ID:uG+JJfG5.net]
だって「超初心者」が知識と賢さを混同してるらしいからね
ほっとけないね

555 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:32:14 ID:EbhgtQ51.net]
>>539
>ハードウェアマルチスレッディングとソフトウェアによる通常のマルチスレッドをごちゃまぜに理解
そのようだ…

ありがとう
そしてありがとう

Pythonのライブラリでやれるのは
ソフトウェア的マルチスッドレだな

556 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:34:06 ID:EbhgtQ51.net]
というわけで
>>506よ、
536のことはうっちゃっておいて
>>537の先頭2行も脳内から消して、詳しくはケツに貼ったQiitaの人の記事を読んでクレクレ

557 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 12:11:02.39 ID:vWZlCr2H.net]
list = [1,2,3,4,5,6,7,8,9,10]
というリストがあった場合
for i in list:
とするよりも
for i in set(list):
とする方が高速ですか?
それとも、setに変更しても元々がリストなので早くならないですか?

558 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 12:16:47 ID:uG+JJfG5.net]
一般的には想定される普通の使い方をする時に一番早くなるように言語を作る
それに間に一枚噛んでると遅くなる、と思うのが人間

あとは長さ10万くらいのリストを数千回試して時間を計る

559 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 12:26:35 ID:mfrF5HLR.net]
>>553
試すといいよ。ってのが正しいと思うけど、あえてマニュアルから。
https://docs.python.org/ja/3/reference/compound_stmts.html#the-for-statement

> 式リストは一度だけ評価されます。

ってあるから、ほぼ変わらんのでは?

560 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 12:44:06 ID:zgc2MTJg.net]
list->setのコスト分だけ遅いだろ



561 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 12:53:21 ID:2kp9QhUs.net]
論より証拠
昔の人は良いことを言った

562 名前:デフォルトの名無しさん [2020/02/09(日) 13:38:53 ID:haksjRuS.net]
お前ら木偶の坊なんだから俺の疑問に答えて少しは世の中の役に立てよ

という意識があのような質問を生むのだ

563 名前:デフォルトの名無しさん [2020/02/09(日) 14:44:11 ID:KmTvxb40.net]
>>555
sum(for x in range(10))
sum([for x in range(10)])
これの違い。

564 名前:デフォルトの名無しさん [2020/02/09(日) 14:49:31 ID:KmTvxb40.net]
sum(x for x in range(10))
sum([x for x in range(10)])
だった。

565 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 14:56:02.52 ID:OACAfflF.net]
>>560
どう違うの?
下は内包表記?

566 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 15:22:07.62 ID:O6Vx4x7H.net]
>>553
listをsetに変換するコストを無視してもsetをイテレートするほうが遅いよ
hash tableをイテレートする時に必要な処理とlistをイテレートする時に必要な処理の違い

といってもその差は微々たるものだから
その差が重要なプログラムを書こうとしてるなら言語を変えたほうがいいかも

567 名前:デフォルトの名無しさん [2020/02/09(日) 15:35:28.11 ID:vWZlCr2H.net]
>>554-562
ありがとうございます
あまり大きくは変わらないのですね
参考にします

568 名前:デフォルトの名無しさん [2020/02/09(日) 15:45:54.02 ID:wTv3WydA.net]
>>561
上: generator (リストは造らない)
下: 内包表記 (リストが造られる)

569 名前:デフォルトの名無しさん [2020/02/09(日) 15:54:02.80 ID:KmTvxb40.net]
for i in set(list):
listのイテレートとsetのイテレートが発生するのと、一旦setのためのメモリが確保されるから、
setの重複排除機能が必要でない限り、100%無駄だと断言できる。

570 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 16:12:45 ID:O6Vx4x7H.net]
>>563
複数のやり方でどれが速いのか気になったら%timeitしよう



571 名前:デフォルトの名無しさん [2020/02/09(日) 16:14:09 ID:wTv3WydA.net]
むしろforの中身を見直すか
numpyとか使うべき
ループはクソ遅い

572 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 21:20:07.67 ID:U6aZQoQk.net]
質問者はリストにin演算子使うと遅いって話と混同してるんじゃないかと
そっちは遅くて当たり前なんだが、forでsetより遅くなる道理はないと思うが

573 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 22:35:43 ID:u7Xk0tZr.net]
>>568
>そっちは遅くて当たり前なんだが
その当たり前を教えてくれ

574 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 23:21:11 ID:U6aZQoQk.net]
>>569
setはハッシュ値で格納位置を一発で割り出す
リストは要素をすべて舐め回して探す

575 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 00:00:12 ID:NX1L632S.net]
>>568
リストをfor文を回してsetより速くする方法が他にあるってことですか?

576 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 00:07:40 ID:fRmEVRio.net]
>>570
リストって、毎回全要素をリニアサーチしているって事ですか?

577 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 01:46:01.93 ID:y8VN1gM7.net]
>>571
>>568
>forでsetより遅くなる道理はないと思うが
と言っている。で、これから
>リストをfor文を回してsetより速くする方法が他にあるってことですか?
がなぜ出てくるんだ?
>>568の前の部分はfor~inについてではなく、
list/setの要素にこれ(x)ある?を調べるin演算(x in list/set)についての
ことを言っている。

578 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 07:54:06.49 ID:NX1L632S.net]
>>573
なるほど、ありがとうございます

579 名前:デフォルトの名無しさん [2020/02/10(月) 09:51:35 ID:5lt6zYiz.net]
>>572
570はサーチとイテレートをごっちゃにしてるわな。
listは動的配列だから、オブジェクトへのポインタのポインタをインクリメントしてるだけだわな。
サーチはその後の話だろ。

580 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 09:58:28 ID:8uBZGbTk.net]
>>575
いや君がごっちゃにしてるだけでイテレートの話なんてしてないだろ
570はin演算子使った時にどうやって探すかの話だろ



581 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 16:12:22 ID:fRmEVRio.net]
色々脱線はしているのかもしれないが、最初の質問は >>553 で
リストを処理するのに、そのままよりも、
setを噛ませた方が速くなるかどうか、ということであって
リストの内容は全件処理しているようだし

582 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:20:59 ID:8uBZGbTk.net]
なに意味不明なことうだうだ言ってんの

583 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:29:20 ID:fRmEVRio.net]
568 名前:デフォルトの名無しさん[sage] 投稿日:2020/02/09(日) 21:20:07.67 ID:U6aZQoQk
質問者はリストにin演算子使うと遅いって話と混同してるんじゃないかと
そっちは遅くて当たり前なんだが、forでsetより遅くなる道理はないと思うが

570 名前:デフォルトの名無しさん[sage] 投稿日:2020/02/09(日) 23:21:11.41 ID:U6aZQoQk
>>569
setはハッシュ値で格納位置を一発で割り出す
リストは要素をすべて舐め回して探す

この辺の説明を ID:U6aZQoQk がちゃんとすれば良いんだと思う

584 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:38:58 ID:8uBZGbTk.net]
逆になにがわからないのかわからないんだが

585 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:42:34 ID:fRmEVRio.net]
分かるまで、みんなの話を聞いていたら

586 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:44:23 ID:fRmEVRio.net]
553 名前:デフォルトの名無しさん[sage] 投稿日:2020/02/09(日) 12:11:02.39 ID:vWZlCr2H
list = [1,2,3,4,5,6,7,8,9,10]
というリストがあった場合
for i in list:
とするよりも
for i in set(list):
とする方が高速ですか?
それとも、setに変更しても元々がリストなので早くならないですか?

これが最初の質問

587 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:47:57 ID:fRmEVRio.net]
この質問で想定される回答は

for i in set(list):の方が高速
どちらも変わらない
set 使わない方が高速

この三通りじゃないかと思うが

588 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:55:55 ID:cKG4UD69.net]
>>580
俺も何がわからないのかわからん

in演算子が何かわかってないから
>>568や>>570に書いてることが理解できないんじゃないかな
と想像してみる

589 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:59:57 ID:cKG4UD69.net]
>>583
それはもう回答が出てるでしょ

んで普通に考えたらsetにしたほうがが速いという考えにはならないのに
setのほうが高速かもしれないと思ってしまってるのは
for loopのfor x in fooの`in`と
contains(foo, x)を演算子にしたin演算子の`in`とを勘違いしてるんじゃない?
ってコメントが>>568

590 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:20:13.36 ID:fRmEVRio.net]
回答までにしか興味は無いです
後は、妄想も含めた雑談なわけだし



591 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:21:49.94 ID:8uBZGbTk.net]
>>584
そういうことかね

>>585
前にQiitaでリストにin演算子使うと遅いっていう記事がバズってたからね
そういうの見て質問者が漠然とリストはsetより遅いって思い込んでしまった可能性はあるね

592 名前:デフォルトの名無しさん [2020/02/10(月) 19:06:26.64 ID:NX1L632S.net]
>>584
質問者ですがそうです
setのforループの方が早いのかと思い込んでいました
>>574で自分の勘違いに気づいたところです

593 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:34:40.34 ID:TAH0RZ5f.net]
>>583
ケースバイケース
っていう可能性もあるかと

594 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:44:21.91 ID:fRmEVRio.net]
>>589
ハッシュキーが衝突したレコードが大量にあるとか、かな?

595 名前:デフォルトの名無しさん [2020/02/11(火) 10:10:26.19 ID:QVEssOx9.net]
ちっちゃい質問かもなんですが
かっこ閉じ際の位置ってpython的にはどこが良いですか?

例えば
def kakko(a,b):
____a+b
というdefを使うときに行の最後にかっこをつけるか
kakko(
____1+2+3+4,
____5+4+6+7)
改行してかっこの中のインデントに合わせるか
kakko(
____1+2+3+4,
____5+4+6+7
___)

kakkoのインデントに合わせるのか
kakko(
____1+2+3+4,
____5+4+6+7
)

596 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 10:24:42.95 ID:iLli/Di+.net]
>>591
pythonの思想は1行で処理だから改行すな

597 名前:デフォルトの名無しさん [2020/02/11(火) 10:30:13.65 ID:KtXysiBK.net]
kakko(
____1+2+3+4,
____5+4+6+7)
または
kakko(1+2+3+4,
____5+4+6+7)

598 名前:591 [2020/02/11(火) 11:02:07 ID:QVEssOx9.net]
>>592
ですよね・・・
そうなると式が長くなる時は
かっこの前に分かり易い名前をつけて
さきに計算しておいたほうが良いですか?

kakko_a = 1+2+3+4
kakko_b = 5+4+6+7
kakko(kakko_a,kakko_b)

>>593
ありがとうございます
かっこ閉じは改行で分離しない方が良いんですね

599 名前:デフォルトの名無しさん [2020/02/11(火) 11:07:02 ID:BVyNsmkt.net]
実運用としてはblackとかyapfにフォーマットさせてそれに従っとく

600 名前:591 [2020/02/11(火) 11:51:51 ID:QVEssOx9.net]
>>595
これ使えば悩まなくて済みそうです。
ありがとうございます!!



601 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 12:22:58.77 ID:Nq1ZGiCx.net]
pythonの流儀・作法に従うのが一番いい

もしもどうしてもやりたいなら他のメジャーな流儀を真似る

WINAPI とは何か? - C/C++ 入門
https://c.keicode.com/windows/windows-programming-11.php

int WINAPI WinMain (
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow ) {

602 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 13:52:28.79 ID:YRn6ep9S.net]
>>597
>pythonの流儀・作法に従うのが一番いい

そのpythonの流儀・作法を聞いてるのになぜそれに答えずC++のそれもWIN32API持ってくんの?

603 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 14:25:45.03 ID:L4MHQKAq.net]
Pythonの初級を受けた人いますか?
どのような勉強されたか教えてください
m(__)m

604 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:36:18 ID:lGXjI99c.net]
継承クラスのinitの引数が増える場合はどうしたらいいですか?
class person():
def __init__(self, age):
this.age = age

class student(person):
def__init__(self, age, number)
this.age = age
this.number = number

こんな感じにしたいのですが。

605 名前:デフォルトの名無しさん [2020/02/11(火) 15:56:30.44 ID:BVyNsmkt.net]
>>599
ぱいそんのしかくしけんはひとつだけじゃないんだ
きみがいっているのはどのしけんのしょきゅうかな?

606 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:58:27.34 ID:RWYSN8yj.net]
>>599
何にも勉強せずに一度受けてみるとよい
試験の雰囲気と問題の内容と自分の実力がわかる
それを踏まえて備えれば二回目は受かる

607 名前:デフォルトの名無しさん [2020/02/11(火) 15:59:40.15 ID:BVyNsmkt.net]
>>600
Student側でsuper().__init__(age)するだけじゃねーの
ああ、基底クラスの__init__を呼ぶ方法が分からんのかな?

608 名前:デフォルトの名無しさん [2020/02/11(火) 16:01:24.03 ID:BVyNsmkt.net]
それにしても、金になると思うとすぐ資格ビジネス屋が群がりやがって

609 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 16:52:49.23 ID:RUM4eNEQ.net]
a1 = 0, a2 = 0, a3・・・・が続く

for i in range(1, 2):
i = i +1
a[i] = 5
a+数字に値を入れたいのですがa[i]のような使い方はできないのでしょうか

610 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 17:57:52 ID:iLli/Di+.net]
pythonってインターフェースって概念はあるんだっけ?



611 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 17:58:18 ID:L4MHQKAq.net]
>>601
有難うございます。
Python3エンジニア認定基礎試験です

612 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 18:15:03 ID:noKKsZcY.net]
>>605
(インデント崩壊してるからか?)
質問がイミフ

投稿前に1見ろ

613 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 18:35:43.13 ID:AyaWNvDt.net]
これはスゴイ

やりたい事はなんとなく分かるが、
何をやりたいのかが分からない

614 名前:デフォルトの名無しさん [2020/02/11(火) 18:50:33.09 ID:HQEYSI3a.net]
>>605
a1 = 0, a2 = 0

for i in range(1, 2):
i = i +1
exec(' "a"+str(i) + "= 5" ')

615 名前:デフォルトの名無しさん [2020/02/11(火) 19:40:05.81 ID:X3jD9Kja.net]
これは高確率でやり方よくないパターン

616 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 19:47:41.29 ID:a/euzlWM.net]
初心者のうちはそういうことやりたくなるのわからなくもないけど素直にlist使いましょう

617 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 21:21:11 ID:v/oRLdRM.net]
>>605
for i in range(1, 2):
____i = i +1
____x = “a%s” % i # xには”a2”という文字列が入る
____locals()[x] = 5

静的言語のリフレクションみたいなのは
globals/locals, getattr/setattr/delattr

文字列をコードとして評価したいならeval
実行したいならexec

618 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 22:13:11.46 ID:ZhnXkLvm.net]
>>605
a1 = 0, a2 = 0, a3・・・・が続く
があり、それらに、オブジェクトaを通して
a[1]でa1に,a[2]でa2に....([]を使って)アクセスしたいってことだろ。
(a[1]のaはaでなくても、名前みたいなものだから好きなのにしていい。
aシリーズにアクセスするらわかりやすくaにしている)
こんなことを実現するクラスの作り方を教えて?という質問になるよな。
と、言っても俺は低脳で出来ない。
>>612
俺もそれで間に合うならそれが良いがと思う

619 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 22:48:00 ID:v/oRLdRM.net]
>>614
絶対違うと思うがそういう解釈ができなくもないなw

subscriptingは__getitem__, __setitem__を使えば可能
https://ideone.com/7WR8yJ

620 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 22:48:39 ID:6c6RIlRn.net]
あー
for i in range(1000):
__try:
____a[i]=5
__except
的な?



621 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 23:02:14 ID:RUM4eNEQ.net]
605です
レスありがとうございました
>>610さんのアドバイスで私のやりたかったことが出来ました。ありがとうございます。
execを初めて知りましたが、初心者的には便利な使い方ができそうですね
hoge = "aaaa"
exec('hoge = "ほげ"')
print(hoge)

>>616
それです

622 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 02:21:47.75 ID:8gaFy0VD.net]
dtreevizで決定木を可視化したのですが棒グラフの下の閾値が謎の数値と被ってとても見にくい状態です
閾値だけ表示させることはできますか?

623 名前:デフォルトの名無しさん [2020/02/12(水) 08:34:59.50 ID:MxyBlFwL.net]
a1=0,0
はタプルになるから
a1=0,a2=0
もそうかと思ったらこっちはエラーだな

624 名前:コーディングも未経験 mailto:sage [2020/02/12(水) 09:31:44.36 ID:CHK50RDvo]
Python 2.7.17 のインストーラを起動したら、デフォルトのインストール先が
C:\Python 2.7 になっているんだけれど、C 以外にすると何か不都合がありま
すか。(CはSSDで容量が小さい、second bayのHDDを使いたい)

625 名前:デフォルトの名無しさん [2020/02/12(水) 15:55:30.07 ID:a1w2Xqz0.net]
>>617
こいつとは仕事したくない
うちの会社にいたら首切る

626 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 17:24:47 ID:LrVjYqM5.net]
別にええやん
学生かもしれないしプログラマーじゃない可能性も高いし
簡易的なツール作るだけならそんな高いレベル求められないし
execを覚えたというだけでも成長したのにそんな言い草あるか?

627 名前:デフォルトの名無しさん [2020/02/12(水) 17:34:29 ID:QgfOdoDN.net]
>>616
どういうこと?

628 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 18:24:00.47 ID:h0cbN6Js.net]
>>621
初心者が間違った判断をしたならそれを指摘してやればいいだろう。
おれはお前のような奴の方が一緒に仕事したくないよw

629 名前:デフォルトの名無しさん [2020/02/12(水) 22:17:48.25 ID:ohhYjydu.net]
環境はMacです、ワケあってpython2を使おうとしてpip install -U python2を行ったら
Requirement already up-to-date: python2 in
/usr/local/Cellar/pypy3/7.3.0/libexec/site-packages (1.2)
と表示され、versionが1.2でしかもpython2 -Vとしてもコマンドが見つからないと
言われるのでどういうことかと首をかしげpip listを行うと
$pip list
Package Version
---------- -------
appdirs 1.4.3
cffi 1.13.2
greenlet 0.4.13
packaging 20.0
pip 20.0.2
pyparsing 2.4.6
python2 1.2
readline 6.2.4.1
setuptools 44.0.0
six 1.13.0
と表示され、numpyなどが入ってないので何かおかしいと思い、
numpy.__version__、numpy.__file__を確認するとそれぞれ
'1.17.3'、'/usr/local/lib/python3.7/site-packages/numpy/__init__.py'
まあ正直どうなってるかよく分からないのでとりあえずpip install -U numpyを行うと
Successfully installed numpy-1.18.1
しかし上記のように__version__を確認しても、'1.17.3'のままでした。
pipのlistには1.18.1でしっかり入ってます。
これって何が起きてるんでしょうか?Homebrewでinstall

630 名前:した可能性も考えたのですが
brew listを行ってもnumpyもscipyも見つからずpypy、pypy3、pythonがあるくらいです
pipのversionは
pip 20.0.2 from /usr/local/Cellar/pypy3/7.3.0/libexec/site-packages/pip (python 3.6)
です。思い当たる原因としては一回brewでpypy3を消したらpip効かなくなったことですが、
消す前にpipでinstallしたものは今でも普通にimportが効きます。
pipに表示されない原因に思い当たる方がいたらどうかよろしくお願いします。
[]
[ここ壊れてます]



631 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 22:41:09.40 ID:mtSj8YKm.net]
>>625
パス通す順番はジッサイトテモダイジ

MacにしみこんでいるPython(2系)の存在を忘れてはいけない。

632 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 23:00:22.35 ID:bYqOq5KM.net]
605です。ご迷惑をおかけして申し訳ありません
最初に書いた例が私自身もよくわかっていないまま書いたのが駄目でした
皆さまのアドバイスでコードが完成しました
https://pastebin.com/y2QT7m3E
色んな方法があると思うのですが、教えて頂いたexecとevalを使いました
コード中のa_no_list[0] にはforで作ったa1を入れて、そのa1にランダム関数の数字を代入しました
手動でa1,a2を作って値を入れたりというのは出来たのですが、forで任意の回数繰り返して自動でa1,a2作れないかとこちらに相談した次第です
forでprint(a[i])もa(i)もできるようになって、自動でリストの中の要素の中の要素・・・・を表示したり代入できるようになってるはずだと思います
ちなみにこれは初心者参考書を1/4まで読み終わった復習として作りました

633 名前:デフォルトの名無しさん [2020/02/12(水) 23:30:50 ID:ohhYjydu.net]
>>626
ありがとうございます、それ聞いて試しに
aliasのpython="python3"
を外したら動きました、linuxだとpython2で認識するんですけど
macだと効かないんですね……悩んでた問題が一つ解決しました、本当にありがとうございます。

ただ今インストールされてるnumpyやtensorflowなどがpipで出ない方は解決できてません
上記のこともありpip listとpip3 list両方試したんですが全く同じ結果でした……

634 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 23:52:40 ID:ohhYjydu.net]
申し訳ありません、自己解決しました
何故かPATHで/usr/PATH/pypy3が先頭に立っててpypyが一番最初に呼び出される設定になってた為
pypy3のpipが表示されてたんだと思います……PATHのpypy3外したら直りました。
長文と勘違いで迷惑を書けてしまい申し訳ありませんでした。

635 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 00:09:12.49 ID:n7qjy+CZ.net]
セルフってなんやねん!?

636 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 00:14:39 ID:Gd0xgnoa.net]
自分でガソリンを入れるスタンド

637 名前:デフォルトの名無しさん [2020/02/13(木) 08:14:35.67 ID:0eJoVY/8.net]
>>627
どうしてa1とかa2の変数名が必要なのかわからないな

638 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 12:13:43.09 ID:lzB8uQ2A.net]
>>630
オナニーをテーマにした漫画だよ。

639 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 14:49:45 ID:MOac+3r5.net]
>>630
話すと長いから解説してるブログ貼る
簡単に言えばselfを書くことで新しい機能を追加することなく書けるからって考えらしい
https://python.ms/self/#%E3%81%95%E3%82%89%E3%81%AB%E4%BB%96%E8%A8%80%E8%AA%9E%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

640 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 17:35:23.50 ID:r7bSHOfr.net]
pythonでオブジェクト指向やれば
selfだらけになってシグナルノイズ比が高い事は自覚しておくべき

明示的にselfを渡してる言語としてGoやRustと同列に語るのはぶっちゃけ頭おかしい
Goはどの型のメソッドが識別するためにselfを渡してる
Goの場合はそれ以外で識別する方法がないから
Rustはselfの使い方が3種類があるから
関数がどの種類なのかをシグニチャで指定するために明示的にselfを渡してる



641 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 18:39:18.80 ID:Ure0FzdD.net]
>>627
何を参考にコーディングしたらそれが生まれたのか純粋に知りたいw

642 名前:デフォルトの名無しさん [2020/02/13(Thu) 19:02:19 ID:qvECNN2e.net]
条件分岐の分かり易い書き方について教えてください

通常ではa=bで
c=0の時はa=zで
d=1の時はa=yというときに

if c == 0:
__a=z
elif b==1:
__a=y
else :
__a=b

になりますがほとんどの場合a=bになって
まれにa=y やa=zになるとすると
a=bが最後に来るのはわかりにくい気がするんですが
どうしてますか?

643 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 19:45:20 ID:n7qjy+CZ.net]
>>634
ありがてえ!!

644 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 20:12:27 ID:Ure0FzdD.net]
>>637
別に気にならないけど、前に持ってきたいなら
最初に無条件でa=bを記述
その後条件文を記述
にするかな

645 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 20:16:27 ID:Ure0FzdD.net]
ちなみにそんなことよりも、自分がレビューするとしたら
cが0でbが1の時は本当にa=zでいいのかとかが不安になるわ

646 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 21:36:32.33 ID:r7bSHOfr.net]
>>637
通常ケースと通常でないケースという認識なんであれば
3つを並列に書くんじゃなくガード節を使ったりして通常ケースとそれ以外のケースを分離する

def evaluate(b, c):
____if c == 0:
________return z
____if b == 1:
________return y
____return b

647 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 21:40:41.28 ID:zu6t+bqI.net]
コメントにそう書いておく。

648 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 21:59:00.84 ID:n7qjy+CZ.net]
pythonてSwitch文ないの?

649 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 22:08:31.25 ID:Gd0xgnoa.net]
ない

650 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 23:45:35.00 ID:l+IDZGdn.net]
まあ変数の真名と役割をコメントしてくれないと可読性の議論は出来ないよね
順番とか記述方法云々よりそっちが先



651 名前:636 [2020/02/13(木) 23:51:12.83 ID:qvECNN2e.net]
>>639
条件が変わったら上書きしていくのもアリなんですね
ありがとうございます
説明へtsくそですいません・・・

>>641
ありがとうございます
こんな方法あるんですね

>>642
コメントでの説明がへたくそすぎて
後で過去の自分を殴りたくなることが多いですorz

652 名前:デフォルトの名無しさん [2020/02/14(金) 13:14:33 ID:a5iC3cHy.net]
>>637
カルノー図を覚えろ

653 名前:デフォルトの名無しさん [2020/02/14(金) 14:54:01.70 ID:/S4vU3l9.net]
mac os 10.11.6
python 3.7.4

https://ideone.com/Mkhw9S
ターミナルから上のスクリプトを実行すると以下のようなエラーがおきます。
VScodeから実行した場合は問題なく実行されます。
Non-UTF-8 code starting with '¥xe6' in file test2.py on line 2, but no encoding declared;

https://ideone.com/D9Fkym
上のスクリプトはターミナルからも実行できます。
(リストの文字列の数のみの違いです)

以前はこんな感じのエラーは起きなかったのですが
原因がわかる方おられますか?

654 名前:647 [2020/02/14(金) 14:59:14.12 ID:/S4vU3l9.net]
自己レスです。
# coding: UTF-8を入れたらターミナルからも実行できましたが、
なぜリストの内容数とVScodeからだと問題無いのかがわかりません。

655 名前:デフォルトの名無しさん [2020/02/14(金) 15:27:13.81 ID:WtuYdkw5.net]
atomic bomb

656 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 15:34:47 ID:+9NDg3r6.net]
「python non-utf-8 code starting with ' xe6'」で検索!

どうせ、文字コードが異なるとか?
BOM 無しUTF-8 で保存すれば?

漏れは、Windows 10, VSCode で、Ruby, JavaScript などを使うけど、
すべてのファイルを、BOM 無しUTF-8 だけにしている!

657 名前:647 [2020/02/14(金) 15:39:07 ID:/S4vU3l9.net]
>>651
上下とも同じエンコーディング(BOM 無しUTF-8 )で保存しています。
リスト内の文字列は全て同じ文字列の繰り返しで、2種類のスクリプトは要素数のみの違いです。

658 名前:デフォルトの名無しさん [2020/02/14(金) 15:40:45 ID:WtuYdkw5.net]
# coding: UTF-8 書いてなかったんだろ

659 名前:デフォルトの名無しさん [2020/02/14(金) 15:42:19 ID:WtuYdkw5.net]
>>6

660 名前:647 [2020/02/14(金) 15:52:33 ID:/S4vU3l9.net]
>>653
>>649で書いたように、# coding: UTF-8は入れてなかったのですが、
知りたいのは、以下の2点の理由です。
1.VScodeだと問題なく実行できる
2.リスト要素数の違いによるエラーの有無



661 名前:デフォルトの名無しさん [2020/02/14(金) 15:57:16 ID:WtuYdkw5.net]
sys.getdefaultencoding() みろ

662 名前:647 [2020/02/14(金) 16:01:14 ID:/S4vU3l9.net]
>>> sys.getdefaultencoding()
'utf-8'

663 名前:デフォルトの名無しさん [2020/02/14(金) 16:01:50 ID:WtuYdkw5.net]
お前は言われたことしかできないんか?
https://qiita.com/methane/items/6e294ef5a1fad4afa843

664 名前:647 [2020/02/14(金) 16:07:55 ID:/S4vU3l9.net]
>>658
単にマウント取りたいだけなら返信不要です

665 名前:650 mailto:sage [2020/02/14(金) 17:08:51 ID:+9NDg3r6.net]
>>655
VSCode では、Microsoft がPython の拡張機能も作っているし、
設定ファイルにでも、UTF-8 で起動するように書いてあるのだろう

一般的には、IDE などの統合開発環境は、親切

666 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 17:19:37 ID:EOtBZfN8.net]
>>655
原因はバグ
対処は改行して1行のバイト数を減らすか
明示的にencoding指定をファイルの先頭に記述するか
https://bugs.python.org/issue34979

VSCodeで実行できるのは>>660の書いてる通り何か設定してるからだと思われる
俺の環境ではVSCodeでも同じエラーが出る

667 名前:647 [2020/02/14(金) 17:21:58 ID:/S4vU3l9.net]
>>660
>>661
ありがとうございます。すっきりしました。
バグですか。確かに配列内容を分割しただけでエラーが消えたりしてたので悩みました。

668 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 19:07:56 ID:+2T2g9zy.net]
要領悪いやつ
大人しくutf8宣言しときゃ動くんだからそうしろよ
お前なんかがvscodeのバグ発見したからって何になるんだ
時間のムダ

669 名前:デフォルトの名無しさん [2020/02/14(金) 19:13:36.39 ID:x4GfXJj6.net]
単に知的好奇心だろ
おまえみたいなIT土方にはわからんか

670 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 19:39:14 ID:+2T2g9zy.net]
全く知的ではない
ただの"何でvscodeだと上手くいかないのムキー"でしかない
その証拠にバグと分かったらもう投げ出してる



671 名前:デフォルトの名無しさん [2020/02/14(金) 19:44:06 ID:x4GfXJj6.net]
それがなんで証拠なんやろうか
バクについてまでは興味ないってだけやろうに
土方が偉そうに評価するな

672 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 19:56:12 ID:+2T2g9zy.net]
バグだったら仕方ない、
自分のせいじゃない、
よかったよかったあースッキリ。

どこに知的要素が存在するのか

673 名前:デフォルトの名無しさん [2020/02/14(金) 20:00:15 ID:x4GfXJj6.net]
知的好奇心のない奴は動けばいいやでuft8宣言して終わりだろうな

674 名前:650 mailto:sage [2020/02/14(金) 20:19:25 ID:+9NDg3r6.net]
プログラマーが日本語のバグで時間を使うのは、馬鹿らしい。
Python は、日本語対応をやってない

Ruby なら、Cookpad・マネーフォワード・Ruby 開発とか、
日本人のメンテナーが、一杯いる

675 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 20:23:20 ID:+2T2g9zy.net]
>>668
だからそれで終わりでよい
知的な意味もなく自己満足のためにムダな時間費やす無能よりも幾らか使えると言っているのだ

676 名前:デフォルトの名無しさん [2020/02/14(金) 20:26:32 ID:x4GfXJj6.net]
IT土方は動けばいいだけだもんな

677 名前:デフォルトの名無しさん [2020/02/15(土) 00:24:05 ID:GcRD3KfQ.net]
True=1,False=0じゃなくて
IFで何行も書かなくても
Trueの時は1をかけて、Falseの時はマイナス1を掛ける方法ってありますか?

678 名前:デフォルトの名無しさん [2020/02/15(土) 00:33:48 ID:NYbvjz3Y.net]
普通は
*(1 if hoge else 0)
だろうな
hoge*1でもできるっぽいけど

679 名前:デフォルトの名無しさん [2020/02/15(土) 00:50:26 ID:GcRD3KfQ.net]
>>673
*(1 if hoge else -1)
で行けるんですね
ありがとうございます!

680 名前:デフォルトの名無しさん [2020/02/15(土) 00:52:40 ID:NYbvjz3Y.net]
よく読んでなくてすまん



681 名前:デフォルトの名無しさん [2020/02/15(土) 04:34:54 ID:CrxoAXqf.net]
>>672
hoge*2-1

682 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 07:03:08.25 ID:1M8DJTak.net]
>>676
Basicは三項演算子なかったからその手のコードよく見かけたな
Trueが-1だから-2*hoge-1とかにしないと駄目だけど

683 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 07:39:54.28 ID:cl/r4jK1.net]
*[-1,1][hoge]とか

684 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 08:44:35.96 ID:lCqRUL4P.net]
>>671
その通り
コマはコマらしく動いていればよい

685 名前:デフォルトの名無しさん [2020/02/15(土) 12:23:37 ID:GcRD3KfQ.net]
みなさん色々ありがとうございます
>>678
*[-1,1][hoge]なら短いし
1か−1を掛けてるのが一目でわかっていいですね。

686 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 12:33:06.53 ID:Od0WFVIs.net]
>>680
横からですまんが
この*は何?掛け算記号じゃないよな

687 名前:デフォルトの名無しさん [2020/02/15(土) 12:54:17.21 ID:OeWG4QMt.net]
どーでもよくて草

688 名前:デフォルトの名無しさん [2020/02/15(土) 13:02:49.71 ID:GcRD3KfQ.net]
>>681
>>672で-1か1を掛けたいと質問したので
*マークをつけてくれたんだと思います

689 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 13:09:52.19 ID:a5tEBtfb.net]
それはわたしの肛門だ

690 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 13:29:58.94 ID:J1bovO5o.net]
糞みたいな小手先のテクニック使うくらいなら潔く if else で書けや



691 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 14:48:11.69 ID:cTwFsuY/.net]
x * [-1, 1][hoge]ってことだと思うが
流石にこれはない

評価する変数にboolしか入らない状況なら
x * (hoge or -1) でいいんじゃないかと思うが
これだと何のためにやってるかわかりにくいので
通常のif else使って関数化したほうがいい気もする

692 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 22:11:51.52 ID:L3zGf310.net]
>>685-686
俺もそう思う。
元質問をしたPythonでの三項演算の表記を知らないレベルの人は
x * [-1, 1][hoge]やx * (hoge or -1) を嬉々として・どや顔して
使いそうだが

693 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 22:40:28.65 ID:cl/r4jK1.net]
[-1, 1][hoge]は0,1以外弾くから結構間違いが入り込みにくい実装なんだけどね。

まぁ、普通は三項演算子使うだろうな。

694 名前:デフォルトの名無しさん [2020/02/15(土) 23:35:32.08 ID:GcRD3KfQ.net]
質問ですが
def内で使う変数名を考えるのが面倒だし
後でどれがどれか分かるように
引数と同じ変数名にしてますが
問題ないですか???

グローバル変数はほぼ使ってないです。

695 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 23:49:52.90 ID:robjZmR7.net]
def addnumbers(a, b):
return a+b

a=10
b=5
print(addnumbers(a, b))

みたいな話?
なら別に問題はないけど。

引数じゃなくて関数内で宣言するローカル変数の話なら、頭に_をつけたりして外の環境をマスクしないようにしたほうがお行儀がいいけど。

696 名前:デフォルトの名無しさん [2020/02/16(日) 00:44:18.75 ID:S0ZkinLG.net]
>>690
そんな感じです
ありがとうございます
解説とかだと大抵名前変えてあるので
変えた方がいいのかと思い込んでいました

697 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 02:28:25 ID:Q6srCXr2.net]
>>691
動くか動かないという意味では動くから、同じであっても問題はない、というだけだぞ。
意味的に分かりやすく適切な名前をつけるべき。

698 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 09:01:43 ID:17VZ7Cpd.net]
>>691
> 変数名を考えるのが面倒
これは2年後にタイムマシンで過去の自分をブン殴りたくなるまでなおらんとおもうが
なおせるものなら早めになおしとけ

> 後でどれがどれか分かるように
この発想はただしい。
で、どうしたらいいのかについては>>692が書いてくれてる

つまり

考えるのが面倒だから、って理由で
引数の名前をaだのbだのにしておくのはやめておけ

699 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 09:35:32 ID:xJ91WGrf.net]
名前を考える時間がもったいない
スクリプト言語はいかに早く作り早く動かすかが命
一度動けば後は野となれ山となれ

700 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 10:19:55 ID:1yJgvEz2.net]
どうしても名前を考えるのがめんどくさいならば
注釈で変数の意味を書いておくという方法もある
典型的な変数の値も書いておくとなおよい



701 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 10:26:00.98 ID:6foDUZHe.net]
関数の分割と命名が適切ならローカル変数なんて全部一文字でいいよ
そんなことで読めなくなるような長い関数を書くな

702 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:27:23 ID:17VZ7Cpd.net]
>>696
2行目には禿同

>ローカル変数なんて全部一文字でいい
ここまでがんばる必要はない

703 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:28:24 ID:17VZ7Cpd.net]
>>694
そう思っていた時期もありました
まだならこれからなるか、或いはクビになるでせう

704 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:33:53.98 ID:vdOGaRiC.net]
Goはむしろ一文字変数と引数を推奨してるね
コードが十分に構造化されていれば、長い変数名はノイズになって逆に読みにくいってのは一理ある

705 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 12:08:56.63 ID:KXHJAKTO.net]
bad know howの固まりのようなスレだな

706 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 12:24:10 ID:5YcuBhUR.net]
689だけど無次元数を扱う場合はa,bとかm,nとかを使うな
ファイルディスクリプタならfd
ループインデックスはi,j,kとかix,iy
それ以外は英単語2〜3個を繋いで変数名にして
PandasのDataFrameやNumpy Arrayみたいに実質型のないものはアプリケーションハンガリアン
ローカル変数だと頭にアンダースコアをつける感じだな

707 名前:デフォルトの名無しさん [2020/02/16(日) 12:26:02 ID:uPTaqoVN.net]
雑魚はせめてリーダブルコードでも読んでからコメントして

708 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 12:37:40 ID:KXHJAKTO.net]
>>702
それな

709 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:00:47 ID:17VZ7Cpd.net]
「最善の名前とは読み手が誤解を招かないこと」って書いてないか?

710 名前:688 [2020/02/16(日) 13:04:49 ID:S0ZkinLG.net]
ローカル変数名ですけど

例えば名古屋から広島の距離を計算するとして

def kyori(nagoya,hirosima)
___length = nagoya-hirosima
___return length


#東京からの距離
tokyo = 0
nagoya = 350
kyoto = 457
hirosima = 768

length = kyori()

っていう感じですけど
意味があって分かり易いだと
一文字だと長さはまだlで分かり易いと思うんですが
defが増えていくったときに
それぞれのdef内でもまだ個性的な名前を付けた方がいいのですか???

length_kyoto_hirosimaとか???



711 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:13:22.41 ID:xJ91WGrf.net]
>>705
やたら気にするけどどうしたの
仕事なら職場やプロジェクトのコーディングルールに従えばいいし
個人の趣味なら自分がわかりやすければそれでいいのよ

712 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:19:18.43 ID:vdOGaRiC.net]
>>705
まあ気持ちはわからないでもないが、慣れてくるとそのへんは問題にならなくなるから現時点でそんなに気にしなくていい
はっきり言って、同じものを多数の関数に引き回していること自体がヘタクソ
それを回避する方法は「こうすればいい」と教科書的に言えるものではなく設計センスの問題で、君にも自然にわかってくる

713 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:24:20.27 ID:17VZ7Cpd.net]
>>705
そのdefのはっそうは、正直よろしくないとおもう。

使いまわせないだろw

def kyori(from, to):
にすれば、使いまわせるだろw

でもって、
引数のあとの「:」を忘れるな

(PEPにも書かれてるらしいが)
1ミクロンでも他人に見せる予定があるコードならば、
「kyori」はやめて、和英辞書を引いて、distanceをチョイス。
さらにいえば、
距離を計算する函数なのだから
「def calc_distance」みたいな名前にしよう。

714 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:26:21.56 ID:17VZ7Cpd.net]
>>708修正
よろしくない: from, to
モアベター: from_point, to_point あるいは from_city, to_city とかとか

715 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 14:30:21.73 ID:iNVxJNOu.net]
関数定義や関数のことを`def`って呼ぶのちょっとモヤるんだけど一般的なのかな?

>defが増えていくったときに
>それぞれのdef内でも
>そのdefのはっそうは、正直よろしくないとおもう。

716 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 14:33:43.62 ID:E60C1LrQ.net]
namedtuppleのクラス継承って3.5.3じゃ無理なのですか?
無理ならバージョン何からできます?

717 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 14:46:40.85 ID:Rlzwkt+8.net]
>>710
pythonスレならまあわかるでしょ
ってレベルかと

718 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:03:54.06 ID:17VZ7Cpd.net]
>>710
なるほど
函数定義って言えばいいのか
なるほどなっとく

口語でdefの〜みたいに教えられて
正式名称しらなんだ感。
たぶん704もそうなんじゃないかと、エスパーしてみる。

719 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:08:15 ID:17VZ7Cpd.net]
>>711
綴りちがっとる
×tupple
〇tuple

from typing import NamedTupleがイケるのが3.6.1からなので、
たぶんそのへんからナンジャネーノ(適当)

720 名前:688 [2020/02/16(日) 16:38:20.27 ID:S0ZkinLG.net]
>>706
趣味でやってるんですが
ほぼほぼ作ったのが後々改造できなくて
投げ捨てるはめになってるので
何とかしたくてって感じです

>>707
趣味なので自然と身につかないのです・・・

>>708
具体例ありがとうございます
気を付けます



721 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 16:53:49.03 ID:17VZ7Cpd.net]
>>715
> ほぼほぼ作ったのが後々改造できなくて
> 投げ捨てるはめになってる
www
わかるwwwww始めたばっかりの頃のあるあるwwwwwわかるwwwww


オライリーの
リーダブルコード
  ISBN-10: 4873115655
  ISBN-13: 978-4873115658
(あるいは
ビューティフルコード
  ISBN-10: 4873113636
  ISBN-13: 978-4873113630 )

買って読んでみたらー
中古でも安くなってないだけのことはあるでよー

722 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 17:07:16 ID:05WBirzM.net]
オブジェクトがコピーなのか現物なのか、調べるにはどうすればよいですか。または全て現物で渡すには?

1. クラスの初期化時に引数として渡してselfに格納
2.クラスのgetterメソッド返り値としてselfの値を返却する
3.手順2で得られた値を演算したものをクラスのsetterメソッド引数として渡してselfに再格納

1〜3まで全て現物でいてほしいのですが、どこかでコピーになってしまうようで同期しません。

723 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 17:11:30.05 ID:05WBirzM.net]
716、自分でも分かりにくいので追記です、

e = 1
a = Class1(e)
b = Class2(e)

tmp = a.getE()
tmp += 1
a.setE(tmp)

b.print()

このprintの結果が、2となって欲しいのです。

724 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 17:18:43.25 ID:17VZ7Cpd.net]
>>717-718
書き込む前に>>1

>オブジェクトがコピーなのか現物なのか、調べるには
id(オブジェクト)
↑これがオリジナルとコピーでは異なるので確認汁

725 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 17:44:48.94 ID:05WBirzM.net]
>>719
ありがとうございます。
原因わかりました。
716で書いてるeが実際はイミュータブルだったので、書き換える際にreplace呼んでid変わってたみたいです。
eを自作クラスに変えたら動きました。ありがとう

726 名前:デフォルトの名無しさん [2020/02/16(日) 19:45:43.91 ID:w90VPIvZ.net]
リーダブルコードでググったら英語版はタダで見れるのか
苦Cみたいなもんか?

727 名前:688 [2020/02/16(日) 19:51:59.66 ID:S0ZkinLG.net]
>>716
調べてみます
ありがとうございます

728 名前:デフォルトの名無しさん [2020/02/16(日) 20:00:33.27 ID:S0ZkinLG.net]
このクラスの########から########の間を
書き換えて別の子クラスを作る方法を教えてもらえませんか?
リターンはなくて条件によってどんどんpを書き換えていく感じの内容です

class coner:
__def __init__(self):
____self.angle = 0.0
____self.width = 0.0
#以下self.が沢山

__def tijimi(self):
#####################################
____if 0 <= self.angle < math.pi/3:
______#計算式色々
______p = l

____if self.angle == 0 :
______#計算式色々
______p=l
____#以下ifでangleを調べてpを上書きしていくif分沢山
#####################################################

____if self.width == 50:
______#計算式色々
______p=l
____if self.width == 80:
______#計算式色々
______p=l

729 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 20:56:22.89 ID:05WBirzM.net]
class tijimi(coner)作ってsuperのinit呼んだ後にif文羅列じゃ駄目なの?

730 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 21:14:42.57 ID:iNVxJNOu.net]
>>723
>書き換えて別の子クラスを作る方法
継承してオーバーライドすること言ってるのかな?

それと
条件によってpをどんどん書き換えていくような仕様は
一般的にはものすごく悪い設計
バグりやすいしテストもしにくいので避けたほうがいい



731 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 21:47:49 ID:17VZ7Cpd.net]
>>721
>英語版はタダで見れる
なん・・・だと・・・・

まあいいや
日本語版書籍には訳者によるおまけがついてるらしいから・・・

732 名前:722 [2020/02/16(日) 22:05:37 ID:S0ZkinLG.net]
>>725
たぶん、継承オーバーライドの事だと思います
よくわかってなくてすいません
pを書き換えていくのを直します
ありがとうございます

>>724
ありがとうございます
やってみます

733 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 22:59:10 ID:5EL9p8ON.net]
Ruby なら、B はA から派生したクラスで、
派生クラスで、親クラスの同名のメソッドを上書きする(override)。
@ はインスタンス変数

class A
def f( ) @x = 1 end
end

class B < A
def f( ) @x = 2 end
end

p A.new.f #=> 1
p B.new.f #=> 2

734 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 00:33:34.29 ID:VGvKWI+b.net]
リーダブルコードもコードコンプリートも読んだ上で700書いてるけどねえ
PEP8とかもそうだけど、知恵とルールを混同してしまう人が結構いる

735 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 02:53:30.28 ID:DyKTwZyk.net]
お前にはその両方が足りていない

736 名前:デフォルトの名無しさん [2020/02/17(月) 05:56:39.51 ID:9Byn+CCQ.net]
アンカも打てないのかよ
いちいち自分で辿らせるとかどんだけ構って欲しいんだ

737 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 07:12:48 ID:a4xzah5x.net]
>>728
endとか90年代かよダッサ無駄な記述乙

738 名前:デフォルトの名無しさん [2020/02/17(月) 07:47:39.40 ID:wxeqwMT5.net]
裏表紙のない本
ドアのないトイレ
キャップのないペットボトル

739 名前:デフォルトの名無しさん [2020/02/17(月) 11:57:31.26 ID:xV6ZEvHF.net]
Macなんですが元々入ってるPython2系をpython2で呼び出して
Python3系をpythonコマンドで呼び出す方法ってありませんか?
alias python="python3"
を設定してもpython2が使えなくなる代替案を探してる最中です

740 名前:デフォルトの名無しさん [2020/02/17(月) 12:37:38.00 ID:m/x7HUx7.net]
>>730
読んであれならヤバイ級だよなあ



741 名前:デフォルトの名無しさん [2020/02/17(月) 12:38:09.76 ID:m/x7HUx7.net]
エイリアスにフルパス入れちまえよ

742 名前:デフォルトの名無しさん [2020/02/17(月) 12:53:44.11 ID:xV6ZEvHF.net]
>>736
エイリアスで置き換えすることばかり考えてました、ありがとうございます
m(_ _)m

743 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 13:05:59.25 ID:sUzH4s3p.net]
>>732
トイレを使って水を流さない犯人を見つけた

744 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 13:31:47.59 ID:y136Nw0W.net]
>>734
pipだったり他のプログラムが使ってるpythonの依存ぶっ壊れるようなやり方すぎる。
dockeで隔離するか、pyenv, anaconda 使うなりする方が問題起きたときに復帰しやすいと思われる。

745 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 15:10:44.14 ID:wzCOK5rA.net]
>>734
ln -s /usr/bin/python /usr/local/bin/python2
ln -s /usr/local/bin/python3 /usr/local/bin/python

746 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 15:56:50.96 ID:y136Nw0W.net]
完全に環境ぶっ壊しにかかってんな。。カスだな。

747 名前:デフォルトの名無しさん [2020/02/17(月) 17:29:32.07 ID:91EB+qlc.net]
>>738
Rubyはスレチだから

748 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 19:14:02.33 ID:A9t7x7q2.net]
デフォルトの設定を変えたら、それを使っている無数のアプリがバグルw

OS の仕組みを学べ!

749 名前:デフォルトの名無しさん [2020/02/17(月) 20:02:52.96 ID:4yysNtzR.net]
呼ぶときはPython2ならpythonで、Python3はpyで呼べるようになってるだろ
方針としてpythonで呼ばれるのはPython2のままにするっていうのがあるし

750 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 20:03:49.54 ID:4njBz49B.net]
$ pip3 --version
bash: /home/xxx/.local/bin/pip3: そのようなファイルやディレクトリはありません
$ which pip3
/usr/bin/pip3

以下のページ通りにやったら直った

パッケージ更新インストール後にコマンドが実行できない場合の対処
https://qiita.com/vmmhypervisor/items/e846338b204061040957



751 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 21:27:41.44 ID:EJ6dkZYZ.net]
Python記事まとめ(毎日自動更新)
https://qiita.com/kamata1729/items/eaf1d7b945b3a61a4fdd
Qiita週間ストック数ランキング【自動更新】
https://qiita.com/kai_kou/items/180a91fd88dbbbd746f6

752 名前:デフォルトの名無しさん [2020/02/18(火) 00:00:11 ID:o6M8r8f5.net]
import numpy as np
a = np.array([1,2,3])
print(a.shape)

こうやると、
(3,)
と表示されますけど
この3の後ろにあるカンマは
どゆ意味なんでしょう?
不必要としか思えないのですが?

753 名前:デフォルトの名無しさん mailto:sage [2020/02/18(火) 00:10:14.62 ID:ObTpNy6/.net]
tuple
同じ型が返されることに意味がある
(3,)と(3)で型を比べてみればいい

754 名前:デフォルトの名無しさん [2020/02/18(火) 00:17:31.22 ID:o6M8r8f5.net]
>>748
ありがとうございます。
型を比べると(3)はint、(3,)はtupleですね。
np.arrayのshapeをtuple型の同じ型にする、
ということですね?

755 名前:デフォルトの名無しさん [2020/02/18(火) 13:43:57.54 ID:ZbgU3Gim.net]
全然違うω

756 名前:デフォルトの名無しさん mailto:sage [2020/02/18(火) 13:54:29.04 ID:2AC9Ct1n.net]
>np.arrayのshapeをtuple型の同じ型にする、
>ということですね?
日本語がおかしい、もしくは理解の仕方がおかしい。
「np.array の shape を print で確認したら、tuple 型で (3,) だった。」
くらいは書いてほしい。

757 名前:デフォルトの名無しさん [2020/02/18(火) 17:44:44 ID:NpZig/vi.net]
>>749
何が言いたいのかよくわからない
何と何が同じなの?

758 名前:デフォルトの名無しさん mailto:sage [2020/02/18(火) 20:55:10 ID:EFQS+VhN.net]
新しいノートパソコン買ったけど使ってるやつpipして入れていくの面倒だな

759 名前:デフォルトの名無しさん mailto:sage [2020/02/18(火) 22:11:49.35 ID:kXXzWqPh.net]
>>753
現行このスレの上の方か、前スレで
pipで既に入ってるものを全部txtに吐かせて
それを新しいPCにコピーして
新しいPCのコマンドプロンプトからpipに食べさせる方法レスした記憶

760 名前:デフォルトの名無しさん mailto:sage [2020/02/18(火) 22:25:08.60 ID:Sq+szhyd.net]
>>753
コマンドをバッチファイルに記録しておくのおすすめ
何を入れたのかの備忘録にもなるし、クリーンインストール後にも一気に復帰可能



761 名前:デフォルトの名無しさん mailto:sage [2020/02/18(火) 22:27:06.73 ID:I7Q3zK/c.net]
あーそういやエクセルにpip一覧作ってコピペって入れてたな
あれバッチにすればよかったのか!

762 名前:デフォルトの名無しさん mailto:sage [2020/02/19(水) 00:22:18 ID:67Zh1tMt.net]
>>754で書いてた過去のレスの、要約したったど

てきとうな階層でコマンドプロンプト起動して
pip freeze > requirements.txt

できたtxtを次のPCの
これまたてきとうな階層に入れ、
そこからコマンドプロンプト起動して
pip install -r requirements.txt

763 名前:デフォルトの名無しさん [2020/02/19(水) 11:51:55.61 ID:cGULNOoW.net]
そしてcondaに感染

764 名前:デフォルトの名無しさん mailto:sage [2020/02/19(水) 18:42:16.77 ID:DTFko2h2.net]
このコードについて質問です
https://github.com/TestStudio/usbmuxd/blob/master/python-client/usbmux.py

class MuxError(Exception):
   pass

raise MuxError("socket connection broken")

みたいな書き方がされていますが、なぜ何もしない(passだけする)クラスを作って使用しているのでしょうか?

765 名前:デフォルトの名無しさん mailto:sage [2020/02/19(水) 18:45:07.19 ID:RE1Trb9N.net]
raiseだからじゃない

766 名前:デフォルトの名無しさん mailto:sage [2020/02/19(水) 19:01:50.35 ID:Um90NQYB.net]
Ruby なら、StandardError を継承して、カスタム例外クラスを作るだけ!

class MyError < StandardError
def initialize( msg="引数なし" )
super
end
end

raise MyError #=> 引数なし (MyError)

raise MyError, "引数あり" #=> 引数あり (MyError)

767 名前:デフォルトの名無しさん mailto:sage [2020/02/19(水) 19:32:54.08 ID:TvNfUAFk.net]
Exceptionを継承してるのだから何もしてないわけではない
既存の例外クラスをそのまま使わず新たな例外クラスを作ればexcept節で場合分けしやすくなる

768 名前:デフォルトの名無しさん mailto:sage [2020/02/19(水) 23:14:11 ID:DTFko2h2.net]
>>762
ありがとうございます

769 名前:デフォルトの名無しさん mailto:sage [2020/02/19(水) 23:17:38 ID:DTFko2h2.net]
質問が大雑把すぎて答えてもらえない気がするんですが…
>>759に関してダメ元で聞きたいです。
>>759のコードをPython3.7で実行するとこんな感じのエラーが出るのですが何をどうしたら直せますか…?
いくつもエラーが出ているんですが、1つだけでも良いので…教えてもらえると嬉しいです…。
どのエラーも直し方がわからないです。。

Traceback (most recent call last):
File "C:\Users\username\Desktop\test.py", line 238, in <module>
mux = USBMux()
File "C:\Users\username\Desktop\test.py", line 222, in __init__
self.listener.listen()
File "C:\Users\username\Desktop\test.py", line 191, in listen
ret = self._exchange(self.proto.TYPE_LISTEN)
File "C:\Users\username\Desktop\test.py", line 184, in _exchange
self.proto.sendpacket(req, mytag, payload)
File "C:\Users\username\Desktop\test.py", line 101, in sendpacket
data = struct.pack("IIII", length, self.VERSION, req, tag) + payload
TypeError: can't concat str to bytes

770 名前:デフォルトの名無しさん mailto:sage [2020/02/19(水) 23:53:08.56 ID:GM7mImOk.net]
>>764
いくつもエラーが出てるんじゃなくて
エラー内容と呼び出し履歴が表示されてるだけ

101行目ので
「TypeError: can't concat str to bytes」ってエラーが発生してる
python2用のコード



771 名前:デフォルトの名無しさん mailto:sage [2020/02/20(Thu) 00:05:49 ID:rl2y9G0y.net]
よく見たら11年以上前のコードやん
個人的にどういう経緯で辿り着いたのか気になる

772 名前:デフォルトの名無しさん mailto:sage [2020/02/20(Thu) 00:35:27 ID:x93hW6cn.net]
>>765
ありがとうございます…!!
101行目のエラーさえ潰せれば解決なんですね…!!

>>766
iOSデバイスとPC上のPythonをUSB/lightningケーブルで接続して通信をしようと思ったのですが
それらしき情報がコレしか見つからなかったので辿り着きました

773 名前:デフォルトの名無しさん [2020/02/20(Thu) 12:40:33 ID:sbHTvmgo.net]
不潔ゾーンからお帰りください

774 名前:デフォルトの名無しさん mailto:sage [2020/02/21(金) 16:02:46 ID:x3GQj6xQ.net]
インスタンス変数についての質問です
他言語(c/c++/c#)から入った人間の例に漏れずself/clsって何なの…となりました
で色々見ているのですが1番大きな疑問はインスタンス変数です
サンプル見ると大体コンストラクタでself.x=とかやってますがこのxはどこで定義されているのですか?
仮にこれが定義としてもコンストラクタや関数内部で定義したものがスコープ外でつかえるのは妙です
それに関数で新しく定義出来てしまうならインスタンシエイト時にそのオブジェクトがどのようなメンバを持つのかの情報が欠落していることになります
この辺りの解説を探しても見つけられませんでした
ご教授頂ければ幸いです

775 名前:デフォルトの名無しさん [2020/02/21(金) 16:35:03 ID:AkYRUnXu.net]
コンストラクタでself.x=とやればそこで定義される

776 名前:デフォルトの名無しさん mailto:sage [2020/02/21(金) 16:35:43 ID:RiyafmFC.net]
>>769
>インスタンシエイト時にそのオブジェクトがどのようなメンバを持つのかの情報が欠落していることになります
オブジェクトがどういうメンバを持つかは静的じゃなく動的
インスタンス化後にインスタンス変数やメソッドを追加できる
クラスはディクショナリみたいなものだと思っておけばいいよ
https://ideone.com/aAGA0y

>仮にこれが定義としてもコンストラクタや関数内部で定義したものがスコープ外でつかえるのは妙です
メソッドの第1引数にレシーバのオブジェクトが渡されるので
それを`self`という名前の引数で受けてメソッド内では渡されたレシーバを使って
`self.x`とかでインスタンス変数を参照してるのでスコープ外ではない
ちなみにselfは慣習として使われてる変数名であってhogeとかに変えても問題なく動く

777 名前:デフォルトの名無しさん [2020/02/21(金) 16:35:53 ID:AkYRUnXu.net]
あとCの経験があるならPyObjectについて調べたら理解が進むはず

778 名前:デフォルトの名無しさん [2020/02/21(金) 17:12:06.44 ID:QP8p1GF2.net]
仮想通貨のbotを作りたいんだけど、
AWSのCloud9で、
pythonのプログラムかいて動かす場合、
ブラウザー閉じたり、PCの電源切ったりしても、
プログラムはずっと動くの?

779 名前:デフォルトの名無しさん mailto:sage [2020/02/21(金) 17:31:14 ID:2TMdipPT.net]
>>769
Ruby では、デフォルトでインスタンス変数は、private だから、
アクセサー(attr_accessor)で宣言しないと、クラス外部からアクセスできない

class A
attr_accessor :x
def initialize
@x = 1
end
end

p A.new.x #=> 1

780 名前:デフォルトの名無しさん mailto:sage [2020/02/21(金) 17:33:36 ID:2TMdipPT.net]
仮想通貨は、Solidity だろ



781 名前:デフォルトの名無しさん mailto:sage [2020/02/21(金) 20:23:10 ID:/Xk0nwt/.net]
>>773
そのように組めばそのように動く

782 名前:デフォルトの名無しさん [2020/02/21(金) 20:31:58 ID:QP8p1GF2.net]
>>776
そうですかぁ
停電とかPCの故障で停止して、
大損したらまずいと思ってたから、
AWSでずっと動かしてみる、
クラウドなら停止しないで安心ですね。

783 名前:デフォルトの名無しさん mailto:sage [2020/02/21(金) 21:03:51 ID:/Xk0nwt/.net]
>クラウドなら停止しないで安心
ヒソ( ´д)ヒソ(´д`)ヒソ(д` )ヒソ

784 名前:デフォルトの名無しさん mailto:sage [2020/02/21(金) 21:52:48.61 ID:g+Ne8Q54.net]
>>777
そのレベルなら停電の心配するより自分のプログラムのバグで損失出す可能性の方がはるかに高いだろう。

785 名前:772 [2020/02/21(金) 23:27:12.20 ID:QP8p1GF2.net]
Cloud9にPyCarmで書いてたプログラムを移して、
AWSで動かしてみました、
ブラウザー閉じても、無事に自動で動いてるみたい、
もう、20円くらい稼げた、
これで、寝ているだけで朝起きたらお金が増えてるかな、
AWSは750時間分無料で使えるみたいなので、
しばらくこのまま動かしてみます。

786 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 00:10:39.94 ID:pQxmP5Jc.net]
朝起きたらバンされてるから

787 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 02:14:03.09 ID:R+gSedzt.net]
◎バグで損失
〇アルゴリズムがクソで損失
△利用料の請求でしぬ

788 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 08:40:23.32 ID:6wlvfoPI.net]
>>771
参考になりました
https://stackoverflow.com/questions/12569018/why-is-adding-attributes-to-an-already-instantiated-object-allowed
検索して見つけたんですがここでもクラスはディクショナリの糖衣構文なんて書いてますね
いやしかしそうすると同じ型のオブジェクトなのにその後の操作によって違うメンバを持ってたりするわけですか
えぇ……型適当すぎませんかpython……

selfに関しては自分自身を参照型なりポインタなりで関数内に渡していじくってると考えればいいんですかね
なぜthisにしない……そして自分自身が変化しないインスタンスメソッドでselfなんで書かねばならんのだ……

789 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 09:16:04.11 ID:/f58S0oT.net]
>>783
言語が異なれば用語や概念は異なるのだから、自分の母国語に無理に当てはめて考えようとすると行き詰まるぞ。それぞれの言語で意図やポリシーがあってその言語の仕様が作られているのだから、違う考えに基づくものだとして違いを受け入れ、理解しようとしてみなよ。

790 名前:772 mailto:sage [2020/02/22(土) 09:50:55.45 ID:ltYpm+bh.net]
動かしたまま寝て朝見たら、
無事に動き続けてました、
45円くらい利益出たから、
半日もしないのに資金の1.2%程増えた、
ほんとに、寝ているだけで朝起きたらお金が増えてるw
クラウド便利ですね、ありがとうございます。



791 名前:デフォルトの名無しさん [2020/02/22(土) 10:10:20 ID:hsz3eTB9.net]
>>783
嫌なら使わなくていいよ
世界で2番目に使われてる言語は諦めて田舎で畑でも耕してな

792 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 12:14:02.69 ID:4QVNajON.net]
>>783
selfに関してはC++やっている奴なら、非明示でC++のメンバ関数にもPythonのself
のようなもの(this ポンタ)が渡されると知っているんじゃないのか?
www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03057.html
>メンバ関数には this ポンタが隠し引数として渡されるので、普通の関数と同じようには扱えないのです

793 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 13:22:04 ID:WVugcdbO.net]
>>783
Python開発した当時にthisを使ってたのはC++くらいだしね。
SmalltalkやObjective-CはselfだしJavaやJavaScriptはまだ出てなかった。

794 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 13:45:22 ID:qQaAG+8d.net]
レシーバーは、Ruby ではself、jQuery ではthis で、
どちらも引数で渡さないでも使えるように、実装で頑張った

Rubyのインスタンス変数には、@ を付ける。
@x = 1

Ruby のself は、文脈依存。
モジュール内で、クラスの外では、Module

module M
p self.class #=> Module
class C
p self.class #=> Class
end
end

M::C.new

795 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 13:46:07 ID:BwPLw7gM.net]
なぜthisにしない……って
そりゃCやC++で開発するんだから被るthisは回避するじゃん
C++で使ってないselfになるのは順当

Cで作る→C++に移行 との可能性はわずかながらあり

796 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 15:28:23 ID:8UzPa+1r.net]
プログラム未経験のまったくのど素人です

以下のコードを実行しても何も起こりません
なぜか逆スラッシュが\になってしまい、それが原因でしょうか?

長いので二つにわけます

def hangman(word):
wrong = 0
stages = ["",
"_______ ",
"| ",
"| | ",
"| 0 ",
"| / | | ",
"| / | ",
"| "
]
rletters = list(word)
board = ["_"] * len(word)
win = False
print("ハングマンへようこそ !")

797 名前:790 mailto:sage [2020/02/22(土) 15:30:30 ID:8UzPa+1r.net]
while wrong < len(stages) -1:
print("\n")
msg = "1文字を予測してね"
char = input(msg)
if char in rletters:
cind = rletters.index(char)
board[cind] = char
rletters[cind] = "$"
else:
wrong += 1
print(" ".join(board))
e = wrong + 1
print("\n".join(stages[0:e]))
if "_" not in board:
print("あなたの勝ち !")
print(" ".join(board))
win = true
       break

如何でしょう?

798 名前:デフォルトの名無しさん [2020/02/22(土) 15:40:17.92 ID:2qBDSHyD.net]
一方うbyはklassを使った

799 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 15:57:31 ID:/f58S0oT.net]
>>791
まず>>1を読んでその通りにする。話はそれからだ。

800 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 16:10:09.30 ID:mY130Jrs.net]
hangman関数を定義したけど呼び出してないからでは?



801 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 16:18:17 ID:nfgptzfk.net]
>>783
>えぇ……型適当すぎませんかpython……
Pythonに限らずJSやRubyなんかのOOをサポートしてる動的言語はだいたい同じ
クラスやオブジェクトのベースはディクショナリ

>そして自分自身が変化しないインスタンスメソッドでselfなんで書かねばならんのだ……
Cやシェルスクリプトと同じでレガシーな言語だからイケてない部分もたくさんある
そういうものだと思って受け止めるしかない
開発者が使いやすいように積極的に機能追加していくような言語ではないからね

Stackoverflowとか見てもわかるけど
Pythonコミュニティは割と言語機能に対するコンプレックス強いから
イケてないところ指摘すると逆ギレされやすいから気をつけて

802 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 16:38:39 ID:qQaAG+8d.net]
>>910-911
>win = true
win = True

それと、break の前に、何かの文字が入っているとか?

803 名前:796 mailto:sage [2020/02/22(土) 16:51:45.07 ID:qQaAG+8d.net]
>>910-911
ちゃんと動く

Python は、スペースでインデントしないといけないのか。
タブでは動かない

804 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 17:20:59 ID:WVugcdbO.net]
>タブでは動かない

んなことない。

805 名前:796 mailto:sage [2020/02/22(土) 17:36:28 ID:qQaAG+8d.net]
スペースとタブが混在したからかな?

漏れは、動かなかったけど

806 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 18:24:55.47 ID:R+gSedzt.net]
近頃の3系は混在ダメ

807 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 18:39:04.76 ID:WVugcdbO.net]
混在は別に問題ないぞ?linterで警告されるかもしれんが。
インデントに一貫性がない場合はエラーになる。

808 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 18:42:52.13 ID:lw7HhssO.net]
言語機能に対するコンプレックスというか、
「○○の言語にある◽︎◽︎がないなんて…」と思うなら、
○○を使えばいいじゃん、としか思わないなあ。
日常的に7言語ぐらい使ってるし、経験としてはもう3言語ぐらい使えるけれど、
Pythonで書くとメリットがあるものしかPythonで書かないから、他の言語の構文がどうとかかなりどうでもいいな。
ブロックスコープがあるといいなと思うことはあるけど。

809 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 18:48:19.79 ID:/u2JjX4w.net]
>>791
これ、関数定義だけのように見えるんだけど
それなら実行しても何も起きないのは当然だよね

810 名前:796 mailto:sage [2020/02/22(土) 18:57:19.31 ID:qQaAG+8d.net]
そのスクリプトの下の方に、こう書いておいて、
「python3 script.py abc」みたいに実行すればよい

全角空白で、インデントしたけど

if __name__ == "__main__":
 args = sys.argv

 hangman( args[ 1 ] )



811 名前:796 mailto:sage [2020/02/22(土) 18:59:26.46 ID:qQaAG+8d.net]
>>805
のスクリプトの冒頭に、import sys

も必要

812 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 20:38:45.74 ID:NV/PY/Op.net]
>>802
> 混在は別に問題ないぞ?
あるだろ
なんのためにインデントでブロック表現するようにしたと思ってるんだよ

813 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 21:00:17.41 ID:WVugcdbO.net]
インデントにスペースとタブを混在しても問題ないと言っているんだが話理解してるか?

814 名前:790 mailto:sage [2020/02/22(土) 21:03:41.80 ID:8UzPa+1r.net]
皆さんスレのルールを守らなかったにも関わらずレスして戴きありがとうございます
今後はルールを厳守しますのでよろしくお願いします

早速ご忠告どおりに試してみたいと思います

厚かまいついでにもう一つ、逆スラッシュが\に変換されてしまう理由も教えて戴ければ幸いです

815 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 21:07:01.25 ID:+QQ7ccWr.net]
変換されてるのではなくフォントの違い

816 名前:790 mailto:sage [2020/02/22(土) 21:10:51.98 ID:8UzPa+1r.net]
独学でpythonをマスターしたというコーリー・アルソフなる御仁の「独学プログラマー」って本で勉強しているんですが、
これは、とても初心者向けとはいえない入門者なので、「超初心者が初心者になるためのpython入門」という本を買い直し
ました

817 名前:790 mailto:sage [2020/02/22(土) 21:12:47.05 ID:8UzPa+1r.net]
入門者→入門書
訂正いたします

818 名前:796 mailto:sage [2020/02/22(土) 21:13:08.40 ID:qQaAG+8d.net]
逆スラッシュが、\ に割り当てられているのは、
日本語キーボードだからじゃないの?

Ruby では、改行は、\n。
\ で問題ない

819 名前:790 mailto:sage [2020/02/22(土) 21:19:59.48 ID:8UzPa+1r.net]
仰るとおり日本語キーボードを使っています
\で問題ないんですね

820 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 21:34:34.14 ID:NV/PY/Op.net]
>>808
理解してないのはお前
念の為に言っとくけど動けばいいという話じゃないぞ



821 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 21:38:27.08 ID:/f58S0oT.net]
>>814
円記号とバックスラッシュに同じ文字コード0x5Cが割り当てられているせいで、フォントによってどちらで表示されるかが異なるがデータ上は同じ文字として扱われているから気にしなくてよい。
>>813が言ってる日本語キーボードは無関係。ついでに言うと、>>813はこのスレのタイトルに【Ruby禁止】と付けられる原因になった有名な荒しだからスルー推奨。コテはつけてないけど書き方に癖があるからすぐに見分けられるようになるよ。

822 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 21:44:03 ID:WVugcdbO.net]
>>815
流れ読めよ。エラーにならないという意味で問題ないと書いた。
推奨されない書き方だから警告されるとも書いた。

823 名前:790 mailto:sage [2020/02/22(土) 22:00:26 ID:8UzPa+1r.net]
解決しました!
ちゃんと動きます
最後に関数を呼び出していませんでした
お騒がせしました

824 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 22:06:36 ID:NV/PY/Op.net]
>>817
流れを読めてないのはお前な
コンパイルが通ればOKとか言い出すタイプか?w

825 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 22:17:04 ID:WVugcdbO.net]
>>819
面倒くさい奴だな。エラーにならないという意味で問題ないと書いたし警告が出るとも書いた。
それに何か反論するならお前の考える問題のあるなし・OK/NGの基準をきちんと定義してからにしろよな。

826 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 22:42:33 ID:NV/PY/Op.net]
>>820
> お前の考える問題のあるなし・OK/NGの基準をきちんと定義してからにしろよな。
それを書かずに問題ないとか言ったのはお前な

827 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 22:50:49 ID:WVugcdbO.net]
だから流れ読めと言ったんだが。>>798-802は動く動かないの話しかしてないだろ。

828 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 22:57:54 ID:WVugcdbO.net]
面倒くさいからケリつけて。

>>807
どういう意味でどう問題があると言いたいのか。

>>815
動けばいいという話じゃなくてどういう話なのか。

>>819
コンパイルが通ればOKじゃなくてどうだと言いたいのか。

ケチつけるだけで内容が無いから話が進まない。

829 名前:デフォルトの名無しさん mailto:sage [2020/02/22(土) 23:49:21.14 ID:nfgptzfk.net]
TabError: inconsistent use of tabs and spaces in indentation
https://ideone.com/3EhNsh

インデントに一貫性がない場合ってのが「混在してる」場合の一つ
結論 =>「混在は別に問題ない」わけがない

830 名前:デフォルトの名無しさん [2020/02/23(日) 00:11:39.44 ID:4i+7lYMQ.net]
しょもない流れww



831 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 01:30:58 ID:0yFZuBmR.net]
Tab、スペースインデント混在は
tabを何個のスペースにするのかわからんからエラーにしているんだろ。
Tab、スペースインデント混在の場合
スペースインデントが4スペースでtabが4スペースになるエディタでかきかきして、
で、別な人がtabを2スペースにしているエディタみたら怒るからな

832 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 06:17:14.29 ID:wq/R6u2w.net]
>>823
動く動かないの話に前提なしに「問題ない」と言うお前がおかしいだけ
ケリは元々ついてるぞw

833 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 08:55:09.18 ID:SvXUu1bl.net]
>>824
>インデントに一貫性がない場合ってのが「混在してる」場合の一つ

つまり、混在していても一貫性が保たれる限りは問題ないということなんだが。
既に>>802に書いたこと。

834 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 09:38:02.01 ID:bBLmO4C6.net]
まだ言ってるのかよ
お前の問題ないの定義がぬるすぎるだけ

835 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 10:02:06.33 ID:I9CLSJWc.net]
>>828
ウダウダ言ってないでコードで示して

836 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 10:30:43.78 ID:SvXUu1bl.net]
これでいいか?
https://ideone.com/UctDWc

837 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 10:45:39.04 ID:hiW827nh.net]
>>831
そのコードを何の補足説明も無しに「タブとスペースが混在してるが、一貫性は保たれてる」と言うのは君だけだぞ

838 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 11:09:17.84 ID:SvXUu1bl.net]
結局>>802がすべてなんだが、言葉の定義にこだわっていつまでもゴネている奴は何が言いたいんだろう。
>>807のツッコミは的外れじゃなくて>>802の書き方が悪かったからだぞこのやろう」とかかね?

839 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 11:13:02 ID:SvXUu1bl.net]
>>832
タブとスペースが混在しているのは明らかだろう。インデントの一貫性を破っていないからエラーにはなっていない。
補足説明要るか?

840 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 11:23:31.43 ID:4ldhSgPz.net]
(本来の意味での)マンチキン現る



841 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 11:24:54.59 ID:4ldhSgPz.net]
# マンチカン なら、833の顔面偏差値でも「動きがぐうかわ!」で済ませられるんだけどな。

842 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 11:35:28.05 ID:SIYyhFz4.net]
[A,B,C]と、[E,F,G]の配列を
[[A,E],[B,F],[C,G]]とするにはどうすればいいですか?

843 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 11:38:38.07 ID:4ldhSgPz.net]
>>837
前提として必要

・[A,B,C]と、[E,F,G]は常に同じ長さでくるのか?
・Noなら、数があわないときはどうしろなのか?

844 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 11:46:19 ID:SIYyhFz4.net]
>>838
常に同じ形をしています

845 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 12:04:58 ID:4ldhSgPz.net]
>>836 >>839
(1)の、Pythonらしいやり方については
おれ苦手でとっさに出てこないわ。
誰かよろしく。

(2)Cっぽい考え方
カラのリストを1個用意する。
カウンターを用意する。初期値は0。

forループで、どっちかのリストの長さまで
  もしエラーがおきるようなら、breakさせちまえ。
  各リストからカウンタのところの値を取り出して、テンポラリなリストをつくる。
  予め用意してあるカラのリストに、テンポラリなリストを足す

846 名前:デフォルトの名無しさん [2020/02/23(日) 12:05:46 ID:pmgC0PIY.net]
       自称月商800万!!!マナブの収益!!
www.tuber-town.com/channel_detail/UCb9h8EpBlGHv9Z896fu4yeQ.html

    本物の有能な新人。 しかも無名。
www.tuber-town.com/channel_detail/UC7umTzIrIJq8Xh428lj0M5A.html
www.tuber-town.com/channel_detail/UCS8WbS0kQCbqVYLU26pMHoA.html
www.tuber-town.com/channel_detail/UC4T-dSpkAT8xGprFjXpBeMw.html
www.tuber-town.com/channel_detail/UCDPjpWErZOYsoqfeCxYTd_Q.html
www.tuber-town.com/channel_detail/UCIgIVRs-VrV-pkkenE5lRBQ.html

847 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 12:06:59 ID:4ldhSgPz.net]
>>840の(2)補足
「カラのリストを1個用意する。」のところで、
どっちかのリストの長さ分をもってる、中身は全部カラのリスト を作った方が、
おれ的には、なんでかしらんがうまくいきやすいと感じている。

848 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 12:14:34.21 ID:IlwHKqM0.net]
list(map(list, zip([A,B,C], [E,F,G])))

849 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 12:33:29 ID:wq/R6u2w.net]
>>802の書き方が悪かったごめんなさい
で済む話をいつまでやってるんだよw

850 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 12:46:42 ID:SIYyhFz4.net]
>>842
>>843
ありがとうございます。

質問内容について補足します。(最初からいえばよかったです。すいません。)
A,B,...G...は全て(n,n,n,1)の形をしています。(全て数値です)

[A,B,C,...] (m,n,n,n,1)
[E,F,G,...] (m,n,n,n,1)
から、
[[A,E],[B,F],[C,G]] (m,n,n,n,2)
にしたいです。

>>843さんが教えてくださったものだと、(m,2,n,n,n,1)になりました。

>>842さんの方法でやってみましたが、うまくいきませんでした…



851 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 13:03:41.65 ID:4ldhSgPz.net]
>>845
>(n,n,n,1)の形をしています。(全て数値です)
↑タプルじゃないの?座標かなんかなの???

852 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 13:40:44 ID:SIYyhFz4.net]
>>846
3次元の画像のようなものだと思ってます。
分かりづらくてすみません。

853 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 13:43:46 ID:Lg699LWo.net]
Ruby では、Enumerable#zip を使うけど

p [ 1, 2, 3 ].zip( [ "a", "b", "c" ] ).to_a

出力
[[1, "a"], [2, "b"], [3, "c"]]

854 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 14:34:59.54 ID:Uzk6PZD8.net]
mとかnとか意味わからんから具体例出したら?

855 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 15:06:29 ID:4ldhSgPz.net]
>>847
なおさらわからんw

座標とRGB値かなんかが入ってる
タプル的なもんなの?

856 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 15:17:26 ID:mVzZkmaX.net]
そもそもタプルが何かわかってないんだと思う

857 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 15:18:50 ID:a7fNYQLW.net]
おれがしんのえすぱーだ

list_c = [ list(i) for i in zip(list_a,list_b)]

858 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 15:24:50 ID:IlwHKqM0.net]
無理やりエスパーすると、n=2の場合にA,B,...はすべて
 A=[[[1,2],[3,4]],[[5,6],[7,8]]]
 E=[[[8,7],[6,5]],[[4,3],[2,1]]]
の形をしていて、
 [[[[1,2],[3,4]],[[5,6],[7,8]]],...]
 [[[[8,7],[6,5]],[[4,3],[2,1]]],...]
から
 [[[[[1,8],[2,7]],[[3,6],[4,5]]],[[[5,4],[6,3]],[[7,2],[8,1]]]],...]
にしたいんじゃなかろうか。

859 名前:デフォルトの名無しさん [2020/02/23(日) 15:31:36.94 ID:Ofd1+MwB.net]
np.array(zip(np.array(list_a).flatten(), np.array(list_b).flatten())).flatten().reshape(hoge,fuga)

860 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 18:12:37.71 ID:I9CLSJWc.net]
>>834
そのコードを見てインデントに一貫性があるとは初心者はまず思わない
コードを示した上で「インデントの一貫性」とは何かを
初心者に分かるように説明できなければ君の価値ないよ

何度レスしてもエラーメッセージに書いてる以外の言葉で説明できてないから
コイツわかってなさそうって印象を受ける



861 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 18:32:25.06 ID:SvXUu1bl.net]
>>802の「インデントに一貫性がない」というのは

TabError: inconsistent use of tabs and spaces in indentation

このエラーが出る状態のことを言ったつもりだが、他に解釈のしようがあるかね?
「python インデント 一貫性」とかでググればすぐ出てくるが。

いつまで「問題ない」とか「一貫性」とかの言葉だけにこだわるんだか。

862 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 19:20:35.92 ID:ot72o1Tp.net]
Tab SP
Tab Tab
SP SP
Tab Tab
これpythonでは同一レベルになるけどお前的には一貫性があると言うの?

863 名前:デフォルトの名無しさん [2020/02/23(日) 19:53:32.77 ID:/zCpM4JS.net]
>>857
ガイジはガイジの学校で先生とお話ししてろカス

864 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 20:14:26.92 ID:wq/R6u2w.net]
バカに用はないからいちいち絡んでくるなよw

865 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 20:18:41.95 ID:4ldhSgPz.net]
>>851
そんなきもする

>>853
[]がいっぱいすぎてワロルwww

>>854
デフォ状態からだと、
numpyをインスコしてから、
importしないとだめじゃねそれ

866 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 20:26:52 ID:SvXUu1bl.net]
>>859
まったく同感。気が合うなw

867 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 20:29:17 ID:I9CLSJWc.net]
>>845
a = [A,B,C,…]
b = [E,F,G,…]
np.block([a, b])

868 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 21:06:55.32 ID:wq/R6u2w.net]
>>861
で、>>857の回答は?

869 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 21:11:30 ID:4ldhSgPz.net]
>>831
さっきまで、デジャヴュがしてすごいひっかかってたんだが
思い出したwww
まだPython2.3あたり最新安定版だった頃のド初心者おれが
まじでこんなクソコード書いてたwwwww
うはwwwwメガナツカシスwwwwww

870 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 22:05:12 ID:SvXUu1bl.net]
>>863
もともと>>802ではインデントにスペースとタブを問題ないということを説明し、ただし例外として
一貫性のない使い方(とpython処理系が判断した場合)にエラーになると補足した訳だが、
>>857はまさにそれを裏付けてくれたわけだろう。



871 名前:デフォルトの名無しさん [2020/02/23(日) 22:30:36.58 ID:uUFeESNP.net]
Pythonで文字を入力させて、計算をさせたりすることは出来ますか?

例えば、
1切ると泣いてしまう食べ物は?(玉ねぎ):5点
2ニュートンと関わり深い果物は?(りんご):5点
というなぞなぞを作る時、

input1=input('切ると泣いてしまう食べ物は?')
input2=input('ニュートンと関わり深い果物は?')
.
.
.

として回答に応じて10点満点のテストを作ることは可能ですか?

872 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 22:37:31.79 ID:0yFZuBmR.net]
>>845のように後出しする奴の相手は、エスパー・高脳でないと駄目だよな
並みの奴は本当に求めているもの何か分からんから振り回されるだけ
後出しクレクレは、自分ファーストで他人の手間とかのことをは考えていないからな

873 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 22:58:37.25 ID:0yFZuBmR.net]
>>855
コミュ能力がない、相手がなんで理解してくれないのか推察できない奴とのやり取りは
並み脳力以下の奴では超手間がかかる。
こんな奴と普通(スムーズ)にやり取りできるのは高脳・エスパー

874 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 23:05:50.77 ID:I9CLSJWc.net]
>>866
どの言語でもプログラミング言語と呼ばれるものであれば
文字を入力させて計算させることはできるぞ

875 名前:デフォルトの名無しさん [2020/02/23(日) 23:15:49.10 ID:uUFeESNP.net]
>>869
解答入力欄が1とか3の数字ならint()で数値変換出来るんですけど、玉ねぎを数値変換ってどうやってするのですか?

876 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 23:20:16.80 ID:I9CLSJWc.net]
>>868
コミュ力の問題じゃない
ID:SvXUu1bl は単に知識がないだけ

ググって見つかったエラーメッセージから知ったかしてみたが
その本質的意味を理解してないからエラーメッセージに書いてる文面以上のことを何も説明できない
言語仕様的に「タブとスペースが混在してもインデントに一貫性がある」と言えるのが
どういう場合か分かってないからロクな説明もできずに苦し紛れの知ったかレスを繰り返してるだけ

877 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 23:23:31.04 ID:I9CLSJWc.net]
>>870
なんで玉ねぎを数値に変換したいの?
1問目に「玉ねぎ」って回答を入力したら+5点なんだよね?

878 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 23:25:33.38 ID:T8plbD6x.net]
ID:uUFeESNPが求めているのは辞書なのか?
{"玉ねぎ":5,"りんご":5}みたいな

879 名前:デフォルトの名無しさん [2020/02/23(日) 23:25:52.40 ID:uUFeESNP.net]
>>872
そうです。玉ねぎ以外は0点。
最後にprint()表記する時に足し算したいからです。

880 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 23:42:17.47 ID:SvXUu1bl.net]
>>871
そりゃあ、>>856のエラーが出る条件の枝葉末節までは知らんよ?
>>802はそういうエラーが出ることもあるということだけで話の本筋には関係ないし。

「一貫性」にこだわるあんたは何がどうだと言いたいわけなんだろう。主張がさっぱり見えない。



881 名前:デフォルトの名無しさん [2020/02/23(日) 23:43:16.03 ID:uUFeESNP.net]
>>873
いや、辞書じゃなくて計算ツールです。
理想としては、
回答入力→解答と照合→数値変換→計算なんですけど
解答と照合と数値変換の過程が分からなくて…

882 名前:デフォルトの名無しさん [2020/02/23(日) 23:46:20.80 ID:5VljjZNL.net]
くだらない争いを止められない精神年齢の低さ
これがpython使いです。

883 名前:デフォルトの名無しさん mailto:sage [2020/02/23(日) 23:58:51.12 ID:4ldhSgPz.net]
>>876
事前に872が作ってくれたようなかんじの
正解ワード:得点 ってなってる「辞書」を用意しておく。

ほんでもって
「問題文と正解ワードが1対1対応のリスト」のリストにでもして、これまた予め集めてておく(問題集)

適当なカウンタ変数を用意する(iみたいな1文字名でおk)初期値は0
おまいの得点=0
for i < len(問題集):
   出題文=問題集[i][0]
   正解=問題集[i][1]
   hoge=input(出題文) # 回答入力
   if hoge==正解: # 回答と照合
       加点=辞書[正解] # 数値変換
       おまいの得点+=加点 # 計算
さいごに
print(おまいの得点)とでもやれば、何点とれたか出る。

884 名前:デフォルトの名無しさん mailto:sage [2020/02/24(月) 00:29:21 ID:iQYTd9Fe.net]
>>874
input1=input('切ると泣いてしまう食べ物は? ')
input2=input('ニュートンと関わり深い果物は? ')

score = 0
if input1 == "玉ねぎ":
____score += 5

if input2 == "りんご":
____score += 5

print(score)

一番最初はこのレベルから。
何かしら超入門のチュートリアルをやりながら学んだほうがいい
チュートリアルを終えれば繰り返し処理を抽出して1つにまとめたり
問題文・回答・得点をファイルから読むようにしたりできるようになる

885 名前:デフォルトの名無しさん mailto:sage [2020/02/24(月) 01:07:21.07 ID:EuMvh8nX.net]
>>874
玉ねぎ以外、例えば、たまねぎ、タマネギ、玉葱などは駄目(0点)なのか
りんごも同様にりんご以外は駄目なのか

886 名前:デフォルトの名無しさん mailto:sage [2020/02/24(月) 01:52:00.30 ID:9Kd/PSPa.net]
>>865
お前的には「>>857は一貫性がある」と言うことでいいのね
それって人とはかなり違う感性だから会話するのは難しいと思うぞw

887 名前:デフォルトの名無しさん mailto:sage [2020/02/24(月) 02:57:11.84 ID:mxVLP7kg.net]
よーしパパ縦タブでPython書いちゃうぞー!

888 名前:デフォルトの名無しさん mailto:sage [2020/02/24(月) 08:50:50.41 ID:vb10EdOX.net]
>>880 横レスだが・・・
( ゚o゚)ハッ!!!
そういえば、そうだwww
ニホンゴハトテモムズカシイネー

889 名前:デフォルトの名無しさん [2020/02/24(月) 13:47:09 ID:/24zPZsT.net]
>>845
>A,B,...G...は全て(n,n,n,1)の形をしています。
これは例えばこういうこと?
import numpy as np
A= np.arange(8).reshape((2,2,2,1))
print(A.tolist())

[[[[0], [1]], [[2], [3]]], [[[4], [5]], [[6], [7]]]]

890 名前:デフォルトの名無しさん mailto:sage [2020/02/24(月) 17:02:41.23 ID:CIjc5zGo.net]
n=10のときで頼む



891 名前:デフォルトの名無しさん mailto:sage [2020/02/26(水) 08:30:44 ID:MVR+lhT1.net]
f文字で改行する場合はどうしたら良いのでしょうか?

> f'hello \n{hoge}'

上記のようにすると\nがそのまま出力されてしまうのですが

892 名前:デフォルトの名無しさん [2020/02/26(水) 08:35:41 ID:MVR+lhT1.net]
>>886
すみません
f文字にrを追加した場合、改行コードがそのまま出力されてしまうの間違いでした

> fr'hello \n{hoge}'

893 名前:デフォルトの名無しさん mailto:sage [2020/02/26(水) 09:15:01.47 ID:tNUOa1QH.net]
print(r'''>>887 \nそれぐらい
ググれ カス''')

894 名前:デフォルトの名無しさん [2020/02/26(水) 11:19:23.96 ID:wiEfavJ1.net]
r付けるなよω

895 名前:デフォルトの名無しさん mailto:sage [2020/02/26(水) 11:30:34.21 ID:fe8YPe+s.net]
修正しました

pint('''>>887 \nそれぐらいググれ カス''')

896 名前:デフォルトの名無しさん mailto:sage [2020/02/26(水) 11:42:23.29 ID:tTxVb/IM.net]
pintが外れた

897 名前:デフォルトの名無しさん [2020/02/26(水) 11:58:06 ID:hHwy7uag.net]
アホ草

898 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 00:47:35 ID:PK1Y55xx.net]
標準モジュールのreってなんでマッチした文字列を返すメソッドがgroup()なの?
どういう意味?

899 名前:デフォルトの名無しさん mailto:sage [2020/02/27(木) 05:25:20.18 ID:Y+lBo+rc.net]
>>893
言語を作ったやつらに聞け
俺らはただのユーザーだ

900 名前:デフォルトの名無しさん mailto:sage [2020/02/27(木) 08:58:40.02 ID:gp31hmMe.net]
s///g;

の名残りだろ



901 名前:デフォルトの名無しさん mailto:sage [2020/02/27(木) 11:05:33.77 ID:jJI4a3AF.net]
「if分が多いと見難いです
三項演算子を使うといいです」
https://techacademy.jp/magazine/28098

みたいな記事を読んでたんだけど三項演算子ってわかりやすいのかな?
適切な場面とそうでない場面がありそうだけどよくわからん

902 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 11:12:20 ID:xfrOpzJC.net]
VBの書き方か

903 名前:デフォルトの名無しさん [2020/02/27(木) 12:33:47.54 ID:gBw0J9MB.net]
目を動かす量が減るから簡単な分岐なら参考演算しでいいよな

904 名前:デフォルトの名無しさん mailto:sage [2020/02/27(木) 12:47:41.42 ID:G3iz3let.net]
中身が3,4文字なら見やすくなるがめちゃくちゃ長いのに3項演算とか馬鹿としか言いようがない。

905 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 13:36:25 ID:j46qIfAH.net]
基本的に読みにくい
Python以外でも 条件 ? 真 : 偽 って書く言語のも読みにくい
普通にif 条件 then 真 else 偽 が式になる関数型言語のは読みやすい
分岐はifが頭にある方が圧倒的に読みやすい

906 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 14:06:29 ID:9dlETTA2.net]
>>893
capture groupのgroupだよ
match全体を結果配列の最初の要素に格納するのは多くの言語で行われてる
group(0)という命名センスは・・・まあ・・ね? pythonだから

907 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 14:23:14 ID:9dlETTA2.net]
>>900
pythonの三項式が読みにくいのは当然だけど
Cの記法が読みにくいかどうかは命名と慣れと抽象化次第

foo = if is_hage then hoge else fuga
foo = is_hage ? hoge : fuga

pythonに三項式が取り入れられる際の投票結果を見ても
今の記法はもちろんif 条件 then 真 else 偽の記法よりも
条件 ? 真 : 偽 のほうが支持されてたことが分かる

908 名前:デフォルトの名無しさん [2020/02/27(木) 15:30:14.64 ID:G6pyHvdg.net]
>>893
findall使え

909 名前:デフォルトの名無しさん [2020/02/27(木) 15:31:40.73 ID:G6pyHvdg.net]
>>895
s///gのgもgrepのgもpythonのgroupとは無関係

910 名前:デフォルトの名無しさん [2020/02/27(木) 15:34:26.29 ID:G6pyHvdg.net]
>>902
pythonの三項演算子は表記は違うけど書く順はCと一緒だし困らない
慣れだけの問題



911 名前:デフォルトの名無しさん mailto:sage [2020/02/27(木) 16:34:42.20 ID:r1k8T+E3.net]
>>905
一緒じゃなくない?
flag ? "true" : "false"
'True’ if flag else ‘False’

912 名前:デフォルトの名無しさん [2020/02/27(木) 16:37:07.47 ID:G6pyHvdg.net]
細かいことは気にすんな

913 名前:デフォルトの名無しさん [2020/02/27(Thu) 18:08:21 ID:RRBu+1LX.net]
>>896
三項演算子うんぬん以前に、文字列と予約語(if)との間や二項演算子の前後に
空白を置かないという、初心者にありがちな可読性を低下させる誤りがある
この田島悠介という現役エンジニアの技術レベルがその程度であり、
おそらくTechAcademyマガジンというサイトもそんなレベルの記事で
溢れているであろうことは、容易に予測できる

もし自分がPythonで三項演算子を使うなら、以下のように書く
  https://www.ideone.com/gOE9K0
後置if節とでも言えばいいのか、Haskellのガード式をイメージしている


>>900
関数型言語ではないが、スレタイの某言語だと以下のように書ける
 https://www.ideone.com/uy4Baa
 

914 名前:デフォルトの名無しさん [2020/02/27(Thu) 19:10:02 ID:x1hy167u.net]
>>905

915 名前:デフォルトの名無しさん [2020/02/27(Thu) 20:53:30 ID:b5CXYagp.net]
https://www.ideone.com/d1O8k6

916 名前:デフォルトの名無しさん [2020/02/27(Thu) 21:11:54 ID:oAIJ90KI.net]
>>896
条件によって値を返すだけなら
Excelのワークシート関数のif関数みたいなのが
個人的には1番わかりやすい

917 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 22:06:26 ID:F/P7X7F7.net]
ループでぐるぐるまわしてて
4の倍数の時は3をたすってのはどうしたらいいですか
それ以外のときはそれぞれ別々にやる計算あります

あとpythonの質問するところってここしか知らないですが
他にもありますか?

918 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 22:39:54 ID:ZhdluG0Q.net]
>>912
非コミュ障害、知能が低くないなら、ここよりTeratailにしたほうが良いが
でも、お前はコミュ障害もち、知能低い感じで一般の奴らからは相手にされないだろう。
結局、基地外、ゆとり、低脳の掲示板である5chぐらいしかお前の相手をしてくれないよ

919 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 22:41:29 ID:W1ryAU1b.net]
>>912
しゅくだいの わからないところは
だすひがくるより だいぶさきに
せんせいに きいてね!

920 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 22:43:31 ID:IKP0YcdJ.net]
pandasで2つのキーを指定してcsvファイルを結合したいのですが、可能でしょうか?

列Aが一致する範囲内で列Bを軸に2つのファイルを結合
pd.merge(df1, df2, on=['列A', '列B'], how='outer') としたところ、シャッフルして変になりました



921 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 22:45:57 ID:F/P7X7F7.net]
>>913
仕方がないですがあなたもお仲間ですね

922 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 22:50:12 ID:W1ryAU1b.net]
>>915
なにがどう「変に」と感じたのかしらんが
↓あたりのhowについてのところ + joinについてのところでもよんでみればー
ttps://note.nkmk.me/python-pandas-merge-join/

923 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 22:53:16 ID:F/P7X7F7.net]
4の倍数でっていうのは

if n%4 == 0:
____b=a+3
else:
____b=a

みたいなのじゃなくて
if使わなくてもa+3に
なにか足すと四の倍数の時にだけ3を足すような
のがあるかどうか知りたかったのです
説明不足ですいませんでした

924 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 22:55:49 ID:0yCkEhTI.net]
pythonの環境構築が難しすぎる
3系で動かそうとしたら、デフォで入ってる2系が動いてる
vagrantでsyncフォルダにScrapyのプロジェクト作ろうとしたらエラー吐くし
諦めてdjangoで糞アプリ作ってる
pythonはライブラリが豊富だから魅力的なんだけど、今の活かせてない

925 名前:デフォルトの名無しさん [2020/02/27(木) 23:09:00.44 ID:mQGc2SMz.net]
>>912
その日本語をそのままコードに翻訳するだけ

926 名前:デフォルトの名無しさん mailto:sage [2020/02/27(木) 23:22:44.86 ID:9dlETTA2.net]
>>908
>関数型言語ではないが、スレタイの某言語だと以下のように書ける
そのケースは普通case文使うやろ
https://www.ideone.com/7jQ3Tb

>>910
ぱっと見わかりやすそうに見えるけど
自然な思考順序に反してるからすごく可読性が低いんよね

927 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 23:28:37 ID:j46qIfAH.net]
>>918
やらんほうがいいけど
a + 3 * (n % 4 == 0)
みたいなのは書けるが

928 名前:デフォルトの名無しさん mailto:sage [2020/02/27(Thu) 23:48:16 ID:EmRw8gIY.net]
>>902
なんでそれが通ったか逆に不思議だよな。
後置ifとも他の三項演算子とも似てるようで違うキモい文法。

929 名前:デフォルトの名無しさん mailto:sage [2020/02/28(金) 00:00:23 ID:CBzuDuio.net]
>>922
ありがとうございます
a+3*[1,0,0,0][n%4]というのも考えましたが

930 名前:
やらない方が良いですか?
ifが来た方がやっぱり良いんでしょうか?
[]
[ここ壊れてます]



931 名前:デフォルトの名無しさん mailto:sage [2020/02/28(金) 00:12:19 ID:DkMBLb2P.net]
>>924
自分だけが見るんなら何やってもいいけど人が見る可能性あるなら正直読みにくいし
無駄なハックは自分がやるならいいけど他人がやってるの見るとイラッとする
人ってそういうもんだし
ただそうやってコードで遊ぶのは勉強としてはとてもいい

932 名前:デフォルトの名無しさん mailto:sage [2020/02/28(金) 01:04:06 ID:CBzuDuio.net]
>>925
ありがとうございます
よっぽどの事情がない限り
無理やりifを無くす事はやめときます

933 名前:デフォルトの名無しさん [2020/02/28(金) 01:33:44.99 ID:mVRkB3jj.net]
>>923
内包表記とか関係あるのかな

934 名前:デフォルトの名無しさん mailto:sage [2020/02/28(金) 02:17:43 ID:xXr38fg8.net]
>>927
https://lwn.net/Articles/25304/

if <condition> then <expression1> else <expression2>
この選択肢だとマイナー機能に新しいキーワードを追加しないといけない
それに加えてパーサーがif文の開始だと誤解しないようにするため
括弧が必要になり醜くなる

というのがGuidoがPEPが提示段階で書いてた理由
その後メーリングリストでいろいろ議論はされてるけど
本人がそれをまともに読んでる形跡はなく
自分が最初に出した案に決めたように見える

https://lists.gt.net/python/python/144863/?page=1;
https://lists.gt.net/python/dev/264358?#264358

935 名前:デフォルトの名無しさん [2020/02/28(金) 02:31:53.06 ID:JX0D/Sej.net]
ちゃんとメーリスから議論を拾ってくる有能

936 名前:デフォルトの名無しさん mailto:sage [2020/02/28(金) 13:49:30.68 ID:GfVfgYuK.net]
>>919
Windows 10, WSL, Ubuntu 18.04 では、
python/python3 コマンドは別のものだから、間違う訳ないw

which python3
/usr/bin/python3

file /usr/bin/python3
/usr/bin/python3: symbolic link to python3.6

which python
/usr/bin/python

file /usr/bin/python
/usr/bin/python: symbolic link to python2.7

937 名前:デフォルトの名無しさん mailto:sage [2020/02/28(金) 23:30:10 ID:/I0WWb67.net]
pyenv導入したいんですがいくつか疑問があります
まず、既にエイリアスに
python="/usr/local/bin/python3"
python2="/usr/bin/python"
という風に設定してるんですが、pyenv導入する場合はこれは外さないとまずいですかね?
そして既に入れてるpipのライブラリはpyenvの方のPythonでも使えるんでしょうか。
最初の導入ばかりでこの辺りの説明してるサイトが全然見つかりませんでした
もし良ければ回答お願いします。

938 名前:デフォルトの名無しさん mailto:sage [2020/02/29(土) 11:11:22.64 ID:VOzt624K.net]
とりあえずは外したほうがよい。
というか二重三重の設定をメンテするなんて大変だろ?
pyenv自体はそこらへんのエイリアスをいい感じにやるだけだから
pipも普通に使えるし変わらんよ。
ただ、いろいろ環境がわからなくなることはよくある。
個人的にanacondaにパス通す方がよっぽど事故が少ないんだが、
公式原理主義者はどうも納得しないぽい。

939 名前:デフォルトの名無しさん mailto:sage [2020/02/29(土) 11:17:08.59 ID:i8bha/XW.net]
もうPythonの環境周りは滅茶苦茶だね
初心者は環境構築だけで丸一日費やして嫌になってやめていく
普及したことが皮肉にも普及の妨げになっている

940 名前:デフォルトの名無しさん [2020/02/29(土) 11:58:39.68 ID:KnuPGJb+.net]
仮想環境が当たり前みたいな記事ばっか書いてるアホどものせいだろ
全員電ノコで4ツ切りにして海に捨てたい



941 名前:デフォルトの名無しさん mailto:sage [2020/02/29(土) 12:07:24.22 ID:4aY82yvr.net]
venvもつかえんザコとかおるの?
無視しても良いんじゃね

942 名前:デフォルトの名無しさん mailto:sage [2020/02/29(土) 12:54:53.32 ID:PDnkp16t.net]
困ってる奴が何のos使ってるのか知らんが、windowsならpathを弄れば何とかなる
俺も勉強のために最新入れてインタラクティブモードでpython起動したら2.7(?)とかだった
cドライブをpython.exeで検索したら20件ぐらい出てきて色んなアプリでpythonが使われていた
仕方がないので自分が意図してインストールしたpythonのpathを一番先頭に持っていったら
自分が意図してインストールしたpython.exeを起動できた

943 名前:デフォルトの名無しさん [2020/02/29(土) 13:00:09.94 ID:x6UuZEs8.net]
C#+Visual Studioが至高

944 名前:デフォルトの名無しさん [2020/02/29(土) 13:10:46 ID:/XxbCwlB.net]
>>932
ありがとうございます!
2系と3系を同時に使いたいんですがそれはもう毎回切り替えるしか手がないんですかね?

945 名前:デフォルトの名無しさん mailto:sage [2020/02/29(土) 13:42:38.05 ID:i8bha/XW.net]
>>935
**envというプロダクトが多すぎて検索しただけで萎える
しかも廃れた古いものもヒットするので、全くの新規さんが独学でやるには二重の苦難だろう
こんなんじゃPythonの未来は暗いと感じる

946 名前:デフォルトの名無しさん [2020/02/29(土) 13:54:03.49 ID:3sltTQiA.net]
>>932
ほんそれ

947 名前:デフォルトの名無しさん [2020/02/29(土) 13:56:01 ID:3sltTQiA.net]
>>938
切り替えるんじゃなくて
どっちの設定もしない
コンソールを開いてから
どっちを使うか選択(コマンド実行)

948 名前:デフォルトの名無しさん [2020/02/29(土) 13:57:46 ID:3sltTQiA.net]
ちょっと判りにくかったかもしれんが
要するに混ぜるなってこと

両方入ってるのは問題無い
環境を混ぜるのが問題

949 名前:デフォルトの名無しさん mailto:sage [2020/02/29(土) 14:17:00 ID:xglx3xdS.net]
>>938
Win系なら、両方入ってる場合は
pythonとうったら2系
pyとうったら3系
がデフォやぞ

.pyをダブルクリックで実行したい ってのはかなわぬ願い
バッチかませろ

950 名前:デフォルトの名無しさん mailto:sage [2020/02/29(土) 14:26:25.10 ID:6BfVplee.net]
winもpyに.py関連付けてたらshebang書けば使い分け出来るで



951 名前:デフォルトの名無しさん mailto:sage [2020/02/29(土) 14:36:00.26 ID:/XxbCwlB.net]
>>942
ありがとうございます、とりあえず言われた通りコマンドで選択してみます。
後言い忘れてましたがOSはMacです…エイリアスで色々やってるのはpythonコマンド
だと2系が自動で選択されるからです。環境描き忘れててすみません。

952 名前:デフォルトの名無しさん mailto:sage [2020/02/29(土) 14:45:21.95 ID:xglx3xdS.net]
>>945 なんというぐうくそ

953 名前:デフォルトの名無しさん mailto:sage [2020/02/29(土) 23:48:35 ID:6IdZMwnf.net]
>>936
パスの順番を変えたら、他のアプリが動かなくなるけど、それは良いのか?

>>945
Mac は最初から、Python, Ruby が入っているから、その環境に影響を与えるとまずい。
それらを使っているアプリがあるから

だから、仮想を使う

Docker も良いかも

954 名前:デフォルトの名無しさん [2020/03/03(火) 09:40:24.54 ID:Zy/UEfGJ.net]
seleniumにてfirefoxの既存のプロファイルを使用する方法はありませんでしょうか?
どうにも既存のプロファイルを読み込まなく難儀しています...

955 名前:デフォルトの名無しさん [2020/03/03(火) 09:43:07.58 ID:Zy/UEfGJ.net]
コードはたったコレだけなんですが全くといいほど読み込みません

from selenium import webdriver

fp = webdriver.FirefoxProfile('/home/user1/.mozilla/firefox/zaxxxxxt.default')
browser = webdriver.Firefox(fp)

956 名前:デフォルトの名無しさん mailto:sage [2020/03/03(火) 11:13:11.66 ID:GznFhYco.net]
>>948-949
https://techiedelight.com/compiler/?ScFS
↑ここにかんすうはってきたので
fp = get_profile_path("default")
こうやってさがさせてみそ

それでも、なんでかうまく読まないことあるけど。。。

957 名前:

あと、基本的なところだが、
geckodriverのバージョンが古いと失敗すること多い。
[]
[ここ壊れてます]

958 名前:デフォルトの名無しさん mailto:sage [2020/03/04(水) 02:21:30.44 ID:n/osJUKI.net]
>>950
ありがとうございます

fp = get_profile_path("default")
browser = webdriver.Firefox(fp,executable_path=’場所')

作って頂いた関数を使用したのですが、やはり新規プロファイルを読み込まれ既存のプロファイルが読み込まれません
Chromeでは既存のプロファイルが読み込まれるのですが、如何せんChromeではmeta refreshをdisable出来ないため
firefoxを利用したいのです
プロファイルの場所は初期値 geckodriverは0.26.0なので問題ないと思うのですが…

959 名前:デフォルトの名無しさん mailto:sage [2020/03/04(水) 12:59:09 ID:Q2O9cj6l.net]
>>951
プロファイルの場所探すところを改造せんといかんのかもしらん

泥臭いやりかただと、
ターゲットフォルダの中身全部をリストにして
.defaultで終わってるものをとる。みつかったらbreak

みたいなー

960 名前:デフォルトの名無しさん [2020/03/04(水) 19:58:03.24 ID:fq3DQX8J.net]
>>933
アナコンダインストール一発ではだめなの?



961 名前:デフォルトの名無しさん [2020/03/04(水) 20:13:57.82 ID:O0VNA921.net]
駄目に決まってんだろアホ
お前だろ「Anacondaをインストールする2020最新」とかいうアマゾンの中華製品みたいな信用度の記事Qiitaに書きまくってるゴミは

962 名前:デフォルトの名無しさん mailto:sage [2020/03/04(水) 23:19:20.62 ID:nNNW6i++.net]
Anaconda は、Python が入っていない、Windows 限定

Mac, Linux など、最初から、Pythonが入っているものについては、
初心者には無理なので、プロに聞いてくださいと、
「みんなのPython 第4版、2017」にも、書いてある

つまり、最初から入っている、Pythonと両立させるのは、仮想が必要だから、難しい

963 名前:デフォルトの名無しさん mailto:sage [2020/03/05(Thu) 04:04:41 ID:eClduRvk.net]
つまりPythonを使うならWindowsという時代が来たということだな
最初からPythonを入れてシステム的に依存する仕組みにしたLinux系は下手打ったよなあ

964 名前:デフォルトの名無しさん [2020/03/05(Thu) 07:16:32 ID:s/vnmaxn.net]
システムとは別にPythonいれてそっち使えばいいやん
仮想可は実行環境だからまた別の話

965 名前:954 mailto:sage [2020/03/05(Thu) 08:01:54 ID:PBcHTAfh.net]
仮想環境は、Ruby のrbenv・RVM とか、Python のvenv とか、
これが素人には難しすぎるから、入門書には書いていない!

Mac・Linux では、仮想環境になる

966 名前:デフォルトの名無しさん [2020/03/05(Thu) 12:41:11 ID:s/vnmaxn.net]
>>957
>仮想可
じゃなくて、仮想環境でした

967 名前:デフォルトの名無しさん [2020/03/05(木) 15:08:38.13 ID:zs+Uexwr.net]
超初心者です
100回動作を繰り返すとします
繰り返しn回目でn回〇〇するといった場合どう記述すればいいんですかね?
たとえば30回目の動作で30回ボタンを押す、55回目で55回ボタンを押すというような感じです

968 名前:デフォルトの名無しさん mailto:sage [2020/03/05(木) 15:15:03.78 ID:CNNRfBpe.net]
それ、pythonの質問じゃなくてどうプログラムしたら良いのかの
プログラミング自体の質問だから
自分で考えなさい

969 名前:デフォルトの名無しさん [2020/03/05(木) 15:20:01.54 ID:ZS+YL4ip.net]
>>960
for n in range(100):
 for i in range(n):
  doSomething()

970 名前:デフォルトの名無しさん [2020/03/05(木) 15:54:57.40 ID:zs+Uexwr.net]
>>961
すいません気をつけます

>>962
理想通りできました
ありがとうございました!



971 名前:デフォルトの名無しさん mailto:sage [2020/03/05(Thu) 16:30:55 ID:wTyki8t2.net]
pythonはメジャーになって逆に環境構築に関してはひどい状況になったかもな。。
今正確にやるならdockerで閉じ込めろって話になるが、それ初心者には言えんわ。

972 名前:デフォルトの名無しさん mailto:sage [2020/03/05(木) 19:06:49.16 ID:yi4ntJTq.net]
dockerは厳しいわ
流行っているから本買って来て読んでみたけど
そもそも何をするソフトなのか、何の役に立つのかすら理解できなかった

973 名前:デフォルトの名無しさん mailto:sage [2020/03/05(木) 19:21:28.75 ID:wTyki8t2.net]
やっぱり最低限は環境変数とPATHは理解してもらってanaconda入れてPATH通すってやり方かなと思う。
最悪問題起きても環境変数とPATHがわかってればデバッグできるでしょ。

974 名前:デフォルトの名無しさん mailto:sage [2020/03/05(Thu) 19:43:37 ID:D1lGE/tK.net]
google も動かすまでが結構大変なんだよな
初心者には難しいかな

975 名前:デフォルトの名無しさん mailto:sage [2020/03/05(Thu) 20:16:30 ID:dUqOCP9n.net]
>>967
おまえのぐっぐるとはなんのことやらエスパーする余地がある

さすが、自然言語が不自由なスッドレだなw

976 名前:デフォルトの名無しさん mailto:sage [2020/03/05(Thu) 20:26:45 ID:Fk1ZMAni.net]
(200, 200) のnumpy配列を(1, 80, 80)にしたいです
お願いします

977 名前:デフォルトの名無しさん mailto:sage [2020/03/05(Thu) 20:27:11 ID:Fk1ZMAni.net]
間違えました
(200, 200) のnumpy配列を(1, 200, 200)にしたいです
お願いします

978 名前:デフォルトの名無しさん [2020/03/05(Thu) 20:57:29 ID:s/vnmaxn.net]
丸投げはやっとるん?

979 名前:デフォルトの名無しさん [2020/03/05(Thu) 21:01:02 ID:fCV+9Bpk.net]
np.expand_dims

980 名前:デフォルトの名無しさん [2020/03/06(金) 03:11:42.52 ID:9EQdyE3d.net]
python3で質問です
for i in list1:
if ("A" or "B") in str(i):
list2.append(i)
elif "C"==str(i) or "D"==str(i) or "E"==str(i):#←ここ
list3.append(i)
else:
list4.append(i)

というコードがあるのですが、#部分が汚いというか煩雑で困っています。
いずれは#部分の比較文字列が増える可能性があるので、例えば
("C" or "D" or "E")==str(i)
みたいな感じでスマートに書きたいです。(ちなみにこれだと最初のCしか比較されませんでした。。。)

#部分をどうしたらいいでしょうか?

また、最終的には#部分で比較する別ファイルからリスト型に取り出してぱーっと比較したいです
その場合のアルゴリズムも(ファイルの読み込み操作とかは不要です)できたらほしいです



981 名前:972 [2020/03/06(金) 03:14:05.66 ID:9EQdyE3d.net]
codepad.org/QoncQu10
すみません、、、インデント崩れました
これです

982 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 03:40:12.72 ID:HMS8G3Kn.net]
>>973
in演算子でいいじゃん
if 比較したい値 in 値の入ったリスト

983 名前:デフォルトの名無しさん [2020/03/06(金) 03:41:39.25 ID:zMfd3B+p.net]
そんなもんお前…
str(i) in ('C', 'D', 'E')
やろ

ところで、最初の
('A' or 'B') in str(i)
は想定通りに動作してないと思われる
'A' in str(i)
相当だから
もう少し演算子について正確に学んだ方がいい

984 名前:デフォルトの名無しさん [2020/03/06(金) 06:32:33.66 ID:MUtvLxi6.net]
文字列化すると"A" になるデータってどんなのかな

985 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 06:56:59.42 ID:qYlx8Qkc.net]
>>977
ABO式血液型とカー?(ちょうてきとう)

986 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 07:06:27.86 ID:Z17kfdKR.net]
>>973
別にifとelifをABCの数だけ並べてもいいでしょ?
スマートな書き方は慣れてからでもいいでしょ

>ぱーっと比較したい
後半は急に雑な説明になって
何がしたいかよく分からん?

987 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 08:46:55.47 ID:+VKnEuTi.net]
>>979
>ぱーっと比較したい
俺、思うに、それが str(i) in ['C', 'D', 'E'....] のことじゃないのか

988 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 09:24:34.72 ID:6R/8Uuzj.net]
>>973
リストの内容によってはこういう方法でもいける。
import re
list=["A","B","C","D","E","F"]
sList=",".join(list)
list2=list2+re.findall("[AB]",sList)

989 名前:972 [2020/03/06(金) 15:01:17.68 ID:yez0RtUo.net]
>>980
これで#部分でやりたかったことが出来ました。
ありがとうございます
AとかBは簡略化のためで血液型とかじゃないです

比較する値(list1の各要素)には"ACC"みたいなものが来るようになっていて
Cが含まれていても”CX"みたいになっていたらelseに分岐させる感じの処理です

最初の部分の
if ('A' or 'B') in str(i):
も左をリストにして簡潔にしちゃいたいのですが
さっきのやり方(例えばif str(i) in ['A','B']:)だと"AA"とかがstr(i)に来たときに漏れてしまいます
str(i)にAかBが含まれているとき(例えばAB,AF,AA,BE)に分岐させる処理はどう書いたらいいでしょうか?
最初の

990 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 15:10:11 ID:6R/8Uuzj.net]
なかなかの後出しだな。

単にA,Bが含まれるという条件なのか、A,Bから始まるのか、
C〜の文字列は絶対A,Bは含まないのかなど、細かい条件で全然違うぞ



991 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 16:29:59 ID:Z17kfdKR.net]
>>982
一言でいうと処理対象の複雑さによって処理が異なる
もし文法構造を有しているならパース処理が必要になるが
字の配列だけの問題なら分岐だけで処理できる

フローチャート的なif文の分岐が基本中の基本だから
短く書くやり方は基本が分かってからにしよう
具体的には先頭から一字ずつ判断して行けばいい

先頭の文字がAの場合、Bの場合、
それぞれについて次の文字がAの場合、Bの場合……
ってif文をネストしていけば書けるはず

992 名前:デフォルトの名無しさん mailto:age [2020/03/06(金) 18:02:59.48 ID:MP/8tjp8.net]
pandasで以下のようなcsvファイルを読み込み、

burgers,meatballs,eggs
chutney
turkey,avocado

以下のような2次元配列に変換したいです。

[['burgers', 'meatballs', 'eggs'], ['chutney'], ['turkey', 'avocado']]

pandas.read_csv(..., heade=None).to_numpy().tolist()だとnanが含まれてしまいます。
for文でnan削除するよりスマートな方法はないでしょうか?

993 名前:972 [2020/03/06(金) 20:16:06 ID:9EOp8vfg.net]
>>983
A,Bが含まれるという条件です
例えばAjsやskBfです
Cの文字列は絶対に含みません

後出しになっちゃって本当にすみません。。。

set()とか使って出来ないかなと思ってさっきも色々試したんですけどだめしでした。。。

994 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 20:45:36.78 ID:n2xpzai7.net]
>>985
pandasじゃなくcsv.reader使ったのでよくない?
list(csv.reader(file))で意図した配列にできるよ

995 名前:984 mailto:sage [2020/03/06(金) 20:56:23 ID:MhiZvrbz.net]
それでいいです。ありがとうございました。

996 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 20:57:39 ID:n2xpzai7.net]
>>982
any(x in str(i) for x in ['A', ‘B’])
pythonの場合このケースは正規表現のほうがわかりやすいかもね

997 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 20:58:36 ID:n2xpzai7.net]
あと、str()必要??

998 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 21:49:10.87 ID:gkPkCuAw.net]
perlみたく安直には出来ないようになってるからね
if (/C|D|E/)
ショウガナイね

そもそも最近のワカモンは正規表現の存在自体知らないんだよ
本当に、聞いたことすらないんだよ

999 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 21:52:24.21 ID:gp44GQTA.net]
正規表現はもう古すぎだよなあ
あんな暗号みたいなの覚えられんし方言もあるし
しかもデバッグが非常に難しい

1000 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 21:56:09.57 ID:Fgd+2Xim.net]
そんなあなたにRaku



1001 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 22:12:28.48 ID:7d5kGJiP.net]
正規表現使わずにプログラムするとかそっちのが苦痛だわ

1002 名前:デフォルトの名無しさん [2020/03/06(金) 23:07:37.81 ID:MUtvLxi6.net]
>>973
プログラムで処理できる
完全なサンプルデータを示してほしい

1003 名前:972 [2020/03/06(金) 23:29:13 ID:9EOp8vfg.net]
>>989
すごいです。。。できました。。。

正規表現は一応貪欲なんとかとかかるーく使ったことある程度です
今回はうまくいけたのでヨシ!とします。。

any使ったことなかったので精進します

1004 名前:デフォルトの名無しさん [2020/03/07(土) 00:41:33.17 ID:k5ibAr7h.net]
まず新スレ立てろデブ
https://mevius.5ch.net/test/read.cgi/tech/1583509252/

1005 名前:デフォルトの名無しさん mailto:sage [2020/03/07(土) 00:50:58.92 ID:CmL9X7tL.net]
>>992
俺は自分が書いた正規表現ですら、後で見ると何にマッチするのかわからんってのが
あるからコメントが必須だからな。
すごい奴のすごい正規表現はもう何にマッチするのか文章の説明がないとさっぱりわからん

1006 名前:デフォルトの名無しさん mailto:sage [2020/03/07(土) 01:00:25.56 ID:AvLdWjOA.net]
あれは魔術師の呪文と同じ

1007 名前:デフォルトの名無しさん [2020/03/07(土) 01:04:17.34 ID:k4ffI6Av.net]
うまな

1008 名前:デフォルトの名無しさん [2020/03/07(土) 01:04:29.33 ID:k4ffI6Av.net]
うめ

1009 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 64日 9時間 7分 36秒

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








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

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

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