くだすれPython(超初心者用) その47【Ruby禁止】
■ このスレッドは過去ログ倉庫に格納されています
当スレに★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公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/
〇前スレ〇
くだすれPython(超初心者用) その46【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1577948214/ >Explicit is better than implicit.
この考え方も後付けなんだよね 遅い早いとかおまえらのレベルじゃ気にするレヴェルじゃねーだろ >>427
全くの別物だけど、どういうところが紛らわしいと思うの? >>429
スルーしてたけど全く別物でワロタwww ありがとうございます。こちらで教えていただいたおかげで無事に1ページ目のURLやタイトルを取得し出力することができました。
今はページを遷移して全ページのタイトル、URLを取得しようとして、次へのURLは取得することができたのですが
最後のページは次がない為苦戦してます。get_htmlメソッドで別のページのhtmlを解析している動画があったので私も使ってみたのですが、
なぜか使えずNameErrorになってしまいました。何が原因なのでしょうか?get_htmlメソッド以外にもラストページのhtmlを解析できる方法がありましたら教えていただければ幸いです。
質問がわかりにくく申し訳ございませんが、宜しくお願いします。 >>432
1.htmlを解析する
2.次のURLがある場合取得して1に戻る ない場合、終了する
だけなんだけど、エラー時の対処方法が分かりませんということかな
if文で分岐するか、try ~ exceptで囲んでしまうかなんだけども >>431
enumは後から値を書き換えられない&キーを追加できないかわりに、読みやすい、キーがシンボルなのでtypoしてもすぐに見つかる、値からキーを引けるのが大きな違いかなあ >>432
ようわからんからサンプルソース
https://ideone.com/0KvMNh
ideoneに貼っつけたらURL部分が変わってしまったので、
main()の最初のnext_urlにはtopのURLを入れたら動くはず >>434
違いはイミュータブルとみやすさってことですかね
値からキーなら辞書でもitems()と内包表記でできますね
キーがシンボルというのはどういう意味でしょうか >>427
元々は数十個の連番の定数を定義するためにC言語で使われた
enumなんかは存在せず、全てdefineでやっていた
それが40年ほど掛かって進歩して、今日のenumになった
なので直感的に理解しやすいのはC言語のenumで、それ以降のenumは抽象度が上がってるので理解し難くなっている
そして現代プログラミングではそもそも連番の定数というものは使わない
連番の定数による状態の区分けと、OOPでの状態の区分けは、機能が相反する 月の名前
4月 と April
とかは、一度定義すれば変わることはないので、一度定義したら変更不可にしておいた方が安全だというのが enum の有効な使い方 >>432
ありがとうございます。エラーの対処がわかりませんでした。if文で作ってみますね。
>>435
不十分ですみません。コードありがとうございます。参考にさせていただきます。 >>436
enumと辞書は根本的に用途が違うよ。
enumは固定の値として使うもの。一連のグループとして括られるある定数の集まりに、分かりやすく名前とその値を決めてあらかじめ定義しておくためのもの。
辞書は入れ物。プログラムの処理の中で、必要に応じて中身を追加したり変更したり取り出したり削除するための箱。 tkinter.ttkってtkinterのサブモジュールだからfrom tkinter import * でロードされないのですか?
また
from tkinter import *
from tkinter import ttk
だと丁寧でないので
import tkinter as tk
import tkinter.ttk as ttk
としたいのですが、なにか(二重ロードなど?の)問題がありますか? Pythonのインデント強制って結構欠陥じゃないか?
コピペが安定的にできんし見た目で何個空いてるのかも分からん 俺も強制インデント好きじゃないな
括弧の方が好き
> コピペが安定的にできんし見た目で何個空いてるのかも分からん
不可視文字表示のプラグインを入れればいい インデントがバラバラだと
イラつくから統一してるんだろ?
でもオレもRubyみたいに
整形の自由度高い方が好きだが そんなに嫌いではないけれど、やっぱ長い関数やクラスだと見づらいわな。
tensorflowとか長ったらしい関数使う割にインデント2って最悪だわ。 関数名や変数名で単語の区切りに大文字を使うことはしないの? kivyのcanvasにctypesでがっつり描いてGUIやってる >>447
そうでもない
>>448
のぞましくない という。
少なくとも、先頭には使っちゃいやーん。
(クラスかなにかと、まぎらわしくなるからだとかなんとか)
ただし、
不変な値の名前に、ならば、
全部大文字ならおk...らしい。
例) URL_TUPLE=("http://5ch.net", "https://5ch.net") >>447
じゃあ何で書いたら楽なの?
Ruby on Rails ぐらいしか選択肢がないが 偉大な言語には接頭語を付けて「おPython」と呼ぼう >>456
「(上級者wwwからしたら)くだらない(かもしれない)質問を書くスレ」の略語らしいぞ Python, Markdown, Yaml などは、
VSCode の有名な拡張機能、indent-rainbow でカラー表示できる! vscode入れ直したらクラスは2行開けとか、カンマの後はちゃんとスペース入れるとか、空の空白入ってるとかで警告出てたの出なくなっちゃった
どこいじったのか覚えてないや >>463
多分select interpritatorでpython実行環境を設定してないのが原因 python.pythonPath 設定してないんだろな pyautoguiでも何でもいいのですが、
別の仮装デスクトップ上に画面とか展開して自動で動かす方法はないですか?
メインのデスクトップ上では他の作業をしてるので、自動化作業は、別の仮装デスクトップ上で不可視の状態で進んでいて欲しいです。 >>466
無理
俺も前似たようなことやろうと思ったけど、仮想デクストップ系の制御はあんまり融通が効かない 出来ないこともないけど最初から仮想の方で動かせば完結してない? >>466
画面・マウス・キーボード切り替え器for2台用を購入して
パソコン本体を2台にしる 作業内容にもよるけどブラウザで完結するならselenium使えばいける Pythonでグラフィック使ったゲーム作りたいんですがGUIライブラリ入れたらできますか?
方法があれば教えて下さい。試しにKivyての入れようとしたら難しすぎて無理でした。 >>472-473
「ハサミを買っても使い方が難しくて分からない」と言ってるやつは
永遠に「ハサミで紙を切る」ことができないままだ。
アナコンダはGUIアプリを作るためのものではないので
へのつっぱりにもならん。 ゲーム作るならPythonを今すぐ投げ捨ててUnityを使おう
Pythonに拘って今どれだけ苦労しようともいずれ必ず他へ移行することになるんだし、Unityなら初心者向けの本などは腐るほどある kivy慣れるとめっちゃ便利なんだよな
しかも覚えるとUnityやSwiftまで簡単に見えてくる >>474 Kivyは使ったことすら無くてインストールでつまずいてます。
>>475 調べたらUnityはゲームエンジンで言語はC#ですね。C#用の無料IDEがあるかどうか。
>>476 そうですかインストール頑張ってみようかな。簡単に越したことはないし Unityはそれ自体IDEだし、個人ならVisualStudioも無料 GUIアプリってのもまた微妙な言葉だな。
ゲーム、ブラウザ、デスクトップアプリ、スマホアプリ
でも取り扱いが全然違うだろ。 わかりやすい解説見つけたからやってみたらKivyインストール出来た
せっかく環境作って途中まで勉強したしPython + Kivyで作ってみます。ありがとうございました >>480
ここまでスレ使ったんだから
その
「わかりやすい解説」とやらのページに行くための検索単語か
「h」をとったttp以降のアドレス書いてけよダボハゼ いやせっかくUnity教えてもらったし迷ったけどKivyの方が簡単て聞いたからだけど
結局Kivy入れるならもっとKivyのインストール調べてから聞くべきでした。失礼しました
参考にしたブログは
ttps://algorithm.joho.info/programming/python/kivy-install/ pythonとはライブラリである
実際のプログラムはjuliaで書く
pycallで呼び出せばいいのだ これのインストールのどこが難しすぎるんや???
煽り抜きでがちで解せぬ
zip解凍してexe叩くのに比べて難しいってこと?何と比較して難しいの?え? 質問です
100万個くらいの点があって、それぞれ名前、X座標、Y座標を持っていて、
その中で2点間の距離が、ある範囲にある点の組を抽出したいのですが、
速度が速いのは、どういう方法になりますか?
いまは全然Pythonっぽくなく、単に各点の名前、座標でリストにして、
X、Y座標のforループ2つで、距離はmathで三平方の定理…です
ただ、100万×100万÷2も回すのはさすがに辛いので、
一応時短のため、先にリストはX座標でソートしておいて、Xの小さい方から評価して、
X座標の差が、距離の範囲のmaxを超えたらbreakでXのループ抜ける…ってのだけしてます >>486
距離をもとめる計算の部分を
numpy.linalg.norm でも使ってみたらどうだろう とりあえずマンハッタン距離で評価してマンハッタン距離>=ユークリッド距離は自明だからそれでフィルタする 空間を適当なサイズのメッシュで分割して、互いに近くにあるセルのペアに含まれる点だけで距離を計算すればいい
俺も全く同じことをやったことがあるんだが、見も蓋もないことを言えば
ぶっちゃけ手間暇かけてそういう工夫するよりCで普通に二重ループぶん回した方が結局手っ取り早くて遥かに速いよ >>486
一回しかやらない処理ならpythonでいいけど、毎回計算処理入るようなシステムに組み込むならコンパイル言語でやった方がいいわ。 >>490
>互いに近くにあるセル
この判定がめんどくさそうだな >>486
理論的なことは他の人が答えているので実践的なことを一つ
モジュールscipy.spatialにKDTreeってのがあるからそれで解決 >>487-494
回答ありがとうございました!
いろいろヒント貰ったので、それぞれ試してみます
>>493
さすがに1兆回やりきったことはなくて、
>>486で、データによるけど100億のオーダーくらいには減らして、
6時間〜半日くらいかかってます(遅いノートPCだからってのもありますが) class Base():
__def __init__(self):
____self.a()
____self.c()
__def a(self):
____def b():
________pass
__def c(self):
____pass
self.c 内の処理でself.a内関数bを呼び出したいんですが、なんと書けばいいのでしょうか >>496
def a(self)の戻り値にreturn bとして関数を返す
そうするとself.a()で関数bが帰ってくるから
b2=self.a()
b2()
で呼び出せる
一行でかくならself.a()()となる マルチスレッド・プロセスでやるとリークの温床になりそう。
Baseオブジェクトがbオブジェクトに依存するという関係が。 マルチプロセス入れたら軽くなった
global使いまわしてるとこエラー出まくってたけどTryで解決した 座標系aで表された3次元の点群の組と
座標系bで表された3次元の点群の組があって
座標系a→bに変換する行列をsolveするライブラリはありますか
aとbはどちらも直行座標系で、回転と並行移動で変換できることは既知です
そして各座標における点の対応関係も全て既知なので、pnpみたいにsolveして欲しいイメージなのですが ちなみに何をしたいかというと
座標系aでは点群は全てz軸上に乗っていてx,yは全て0なので
座標系a上で、別の2次元点群をx,yに配置して(zは等間隔に適当に配置)
a→bの変換によって座標系b上で点群に沿ってこの2次元点群を投影したい >501
>回転と並行移動で変換できることは既知
そこまで判ってるなら逆行列で終わり Pythonはどうして同じ命令を他の言語と比較して簡素に記述できるのですか? >>508
簡素なことを書いたら
いっぱいある暗黙の作業な部分はPythonアプリ側が勝手にやってくれてるから 中カッコを書かないとか
型宣言をしないとか
文の終わりに記号がないとか
そのへん? >>512
デジャヴなんだ
じゃあ大学か専門あたりの追試に出てるんジャネーノ >>508
前にも言ったが言語(環境)の中に
より詳細な命令が書いてあるから
ただしその分実行速度が遅くなるが 型無し言語だからに尽きるんじゃないの?
ライブラリの充実具合ならjavaやc#に及ばないし この質問別のスレでも見たな
>>508
・比較しているのは具体的にどの言語か
・具体的にどのようなコードか
この二点を明確にしてくれ >>514
どうして遅くなるのにPythonはそのような仕組みを採用したのですか? from XYZ import XY as Z でパッケージを読み込み自作クラスA内でz=Z()とインスタンスを作成しています
このインスタンスzがエラー吐いたとき、exceptになんと書けば捕捉できるのかおしえてください
エラー内容は
raise RegexMatchError(caller="get_config", pattern="config_patterns")
XYZ.exceptions.RegexMatchError: get_config: could not find match for config_patterns
です
z.exceptions.RegexMatchError や z.RegexMatchError ではno attributeと言われてしまいました >>517
人間が読み書きする速度が早くなるからだよ
実行速度より開発速度を取るのが動的型言語 なるほど…
遅い遅いって具体的に何が遅いんですか? >>519
caller="get_config"
たとえば↑これだと、callerにはただの文字列「get_config」が渡ってるんだけど
それでいいのか?
もっと上の方で変数名get_configとかに何かリストなり文字列なりをあててて、
それを引数として渡したいのなら書き方違うぞ。
あと
raise RegexMatchErrorで検索するとpytubeなるものしかHitしない件。
そして
それんなかのpatternには
通常たぶんre.pattern(なんや正規表現な指示)で
コンパイル済みの文字列が入っている件。 >>521
520のレスを おうちのひとに よんで もらってね! >>522
AtomのRunnerのコピペだと上記のような感じ
e.type すると class `XYZ.exceptions.RegexMatchError`>
e.aegs すると `get_config:could not find match for config_patterns`
です。インスタンスはz=Z(文字列)で、例外処理を書きたくてわざとアンマッチな文字列投げてるんですが
どうキャッチしたらいいのかわからないのです おっと
except Exception as e : str(type(e))とstr(e.args)ですね ■ このスレッドは過去ログ倉庫に格納されています