暇つぶし2chat TECH
- 暇つぶし2ch632:デフォルトの名無しさん
22/04/09 09:56:19.00 erlZKZM8.net
>>621
それIDEも使わないようなエンジニアだしw
URLリンク(image.itmedia.co.jp)
あと>>620もそうだが60割って…

633:デフォルトの名無しさん
22/04/09 10:06:40.99 fKWuF8Ed.net
60%って書こうとしてたら60割って書いてたわ……
こんなアホみたいなミスするとは……

634:デフォルトの名無しさん
22/04/09 10:19:09.57 7zWpZRsf.net
PyCharmとかvimがそんなシェアあるって嘘だろって数値だから
ネタで割使ってるのかと思ったら素でやってたのか・・・

635:デフォルトの名無しさん
22/04/09 10:24:51.12 0h6RcYap.net
>>624
batも勘違いしてるでしょ?
IDLE起動するとき毎回同じimport文やらを記述するのが面倒だから
そういうのをbatファイルに記述しておいて、IDLEを引数渡しで起動させるってことだよ?
Gitクローン関係無いよね?

636:デフォルトの名無しさん
22/04/09 10:52:35.78 fKWuF8Ed.net
>>626
すまん、何か色々勘違いしてたみたいだわ
普通にコードのテンプレートみたいなものをbatで生成してるのかと思ったわ

637:デフォルトの名無しさん
22/04/09 11:29:12.77 0h6RcYap.net
>>627
なるほど、そういう勘違いね
IDLEでガッツリコードを書くわけじゃなくて、コードはVimで書く
IDLEは実行とかテストとかだね、VSCodeとかPyCharmとかも結局裏でIDLEで実行してるわけで
たぶんやってることは同じだと思う、知らんけど

638:デフォルトの名無しさん
22/04/09 11:37:03.51 ehpYMGIZ.net
>VSCodeとかPyCharmとかも結局裏でIDLEで実行してるわけで
IDLEってTkInter使ったただのエディタじゃね?VSCodeが裏で使うってどういう場面で?

639:デフォルトの名無しさん
22/04/09 11:54:52.85 0h6RcYap.net
URLリンク(docs.python.org)
えー、IDLEは対話的インタプリタでありまして・・VSCodeはインタプリタの設定があるようで、
であるからして、えーインタプリタを裏で実行しているということでありまして
えー、、、つまり最後に「知らんけど」って書いてあるのが全てであります

640:デフォルトの名無しさん
22/04/09 12:47:04.00 yJynhyxC.net
IDLEは、コメントアウトのショートカットキーで"'# "に出来ない時点でアウトなんだよ

641:デフォルトの名無しさん
22/04/09 12:49:50.16 LiKgioEf.net
>>630
それよりPythonそのものがインタプリタ言語でしょって話だろ
一行ずつ変換してCPUで実行してるで原理は変わらない

642:デフォルトの名無しさん
22/04/09 12:51:34.84 LiKgioEf.net
開発環境の標準化と管理しやすさから
Docker使うのが楽ちんこかゆい

643:デフォルトの名無しさん
22/04/09 12:56:08.24 XJ3vBTOo.net
どういうことなの

644:デフォルトの名無しさん
22/04/09 13:15:20.25 fH1CYxKR.net
>>616
>ただこれはいいことばかりではなくて、str.replaceで改行文字を
>指定して変換をかけるような時は、しっかり\r\nと書かないといけない
テキストモードでnewlineを指定しなければ読ま込み時に\nに変換されてるのでstr.replaceは\nで大丈夫

645:デフォルトの名無しさん
22/04/09 14:56:49.55 lodglsEl.net
htmlのタグつきソースじゃなく、webの文字だけを直接取得する方法ってないの

646:デフォルトの名無しさん
22/04/09 15:08:35.72 LiKgioEf.net
正規表現でいけるんじゃね

647:デフォルトの名無しさん
22/04/09 15:42:19.36 STE4KUoA.net
つ 「クローリングハックあらゆるWebサイトをクロールするための実践テクニック」

648:デフォルトの名無しさん
22/04/09 15:50:48.63 0h6RcYap.net
>>636
直接取得する方法は、webページ上でCtrl+A -> 右クリック -> コピー で直接取得できます!
ちなみにhtmlタグつきソースからwebの文字を抽出する正規表現はこんな感じだと思います
import re
re.findall(r'>([^<>]+?)</(?!script)', htmlタグつきソース)

649:デフォルトの名無しさん
22/04/09 16:17:02.76 lodglsEl.net
検索結果から結果の文字列だけ取りたいんだけど
BeautifulSoupじゃなくてもとれるの?
re.findall で, > と < の間の入力文字を取るってこと
やはり一時sourceから整形しないといけないんだね

650:デフォルトの名無しさん
22/04/09 16:52:16.54 mo38de66.net
#TVer改悪 ですか?

651:デフォルトの名無しさん
22/04/09 19:04:45.34 q9kiD+/u.net
while 10:
if 10<100:
input("数字")
print("NO")
elif 10>0:
input("数字:")
print("no")

print("END")
数字:10を入力するとENDになって
11~100を入力するとNOと表示されて
10~0を入力するとnoと表示されて戻るプログラム作りたいんだけど
何を入れてもNOとしか表示されない

652:デフォルトの名無しさん
22/04/09 19:49:24.04 i94l3mqO.net
超初心者以前の知能が足りない人用スレが必要なんじゃないかな

653:デフォルトの名無しさん
22/04/09 19:59:15.82 yZu8Oa/R.net
gensim使ってword2vecのモデル作ろうとしてんだけど、単語の長さが1文字になっている
例えば富士山って単語があって、その前後にきっちりスペース入っててちゃんと区切られてても、「富」と「士」と「山」として学習されてる
モデル作るときのオプションになんかあるんかなと思って公式のマニュアルみたけど、それっぽいのないしどなたか助け船ください

654:デフォルトの名無しさん
22/04/09 21:52:07.66 0h6RcYap.net
>>642
while True:
  n = int(input("数字:"))
  if n == 10:
    print("END")
    break
  elif 11 <= n <= 100:
    print("NO")
  elif 0 <= n <= 10:
    print("no")
>>644
gensimとか全然知らんけども、調べたら
VECTORS_SIZE = 50 #次元数は20~50必要と書いてる
あとは文章を単語に分けるget_words周りをチェックしてみたらいいんじゃないでしょうか
URLリンク(developers.goalist.co.jp)

655:デフォルトの名無しさん
22/04/09 23:11:12.72 yZu8Oa/R.net
>>645
レスありがとう
そのベクトルサイズっていうのは単語の意味を決めるベクトルの次元数を示してて、単語そのものの長さじゃないんだ
めっちゃアバウトに言うと
抱き枕=抱き締める、枕 …ベクトルサイズ2
抱き枕=抱き締める、枕、気持ちいい …ベクトルサイズ3
ほんで次元数が増えれば増えるほど意味の精度が良くなる感じ
単語にわけるのは問題ない、中身みてもうまく行ってるんで
よくわからん…

656:デフォルトの名無しさん
22/04/10 00:09:48.46 QKdC6ZNW.net
>>645
ありがとうございます

657:デフォルトの名無しさん
22/04/10 00:28:15.42 ECLG0OKI.net
>>644
自己解決

658:デフォルトの名無しさん
22/04/10 10:28:10.14 AUZk5nGZ.net
>>648
ぜひ回答も書いてスレの肥やしにしてください

659:593
22/04/10 21:01:22.34 ZtzjE5Lq.net
>>589
の処理を要約すると、
~/.bash_profile に、下の1 か2を書いているだけ
(1)
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
(2)
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/shims:$PATH"
eval "$(pyenv init --path)"
漏れが、>>593
に書いた、anyenv 用の下の2行と同じ意味。
環境変数PATH を設定してから、仮想環境を実行する
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"
bash で、下を入力すると、
which anyenv
~/.anyenv/bin/anyenv
次へ続く

660:593
22/04/10 21:02:11.54 ZtzjE5Lq.net
前からの続き
ただし、漏れの環境は、WSL2, Ubuntu 18.04。
君のOS や、シェルが何か分からないが、
シェルで下を入力すると、
which pyenv
~/.pyenv/bin/pyenv # 1の場合
~/.pyenv/shims/pyenv # 2の場合
1, 2で、どちらかが表示されるのでは?
まあ、多言語バージョンマネージャーのanyenvか、asdf を勧める
>>596
>~/.pyenv/bin/ か、~/.pyenv/shims/ に、
>python, python2, python3 の内のどれかは知らないけど、あるかどうか見てみれば?
これは、たぶん間違い。
~/.pyenv/bin/pyenv か、~/.pyenv/shims/pyenv がある
結局、~/.pyenv/bin/ か、~/.pyenv/shims/ は、各人の好みなんだろう

661:デフォルトの名無しさん
22/04/11 07:06:19.05 +2lQ4ezC.net
Python venv 仮想環境のフォルダー名 --clearとやったら全部吹っ飛んだんだがどうしたらいいの?
m1 macでやっててユーザー名変えたら何故かvenvがactivateされててもpythonコマンドが2系だったんでどっかのクソサイト真似たら想定してない結果になった
これ復元できるかね?

662:デフォルトの名無しさん
22/04/11 10:12:49 sVlSXLDD.net
同じく仮想環境でのエラーについて…
modulenotfounderrorの原因って何があるかね(モジュールはrequests)
winのvscode上で、仮想環境内にインストールは当然してるし、スペルミスもない、vscodeとPython両方ともパスも通ってる

あと何がある?追加インストールしたモジュール全部このエラーになるんだ
m1macではエラーはでなかったから尚更意味わかりません

663:デフォルトの名無しさん
22/04/11 10:22:02 8HOMPEv6.net
箇条書きで整理してから肉付けしてみて
自己解決すんじゃないかな

664:デフォルトの名無しさん
22/04/11 11:30:00 uYcMdD2t.net
>>652
そら仮想環境は--clearしたら全部消えるし、ユーザ名変えたらパス変わるし使えなくなるでしょ
何らかのバックアップとってないと復元は無理だと思う

665:デフォルトの名無しさん
22/04/11 11:54:19.97 EWxq5I4o.net
サイトが糞だったのか自分が糞だったのか詳しく

666:デフォルトの名無しさん
22/04/11 12:14:48 rXD/3mKA.net
>>653
何もミスしてないってのが間違いなんじゃねーの
とりあえずsys.pathをprintすれ

667:デフォルトの名無しさん
22/04/11 12:36:17.27 uIRj5XJN.net
>>653
Ruby ではモジュールは、モジュール探索パス内から探される
例えば、モジュール探索パスに、フォルダa, b, c が存在する場合、
その先頭から、つまりabcの順番で、モジュールが存在するかどうかを探していく
同名のモジュールが、aとc内にある場合は、
a内のモジュールが使われて、c内のモジュールは使われない
なので、この順番が重要

