Pythonのお勉強 Part74

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0b4a-lz98)
垢版 |
2024/09/21(土) 10:14:02.15ID:ZHy4g+PL0
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

※前スレ
Pythonのお勉強 Part73
https://mevius.5ch.net/test/read.cgi/tech/1717631290/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2024/09/21(土) 10:14:21.46ID:ZHy4g+PL0
・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
エラー文(勝手に省略orスクショうp等の横着禁止)と
おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。
2024/09/21(土) 10:14:40.35ID:ZHy4g+PL0
★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇Pythonドキュメント https://docs.python.org/ja/3/
◇まとめwiki ttp://python.rdy.jp/
2024/09/21(土) 10:15:46.91ID:ZHy4g+PL0
●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その60
https://mevius.5ch.net/test/read.cgi/tech/1725188284/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
2024/09/21(土) 10:16:58.18ID:ZHy4g+PL0
1がNGなるので分けたよ
6デフォルトの名無しさん (ワッチョイ 6308-4vSm)
垢版 |
2024/09/22(日) 19:10:31.46ID:OW9nCJH10
PyCon運営がPFN知らないは草
2024/09/22(日) 20:35:24.55ID:GWD12XrO0
Pythonでデータベース扱うなら、SQLite3が楽そうなんだけど
参考書とか探しても意外とないのね
SQLite学んでも、Pythonからの操作だと色々勝手が違うっぽいし、丁寧に解説してるところないか
8デフォルトの名無しさん (ワッチョイ 725c-jXms)
垢版 |
2024/09/22(日) 20:49:46.22ID:tU1JSeRu0
公式はよ?
9デフォルトの名無しさん (アウアウエー Saaa-rNKn)
垢版 |
2024/09/22(日) 22:22:02.95ID:e8rvHKs3a
>>7
簡単すぎるから不要なんよ
2024/09/24(火) 13:39:51.45ID:ktM6VWDF0
>>9
まあSQLを知ってたら、ただ接続するだけだもんな
2024/09/27(金) 14:57:42.16ID:lmMFo9JI0
ジェネレータのsend()ってどういう時に使うんだろう
2024/09/29(日) 09:08:42.58ID:dpItLQ7f0
Pythonの勉強始めたばかりで3.12だとjapaniz_matplotlibが使えないらしいどうするPython2年生使っている俺
2024/09/29(日) 10:53:32.97ID:IfOUm3IP0
>>12
選択肢
1. 3.11へダウングレード
2. pip install setuptools
3. japanize-matplotlibの代わりにmatplotlib_fontjaを使う
2024/09/29(日) 11:12:31.16ID:JxQ2ZLrB0
いつのまにか更新されなくなっていたのか…
matplotlib_fontjaありがとう
2024/09/29(日) 12:09:04.14ID:PTSFLh1b0
フォントを設定するだけのことでよくわからんライブラリに依存させるのがいいことなのかと思ってしまうな
2024/09/29(日) 17:28:15.27ID:gYCMQfko0
seleniumでサイト内の文字を検索して、
文字が存在する場合、存在しない場合に分けて動作させようと思っています
サイトに表示される文字列の一部が変化するため、完全一致では判定ができません

◯◯という文字を含む文字列がある場合
ない場合
というコードはどう書けばよいでしょうか?
よく分からないまま以下を書きましたがもちろん検索は失敗しました

try:
 driver.find_element(By.XPATH, "//*[text=あいうえお]")
 print("ありました")
except:
 print("ありませんでした")
2024/09/29(日) 19:12:48.23ID:3XpHNNRd0
text in driver.page_source
2024/09/29(日) 23:10:42.32ID:y18OCo2k0
>>16
XPathに慣れてるのでなければ初心者はCSS Selector一択
element.textがJavaScriptのinnerText相当

text = driver.find_element(By.CSS_SELECTOR, ‘body’).text
if ◯◯ in text:
 print("ありました")
else:
 print("ありませんでした)
2024/09/30(月) 03:16:20.95ID:LdpNEqiv0
今さらだが、
for elseってあるんだな…

よく使うの?
2024/09/30(月) 08:26:32.91ID:CmdH7+bD0
結構使う
else: # breakしなかった場合
と毎回コメント付けてるけど

便利なんだけど名前が悪い
2024/09/30(月) 11:05:06.08ID:rGpxgfzi0
>>19
使わない

https://itest.5ch.net/mevius/test/read.cgi/tech/1689241721/451
の451~482あたりを見るといい
2024/09/30(月) 12:04:50.33ID:CmdH7+bD0
elseを使わずに同じことをしようとすると、フラグを追加して、breakする時にフラグをセットすることになる
実際そういうコードもよくある
elseはbreakが複数箇所あった場合の面倒さ、フラグの名前を考える手間を省いてくれる

effective pythonではなんか変な例を持ち出して違う解決方法を示すだけで、
普通にフラグを使うコードもあることを無視している
2024/09/30(月) 12:23:30.25ID:7i6IqdaJr
>>18
ありがとうございます!無事できました!
2024/09/30(月) 12:54:38.78ID:6iqOAEp20
>>22
for-elseの代わりにフラグ使う必要とかないでしょ
フラグ前提で考える人がfor-elseを使いたがるということなのか
2024/09/30(月) 13:03:56.81ID:CmdH7+bD0
例えばurlのリストに対してアクセスして、条件に合えばクリックして終了
クリックしなかったらメッセージを表示

フラグもelseも使わない実装は?
2024/09/30(月) 13:14:13.83ID:9iSCXpur0
初心者が今からPythonでデスクトップアプリ作りたい場合、GUIライブラリは何がいい?
2024/09/30(月) 13:30:33.16ID:CmdH7+bD0
with (
  open('file1.txt', 'w') as f1,
  open('file2.txt', 'w') as f2,
):
  print('あああ', file=f1)
  print('あああ', file=f2)

こんなことできたんだな
メインの出力とログと2種類要る時とか、仕方ないからネストさせてた
2024/09/30(月) 15:56:07.94ID:LdpNEqiv0
>>21
だよな

PythonでAIを作ったりしたが、for elseなんて見たことないな…
29デフォルトの名無しさん (ワッチョイ b33c-Ue/R)
垢版 |
2024/09/30(月) 18:03:23.78ID:Ivu6aBvf0
>>26
pysimpleguiが楽に色々作れるかな
商業利用が有料化されてインストールに少し手間がかかるようになったけど、それを許容できるならかなりオススメ

バージョン5以降は年1回無料のライセンスを取得する必要がある
それかライセンス認証が要らない4.70.1を入れる
30 警備員[Lv.30]:0.02830640 (ワッチョイ c310-D2eP)
垢版 |
2024/09/30(月) 18:07:32.20ID:D4YV+jMH0
>>26
標準で使えるtkinterじゃあかんの?
31デフォルトの名無しさん (ワッチョイ b305-/XLF)
垢版 |
2024/09/30(月) 18:48:50.45ID:kqBmzRMr0
ログハンドリングはforの上でするべきなのだ
2024/09/30(月) 20:27:11.71ID:mKhWOETT0
>>26
ファイルD&Dできないのが欠点だけど
fletがなかなかいい
2024/09/30(月) 20:32:14.10ID:9iSCXpur0
>>29-32
見事に全員違くて草
ぐぐってみた感じでも標準のtkinterか初心者でも使いやすいpysimpleguiがいいっぽいね
この二つで調べながらやってみる!あんがと
34 警備員[Lv.31]:0.02840106 (ワッチョイ c310-D2eP)
垢版 |
2024/09/30(月) 20:37:19.54ID:D4YV+jMH0
なんでもかんでもとりあえずChatGPTに聞いてみるのが一番いいよ。
2024/09/30(月) 20:37:34.93ID:CmdH7+bD0
結局GUIがやりたいならwebアプリが正解
いろんな人がそれぞれにGUI用の部品一式を提供してるけど、
一番馴染みがあるのがブラウザ
頑張ればゲームだって作れる
36デフォルトの名無しさん (ワッチョイ 2303-D2eP)
垢版 |
2024/09/30(月) 20:59:26.32ID:XGioOSpm0
for else基本使うことないけど、今までに2,3回これでいいかみたいな事があった気がする
具体的にどういうケースだったか忘れた

>>35
WebUIはゴールデンハンマー云々って言ってる人がいた
一理あるって思ってPyside使い始めてるけど、プログラミングやり始めでこれ使えって言われたら挫折してたかもしれない
GUI難しい
2024/10/01(火) 10:29:59.58ID:7ulB1lco0
>>25
普通にearly returnやyieldするだけ
2024/10/01(火) 10:40:45.87ID:7ulB1lco0
for-elseは命名の問題以外に
条件に合致する対象を見つけてくるという探索処理と
探索結果に対する処理とが不必要に密結合するという問題がある

これがなければ命名は我慢して使ってもいいと思えなくもない
2024/10/01(火) 11:59:53.46ID:CfRMfbr90
>>25の例を対象のurlを返すように関数化して処理を分離しようにも、
もうアクセスしちゃってるから続きでクリックするしかないんだよな

early returnが使いたいから、というだけの理由で粒度やスコープを無視して関数化しちゃうのもちょっと
2024/10/01(火) 17:31:02.48ID:sFQyIfLy0
>>39
>もうアクセスしちゃってるから続きでクリックするしかないんだよな
別にそんなことないでしょ
下の各行がそれぞれ別の関数に分かれたところで
同じdriver同じelementに同じ順番でアクセスしてればいいだけ

driver.get(url)
element = driver.find_element(…)
element.click()

逆にそれができないようなら必要な抽象化もできないことになる
例えばログインしちゃってるから続きでクリックするしかないとなったら
login関数という形で抽象化できない
41デフォルトの名無しさん (ワッチョイ 8f9a-Kyt2)
垢版 |
2024/10/01(火) 21:20:21.01ID:w4EeoDoz0
ガチ初心者の俺は
まず最初に何作ったら
勉強になるの?
2024/10/01(火) 23:53:16.60ID:CfRMfbr90
>>40
見つかった場合はclickすべきelementを返す
みたいな関数になるんだろう

不自然すぎる
やってやれないことはないみたいな強弁としか

大半のケースではfor elseの使い所は無いけど、
たまにばっちりはまるケースがある
頻度は低いので、使う時はコメント必須
2024/10/02(水) 12:51:21.76ID:VhOKxDCS0
3.13来週か
2024/10/02(水) 13:17:47.79ID:Y5PwfM4H0
>>13
google claboで3が使えないから日本語は無しで進めたw
ありがとう
2024/10/02(水) 18:09:10.91ID:4jHsmsQb0
re.DOTALLはインラインフラグでは(?s)だけど、sは何の略だろう
2024/10/02(水) 18:20:50.77ID:g2e/T20O0
singleline
2024/10/02(水) 18:32:37.11ID:4jHsmsQb0
なるほど
MULTILINEと対応してないな
perlでも/sと/mは結局どっちがどっちだか覚えられなかった
必ず逆になるんだよな
2024/10/03(木) 16:51:19.28ID:LhmpW7CX0
いまさVScodeでPythonを学んでいるんだけど
Pythonにあったテーマカラーで何かオススメない?
いまOne Dark Proっていうテーマにしてるんだけど、文字列はオレンジの方がいいかなって思ってきた
2024/10/03(木) 17:04:58.12ID:SXCr8u+C0
変更したいと思ったことすらない
50デフォルトの名無しさん (オッペケ Sr47-/XLF)
垢版 |
2024/10/03(木) 18:36:30.78ID:SO+gfZGnr
デフォルトなら文字列オレンジじゃね?
51デフォルトの名無しさん (ワッチョイ 7f90-jPv4)
垢版 |
2024/10/04(金) 00:56:50.57ID:3S+V9Rl60
>>48
VSCodeは融通が利かない
それに色分けは自分のためにならない

色情報はコードと何の関係もないので、色分けに慣れていると色分けをしていないコードが読めなくなる
2024/10/04(金) 01:05:39.06ID:Ls4Fx/rv0
>>51
で、
何がいいって話?
2024/10/04(金) 02:07:40.34ID:fj4w0BBZ0
色分けされてないコードを読む
そんな状況ってあるっけ・・?
白黒プリントアウトされてるとか?
2024/10/04(金) 02:21:36.87ID:7yCtL1J1x
あえて色分けなしにする
って訓練にはならないと思うけどね

もし訓練になるって言うなら
(慣れていない)別の色分けコードに遭遇したときに対しても
同じように読めなくならないと説明がつかないけど
そんなことないし

なので色は何でも良いんじゃない
おれは基本デフォ
ネットで調べるときも容赦なくデフォで表示されるし

初学者にとって
プログラミング向きのタイピング速度(コーディング速度)
これが一番重要だと個人的に思う

命名やコーディングにかかるチリツモ時間が
初心者にとっては妨げになるので
予測変換などもガンガン使っていった方がいい
55デフォルトの名無しさん (ワッチョイ 2384-D2eP)
垢版 |
2024/10/04(金) 09:53:42.06ID:8exysTNA0
シンタックスハイライトの後は自動インデント、自動補完の話が続くんだろ
chatgptにダーク系のおすすめ聞いてきたから好きなの鰓べ
Dracula, Monokai, Solarized Dark, One Dark Pro, Gruvbox Dark, Nord
2024/10/04(金) 12:29:15.26ID:f5VlUYAG0
>ハイパーモダンPython
ってそんなにすごい知識が身につくの?
57デフォルトの名無しさん (ワッチョイ 6f09-/XLF)
垢版 |
2024/10/04(金) 12:47:22.85ID:lUav+mwb0
>>51
寧ろvscodeは個別に配色の設定することも可能だから融通は利く
58デフォルトの名無しさん (アウアウエー Sadf-D2eP)
垢版 |
2024/10/04(金) 13:27:33.15ID:RixEjMnja
>>51
>色情報はコードと何の関係もないので、色分けに慣れていると色分けをしていないコードが読めなくなる

これめっちゃ判る
特に初心者ほどやめた方が良い
2024/10/04(金) 13:45:12.37ID:2V3z57MG0
色分けされてる方が読みやすい
という単純な事実なのでは

初心者でも慣れてても同じ
道具に頼ると素手でできなくなるからと道具使わない人みたいな感じ
2024/10/04(金) 13:48:53.62ID:RqFpLHKv0
逆に初心者の方が誤りを判別する手助けにもなるので、
色分けされていたほうが便利だと思う
2024/10/04(金) 14:16:07.08ID:3xmlzivUa
>色分けをしていないコード
ってどういうことなんだろ
わかる言ってるやついるけど
おれは全然わかんないわ笑
色無いなら自分で色分けすればよくね?

色アリ無しどちらではじめようが慣れたら結局
・色分け無しで慣れる→色分けアリでも読める
・色分けアリで慣れる→色分け無しでも読める
なんだから、最初から色分けアリの方が学習コスト低いよな
2024/10/04(金) 14:22:18.26ID:i5vhWVds0
まぁ(初心者)色分けやめた方がいいって言ってるやつも
色分けした方が読みやすいって言ってんのが答えだわなw
2024/10/04(金) 14:30:37.03ID:vJhSgpGOa
道具に頼って素手よりパフォーマンス上がればそりゃ道具使うわな
土方ですら水平器もインパクトドライバーも使ってるわ
2024/10/04(金) 14:32:10.85ID:IDs1O+210
勉強にならんからIDE使うな的な
2024/10/04(金) 14:49:16.95ID:Af8duaqZ0
コーディングから実行までちんたらする時間がマジで無駄
スペルミスに勘づくスキルは上昇しづらくなるだろうがエラーメッセージに頼ればいいしエラーメッセージと勝負して先回りする意味はない
まず善い手本参考に自分で書いたコードが成功か失敗か確かめる数こなした方が上達する
言語学習でも同じ
インプットアウトプットの回数多い方が文法も語彙力も上がる
文脈把握できればエラーに気づく能力も上がる
色分け無し縛り云々は逆張り愉快犯以外に利点はない
66デフォルトの名無しさん (ワッチョイ 6f09-/XLF)
垢版 |
2024/10/04(金) 15:58:46.91ID:lUav+mwb0
>>58
この論理ほど馬鹿なものもない
便利機能はどんどん使えばいい
災害を想定して普段から水電気ガスが満足に使えない生活をしているやつは殆どいないだろう
2024/10/04(金) 16:18:08.42ID:lDeI5PGjH
androidアプリ作ろうと思ってkivyで書いて
コンパイルをgoogle colaboratoryでbuildozerでやったら
上手くapk作成できてandroid端末でもインストール動作確認できたけど
コンパイルの時間めっちゃかかったなにこれ…たぶん20分くらい
こういうもんなの
2024/10/04(金) 17:21:46.00ID:2V3z57MG0
if elif elif else
みたいにインデントを深くせずにtryを書けないかな
2024/10/04(金) 18:37:26.59ID:x2l03NKV0
>>68
日本語でOK
70デフォルトの名無しさん (ワッチョイ 6f09-/XLF)
垢版 |
2024/10/04(金) 18:47:11.58ID:lUav+mwb0
execで無理やり書け
2024/10/04(金) 19:21:49.26ID:Z9HGqIB60
色分けに慣れたらコード読めなくなるってマジ?
でもキータとか見ても色分けして表示されてるところが多いしなあ

とりあえずVScodeデフォルトでしばらく使ってみるわ!ありがと
72デフォルトの名無しさん (ワッチョイ 6f09-/XLF)
垢版 |
2024/10/04(金) 19:29:54.92ID:lUav+mwb0
エディタの便利機能使わないならメモ帳でやっとけって話になるわな
2024/10/04(金) 19:31:01.13ID:2V3z57MG0
https://i.imgur.com/ZRZqENW.png
evalでできた
2024/10/04(金) 19:35:22.61ID:2V3z57MG0
数値部分eval だけでいいな
2024/10/04(金) 19:58:19.41ID:upmSrzby0
for convert in (int, float, complex):
でいい
2024/10/04(金) 20:17:43.91ID:oFau5fAJ0
chromeでseleniumを動かしているのですが、実行した直後にコマンドプロンプトが落ちてしまうので、何のエラーなのかが一切分かりません
どうやったら落ちなくできますか?
2024/10/04(金) 20:33:28.99ID:JKo0fS4W0
>>76
そういうときは出来る限り最小構成
↓で試して落ちるならseleniumのインストール時点で何かしら問題あるかも

import time
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
#chrome_options.add_argument('--no-sandbox')
#chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=chrome_options)
print("driver.get")
driver.get("https://www.google.co.jp";)
print(driver.title)
time.sleep(1)
driver.quit()
print("正常終了。")
2024/10/04(金) 22:19:24.82ID:JAupTFkx0
>>76
.pyファイルをダブルクリックするとかしてpy.exe(Python Launcher)経由でプログラムを実行してると推測する

VSCodeとか入れてるならVSCodeからプログラムを実行すれば出力も確認できる
入れてないならプログラムの最後にinput()と書いてプログラム終了前にユーザー入力を待つようにするか.pyファイルをダブルクリックするのではなくコマンドプロンプトを先に開いてそこからpython hello.pyの形でプログラムを実行すれば出力内容を確認できる
2024/10/05(土) 16:10:10.09ID:kis0iOlf0
>>77
>>78
ありがとうございます!
これまではbatファイルにpyファイルのパスを書いて、batファイルをダブルクリックで実行していましたが、
教えていただいたとおりコマンドプロンプトを開いて手動で打ち込んで実行すれば落ちずエラーを確認できました
2024/10/06(日) 16:50:59.12ID:kvSgTVMcM
質問です。ある書籍で
price = 100
print(price * 1.10)
print(int(price * 1.10))
の結果が
110.00000000000001 ←浮動小数点で表示
110 ←int関数を使って整数で表示
と書いてあるのですが、何故110.00000000000001になるのかが浮動小数点について調べましたが、私の知識では理解出来ません。
どなたか解説をお願いいたします。よろしくお願いします。
81デフォルトの名無しさん (JP 0H03-dA/z)
垢版 |
2024/10/06(日) 17:09:34.73ID:UFSeVUgGH
浮動小数点と丸めの話は定番の話でググって出てくる説明で分からんかったらここでも多分無理だぞ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況