668:デフォルトの名無しさん
22/04/11 13:33:13.98 zI2UWl89.net
Dockerでやれよ

669:デフォルトの名無しさん
22/04/11 20:50:27.40 +2lQ4ezC.net
>>656
URLリンク(dev.classmethod.jp)
こいつの記事を見てインストールし直すといいとか書いてあったからpip installでできる何かかなと思ってreqxirements.txt作ったけどやったあとにそういえばPythonってファイルのことモジュールって言うよなと思いだして見てみたら全部消えてた
こいつの説明もおかしいしclearなんて何をクリアーするのか分からない名前にする方もおかしいしモジュールなんて紛らわしい名前にする方もおかしいし全部がおかしい
しかも一番最後に唐突にpyenvなんて単語が飛び出してきてるあたりvenvとpyenvごっちゃになってるんたろうな

670:デフォルトの名無しさん
22/04/11 21:15:25.54 8HOMPEv6.net
記事読んだけどpyenvとvenvを混同してるの>>660だけやん
何するにもまず公式サイトの説明かコマンドのヘルプみない方が悪いよ
classmethodだから変なこと書いてる可能性は低いが公式ではないからね

671:デフォルトの名無しさん
22/04/11 21:18:23.24 +2lQ4ezC.net
>>661
うん本当に公式サイトの説明かコマンドのヘルプ以外何も信用できないと痛感した
今後はその2つ以外何も見ないようにするよ
それはそうとデータ復元させられればいいんだけどね
やる気ないわどうしよう

672:593
22/04/11 21:40:41.55 uIRj5XJN.net
普通は複数言語を使うから、venv , pyenv を単独では使わない。
Ruby と同じで、GUI が無く、HTML, CSS, JavaScript を使うから、Node.js も必要
多言語のバージョンを個別に管理できない
だから、漏れは日本人が作った、多言語バージョンマネージャーのanyenv を使っている。
nodenv(Node.js), rbenv(Ruby), jlenv(Julia), tfenv(Terraform)など、20言語ぐらいある。
同様のツールに、asdf もある
それか、Windows 10, WSL2, Linux, VSCode なら、公式のDocker Desktop

673:593
22/04/11 21:51:13.38 uIRj5XJN.net
基本的に、単独のバージョンマネージャー、
venv , pyenv, rbenv の記事を書いている香具師は、情弱
そういう香具師は、Node.js を入れる段になると、nvm, n とか言い出すw
各言語で、様々なバージョンマネージャーを使うな。ややこしい
最初から、20言語入っている、anyenv, asdf を使えば良いだけ。
全言語同時に更新できるし
それか、Windows 10, WSL2, Linux, VSCode なら、公式のDocker Desktop
この3つ

674:デフォルトの名無しさん
22/04/11 23:50:16.65 zI2UWl89.net
だからDocker以外認めないんだって
さらに環境構築はスレチなので
初心者はgoogle colabでやりなはれ

675:デフォルトの名無しさん
22/04/11 23:53:31.78 zI2UWl89.net
さもなければ拗ねる

676:デフォルトの名無しさん
22/04/11 23:57:32.81 vk1u9tuU.net
漏れと香具師とか生きとったんかワレ

677:デフォルトの名無しさん
22/04/12 04:43:55.44 iDZ3USXF.net
「普通は複数言語を扱うから」とかいうのは正しいかもしれないが、だからといってごちゃ混ぜ環境構築ツールを使うのはベストどころか悪手だから信用しちゃいけないよ
どう考えてもその言語専用に開発されたツールを使った方が、言語のバージョンアップに素早く対応できるし、
情報も多いし細かい所まで調整できる
ラッパーツールを使うってことは自らラッパーツールによる制限をあらかじめ課しているようなものなので、
ラッパーツールで十分と判断できるようになるまで理解が進むまでは使わない方がいいと思うわ
poetryですら弱点(pipの --find-links が使えない)があるからなあ。

678:デフォルトの名無しさん
22/04/12 08:14:42.30 5/F0IJac.net
発達障害の相手をするな

679:デフォルトの名無しさん
22/04/12 08:45:44.48 J6etQu1f.net
ちんちんシュッ!シュッ!シュッ!

680:593
22/04/12 13:21:00.67 gsOGD0UL.net
多言語バージョンマネージャーのanyenv, asdf を使わない香具師は、大変
例えば、Python は公式のvenv, Ruby はrbenv,
Node.js はnvm。でも、最近は、n もあるのでどうしましょう?
とか聞かれたら、そういう香具師を相手にできない
そいつは様々なバージョンマネージャーを調べる、時間が膨大

681:デフォルトの名無しさん
202


682:2/04/12(火) 16:48:37.17 ID:nozFiGE2.net



683:デフォルトの名無しさん
22/04/12 16:53:27.00 gsOGD0UL.net
確かに、python/pythonw, ruby/rubyw の違いって何だろ

684:デフォルトの名無しさん
22/04/12 16:54:12.66 JpfqGpfI.net
どんなコード?

685:デフォルトの名無しさん
22/04/12 17:01:08 nozFiGE2.net
すいません
pyautogui.press('a')でした
pyautogui.press('a')にしてもpywにすると入力されないです

686:672
22/04/12 17:05:24 nozFiGE2.net
>>674
これでみれますか?
URLリンク(ideone.com)

687:デフォルトの名無しさん
22/04/12 17:47:07.40 dyOgG/yk.net
要素が100あるリストを作るにはどうすればいいですか?
[0] * 100 ってのもカッコ悪い。
整数型で要素数100、初期化は不要。
int d[100]; 的なやつ。

688:デフォルトの名無しさん
22/04/12 18:00:54.92 3I6I23IO.net
慣れの問題じゃね?
list(range(100))
とかでもかけるけど…

689:デフォルトの名無しさん
22/04/12 18:06:36.43 dyOgG/yk.net
ありがとう。
[0, 1, 2, .. 99] ってリストを作るのか。
array も numpy 入れないと使えないのが面倒だね。

690:672
22/04/12 18:13:09.62 nozFiGE2.net
>>676の12行目のprintに#をつけると.pyでも
キー入力されなくな�


691:閧ワした 代わりにtime.sleep(0.5)いれたらキー入力されるようになりました これは一体何が起きれるんでしょう??? 指定したウィンドウがアクティブになるまで待つループに行かずに プログラムが終わっちゃってるんでしょうか???



692:デフォルトの名無しさん
22/04/12 18:39:56.40 ESzOQLHU.net
stdoutがないからだよ

693:672
22/04/12 19:08:23.01 nozFiGE2.net
>>681
stdoutを
検索したんですがちょっと難しくて分からないんです
stdoutをどこにどうつけたらいいんですか?

694:デフォルトの名無しさん
22/04/12 19:26:07 wqnh+ciA.net
import pyautogui
import time
time.sleep(5)
print("test")
pyautogui.press('a')
で正常に動く

pyautogui.pressの前に終了してんじゃね

stdoutは今回関係ないと思うけど

695:672
22/04/12 20:13:48.89 nozFiGE2.net
>>683
ありがとうございます
なぜかSleep入れないと終了してしまうみたいです

696:デフォルトの名無しさん
22/04/12 20:50:57.47 b2N2qKAz.net
card={"ID":"python123","PASS":"python","an":"1234"}
card_input=input("クレジットカード:")
while True:
if card_input in card:
print(card[card_input])
break
else:
print("違います")
これで何故か違いますがループしてしまいます

697:デフォルトの名無しさん
22/04/12 21:02:02.35 /Ra8N6EM.net
とくさんか?

698:デフォルトの名無しさん
22/04/12 21:15:26.84 nozFiGE2.net
pythonを3.10にアップデートしたのですが
コマンドプロンプトでpython -Vするとpython 2.7.14となってしまいます
cdでpython3.10のある場所まで移動してから
python -Vするとちゃんと3.10.4と出ます
古いバージョンのpythonはアンインストールして
pathも確認したんですがきちんと入ってるし
どうしたら3.10になるんでしょうか?
でも.pyのファイル自体はpython3.10のpython.exeに関連付けさせて
ダブルクリックでpython3で動くようにはなっているみたいだし
これはいったい・・・?


699:デフォルトの名無しさん
22/04/12 21:43:39.95 wqnh+ciA.net
>>687
コマンドプロンプトでwhere pythonを実行
microsoftのパスが含まれていたら
設定 アプリ アプリ実行エイリアス
アプリインストーラー(python.exe,python3.exe) → オフ
microsoftのパスが含まれていなかったらわからん

700:デフォルトの名無しさん
22/04/12 21:47:47.87 iDZ3USXF.net
>>677
カッコ悪いとかいう前に、それがPythonだからなあ。[*range(100)]とかもあるがlist(range(100))よりちょっと短いってだけだな

701:デフォルトの名無しさん
22/04/12 22:07:40.99 nozFiGE2.net
>>688
ありがとうございます
where pythonしたら
inkscapeの中にあるpythonが出てきたので
inkscapeをインストールし直したら
cmdのpythonも3.10になりました!!

702:デフォルトの名無しさん
22/04/12 22:42:33.34 xAlxnI5L.net
inkscapeはpythonのパスを乗っ取るのか
gimpはそんなことしないのにな

703:デフォルトの名無しさん
22/04/13 10:15:08.39 mrQ0lXuv.net
>>677
ary = [None] * 100

704:デフォルトの名無しさん
22/04/13 11:46:56.33 e4z5vS6p.net
誰か>>685の質問に答えて

705:デフォルトの名無しさん
22/04/13 11:53:51.12 e6OSlB4j.net
なんだその態度は!

706:デフォルトの名無しさん
22/04/13 11:57:12.77 DDWJQX1p.net
そもそも685は質問じゃねーじゃん

707:デフォルトの名無しさん
22/04/13 12:25:16.84 U9T9z/+B.net
>>685
in dictってkeyそのものの存在チェックにしかならんぞ
だからID、PASS、anって入力した場合は
ifの中に入れるけど、python123とかって入力した場合にはelseに入る
質問するなら、想定してる挙動と実際の挙動
(何を入力した時にどういう判定をして、どう出力されるか)辺りまで軽く書いておかないとエスパー要素必要になるぞ

708:デフォルトの名無しさん
22/04/13 12:30:16.93 Ndo4Py5H.net
エスパー要素いらないだろ
ソース見れば何を聞きたいかはわかる

709:デフォルトの名無しさん
22/04/13 12:49:39 ucZJU7o2.net
>>693
お前は基礎的な知識が足りなさ過ぎて、いちいち質問してたらキリがないから
一度チュートリアル的なことやってこいって言われただろ

710:デフォルトの名無しさん
22/04/13 13:21:38.69 e4z5vS6p.net
>>698
申し訳ございません
説明書みて一通り試してみたけど、まだ修業が足りなかったみたいです

711:デフォルトの名無しさん
22/04/13 13:34:58.58 OtnGUpOi.net
>>699
card={"ID":"python123","PASS":"python","an":"1234"}
card_input='ID'
counter = 0
while True:
counter += 1
if counter == 10:
break
if card_input in card:
print(card[card_input])
break
else:
print("違います")
結果はPython123
keyじゃなくてvalueがあるのか知りたいなら
card={"ID":"python123","PASS":"python","an":"1234"}
card_input='python'
counter = 0
while True:
counter += 1
if counter == 10:
break
if card_input in card.values():
print(f'{card_input}はある')
break
else:
print("違います")

712:デフォルトの名無しさん
22/04/13 13:58:50.36 e4z5vS6p.net
>>700
ありがとうございます

713:デフォルトの名無しさん
22/04/13 15:01:31 axude+fp.net
>>700
これ両方とも何がしたいのかわからん
特に2つめとかありえんやろ

714:デフォルトの名無しさん
22/04/13 15:20:53.26 e4z5vS6p.net
クレジットカードのID、パスワード、暗証番号を文字入力で分かるプログラムを組みたかった

715:デフォルトの名無しさん
22/04/13 16:03:29.19 MldHjaMW.net
>>703
お前はもう消えろ

716:デフォルトの名無しさん
22/04/13 16:14:56.54 oiiWsGZU.net
パスワードとか暗号化したうえでログインできるスクリプトってかけるの

717:デフォルトの名無しさん
22/04/13 16:17:24.75 LexWIY5u.net
>>571
rarのヘッダのフォーマット調べたら、
ファイル数そのまんまは記録されてないみたいね
書庫内のファイルのサイズはファイル毎の先頭に書いてあるので、
ファイル末尾までシークしながら数えるしかないみたい
rarは書庫の分割に対応している圧縮形式だけど
たとえば3つに分割して2番目だけ削除すると、
本家のWinrarでも1番目と3番目に入ってるファイルしかわからなくなる

718:デフォルトの名無しさん
22/04/13 16:20:57.30 okI3ZS6T.net
>>703
クレジットカード1枚だけの情報を管理するプログラム?
“ID”と入力すればその1枚のカード番号が表示される
“パスワード”と入力すればパスワードが表示される
ということ?

719:デフォルトの名無しさん
22/04/13 16:26:04.91 Ndo4Py5H.net
解凍しなくても数が分かるかって質問に対してはyes。rarも解凍しなくてもわかる

720:デフォルトの名無しさん
22/04/13 16:38:15.19 QsWWVW1A.net
>>705
OSが提供するPassword Vaultを利用するのが一般的
実行時に何かしらCredentialを渡す形になる

721:デフォルトの名無しさん
22/04/13 19:59:56.38 2NeVpU9O.net
whileループの中にinputがないのにループ回す理由あるの?

722:デフォルトの名無しさん
22/04/13 20:15:30.03 4yCExL0b.net
カードガイジが作りたいのはこういうカタチだろ?
whileは待ち受けたい意図でしょ
データベースとアクセサとかGUIとかの話はたぶんできなかろ
実践力を身につけるPythonの教科書 っていうプログラム自体がはじめての人向けの
すげー甘い本があるから,作りたいものを忘れて,手を動かしながら読み切れ
殺すぞクソバカゴミ野郎
banks = ['mizho', 'ufj']
ids = ['a0123', 'z9876']
passs = [1234, 9876]
seqs = [123, 987]
while True:
____req = input('銀行名は? : ')
____if req == 'end': exit()
____try:
________idx = banks.index(req)
____except ValueError:
________print('\n死ね\n')
____else:
________print('\n銀行名', banks[idx])
________print('ID', ids[idx])
________print('PASS', passs[idx])
________print('SEQ', seqs[idx])
________print()

723:デフォルトの名無しさん
22/04/13 20:47:54.73 Rs+TlID+.net
passs

724:デフォルトの名無しさん
22/04/13 20:49:17.78 Z6ROrQAS.net
for p in product:
print(p)
とありますが、この文のpって文字はどんな小文字英語でもいいんでしょうか?
またはこの文字じゃないといけないなど、何かしら理由があるのでしょうか?
ご教授お願いします。

725:デフォルトの名無しさん
22/04/13 20:53:05.46 wi1nO/gW.net
わかりやすければなんでもいいよ
1文字でなくても

726:デフォルトの名無しさん
22/04/13 20:59:01.94 Rs+TlID+.net
>>713
URLリンク(docs.python.org)
そこまでに登場してない識別子でキーワード以外

727:デフォルトの名無しさん
22/04/13 21:12:32.22 Z6ROrQAS.net
ありがとうございます!

728:デフォルトの名無しさん
22/04/13 21:15:44.96 Z6ROrQAS.net
>>714
一文字じゃなくてもいいんですね
新発見です!

729:デフォルトの名無しさん
22/04/13 21:24:17.20 MldHjaMW.net
>>717
いい加減消えろや

730:デフォルトの名無しさん
22/04/13 21:24:39.98 iz/3T8fY.net
>>711
これは酷い
同じレベルじゃん

731:デフォルトの名無しさん
22/04/13 21:34:31.03 2yWJivzV.net
>>719
そり同じレベルで回答しなきゃ質問者が理解できないだろ…
俺ならtryも避けて答えるかもしれん

732:デフォルトの名無しさん
22/04/14 01:24:51.42 uO0SXD9A.net
ガイジはプラレールとかで遊んでろよ…

733:デフォルトの名無しさん
22/04/14 01:42:48 ZzIGlvaI.net
いつからこんな悪辣になった?

734:デフォルトの名無しさん
22/04/14 02:10:25.44 lxOIQ3st.net
悪貨が良貨を駆逐する
馬鹿がスレをダメにする

735:デフォルトの名無しさん
22/04/14 13:12:06.99 BtLi5peK.net
もともとこんなもんだろ
新年度(と学校の休み期間)は特にそれが顕になるだけ

736:デフォルトの名無しさん
22/04/14 15:03:37.58 JhmvXnUD.net
別にくだすれだから別にええぞ
何度も似たような質問してきたら流石に返答者も荒れるが

737:デフォルトの名無しさん
22/04/14 18:28:52.38 lv3Dkk0V.net
ファイルの先頭行に列を挿入したいのですが、列名が無い場合の追加方法がぐぐっても出て来ません( ノД`)

738:デフォルトの名無しさん
22/04/14 18:32:29.06 GwONt0bS.net
>>726
そうなんだ

739:デフォルトの名無しさん
22/04/14 19:03:58.80 zm2h//wN.net
>>726
ファイルに行と列があるのはわかるけど、どういう風に行や列を表記するかは千差万別なので
ファイル形式(OpenXMLやCSV、TSVなど)かどのアプリで扱うファイルなのか分からないと答えようがない

740:デフォルトの名無しさん
22/04/14 20:52:20.51 kWetsGXW.net
>>726
そりゃ出てこないだろうな

741:726
22/04/14 23:18:32.03 lv3Dkk0V.net
解んなかったので、Dosのファイル結合で処理しました
失礼しました

742:デフォルトの名無しさん
22/04/15 00:49:03.96 gAv1cu4K.net
ファイル結合で先頭行に列を追加!?
すごいDOS力

743:デフォルトの名無しさん
22/04/15 01:08:53.44 9XxTBRIR.net
まず先頭行に列を追加ってどういうことよ?

744:デフォルトの名無しさん
22/04/15 10:48:59.76 JgjbCGpn.net
先頭行に列追加ってまんまじゃん・・・
プログラムでやるならtmp開いて先頭に追加したいの書き込んで、その後に元ファイルの内容読み込むと同時にtmpへ書き込む
で、全部終わったら元ファイル消して、tmpを元ファイル名にリネームして終わり
エラー処理きちんとしないとトラブル色々起きる

745:デフォルトの名無しさん
22/04/15 11:21:19.02 1FLstH2r.net
行には行しか追加できんだろ。
まあ列のヘッダを追加したいってことなんだろうけどね。

746:デフォルトの名無しさん
22/04/15 11:42:10.16 NjgRgzMt.net
配列で[1:100]だと[100]が含まれないのに慣れん。
それなら [1:100) にしろよ。

747:デフォルトの名無しさん
22/04/15 17:51:56 PiHpabQE.net
要素数が100なのにend-startが99だったりしたらそれはそれでややこしかったりするので一長一短かと

748:デフォルトの名無しさん
22/04/15 18:52:43.93 NJzLAbi3.net
空の区間を表現するのに特別な表現をいれたくないしね
> それなら [1:100) にしろよ。
半分同意
Haskell他にある多重ドットを拝借してほしかったけど
どっちがどっちだっけとなりそうだし悩ましい

749:デフォルトの名無しさん
22/04/15 19:03:00.69 Pt8Ngg3U.net
こういうことでしょ?つまり普通はAが欲しければ[0:1]と書く
じゃなんで[1:100]で100が含まれない?
URLリンク(o.5ch.net)

750:デフォルトの名無しさん
22/04/15 19:24:36.19 PiHpabQE.net
>>738
インデックスの1のところが100だとしたら、数値の100はBの位置なんだが…

751:デフォルトの名無しさん
22/04/15 19:32:41.96 atHGer73.net
またこの話かよ
L[a:b] + L[b:c] == L[a:c]
が成り立つように決められたからだって言ったたろ
あれ、こっちのスレじゃなかったか?

752:デフォルトの名無しさん
22/04/15 21:07:28.54 CLXxITWO.net
>>740
正直、Pythonの基本仕様で一番難解だと思う
数年Python使っているけどいまだに覚えられなくて
>>738のような図をいちいち書いてコーディングする

753:デフォルトの名無しさん
22/04/15 21:50:41.47 T4CYxiXU.net
[1:100}で100が含まれないのは非直感的な面はあるのは確かだけど慣れるしかない
[1:100]はfor (i = 1; i<100; i++)みたいなイメージで捉えてる

754:デフォルトの名無しさん
22/04/15 22:00:09.34 qspZjXdd.net
アドレス0からアドレス0x10まで何バイトですかったら16バイトだし
添え字=要素ではなくオフセットと捉えられるなら、そう突飛とは思えぬけど
1ベースなら考えなくもないが、満年齢然り0ベースは<=より断然<だし面倒がない

755:デフォルトの名無しさん
22/04/15 22:47:15.90 HX7dwYSm.net
>>743
えっ?

756:デフォルトの名無しさん
22/04/16 03:27:04 M2x4IyLd.net
ああ分かったぞ

100が含まれないじゃなくて含まれるじゃん
ただ[0:100]じゃなくて[1:100]と書いてるから100じゃなくて1が含まれないんだよ
じゃ別に普通だな

それよりrange(0, 100)で0から99までって事のほうがアカンやろ

a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]
for i in a[1:100]:
print(i)

757:デフォルトの名無しさん
22/04/16 04:37:12.16 GwpFWYo1.net
すいません、教えて下さい
こういうのをaiとかでやらせたいのですが
何からとっかかればいいんでしょうか?
カラー漫画の吹き出しの中の文字を
周囲と同じ色で塗りつぶして消したいです
おそらく100%うまくいくと思えないので
塗りつぶしのみの画像をaiに作らせて
フォトショップみたいな画像ソフトでレイヤーとして
上に被せて
関係無い部分が塗りつぶされてたら
手で直すって感じを想定してます
問題は学習用のデータがなく
自力で修正した数ページ分の漫画で
コツコツ教え込むしかない事です
よろしくお願いします

758:デフォルトの名無しさん
22/04/16 09:26:44.86 ewKy6


759:0XC.net



760:デフォルトの名無しさん
22/04/16 14:13:32.08 u7Gm+96S.net
OCR使えばいいだけでは?
誤字とか関係ないんだし

761:デフォルトの名無しさん
22/04/16 15:31:25.88 fPn+eEc/.net
吹き出しの中に絵が書いてあったらどうするの?
吹き出しの検出は物体検出の分野だと思うのですが
PASCAL VOCで見かけた事は無いのでMS COCOを
漁るか自分で集めるかかな

762:デフォルトの名無しさん
22/04/16 16:37:07.55 NFUA2B25.net
>>746
ちょっとググったらそう言うのは結構やられてるのな
残念ながらフリーのやつは見つけられなかったけど
URLリンク(image.itmedia.co.jp)
URLリンク(www.itmedia.co.jp)
>>749
> 吹き出しの中に絵が書いてあったらどうするの?
そんなレアケースなんて当面考えなくても良くね?

763:デフォルトの名無しさん
22/04/16 18:22:27.77 fPn+eEc/.net
>>750
このリンク先の技術はディープラーニングの洗礼を受ける前のだから、今の技術で再構築すればもっと優れたものが
出来る可能性は高いな
本来あった(であろう)物を補完するのはGANとかになるかと。(ディープフェイクとかの分野や)
なお、GANでアワビを補完して逮捕された事案が最近あったなw

764:746
22/04/16 23:16:15.06 GwpFWYo1.net
もう自分が作ろうと思ってるものが出来てたんですね…
驚きです

765:デフォルトの名無しさん
22/04/17 01:28:36 WoAMfKL/.net
こんなことも知らないのは初心者というより知的障害者に近い

766:デフォルトの名無しさん
22/04/17 04:46:41.05 2lvfHA8s.net
>>753
それあなたですよね

767:デフォルトの名無しさん
22/04/17 11:52:58.54 06xFq++l.net
xlist, ylist = [], []
getxy(src) ->(x, y) # 出力値は入力値による
大量にgetxyを回してxlist, ylistに結果を記録していくとき
どういう方法が速い(?) / 高効率(?)ですか
xy = getxy()
xlist.append(xy[0])
ylist.append(xy[1])
しかわかりません…

768:デフォルトの名無しさん
22/04/17 12:08:40 E+w90SEK.net
Python onlyかつライブラリなしであればそれでいいよ
回数が分かってるなら[None]*100とかで先に確保しておくと、途中でリストメモリの再確保が入らないから厳密には多少速いだろうけど、まあ誤差でしょ

getxyが画像のピクセルを触ってるなら、何かしらの方法で一括取得できるはずだからリファレンスをよく読め

他にはnumpy使うとかnamba使うとかcython使えば速くなるかもしれない
こいつらは速くなる条件があるから条件に適合するコードを書くことが必要だ
これは少し慣れがいる

あとはそこだけcとかc++とかgoとかrust使ってロジックを書いてctypesで呼べば速い
これはさほど条件に左右されず速くなる
初心者にはおすすめしないけど

769:デフォルトの名無しさん
22/04/17 12:22:40.47 06xFq++l.net
>>756
了解です
xyは画像座標なんだけど
getxy(im):
if bbox := myfilter(im).getbbox():
_ return bbox[0] * n , bbox[2] * m
else:
_ return 0, im.width
みたいな感じなのでいじれないかなー
cは書けないので切腹します

770:デフォルトの名無しさん
22/04/17 15:19:43.31 AHx/k7U9.net
要素数が多いほど[None] * nのプリアロケートで得られる速度差は微々たるものになって
インデックス周りなんかのその他の呼び出しで相殺される
それよりPythonでの命令数を減らすほうが速度は上がる

771:デフォルトの名無しさん
22/04/17 19:46:30.65 hToGhZqz.net
pandasで日付を軸にCSVファイルを結合したいのですが、書式をyyyy-mm-ddで統一しているはずなのに、成功するのと失敗するのがあります
失敗 2009-01-05
成功 2009-01-06
失敗の方は同一の日付と見なされないので行が重複します
Pythonには人が見えないものが見えてるのでしょうか?

772:デフォルトの名無しさん
22/04/17 20:12:58 xdoWfkC3.net
私にはあなたのやりたい事が見えないです

773:デフォルトの名無しさん
22/04/17 20:52:14 BJkxuXtr.net
質問の仕方で知性も人間性もわかるよね

774:デフォルトの名無しさん
22/04/17 21:10:58.88 TsyjUgRL.net
>>759
そりゃ見えてるだろ
それとも君は直接その眼でメモリー内容が見える人なの?

775:デフォルトの名無しさん
22/04/17 21:11:17.06 lzcM8q3n.net
質問に対する反応でもね

776:デフォルトの名無しさん
22/04/19 07:30:00 q3rIpq5e.net
Win10にAnacondaをインストールしたのですが、AnacondaからSpyderを起動すると落ちてしまい、二度と起動しません。
スタートメニューのショートカットも消えてしまいます。
どうしたらいいでしょうか?

777:デフォルトの名無しさん
22/04/19 08:24:53.65 KQnHhLBW.net
>>759
半角・全角だいじょうぶ?

778:デフォルトの名無しさん
22/04/19 12:09:38 aIiYfvVh.net
VSCodeでPythonしています
frm = tkinter.Tk()
でフォームを作り、これをクリックしたときに座標を取得したいのですが、
frm.bind('<Button-1>',frm_click)
としても、frm_clickを呼び出してくれません
どこがおかしいでしょうか?

779:デフォルトの名無しさん
22/04/20 14:35:05.52 B0PpCiU+.net
pythonからhtmlファイルを指定してブラウザで開く、閉じるができません。
subprocess.popen開くことはできるのですが、開いたらファイルを閉じる(タブを消す)ためにはどうすればよいでしょうか。

780:デフォルトの名無しさん
22/04/20 21:54:23.66 NTuuFKH0.net
変数がfor できるかどうか判別する方法ありますか?

781:768
22/04/20 21:57:53.61 NTuuFKH0.net
文字列に対してforしたら、一文字ずつ取得でき想定してない動作になりました
エラーか、ループせずを想定したのですが
リストなど通常、ループできるのが適当なやつを判定するにはどうすればいいですか?

782:デフォルトの名無しさん
22/04/20 22:16:03.52 WoVRayDr.net
>>769
forで文字列が一文字ずつ取得できるのは正当なPythonの仕様なので
文字列をforの対象にしたくないという考え方が間違っています

783:デフォルトの名無しさん
22/04/20 22:22:57.69 PgCzoxTm.net
>>769
if isinstance(obj, (Iterable, Sequence)) and not isinstance(obj, (str, bytes)):

784:デフォルトの名無しさん
22/04/20 23:04:40.03 wSEx/joO.net
>>769
まず基本的な型になれるといいよ
ミュータブル
イミュータブル
シーケンス

785:デフォルトの名無しさん
22/04/20 23:06:36.28 PionEwfV.net
a = soup.find_all
としたときにaをa0とかa1のように
あらかじめfor i in range(2):で生成される数値を入れたいのですが。
前もってb=a+str(i)=a0として
b= soup.
とできますか?

786:デフォルトの名無しさん
22/04/20 23:30:24.72 2isIGBT3.net
aやa0/a1は字面こそ似てるけどPythonからすると全く関連のない識別子で統一的に扱えなくなる
listとして単一の変数で扱うのが筋
a = [] # list
a.append(soup.find_all(…))
急がば回れでまず公式チュートリアルをやるべき

787:デフォルトの名無しさん
22/04/20 23:41:19.59 PionEwfV.net
ご教授有難うございます

788:デフォルトの名無しさん
22/04/20 23:42:38.34 LGsJlZ4G.net
subprocess.Popenで動かしたものの出力を拾いたいのですが文字化けしてしまいます
どうすれば文字化けが治りますか?
windows 10
python2.7で3.10の.pyを動かしています
2.7のほう(GIMP python コンソール)
p = subprocess.Popen(('C:\\Users\\aa\\AppData\\Local\\Programs\\Python\\Python310\\python.exe C:\\Users\\aa\\Desktop\\oyo.py'), stdout = subprocess.PIPE, shell=True)
line = p.stdout.readline()
line
3.10のoyo.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print("あいう")
結果
あいうが'\x82\xa0\x82\xa2\x82\xa4\r\n'になってでてきますorz

789:デフォルトの名無しさん
22/04/20 23:49:59.94 5YAs/nU7.net
もうPython2覚えてないや
line.decode('cp932')
かな?

790:デフォルトの名無しさん
22/04/20 23:53:10.20 CqlWpUmw.net
>>773
何のためにそんなことしたいの?
前にも似たようなこと書いてた人がいたけど
変数名を連番で生成してそれらに代入したくなる状況が想像できないので理由を説明してくれると助かる

791:デフォルトの名無しさん
22/04/20 23:59:08.90 2isIGBT3.net
>>778
> 前もってb=a+str(i)=a0として
こうメタプロ的に解決しようとかんがえたんだろ
なんでわからん

792:776
22/04/21 00:06:54.28 EXXirMvu.net
>>777
文字が増えるだけで普通の文字になってくれないです
line.decode('cp932')
u'\u3042\u3044\u3046\r\n'

793:デフォルトの名無しさん
22/04/21 00:31:19 68zG9eph.net
>>780
ちゃんと「あいう」とUnicode文字列で保持できてる
そのGIMP環境で日本語がprintできる前提で
>>> '日本語'.decode('cp932')
がエラーなしなら
>>> print u'\u3042\u3044\u3046\r\n'.encode('cp932')
でとおるはず
環境によりcp932はutf8他かもしれんが

794:デフォルトの名無しさん
22/04/21 00:38:42.33 Qeso+L0D.net
>>776
最後2行
line = p.stdout.readline().decode('cp932')
print line
で表示できるはず

795:776
22/04/21 00:53:13.48 EXXirMvu.net
>>781
>>782
GIMPコンソール上では
line.decode('cp932')で
u'\u3042\u3044\u3046\r\n'
とでてたんですが
メッセージボックスだしたら
gimp.message(line.decode('cp932'))
日本語表示されました。
よくわからないですがそういう文字の扱い?みたいです
おさわがせしました
ありがとうございます

796:776
22/04/21 01:54:42.76 EXXirMvu.net
もう一つ質問なんですが
stdoutで他の.pyで動かした出力が受け取れたんですが
他の.pyに入力を与えてその結果出力を受け取るにはどうしたらいいんでしょうか?
検索しても
p = subprocess.Popen(('C:\\Users\\aa\\AppData\\Local\\Programs\\Python\\Python310\\python.exe C:\\Users\\aa\\Desktop\\oyo.py'), stdin=subprocess.PIPE,stdout = subprocess.PIPE, shell=True)
みたいに
stdin=subprocess.PIPE
を追加するみたいなんですが、入力する変数はどこに書けばいいのか
入力を受け取る側の.pyではどうやって受け取るのか分からなかったです

797:デフォルトの名無しさん
22/04/21 02:05:23.23 Qeso+L0D.net
>>784
.communicate(input=変数)

798:746
22/04/21 06:31:01.36 EXXirMvu.net
>>785
ありがとうございます
入力を受け取る側の.pyではどうすればいいんですか?

799:デフォルトの名無しさん
22/04/21 09:46:00 v468I8x9.net
ターミナルから以下を入力すると問題なく実行できるのに、
ファイルcalendar.pyに保存して実行すると
TypeError: 'module' object is not callableになるのは何故でしょう?

import calendar
print(calendar.calendar(2022))

800:デフォルトの名無しさん
22/04/21 09:48:00 v468I8x9.net
すみません自己解決しました。
calendar.pyの名前が被ってるからのようですね。

801:746
22/04/21 17:49:56.13 EXXirMvu.net
自己解決です
受け取る側にinput()で出来ました

802:デフォルトの名無しさん
22/04/21 19:03:12.96 FRtLfLsM.net
import tkinter
でTtkが読まれないのは仕様だそうですが、いまいちしっくりこないんですが単なるインポートでコレが読み込まれるとか(Ttkのように)読み込まれないとかはどこで知ればいいのでしょうか?

803:デフォルトの名無しさん
22/04/21 19:17:14.76 gmJJNdw9.net
>>790
from tkinter
だとtkinter以外インポートしないから
from tkinter import *
のときってこと?
それなら tkinter.__all__ でわかる

804:デフォルトの名無しさん
22/04/21 19:20:14.88 gmJJNdw9.net
URLリンク(docs.python.org)
Ttkって拡張があるんだね
これは個々の事情なので知ってないとわからないけど
ここに書いてるし説明くらい読もうよしかいえん

805:デフォルトの名無しさん
22/04/21 20:19:47 YKw8btnC.net
import tkinter as tk
import tkinter.ttk as ttk
imporr tkinter.messagebox as tkmb
import tkinter.filedialog as tkfd
俺が普段使うセット

from tkinter import *
from tkinter import ttk
は推奨しない
一部のウィジェットはtk版のが使いやすかったりするから
オーバーライドされてほしくないのだ

806:776
22/04/22 01:33:52.51 llHCzfDa.net
>>776です
input()で入力を受け取ったpython3.10の方が文字化けしてしまって
自分なりにはいろいろencode,decode試したんですが
うまくいかなかなかったです
文字化けを直すにはどうしたらいいですか?
GIMPコンソール上の入力(python2.7)
import subprocess
input_text = 'あいう'
line=""
p = subprocess.Popen(('C:\\Users\\aa\\AppData\\Local\\Programs\\Python\\Python310\\python.exe C:\\Users\\aa\\Desktop\\ohayo.py'),stdin = subprocess.PIPE, stdout = subprocess.PIPE, shell=True)
line=p.communicate(input=input_text)[0]
print line
python3.10の.py
#!/usr/bin/env python
# coding: utf-8
from tkinter import messagebox
text = input()
messagebox.showinfo("moji",text)
↑このメッセージボックスの中身が
画数の多い漢字と記号に化けてしまいました
コピペできなかったので画像付けます
URLリンク(dotup.org)

807:デフォルトの名無しさん
22/04/22 02:34:21.05 I15ojW8g.net
>>794
line=p.communicate(input=input_text.encode('cp932'))[0].decode('cp932')

808:デフォルトの名無しさん
22/04/22 12:16:08.09 j0HvfQsZ.net
>>778
テーブルを美汁でとるとき一行づつdictしてconcatinationするときに使えないかと思い

809:デフォルトの名無しさん
22/04/22 13:23:31.05 sHpgXsI/.net
アナコンダかをインストールして混ぜるな危険のpipとコンダをやってしまい壊れた
pip一本化で問題ないですか?

810:デフォルトの名無しさん
22/04/22 13:38:07.44 EkSdB4ug.net
一本化で問題ない

811:デフォルトの名無しさん
22/04/22 14:13:32.13 sHpgXsI/.net
サンクス

812:デフォルトの名無しさん
22/04/22 14:37:59.91 53M5rCU+.net
クラスを書いているとき中身が肥大化して
__init__関数の引数が膨大な数になって
インスタンスを作るのが大変な状態になってしまったとき
リストでよく使うひな型をいくつか書いておいてそれを渡すという解決法を考えたのですが
妥当なやり方でしょうか?また他に良いやり方があればお教え願います

813:デフォルトの名無しさん
22/04/22 14:45:24.17 CAe1t8bi.net
>>800
デザインパターンでググる

814:デフォルトの名無しさん
22/04/22 16:00:19.34 3+eT3Tts.net
>>800
>クラスを書いているとき中身が肥大化して
>__init__関数の引数が膨大な数になって
インスタンスを作るのが大変な状態になってしまったとき
どんな状態?

815:デフォルトの名無しさん
22/04/22 16:08:00.83 EkSdB4ug.net
プロセス起動するためのクラス作りたいな。で最初は実行ファイルのexeパス指定だけのシンプルなclassだったけど
arg追加しよう、ワーキングフォルダ指定、起動時最小化オプション追加、管理者として実行オプション・・・
引数が膨大になってくってことだろ

816:デフォルトの名無しさん
22/04/22 16:15:58.67 p48HHJp5.net
>>79


817:6 なるほどわからん >>774の言うようにコレクションをコレクションのまま扱う感覚を身につけたほうがいいのかもしれない htmlテーブルをdictionaryにしたいならthの構成に合わせてlistやdictにする(もしくはpandasのread_html) https://www.w3schools.com/html/html_tables.aspのtable#customersなら header = [ th.text for th in table.select('tr:first-child > th')] result = [ {header[i]: td.text for i, td in enumerate(tr.select('td'))} for tr in table.select('tr')[1:] ] print(result[2]['Country’]) # Austria



818:デフォルトの名無しさん
22/04/22 17:12:11 DFy/+sOR.net
何でもやらせるほどsubprocessの極薄ラッパーになっていって
最終的にいらねえじゃんってなる

819:デフォルトの名無しさん
22/04/22 18:54:56.60 vYYyAoJX.net
1スレを読んでみようと思ったのですが一つ一つリンクをクリックして戻った結果途中で"rawを読み込めませんでした"と言われこのスレに戻されてしまいました。どなたかこのスレの1を読む方法教えて頂けませんか

820:デフォルトの名無しさん
22/04/22 19:13:49.15 CAe1t8bi.net
>>806
2ch → 5ch

821:デフォルトの名無しさん
22/04/22 19:48:10.24 vYYyAoJX.net
>>807
ありがとうございます!
5ちゃんねるの"くだすれpython"の現行版から過去のスレのリンクを辿ってみました
part34辺りで5chから2chのログに切り替わっているせいかリンクを読み込もうとしなくてロード出来ませんでした
スマホからだと読むことは出来ないと言うことでしょうか

822:デフォルトの名無しさん
22/04/22 20:17:22.51 a0+aRfgz.net
便所の落書き読む時間があるなら書籍の一冊でも読んだほうが有意義だぞ

823:デフォルトの名無しさん
22/04/22 20:24:41.56 h+Fap4CC.net
>>803
> ワーキングフォルダ指定、起動時最小化オプション追加、管理者として実行オプション・・・
そう言うのはプロパティとかでいいだろ
> 引数が膨大になってくってことだろ
毎回全部指定するつもりなのかよw

824:デフォルトの名無しさん
22/04/22 20:59:16.35 cNb4vicF.net
毎回全部指定したい(指定強制したい)ってことはあるからな

825:デフォルトの名無しさん
22/04/22 21:03:59.41 7tkDjHFj.net
>>811
ラッパー経由になるだけだから指定強制なんて意味ないでしょ

826:デフォルトの名無しさん
22/04/22 21:20:42.63 72MHsUfr.net
>>800はまだ>>800しか書いてなくて、後は>>803の憶測について議論してるんだよね?

827:746
22/04/22 21:33:54.80 llHCzfDa.net
>>795
ありがとうございます!
出来ました!!
エンコードとデコード両方しないと行けないのですね
助かります!!

828:デフォルトの名無しさん
22/04/23 18:41:33.50 yaJafia3.net
テキストファイルの先頭からあるワードを検索し
1回目に見つかったワードを特定のワードに置換
2回目に見つかったワードをまた別のワードに置換

という処理を実装したいです
自分の知識だと、テキストを一行ずつ読み込んでは
正規表現でワードをサーチしカウンタを加算し
カウンタ値に応じてreplaceするっていうコードしか浮かばないですが
何か他に効率的・定番的な書き方があれば教えてください

829:776
22/04/23 21:11:23.83 S27JpXaa.net
度々すみません。
>>794で教えてもらった以下の行を入れたのですが
line=p.communicate(input=input_text.encode('cp932'))[0].decode('cp932')
中国語(繁体語)をinputに入れたところ以下のエラーがでてしまいます
UnicodeEncodeError: 'cp932' codec can't encode character u'\u91d9' in position 0: illegal multibyte sequence
検索してみたところcp932に含まれない文字があった場合にでるみたいです
u'\u91d9'はこの字でした(釙)
URLリンク(0g0.org)
中国語(繁体語)をinputに送っていたので
以下を参考にエンコードをcp932ではなくてcp950にしてみたのですが文字化けしてしまします
URLリンク(docs.daemon.ac)
他にbig5やbig5hkscsも試してみましたが文字化けします
この文字化けはどうしたらちゃんと表示されますか?
こういった多言語を扱う場合どうしたら良いのでしょうか?
u'\u91d9'(釙)以外にもu'\ufe50'(﹐)などにも引っかかってしまします

830:デフォルトの名無しさん
22/04/23 21:38:30.92 LTun4BN3.net
>>815
そんな一般性もないような使い捨てのコードは効率よりわかりやすさが大事
文章そのままにコーディングしたらええがな

831:デフォルトの名無しさん
22/04/23 22:06:21.75 A38Z8Utb.net
>>815
1行ずつ読み込みだとキーワードの途中改行に対応できない気がするけどいいの?

832:デフォルトの名無しさん
22/04/23 22:33:39.38 7+1nJnMo.net
途中改行するキーワードなんて生まれてこのかた見たことない

833:デフォルトの名無しさん
22/04/23 22:48:08 dSfqqc1i.net
>>816
Windows の文字コードは、独特で誰も知らない。
たぶん、何百種類もあるでしょ

日本なら、CP932 だけに対応するけど、
全世界の何百種類とかに対応できない

そもそも、外人はCP932すら知らないし

CP何々とか、UTF-16 とか、Linux 用の全言語で処理できない。
Linuxは全言語、UTF-8 のみに統一されている

これ以外の特定の端末用言語、例えば、Windows PC 用言語などは、特殊

だから基本、システムで使ってはいけない。
システムはLinuxのみで、Windows PCは単なるクライアントとしてしか使えない

Ruby on Rails では辞書に定義することで、多言語化しているけど、
これはUTF-8だからできる

この文字はCP932、これはCP950 とか一々、何百種類に対応できない

834:デフォルトの名無しさん
22/04/23 22:49:34 Ac8uMNgs.net
置換だと検索文字として\n含むのはよくあるし
キーワードに改行なくてもワードラップがきちんとされてないテキストなんかだと改行コードに邪魔されてヒットしないこともよくある
そういうとこはやりたいことの条件しだいだからなんともだな

835:デフォルトの名無しさん
22/04/23 23:04:11.07 ll5AWkFj.net
>>815
re.subの引数に呼ばれるたびにカウントアップした文字列を返すreplacerを渡してやればいい

836:デフォルトの名無しさん
22/04/23 23:15:47 pT174lS4.net
>>820
もうlocale知らん奴がいるんだなぁ

837:デフォルトの名無しさん
22/04/23 23:29:24.04 OEg3OW8V.net
>>816
これでどうだろう
import subprocess, os
my_env = os.environ.copy()
my_env["PYTHONIOENCODING"] = "cp65001"
input_text = 'あいう釙'
line=""
p = subprocess.Popen(('C:\\Users\\aa\\AppData\\Local\\Programs\\Python\\Python310\\python.exe C:\\Users\\aa\\Desktop\\ohayo.py'),stdin = subprocess.PIPE, stdout = subprocess.PIPE, shell=True, env=my_env)
line=p.communicate(input=input_text)[0]
print line
後出し条件追加は控えてくれると助かる

838:デフォルトの名無しさん
22/04/24 00:03:00.76 XmcVNZmY.net
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
クソチョンはゲリ便をじゅるじゅると
うまそうに食うw

839:デフォルトの名無しさん
22/04/24 00:16:33.35 JO+3K+yc.net
>>824
my_env["PYTHONIOENCODING"] = "utf-8"
のほうがわかりやすいかな

840:デフォルトの名無しさん
22/04/24 00:25:04.32 lQs7d+0h.net
外部コマンド前提だから古典Unix的に
間にiconvを挟むのが適当

841:776
22/04/24 12:08:29.52 kM/BqeMC.net
>>824
ありがとうございます
こんな方法があるんですね
驚きました
まさか外国語も色々エンコードあるなんて思いもよらず
後出しになってすいませんでした
>>827
どこにiconvというのを入れればよいのですか?

842:デフォルトの名無しさん
22/04/24 12:48:07.19 PxrfmSzI.net
>>828
URLリンク(man.cx)(1)/ja
こういう外部コマンドがある。(ないなら導入する)
python310.exe UTF-8出力するscript.py | iconv -f utf8 -t cp932
でcp932で出力するコマンドと同等になる。前に置くと入力も変換できる。
わかるとおもうがパスやエンコーディングは適当に読み替えて

843:デフォルトの名無しさん
22/04/24 13:28:31 JO+3K+yc.net
多言語処理するなら、824の方法でいいよ
iconvなんか使ったらエラー処理面倒くさくなる
他には、バッチファイルでchcp 65001する方法や、utf-8のファイルで受け渡す方法もある

844:デフォルトの名無しさん
22/04/24 14:10:53.30 QXI/jpLW.net
いいわけないだろw
utf8決め打ちだけでいいなら苦労しない

845:デフォルトの名無しさん
22/04/24 14:36:36.75 JO+3K+yc.net
>>831
なら、794の処理を動く形でコード書いてよ
見て判断するよ

846:デフォルトの名無しさん
22/04/29 22:25:05.85 ir2De51z.net
Python関連から少し外れてしまうのですが、元々汎用系の技術者だったのですが、縁があってデータ分析の仕事に関わることになりました。
現在python3を手続き型の書き方でコード書いているのですが、オブジェクト思考に切り替えた方が良いタイミングやポイントありますか?
今のところ一人でpandasやpysparkを処理していて100行にも満たないくらいの小規模開発しています。
オブジェクト思考に憧れはあるのですが、まだ書いたことはありません。

847:デフォルトの名無しさん
22/04/29 22:35:36.96 5b8jykvI.net
( ^ω^)汎用って何が汎用なんですかお?

848:デフォルトの名無しさん
22/04/29 22:38:14.23 ir2De51z.net
>>834
具体的にはコボラーメインでした

849:デフォルトの名無しさん
22/04/29 22:41:18.84 GNyXlK50.net
>>833
切り替える必要はありません
オブジェクト指向は大規模開発を大人数で共有しながら進めるために
編み出された作法です
そんなプロジェクトにPythonは使われません

850:デフォルトの名無しさん
22/04/29 22:42:40.76 ufUUo1o1.net
今どきオブジェクト指向は…

851:デフォルトの名無しさん
22/04/29 22:55:21.47 ir2De51z.net
>>836
そうなのですね
可読性とか設計的にオブジェクト思考の方が優れているイメージがあり、汎用系出身のプログラマーとしては劣等感を感じています
>>837
最近の流行り=メインストリームは何でしょう?

852:デフォルトの名無しさん
22/04/29 22:59:31.83 NGFGt/bW.net
>>836
> オブジェクト指向は大規模開発を大人数で共有しながら進めるため
そんなことないだろw
継承とか具体的に使い始めるとたぶん
目からうろこだろ感動もんだろ鳥肌もんだろ汎用系からだと

853:デフォルトの名無しさん
22/04/29 23:40:25.60 Sf8HNHhp.net
疎結合進んでひとりでも大規模開発できるようになるし
小規模でもアタマ楽になるし学習コスト顧みても利点の方が多い

854:デフォルトの名無しさん
22/04/29 23:51:51.09 ir2De51z.net
>>840
仕事中は時間の誓約もあるので手続型でコード書いちゃって、プライベートでは作りたいものなくてオブジェクト指向の本読んでも分かったような分からないような感じで実践できていません
皆さんはオブジェクト指向はどうやってマスターしましたか?
デザインパターンの本を写経するのが一番なんですかね。。。

855:デフォルトの名無しさん
22/04/30 00:19:27.73 bO9itIdJ.net
>>838
よほどクラス設計をきちんとやっておかないと可読性はむしろ落ちます
自分で書いたクラスでも三日経てばわからなくなります
結局のところ手続型で上から下に一直線にゴリゴリ書く方が速いし手直しも楽です
ただしオブジェクト指向は作法ですから、チームが作法として採用している場合は致し方ありません
が、先に述べたようにPythonでチーム開発などすることはまずありませんからご安心を

856:デフォルトの名無しさん
22/04/30 00:49:48.45 46aR4GCy.net
データ分析を書き下しでやるなんて聞いたことない
どんな小規模よそれ

857:デフォルトの名無しさん
22/04/30 01:24:52.50 03xdZc7H.net
データ分析で100行に満たないとなると、オブジェクト指向じゃないと思うけどなあ.
レコード同士の制約がRDBMSで取り扱えない範囲の制約だったらオブジェクト指向にした方がいいけど、
大体RDBMS的アプローチで十分じゃない?
分析手法が固まった段階で業務にいれこむとなるとちゃんとオブジェクト指向にした方がいいと思うけど、分析の段階だとPOCでしょ

858:デフォルトの名無しさん
22/04/30 02:13:55.43 TTQ8Rhtz.net
典型的なオブジェクト指向は、Ruby on Rails
でも、最近の言語、Go, Rust, Elixir などは、オブジェクト指向ではない。
オブジェクト指向の弊害の方が目立ってきたため
Elixirは関数型

859:デフォルトの名無しさん
22/04/30 02:19:59.25 38aggrlO.net
頭の中で完結してるけど説明が下手なのか
書くうちに発散して纏まってないけどそのまま殴り書いたか
ようわからん文章やな

860:デフォルトの名無しさん
22/04/30 02:22:55.20 Zvv3yApT.net
ぶっちゃけSQLとパワークエリで事足りると思うんですが、会社がPythonメインでやるという方針なのでPython使ってます。pandasもpysparkもデータ分析用というより大量データの結合やデータ変換に使うことが多いです。
環境的には不要で自己満になるかもなのですが、今後のスキルアップのためにオブジェクト指向取り入れて開発したいなぁという願望があります。

861:デフォルトの名無しさん
22/04/30 02:25:25.49 MSWmTJKz.net
おまえら素人ばかりだな
オブジェクト指向で作るのは理由があるからだ
理由は自分で考えろ

862:デフォルトの名無しさん
22/04/30 02:26:46.14 Zvv3yApT.net
>>845
Elixeir初めて聞きました。新しい言語や関数型言語も出てきているのですね。。。

863:デフォルトの名無しさん
22/04/30 02:26:52.93 MSWmTJKz.net
pythonメインでやる方針にも理由がある
理由は自分で考えろ

864:デフォルトの名無しさん
22/04/30 02:27:36.14 MSWmTJKz.net
とにかくやれ
やらない理由はいくらでもあるから
とにかくやる気があるうちにやるんだ

865:デフォルトの名無しさん
22/04/30 02:34:17 MSWmTJKz.net
やってみて
わからなかったらいつでも質問しておいで

866:デフォルトの名無しさん
22/04/30 02:37:35 Zvv3yApT.net
ありがとうございます
とりあえず挑戦してみます

867:デフォルトの名無しさん
22/04/30 05:55:28.21 OR8SZm5l.net
>>835
COBOLに慣れてるならGnuCOBOLでも入れて色々遊んでみたらいいんじゃね?
COBOL2002からはオブジェクト指向をサポートしてる

868:デフォルトの名無しさん
22/04/30 06:14:48.85 Zvv3yApT.net
>>854
COBOLでもオブジェクト指向サポートしてるバージョンあるんですね!
時代の進歩に全然追い付けてないです

869:デフォルトの名無しさん
22/04/30 08:21:56.93 nLS5ACA1.net
妙だな…Pythonでチーム開発とか普通にあるけど

870:デフォルトの名無しさん
22/04/30 08:29:49.76 mj6Qj3Uj.net
>>856
日本だと少ないとはいえ、チーム開発も少しずつ増えてきてるよな
というか規模の大きな開発が増えてきたから
型ヒント周りの機能が強化されてきてるんだし

871:デフォルトの名無しさん
22/04/30 08:48:06.80 UlwKMlAZ.net
YouTubeやDropboxがPythonで書かれてるけど、1人で開発されたなんて考えてんのかね、>>842
URLリンク(tech-camp.in)
DropboxのRian Hunter氏は「PyCon APAC 2013」で、Dropboxは全てPythonで開発していると述べています。コード量はサーバとクライアントのコードを全て合わせて93万7707行。

872:デフォルトの名無しさん
22/04/30 08:55:29.45 0pJ/3NeQ.net
一般的にpythonがーじゃなくて、そいつが職場で開発してるって条件下では大規模開発はありえないって話だろ

873:デフォルトの名無しさん
22/04/30 09:46:12.98 2kJdiTOr.net
>>842の気持ちはわかる
たぶんバッチ処理主体でPythonを使ってる現場なんだろうけど、バッチ処理しか書けない奴って本当に一直線のコードしか書けないのよ
最近は業務系のそういう連中がPythonに進出してきていて、なかなか酷い状況だよ

874:デフォルトの名無しさん
22/04/30 12:04:18.69 asMkUOFh.net
一般常識として身につけておいたほうかがいいとは思うがpandasなんかを使ったデータ分析用途の場合はオブジェクト指向は極力避けて関数とデータを意識的に分けたほうが可読性もメンテナンス性も高いよ
SeriesやDataframeのようにデータとメソッドが不可分な独自の抽象データ構造をライブラリとして提供する場合にはオブジェクト指向を使ったほうがいい

875:デフォルトの名無しさん
22/04/30 14:35:51 wjVEP1qN.net
Pythonはオブジェクト指向を学ぶのには向いてないよな

876:デフォルトの名無しさん
22/04/30 15:03:49.44 Uatckw9k.net
>>860
その通りです
私はバッチ処理専門で開発していますが
関数すら極力書かないようにしています
関数を作ると処理の流れが行ったり来たりして読みづらいからです
Cで言うとmain関数の中に全ての処理があるように書きます

877:デフォルトの名無しさん
22/04/30 15:17:02.34 XZrd/bpX.net
>>863
関数の役割分担や命名をちゃんとしてないからでは?
関数はそれ自身で責任を追って実装・検証するもの
使う側は関数内部まで気にしなくても済むようにならないと意味ない
なんで便宜上行ったり来たりは発生しない
外部ライブラリやビルトインの関数の実装までふつう追わないでしょ

878:デフォルトの名無しさん
22/04/30 16:40:05.60 wcqGltd4.net
>関数すら極力書かないようにしています
さすがにそれはアカン
考えを改めた方がいい

879:デフォルトの名無しさん
22/04/30 16:45:43.84 WuQ7ClRo.net
個別の関数をmain関数と同居させる場合、
関数の配置の順序とかあるの?
JSで関数を最後にまとめたりしているものがあったけど、
Pythonじゃ見かけないような

880:デフォルトの名無しさん
22/04/30 16:56:56.93 IElPr3np.net
>>863
コボラーですね分かります。
合言葉はIDENTIFICATION DIVISION。

881:デフォルトの名無しさん
22/04/30 17:15:45.06 XOEt5cKu.net
>>866
JSはスコープごとにスクリプトを2回読むイメージで実行されるので
関数や変数の宣言は巻き上げられて先頭で宣言されてるのと同じになる
Pythonにはそういう機能はないので1ファイルならmainの実行は最後にするのが普通
def main():
 hoge()
def hoge():
 print(‘hoge’)
main()

882:デフォルトの名無しさん
22/04/30 17:16:15.33 Uatckw9k.net
>>866
他の言語は知りませんが、Pythonは関数を呼ぶ処理より前に
関数定義がないといけないんですよ
だから関数のあるスクリプトファイルを開くと、まず関数の羅列が
ズラズラと目に入るわけでして、文書を上から下に読んでいくという
人間の自然な動作に合わないのです

883:デフォルトの名無しさん
22/04/30 17:39:11.77 PWl3mLPj.net
コボラーってやっぱアタオカだな

884:デフォルトの名無しさん
22/04/30 18:04:44.96 64v4nlhT.net
>>869
def main(): sukinakansuu()

def sukinakansuu(): pass
if __name__ == '__main__': main()
みたいに書くよ

885:デフォルトの名無しさん
22/04/30 18:07:46.92 OR8SZm5l.net
>>866
Python の def 文は「実行文」だから定義される関数を呼び出す前に実行しないといけないのでJSみたいにするとエラーになる
ちなみに実行文だから
if xxx:
def foo:
print('foo1')
else:
def foo:
print('foo2')
みたいにして実行時に関数の定義を変えることもできる

886:デフォルトの名無しさん
22/04/30 18:49:26 oMuBjy8I.net
実行文??

887:デフォルトの名無しさん
22/04/30 19:22:27.31 XZrd/bpX.net
URLリンク(docs.python.org)
式じゃないし識別子でもない単にそこで実行される文

888:デフォルトの名無しさん
22/04/30 21:51:14.91 yu/EzU82.net
>>872
それ「実行文だから」とか全然理由になってない
インタプリタ型の言語ならJSでもRubyでもPHPでも全く同じことできる
実行文ではないC言語でも定義より先に呼び出したらエラーになる

889:デフォルトの名無しさん
22/04/30 22:12:01.94 o6QgUZIK.net
>>872
┏━━━━━━┓
┃The image you are       .┃
┃requesting does not exist   .┃
┃or is no longer available.   .┃
┃                        ┃
┃imgur.com             ┃
┗━━━━━━┛

890:デフォルトの名無しさん
22/04/30 22:22:35.44 64v4nlhT.net
seleniumでaタグをclickしてswitch_to.windows(driver.window_handles[1])しても<html><head></head><body></body></html>っていうページにアクセスするようになる
なんで無内容に?どうすればいいんだろう
そもそもGUI上はクリックしてないんだけどなんだこれ

891:デフォルトの名無しさん
22/04/30 22:23:14.79 OR8SZm5l.net
>>875
> インタプリタ型の言語ならJSでもRubyでもPHPでも全く同じことできる
やれるね、だから何?
> 実行文ではないC言語でも定義より先に呼び出したらエラーになる
コンパイル言語で定義より先に呼び出し?
実行順序とソース上の順序を混同してるだろw

892:デフォルトの名無しさん
22/04/30 22:59:55.25 64v4nlhT.net
>>877
解決
クリックしたあと2秒sleepさせたら出来た
読み込みに時間が掛かるんだな

893:デフォルトの名無しさん
22/04/30 23:11:39.76 484odO/R.net
>>878
だから何じゃねーよww
ダメだこいつw

894:デフォルトの名無しさん
22/05/01 02:13:14.49 b95w4aAB.net
>>875
C言語の場合、宣言すれば定義は後回しでOK。

895:デフォルトの名無しさん
22/05/01 05:53:28 Rd1MW222.net
>>880
ダメなのはお前の頭だろw
他の言語なんて関係ないし

896:デフォルトの名無しさん
22/05/01 08:06:33.67 JzdAzqq0.net
URLリンク(i.imgur.com)

897:デフォルトの名無しさん
22/05/01 09:40:22.97 0ggTu6P0.net
実行文って、コンパイル型言語で宣言文と区別する意味の用語だから、Pythonでは、完全にナンセンス
「実行文だから」は何の意味も持たない
実行文でない文は、逆にあるのか?

898:デフォルトの名無しさん
22/05/01 10:00:01.37 aj8iUgGb.net
コンパイル言語?
JSにも宣言文はあるんだが

899:デフォルトの名無しさん
22/05/01 10:06:43.73 KjQtFKQ9.net
インタプリタだって全部の行を一行ずつ実行しながら解釈しているとは限らないんだから区別はあっておかしくない。

900:デフォルトの名無しさん
22/05/01 10:39:20 c1q3P+1N.net
宣言っていまいち意味わからんのだけど。
defは今の名前空間に新たにオブジェクト(function/callable)を作成するって捉える方がしっくりする。
だから、名前()で呼び出しするためには、その前に作成が終わってなきゃダメよね、ってなる。
って考えると、Pythonは上から下に順番に実行しかしていない、ってわかる。

901:デフォルトの名無しさん
22/05/01 11:07:07.83 IDzy7BiL.net
関数定義をまとめた関数をスクリプト末尾に書いて
それをスクリプト先頭で呼ぶようにすれば…と思ったけどダメですね
ズラズラ並んだ関数定義を見たくない場合、定義部分を別スクリプトにして
それをimportすればいいのかな?

902:デフォルトの名無しさん
22/05/01 11:28:22.49 UqOJOPuh.net
868のやり方じゃ駄目なんけ?main()の呼び出しを最後に書く以外は関数の並び順は自由だし、関数名がmainなら最初に実行されるだろうことは暗に容易に伝わる。
自分も呼び出すほうを上、呼び出されるほうを下に書くほうが読みやすいと感じるから常にそうしてるよ

903:デフォルトの名無しさん
22/05/01 11:54:47.68 IDzy7BiL.net
>>889
自分はメイン処理をトップレベルに書く派なので
残念ながらこの手法は使えません
しかし知識として知りたくはあります
>>868ってmain()より下にあるhoge()をmain()から呼べるってことですよね
それは何故でしょうか

904:デフォルトの名無しさん
22/05/01 12:26:54.53 Dd8WxxXv.net
>>890
> 868ってmain()より下にあるhoge()をmain()から呼べるってことですよね
> それは何故でしょうか
main()が(定義される時じゃなくて)実行される時はdef hoge()も実行済みだから

905:デフォルトの名無しさん
22/05/01 12:29:09.32 UqOJOPuh.net
そのこだわりはよくわからんな…
デメリットしか思いつかん

906:デフォルトの名無しさん
22/05/01 12:46:49.10 JzdAzqq0.net
相互参照している場合とかどうするんでしょうね?

907:デフォルトの名無しさん
22/05/01 12:52:31.00 Yd4A+jrH.net
>>885
>>872で「実行文だから実行時に関数定義をかえることができる」と書いてるのは嘘だったってことかな?

908:デフォルトの名無しさん
22/05/01 13:24:18.52 Rd1MW222.net
>>893
実行までに各々定義すればいいだけだからなんの問題もないだろ

909:デフォルトの名無しさん
22/05/01 13:25:01.76 Rd1MW222.net
>>894
Pythonの話とJSの話の区別もつかない無能乙

910:デフォルトの名無しさん
22/05/01 13:46:20.12 qrKdrkjM.net
どうでもいい話になってきてるような
スレタイにふさわしいと言えばそうだが

911:デフォルトの名無しさん
22/05/01 14:07:59 b95w4aAB.net
スレタイ通り下らない話で盛り上がってて実に素晴らしい。

912:デフォルトの名無しさん
22/05/01 14:08:54 QvrU5Mi0.net
エントリポイントのエの字も出ない

913:デフォルトの名無しさん
22/05/01 14:18:30 Gwm1B3AE.net
>>891
実行というからおかしくなる
関数のシグニチャを評価するタイミングと
関数のボディを評価するタイミングの違い

前者が他言語でいう宣言文の役割
Cのプロトタイプ宣言とかと同じ
Pythonでも宣言として捉えたほうが分かりやすいよ

914:デフォルトの名無しさん
22/05/01 14:20:32.48 IDzy7BiL.net
>>891
うーんよくわかりません
なぜ上にある関数から下にある関数を呼べるのか
私の脳はここまでです
>>892
メリットが二つあります
・スクリプトの先頭から実行が始まるので流れを追いやすい
・メイン処理の字下げが一段少なく済む

915:デフォルトの名無しさん
22/05/01 14:40:33.88 vJsN8meg.net
>>901
> 先頭から実行が始まる
先頭に書いてあるのがmain関数なら上から読み下せるのは同じじゃね?

916:デフォルトの名無しさん
22/05/01 14:53:14.40 KjQtFKQ9.net
うちはスクリプトの末尾にこの2行、ってのが定番たわ。
if __name__ == '__main__':
main()

917:デフォルトの名無しさん
22/05/01 15:06:46.08 JzdAzqq0.net
>>895
URLリンク(i.imgur.com)

918:デフォルトの名無しさん
22/05/01 15:10:06.70 Rd1MW222.net
>>900
だからそんな思考回路だと
if xxx:
def foo:
print('foo1')
else:
def foo:
print('foo2')
みたいなコード見たらなんで宣言2個あってもいいんだよ?ってなるだろ

919:デフォルトの名無しさん
22/05/01 15:11:46.01 IDzy7BiL.net
>>902 main関数が処理の始まりかどうかは結局下を見ないと確定しないので… ならばトップレベルにメイン処理を書く方が安心確実と思う次第です



921:デフォルトの名無しさん
22/05/01 15:15:47.63 4M5GqABF.net
def main(): hoge()
def hoge(): print(‘hoge’)
main()
Pythonの評価順は基本的に上から下に一行ずつ
1行目ではdef main():までの関数シグニチャのみ評価してボディは評価されない(それがdefの役目)
2行目も同じようにdef hoge():までの関数シグニチャのみ評価
3行目の関数呼び出し時にmain関数のボディが評価される
そのタイミングではhoge関数はシグニチャが評価され関数として宣言済みなのでhogeを呼び出せる

922:デフォルトの名無しさん
22/05/01 15:20:45.71 Rd1MW222.net
>>901
Pythonインタープリターの気持ちになって考えればわかると思うよ
1: def main():
2:  hoge()
3: def hoge():
4:  print(‘hoge’)
5: main()
1を実行する時は2の内容をmainで登録する(この時点では2自体は実行されない)
3も同様に4の内容をhogeで登録する
5のmainの呼び出しで2が実行されて4が呼ばれるので実行順は1→3→5→2→4のようになる

923:デフォルトの名無しさん
22/05/01 15:22:24.87 Rd1MW222.net
>>906
そう思うのは自由だけどPythonでは無理だから諦めるか他の言語にするしかない

924:デフォルトの名無しさん
22/05/01 15:22:30.22 F/hLZDCn.net
>>905
宣言が2個あったところで何が問題なの?
2個あったらエラーにするルールのある言語もあるけどPythonにそんなルールない

925:デフォルトの名無しさん
22/05/01 15:30:33.22 vJsN8meg.net
>>906
確かにそのとおりだけど、あんまり他人を疑いすぎると禿げちゃうよ

926:デフォルトの名無しさん
22/05/01 15:36:27.81 M2LDeL9g.net
これからはクラス定義もクラスメソッドも関数もごちゃごちゃにして途中でjson入れたり意味なく連想配列作ったりいきなりタプルにしたり判読し辛いコード書くことに決めた
初心者が初心者になる前に躓いて読めなくなるようにしていこう

927:デフォルトの名無しさん
22/05/01 15:37:45.97 M2LDeL9g.net
オーバーライドしまくってやる

928:デフォルトの名無しさん
22/05/01 15:38:22.08 M2LDeL9g.net
意味なく戻り値にクラスメソッド使ってやる

929:デフォルトの名無しさん
22/05/01 15:51:18.35 Rd1MW222.net
>>910
エラーにしない言語って何?

930:デフォルトの名無しさん
22/05/01 15:55:09.23 zrtkQxP2.net
javascriptは同じ名前の関数が並んでてもエラーにならないな。後ろが使われる

931:デフォルトの名無しさん
22/05/01 16:00:48.30 DfY2Iokg.net
グローバル変数・定数の定義とか、
場合分けしてモジュール等をインポートするときとか、
これらをサブ関数の中か、その前にグローバルで書くべきかいつも悩むわ
モジュール等のインポート
グローバル変数・定数の定義
 場合分けによるモジュール等のインポート(環境依存)
サブ関数の定義
 場合分けによるモジュール等のインポート(環境非依存)
メイン関数の定義
メイン関数の実行(>>903
これ、問題ある?

932:917
22/05/01 16:03:56.84 DfY2Iokg.net
グローバル変数・定数の定義なんかも
サブ関数としてまとめて定義して、メイン関数で呼び出してグローバル宣言したほうがいいのかな?

933:デフォルトの名無しさん
22/05/01 16:08:44 Rd1MW222.net
>>916
まあjavascriptはvarで同じ変数使ってもエラーにならないような言語だしね
さすがに最近はletで重複させるとエラーになるみたいだけど

934:デフォルトの名無しさん
22/05/01 16:30:44 6txgexSj.net
機能別にモジュール作って、関数詰め込んで使ってるんだが、合ってる?

935:デフォルトの名無しさん
22/05/01 18:30:38 tQAUcym9.net
一連の流れ見てもよくわからんのだけど、質問は何なの?

936:デフォルトの名無しさん
22/05/01 18:43:16 CmrphzhC.net
自分の思い通りにソース書きたいけど仕様上書けない、どうしたらいいのって愚痴

937:デフォルトの名無しさん
22/05/01 19:08:52 tQAUcym9.net
もう質問じゃないよね。だったら区切ってもいいでしょ

938:デフォルトの名無しさん
22/05/01 19:09:28 Jd2/Razo.net
わからないです

939:デフォルトの名無しさん
22/05/01 21:52:03.79 haToe2zO.net
>>917
普通にモジュール分割していいなら
メイン関数は定義せず__main__.pyのトップレベルに書く
定数は定数用のモジュールを用意してimport

940:デフォルトの名無しさん
22/05/01 22:17:08.56 b95w4aAB.net
「オレは気に入らない」って人は生きるの辛そう。
柔軟性が無いと常に何かと戦うことになる。

941:デフォルトの名無しさん
22/05/01 23:58:05.46 Hq8ES+K0.net
こだわりなくてもいいとこなら別にそれでいいんじゃね
こだわらなきゃいけない事なんていくらでもあるだろう

942:デフォルトの名無しさん
22/05/02 00:19:51 zZIONtog.net
ノットフォーミー全盛期だよな、現代

943:デフォルトの名無しさん
22/05/02 13:04:57.99 ZthOcqCz.net
とにかく在日は悪いことしかしない
在日は皆殺しにすべき!

944:デフォルトの名無しさん
22/05/02 21:11:16.99 FWJ3qdnv.net
俺も最初の頃はこだわり持って色々なこと試してたけど結局シンプルイズベストだと気づいてさっさと書くようにしたら効率上がったなぁ
まぁある程度新しいことにも挑戦するべきだけどさ
でもセイウチ演算子の使い所がよく分からないよね

945:デフォルトの名無しさん
22/05/03 06:15:08.74 mgZ8H7hi.net
> でもセイウチ演算子の使い所がよく分からないよね
C言語やってたら余裕
with open("sample.txt") as f:
while text := f.readline():
print(text)

946:デフォルトの名無しさん
22/05/03 06:20:24.93 ZdlL7fiJ.net
それfor文より何がいいの?
というかファイルのデータなくなったらエラーでないの?
while文の終了条件がわからない

947:デフォルトの名無しさん
22/05/03 06:51:18.93 mgZ8H7hi.net
for 文で書いてみてよ

948:デフォルトの名無しさん
22/05/03 07:44:11.89 GYbp8Bpg.net
セイウチ演算子の使い所は、PEPのExapmlesを見れば分かるのでは
URLリンク(peps.python.org)

949:デフォルトの名無しさん
22/05/03 10:25:34 lrUYCsXU.net
>>933
for line in f: print(line)
ファイルオブジェクトはiterableで行読み込みする
てかふつうこう書かん?

>>932
URLリンク(docs.python.org)
ファイル終端で空文字列(=偽)が返って終了

950:デフォルトの名無しさん
22/05/03 16:37:55.33 zAUrPbJb.net
0.1*3==0.3がFalseになるのに、0.1*2==0.2がTrueになるのはなぜですか?

951:デフォルトの名無しさん
22/05/03 16:54:49.32 zAUrPbJb.net
解決しました。忘れてください

952:デフォルトの名無しさん
22/05/03 18:09:38.71 5IHsdKXO.net
>>937
ちなみに何故です?

953:デフォルトの名無しさん
22/05/03 19:47:01.45 6X7U05Nz.net
計算誤差でしょ

954:デフォルトの名無しさん
22/05/03 20:19:38.25 zAUrPbJb.net
>>938
二進数だから
>>939
そうなんだけど、0.2はその誤差が何で出ないのかなってわかんなくて聞いたけど、書いてすぐわかっちゃった


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch