当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。
★エラーを解決したい場合★は、
表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。
Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/ Run Code機能あり。
ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
◇Python公式◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi
〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その54
https://mevius.5ch.net/test/read.cgi/tech/1623240344/
次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
【まず1嫁】くだすれPython(超初心者用) その55
■ このスレッドは過去ログ倉庫に格納されています
2021/10/01(金) 15:46:47.17ID:9qOHXj6D
567デフォルトの名無しさん
2021/11/10(水) 12:11:38.18ID:/xBD3bqR xy = [0, 0]
var = cmd
xy[var] = 1
あるいは
xy = {'x': 0, 'y': 0}
var = 'x' if cmd else 'y'
xy[var] = 1
var = cmd
xy[var] = 1
あるいは
xy = {'x': 0, 'y': 0}
var = 'x' if cmd else 'y'
xy[var] = 1
568デフォルトの名無しさん
2021/11/10(水) 12:54:40.31ID:n5kix8Fi 再帰して、条件にあったらbreak
という処理をしているのですが
すべて回したけど条件に合わなかった
って場合はどうやればいいのですか
f=False
for i in range(5):
_if i==8:
__f=True
__break
_else:
__f=False
if f:
_print("○")
else:
_print("×")
例えばこの例だとfor抜けたあとにif i==8でも判別できます
しかし、for内外で2回、i==8を使った表現がなんか野暮というか・・
かといってそれを言い出せばわざわざ追加したf=Falseも、ってなりそうですが。
が、これ以上に他の方法なんてあるのでしょうか
という処理をしているのですが
すべて回したけど条件に合わなかった
って場合はどうやればいいのですか
f=False
for i in range(5):
_if i==8:
__f=True
__break
_else:
__f=False
if f:
_print("○")
else:
_print("×")
例えばこの例だとfor抜けたあとにif i==8でも判別できます
しかし、for内外で2回、i==8を使った表現がなんか野暮というか・・
かといってそれを言い出せばわざわざ追加したf=Falseも、ってなりそうですが。
が、これ以上に他の方法なんてあるのでしょうか
569デフォルトの名無しさん
2021/11/10(水) 13:20:24.40ID:pJeuK/iL 0-4で回して8でTrueって意味がわからんけど、
それだとelseは不要だし既に抜けた後に条件に合わなかった場合になってるだろ。
それだとelseは不要だし既に抜けた後に条件に合わなかった場合になってるだろ。
570デフォルトの名無しさん
2021/11/10(水) 13:22:02.64ID:BOw4D0hZ571デフォルトの名無しさん
2021/11/10(水) 13:36:42.37ID:n5kix8Fi572デフォルトの名無しさん
2021/11/10(水) 13:37:10.46ID:FEUt3UaQ573デフォルトの名無しさん
2021/11/10(水) 13:50:56.80ID:n5kix8Fi574デフォルトの名無しさん
2021/11/10(水) 15:17:50.26ID:l5Ahtbnb ヘルパー関数作ってreturn Trueとreturn Falseしたほうがいいと思う
Effective Pythonにもforやwhileのelseブロックは使うなって書いてる
Effective Pythonにもforやwhileのelseブロックは使うなって書いてる
575デフォルトの名無しさん
2021/11/10(水) 17:36:43.66 ヘルパー関数で分けて(処理の中身隠して)見やすくすれば
(ヘルパー関数内で)else句は使ってもいい
って意味ではなく、
そもそもelse句使わない方がいいってことかな
(ヘルパー関数内で)else句は使ってもいい
って意味ではなく、
そもそもelse句使わない方がいいってことかな
576デフォルトの名無しさん
2021/11/10(水) 17:56:41.01ID:HNNUg8pO oddnum = len((x for x in X if x in (1,3)))
allnum == len(X)
if oddnum == allnum > 0:
print('allodd')
elif allnum > 0 == oddnum:
print('alleven')
else:
print('other')
allnum == len(X)
if oddnum == allnum > 0:
print('allodd')
elif allnum > 0 == oddnum:
print('alleven')
else:
print('other')
577デフォルトの名無しさん
2021/11/10(水) 20:44:30.15ID:BOw4D0hZ578555
2021/11/10(水) 21:12:33.58ID:vnM01vTc579デフォルトの名無しさん
2021/11/10(水) 22:28:06.81ID:Ey/Tzzo2 sjisファイルをわざわざデコードしてからエンコードしなおすのかな?
580デフォルトの名無しさん
2021/11/11(木) 00:46:55.85ID:x6810Q1K そもそもループのelseっていわれても
なにやってるのかピンときづらいからな…
3系になってから用途不明の文法が結構増えた気がするわ
なにやってるのかピンときづらいからな…
3系になってから用途不明の文法が結構増えた気がするわ
581デフォルトの名無しさん
2021/11/11(木) 07:09:46.59ID:rdUNi5nM そうかなあ、コレクションから何か探してる時に見つからない時の処理書いたりするのにめっちゃ便利だと思うんだが
https://python.civic-apps.com/else-loop/amp/
まあelseというキーワードがいいかどうかはよくわからんけど他にしっくりくるようなキーワードもなさげだし
https://python.civic-apps.com/else-loop/amp/
まあelseというキーワードがいいかどうかはよくわからんけど他にしっくりくるようなキーワードもなさげだし
582デフォルトの名無しさん
2021/11/11(木) 10:03:23.47ID:SpIFedoW583デフォルトの名無しさん
2021/11/11(木) 12:20:10.51ID:ncCD0/gc 使えるけど使わないほうがいいよって話でしょ
>>581のコード例も探索と出力を分離してない悪い例
>>581のコード例も探索と出力を分離してない悪い例
584デフォルトの名無しさん
2021/11/11(木) 12:27:02.25ID:rdUNi5nM585デフォルトの名無しさん
2021/11/11(木) 12:39:45.52ID:8NRWWnb2 古いバージョンとの互換性がないか、考慮する必要のない場合、
標準で使えるものは使っとくほうが楽
それに対して、別途導入が必要なものは使わないな
標準で使えるものは使っとくほうが楽
それに対して、別途導入が必要なものは使わないな
586デフォルトの名無しさん
2021/11/11(木) 14:03:11.82ID:VFTg6I1W でもループのあとにいきなりelse出て来て
これがどの条件でそこにいくのかすぐに分かるやつおらんのでは?
ループ内でbreakしたあとだよ、とかいえばそのまま信じる人多そう
結局、分岐条件をちゃんと真面目に書いたほうが誤認、誤読を防げてwysiwygみが出る
これがどの条件でそこにいくのかすぐに分かるやつおらんのでは?
ループ内でbreakしたあとだよ、とかいえばそのまま信じる人多そう
結局、分岐条件をちゃんと真面目に書いたほうが誤認、誤読を防げてwysiwygみが出る
587デフォルトの名無しさん
2021/11/11(木) 14:11:28.15ID:1agSgarI windowsのpoetryでキャッシュからパッケージをインストールするとエラーになるやつってまだ修正されてない?
588デフォルトの名無しさん
2021/11/11(木) 18:08:48.51ID:JDtebxVn 辞書に"data"がある限り掘っていき
キー名と値をハイフン文字列で連結する
みたいなことをやりたくて自分で考えてみたのですが
https://ideone.com/o5VIjG
これで一応は出来た(期待する出力)のですが
最適化してもらえないでしょうか
キー名と値をハイフン文字列で連結する
みたいなことをやりたくて自分で考えてみたのですが
https://ideone.com/o5VIjG
これで一応は出来た(期待する出力)のですが
最適化してもらえないでしょうか
589デフォルトの名無しさん
2021/11/11(木) 19:32:31.66ID:M//5twRa590デフォルトの名無しさん
2021/11/11(木) 19:57:35.31ID:R65WwKU7591デフォルトの名無しさん
2021/11/11(木) 20:15:29.73ID:JDtebxVn592デフォルトの名無しさん
2021/11/12(金) 05:11:14.29ID:nOrEz+co593デフォルトの名無しさん
2021/11/12(金) 05:44:51.77ID:69xCA6xu forでelse使えるってしらんだし普通にインデントミスってたのかなと思ってifの所に直しておくかな
594デフォルトの名無しさん
2021/11/12(金) 07:15:43.05ID:Wbl+f+tk595デフォルトの名無しさん
2021/11/12(金) 08:22:54.70ID:bzXu0SPl ややこしくなるだけのものをわざわざ使うことないでしょう
596デフォルトの名無しさん
2021/11/12(金) 09:08:04.32ID:bLCSn2ms 昨日pythonの存在を知ったガチ初心者です
下の解説を参考に国土数値情報を一括DLしようとしましたができません
助力お願いします
https://qiita.com/mits003/items/2c8c77514a09aee99cc0
Win 10
コマンドプロンプトで実行
pyhton 3.9 DL済
ChromeDriver 93.04577 DL済
pip install selenium 実行
cd C:\Users\cucum\mlit-ksj-dl-tool-main
してから
python mlit_ksj_dl.py https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
を入力すると以下の文がでます
下の解説を参考に国土数値情報を一括DLしようとしましたができません
助力お願いします
https://qiita.com/mits003/items/2c8c77514a09aee99cc0
Win 10
コマンドプロンプトで実行
pyhton 3.9 DL済
ChromeDriver 93.04577 DL済
pip install selenium 実行
cd C:\Users\cucum\mlit-ksj-dl-tool-main
してから
python mlit_ksj_dl.py https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
を入力すると以下の文がでます
597デフォルトの名無しさん
2021/11/12(金) 09:08:47.83ID:bLCSn2ms C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py:50: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py:50: DeprecationWarning: use options instead of chrome_options
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
Traceback (most recent call last):
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 74, in start
self.process = subprocess.Popen(cmd, env=self.env,
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py:50: DeprecationWarning: use options instead of chrome_options
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
Traceback (most recent call last):
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 74, in start
self.process = subprocess.Popen(cmd, env=self.env,
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
598デフォルトの名無しさん
2021/11/12(金) 09:09:00.65ID:bLCSn2ms During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py", line 115, in <module>
dl_dir = file_dl(DRIVER_PATH)
File "C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py", line 50, in file_dl
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 69, in __init__
super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 90, in __init__
self.service.start()
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 84, in start
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home
Traceback (most recent call last):
File "C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py", line 115, in <module>
dl_dir = file_dl(DRIVER_PATH)
File "C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py", line 50, in file_dl
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 69, in __init__
super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 90, in __init__
self.service.start()
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 84, in start
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home
599デフォルトの名無しさん
2021/11/12(金) 09:09:56.62ID:bLCSn2ms 長文失礼しました
スレチだったら申し訳ありません
よろしくお願いします
スレチだったら申し訳ありません
よろしくお願いします
600デフォルトの名無しさん
2021/11/12(金) 09:42:28.23ID:+FPwLl69 全然知らんのだが、インストールされてるのがselenium4なら
このあたりが怪しいかも
https://qiita.com/yagaodekawasu/items/5813a8cb4c3d73386e7a
このあたりが怪しいかも
https://qiita.com/yagaodekawasu/items/5813a8cb4c3d73386e7a
601デフォルトの名無しさん
2021/11/12(金) 09:56:07.83ID:M7lyd7nj >>598
>selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
>Please see http://chromedriver.chromium.org/home
chrome driver・chromedriver.exe を置いたフォルダを、
ユーザー環境変数(または、システム環境変数)PATH へ追加すれば?
PowerShell を起動して、
$env:Path.split( ";" )
と入力して、chrome driverを置いたフォルダが、表示されるか確かめる
漏れの場合、C:\BrowserDriver と出力される
漏れは、そこにchrome driverを置いて、Ruby で使っている。
C:\BrowserDriver/chromedriver.exe
>selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
>Please see http://chromedriver.chromium.org/home
chrome driver・chromedriver.exe を置いたフォルダを、
ユーザー環境変数(または、システム環境変数)PATH へ追加すれば?
PowerShell を起動して、
$env:Path.split( ";" )
と入力して、chrome driverを置いたフォルダが、表示されるか確かめる
漏れの場合、C:\BrowserDriver と出力される
漏れは、そこにchrome driverを置いて、Ruby で使っている。
C:\BrowserDriver/chromedriver.exe
602デフォルトの名無しさん
2021/11/12(金) 10:33:02.94ID:zRf7Ym05 データ取得するのが目的ならソースのonclickにパスまんま書いてる
603デフォルトの名無しさん
2021/11/12(金) 10:37:35.81ID:0ShHeix+ >>600
selenium 3.14に変更してみましたが同様の文がでました
selenium 3.14に変更してみましたが同様の文がでました
604デフォルトの名無しさん
2021/11/12(金) 10:38:15.67ID:0ShHeix+ >>601
試してみます
試してみます
605デフォルトの名無しさん
2021/11/12(金) 11:05:42.02ID:0ShHeix+ >>601
ユーザー環境変数とシステム環境変数にPATHを追加しPowerShellでchrome driverを置いたフォルダが表示されるのを確認しました
再度python mlit_ksj_dl.py https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
を実行しましたが
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
と表示されます
ユーザー環境変数とシステム環境変数にPATHを追加しPowerShellでchrome driverを置いたフォルダが表示されるのを確認しました
再度python mlit_ksj_dl.py https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
を実行しましたが
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
と表示されます
606デフォルトの名無しさん
2021/11/12(金) 11:07:27.73ID:0ShHeix+607デフォルトの名無しさん
2021/11/12(金) 11:18:39.40ID:+FPwLl69 関係無いけど、昨日Python知った割にはすんなりといろんなことがよくできるな。
もともとLinuxやってた人?
もともとLinuxやってた人?
608デフォルトの名無しさん
2021/11/12(金) 11:21:32.57ID:0ShHeix+609デフォルトの名無しさん
2021/11/12(金) 11:21:59.16ID:du4vJvWd わろたw
そっちの「ソース」をどうやっていじるんだよ。
ドライバのPATH通したなら、
executable_path=DRIVER_PATH,
を削除したらどうだ?
おそらく、上記を設定するとそっちが優先されるだろう。
そっちの「ソース」をどうやっていじるんだよ。
ドライバのPATH通したなら、
executable_path=DRIVER_PATH,
を削除したらどうだ?
おそらく、上記を設定するとそっちが優先されるだろう。
610デフォルトの名無しさん
2021/11/12(金) 11:29:55.18ID:0ShHeix+611デフォルトの名無しさん
2021/11/12(金) 11:35:58.04ID:zRf7Ym05 >>606
そうサイトのHTMLソース
なのでDOM解析してもいいけど、ぶっちゃけ文字列検索で例えば
$ wget https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
$ grep -oP '/ksj/gml/data/.+zip' KsjTmplt-L03-a.html | wget --base https://nlftp.mlit.go.jp -i -
でOK
スレ的には当初の手法で成功してよかった
そうサイトのHTMLソース
なのでDOM解析してもいいけど、ぶっちゃけ文字列検索で例えば
$ wget https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
$ grep -oP '/ksj/gml/data/.+zip' KsjTmplt-L03-a.html | wget --base https://nlftp.mlit.go.jp -i -
でOK
スレ的には当初の手法で成功してよかった
612デフォルトの名無しさん
2021/11/12(金) 11:56:23.24ID:+D42agk2 やりたいことがあるのは良いことなので
この調子で色んなことに挑戦しよう
この調子で色んなことに挑戦しよう
613デフォルトの名無しさん
2021/11/12(金) 13:04:57.85ID:iYNtaU8H OSのインストールのときの最後に、
カウンドダウンする表示が出てきて、
あと30秒で再起動する、今すぐのときはボタン押せ表示が出てくる。
ああいうのをpythonでやりたいんだが、参考になるものある?
自分ではWinAPIで似たようなの見つけて
from ctypes import *
windll.user32.MessageBoxTimeoutA(None,"YYY","ABC",4,0,30000)
をやってみたんだが、
カウントダウンしてくれないからちょっと違うと思ってる。
カウンドダウンする表示が出てきて、
あと30秒で再起動する、今すぐのときはボタン押せ表示が出てくる。
ああいうのをpythonでやりたいんだが、参考になるものある?
自分ではWinAPIで似たようなの見つけて
from ctypes import *
windll.user32.MessageBoxTimeoutA(None,"YYY","ABC",4,0,30000)
をやってみたんだが、
カウントダウンしてくれないからちょっと違うと思ってる。
614デフォルトの名無しさん
2021/11/12(金) 14:53:07.55ID:MdQVbi6g try:
__if x.has('A') and use :
____foo()
__else:
____bar()
except ValueError:
__bar()
こういうのって例外クラス作ってexceptでまとめて受けたほうがいいですか?
同じ内容のbar()が散乱するのって気になる?
__if x.has('A') and use :
____foo()
__else:
____bar()
except ValueError:
__bar()
こういうのって例外クラス作ってexceptでまとめて受けたほうがいいですか?
同じ内容のbar()が散乱するのって気になる?
615デフォルトの名無しさん
2021/11/12(金) 15:12:27.59ID:a3j0d+bF >>593-594
無能自慢乙w
無能自慢乙w
616デフォルトの名無しさん
2021/11/12(金) 15:56:02.93ID:GHgBaz6z 自分にしか読めないコード書いて悦に浸るとか20年前のコボラーかよ
617デフォルトの名無しさん
2021/11/12(金) 18:01:39.54ID:FV3v58XB ('A')
618デフォルトの名無しさん
2021/11/12(金) 18:16:04.90ID:1KWt8wEr >>614
bar()の意味合い次第だと思うが
引数含めて全く同じ処理をするんならelse句でraiseしてまとめてしまったほうが理解しやすいと思う
それよりどこで発生する例外をexceptで受けてるのかが曖昧なのが気になる
x.has()なのかuse()なのかfoo()なのか
bar()でもValueError発生する可能性があるのかないのかみたいな
bar()の意味合い次第だと思うが
引数含めて全く同じ処理をするんならelse句でraiseしてまとめてしまったほうが理解しやすいと思う
それよりどこで発生する例外をexceptで受けてるのかが曖昧なのが気になる
x.has()なのかuse()なのかfoo()なのか
bar()でもValueError発生する可能性があるのかないのかみたいな
619デフォルトの名無しさん
2021/11/12(金) 18:29:01.39ID:JnXYuZWY from ctypes import *
t = 30000
while(t -= 1):
windll.user32.MessageBoxW(None,"YYY","ABC",0)
t = 30000
while(t -= 1):
windll.user32.MessageBoxW(None,"YYY","ABC",0)
620デフォルトの名無しさん
2021/11/12(金) 18:55:33.33ID:a3j0d+bF621デフォルトの名無しさん
2021/11/12(金) 19:30:16.12ID:xRtlJ9/N こういうのを見るたび「Zen of Python」ってなんだったんだろうなって思ってしまうw
622デフォルトの名無しさん
2021/11/12(金) 19:54:46.68ID:JnXYuZWY >>621
Zenは原理主義じゃないから
Zenは原理主義じゃないから
623デフォルトの名無しさん
2021/11/12(金) 20:27:32.37ID:MdQVbi6g >>618
あーそうかー
has部分だけなんす、tryするの。tryは短くないとですよね
if use :
__try:
____x.has('A'):
________foo()
__except ValueError:
____use =False
if not use:
__var()
んーーーー
あーそうかー
has部分だけなんす、tryするの。tryは短くないとですよね
if use :
__try:
____x.has('A'):
________foo()
__except ValueError:
____use =False
if not use:
__var()
んーーーー
624デフォルトの名無しさん
2021/11/12(金) 20:32:02.95ID:+D42agk2 ('A')が(´A`)に見えた
625デフォルトの名無しさん
2021/11/12(金) 21:16:34.84ID:1KWt8wEr >>623
has()が例外投げる代わりにFalseを返せばいいんでは?
has()が例外投げる代わりにFalseを返せばいいんでは?
626デフォルトの名無しさん
2021/11/12(金) 21:25:29.92ID:1KWt8wEr loopのelse句はGuidoも後悔してる機能
https://mail.python.org/pipermail/python-ideas/2009-October/006157.html
https://mail.python.org/pipermail/python-ideas/2009-October/006157.html
627デフォルトの名無しさん
2021/11/13(土) 00:44:08.28ID:fE0qo4YR >>621
グイドは禅を守る為に戦ってるんだよ
グイドは禅を守る為に戦ってるんだよ
628デフォルトの名無しさん
2021/11/13(土) 01:57:43.67ID:PnBDGE+q そりゃ後悔するわな
629デフォルトの名無しさん
2021/11/13(土) 04:38:52.17ID:qYaZF+ZS Web Designing 2021年12月号
>入門〜上級まで本気で勉強したい人必携。Pythonの利点からWebビジネスで活きる仕組みまで丁寧に解説!
>入門〜上級まで本気で勉強したい人必携。Pythonの利点からWebビジネスで活きる仕組みまで丁寧に解説!
630デフォルトの名無しさん
2021/11/13(土) 17:33:14.40ID:kgYXWGHf sqlのスレのほうがいいのか迷いましたがこちらで。
psycopg2で重複させずにinsertをする方法を知りたいです。
import psycopg2
#データベースにいれるurlのリスト
url_list1 = ['url1', 'url2', 'url3', 'url4', 'url5',]
url_list2 = ['url1', 'url2', 'url6', 'url7', 'url8',]
# PostgreSQL Server へ接続してカーソルを取得
conn = psycopg2.connect('host=localhost port=5432 dbname=urlman user=urlman password=urlmaniscool')
c = conn.cursor()
#urlを保存するテーブルの作成
c.execute("""
CREATE TABLE url_table(
"url_name" text,
"count" integer default 0
)
""")
psycopg2で重複させずにinsertをする方法を知りたいです。
import psycopg2
#データベースにいれるurlのリスト
url_list1 = ['url1', 'url2', 'url3', 'url4', 'url5',]
url_list2 = ['url1', 'url2', 'url6', 'url7', 'url8',]
# PostgreSQL Server へ接続してカーソルを取得
conn = psycopg2.connect('host=localhost port=5432 dbname=urlman user=urlman password=urlmaniscool')
c = conn.cursor()
#urlを保存するテーブルの作成
c.execute("""
CREATE TABLE url_table(
"url_name" text,
"count" integer default 0
)
""")
631デフォルトの名無しさん
2021/11/13(土) 17:33:37.48ID:kgYXWGHf #url_list1のデータを挿入
for url in url_list1:
c.execute('INSERT INTO url_table (url_name) VALUES(%s)',[url])
conn.commit()
#入ったか確認
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
print(urllist)
for url in url_list1:
c.execute('INSERT INTO url_table (url_name) VALUES(%s)',[url])
conn.commit()
#入ったか確認
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
print(urllist)
632デフォルトの名無しさん
2021/11/13(土) 17:33:55.87ID:kgYXWGHf #新たに取得したurlのうち重複してないurlを挿入
#これのやりかたがよくわかりません
for url in url_list2:
c.execute('INSERT INTO url_table (url_name) VALUES(%s)',[url])
conn.commit()
#入ったか確認
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
print(urllist)
#コネクションを閉じる
conn.close()
#これのやりかたがよくわかりません
for url in url_list2:
c.execute('INSERT INTO url_table (url_name) VALUES(%s)',[url])
conn.commit()
#入ったか確認
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
print(urllist)
#コネクションを閉じる
conn.close()
633デフォルトの名無しさん
2021/11/13(土) 17:36:19.84ID:kgYXWGHf 上記でprint(urllist)の結果を['url1', 'url2', 'url3', 'url4', 'url5','url6', 'url7', 'url8']にしたいのですが、
['url1', 'url2', 'url3', 'url4', 'url5','url1', 'url2', 'url6', 'url7', 'url8']になってしまいます。
['url1', 'url2', 'url3', 'url4', 'url5','url1', 'url2', 'url6', 'url7', 'url8']になってしまいます。
634デフォルトの名無しさん
2021/11/13(土) 17:56:44.89ID:vJfZgOKN 入ったかどうかを select で確認してるんだから
入ってたら除外すればいい
入ってたら除外すればいい
635デフォルトの名無しさん
2021/11/13(土) 18:09:47.53ID:kgYXWGHf636デフォルトの名無しさん
2021/11/13(土) 18:13:41.77ID:Mehg38vB url_nameを主キーにすればいいんじゃないの
637デフォルトの名無しさん
2021/11/13(土) 18:18:47.95ID:x1CN7sQN638デフォルトの名無しさん
2021/11/13(土) 18:21:14.00ID:6FXvjqIK pythonロジックでセレクトかけてインサートするかどうか決めたり或いは
インサート文にwhere条件入れてもいい
ただ設計的なはなしでいうなら、最初から重複すべきではないなら
テーブル定義の重複NGにキー制約かけたほうがベスト
その際、インサートで主キーだぶるとdbms側で例外吐くので、例外処理のpythonロジックを追加する必要がある
規模が大きいシステムだと、最後のやり方をまず一番最初に考慮する必要がある
上二つのやり方は考え方としてはほぼ一緒で
実装としてSQL文として一筆書き出来ますよと言うはなしでしかない
範囲が限られた業務ロジックのなかでなら有効に使える
インサート文にwhere条件入れてもいい
ただ設計的なはなしでいうなら、最初から重複すべきではないなら
テーブル定義の重複NGにキー制約かけたほうがベスト
その際、インサートで主キーだぶるとdbms側で例外吐くので、例外処理のpythonロジックを追加する必要がある
規模が大きいシステムだと、最後のやり方をまず一番最初に考慮する必要がある
上二つのやり方は考え方としてはほぼ一緒で
実装としてSQL文として一筆書き出来ますよと言うはなしでしかない
範囲が限られた業務ロジックのなかでなら有効に使える
639デフォルトの名無しさん
2021/11/13(土) 18:22:14.25ID:pRVx8AyR 1件ずつexecuteせずまとめてinsertしたほうがいいよ
640デフォルトの名無しさん
2021/11/13(土) 18:27:23.32ID:6FXvjqIK641デフォルトの名無しさん
2021/11/13(土) 18:42:45.91ID:kgYXWGHf >>637の内容で入れてみます!!!
データベース勉強しはじめでよくわかってなくて申し訳ない。
upsertは調べてみたのですが、重複した場合、内容を更新するとなっていてやりたいことと違うのかと思いました
データベース勉強しはじめでよくわかってなくて申し訳ない。
upsertは調べてみたのですが、重複した場合、内容を更新するとなっていてやりたいことと違うのかと思いました
642デフォルトの名無しさん
2021/11/13(土) 18:46:41.57ID:6FXvjqIK >>641
マージ文でググればでてくるけど
じつはアレ、アップデート文書かなくてもちゃんと期待どおりに動くぞw
インサートやって、出来なければスルーしたいならOR UPDATEの部分だけ書かなければいい
マージ文でググればでてくるけど
じつはアレ、アップデート文書かなくてもちゃんと期待どおりに動くぞw
インサートやって、出来なければスルーしたいならOR UPDATEの部分だけ書かなければいい
643デフォルトの名無しさん
2021/11/13(土) 18:55:43.88ID:kgYXWGHf >>638
最初は、pythonで重複の比較して重複してないやつを入れることも考えたんです。
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
で持ってきたurllistをurl_list2と比較して重複してないやつを入れるみたいな
url_list2 = set(url_list2)-set(urllist)とかで?
でもせっかくデータベースの勉強してるのでそっちでやってみたいなって感じです
>>640
すまん、話してることが難しくてよくわからない
最初は、pythonで重複の比較して重複してないやつを入れることも考えたんです。
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
で持ってきたurllistをurl_list2と比較して重複してないやつを入れるみたいな
url_list2 = set(url_list2)-set(urllist)とかで?
でもせっかくデータベースの勉強してるのでそっちでやってみたいなって感じです
>>640
すまん、話してることが難しくてよくわからない
644デフォルトの名無しさん
2021/11/13(土) 18:58:26.95ID:kgYXWGHf ぽまいらなんでこんなに詳しいんだ
挫折しながらもpythonちょっとできるようになってきて、
csv辞めてデータベースに入れてみたいってなって、
postgresqlの勉強始めたら挫折して、挫折しかしてねえぞ俺
挫折しながらもpythonちょっとできるようになってきて、
csv辞めてデータベースに入れてみたいってなって、
postgresqlの勉強始めたら挫折して、挫折しかしてねえぞ俺
645デフォルトの名無しさん
2021/11/13(土) 18:59:24.51ID:kgYXWGHf >>642
これから637と642どっちも試してみるです!!
これから637と642どっちも試してみるです!!
646デフォルトの名無しさん
2021/11/13(土) 19:00:45.55ID:x1CN7sQN >>641
> upsertは調べてみたのですが、重複した場合、内容を更新するとなっていてやりたいことと違うのかと思いました
upsertやmergeはDBMS毎に書き方違うから調べにくいよね
まあおいおい調べていけばいいと思うよ
あと、例外出してPython側で処理するとかPostgreSQLにないマージ文とか言ってるアホは無視でいい
> upsertは調べてみたのですが、重複した場合、内容を更新するとなっていてやりたいことと違うのかと思いました
upsertやmergeはDBMS毎に書き方違うから調べにくいよね
まあおいおい調べていけばいいと思うよ
あと、例外出してPython側で処理するとかPostgreSQLにないマージ文とか言ってるアホは無視でいい
647デフォルトの名無しさん
2021/11/13(土) 19:08:25.74ID:6FXvjqIK すまんw
postgresもどうせ普通にANSI規格やろと思ったら未実装やったんかい
postgresもどうせ普通にANSI規格やろと思ったら未実装やったんかい
648デフォルトの名無しさん
2021/11/13(土) 19:16:23.51ID:kgYXWGHf 637のやりかたでできたぞです!
ありがとう。
642も試してみる
ありがとう。
642も試してみる
649デフォルトの名無しさん
2021/11/13(土) 19:27:37.20ID:6FXvjqIK650デフォルトの名無しさん
2021/11/13(土) 19:54:50.55ID:kgYXWGHf >>646,647
マージ文?ないってレスに今気づいたありがとう。
マージ文?ないってレスに今気づいたありがとう。
651デフォルトの名無しさん
2021/11/13(土) 21:24:55.56ID:wUFaz/ce652デフォルトの名無しさん
2021/11/13(土) 21:58:49.17ID:diWAL6lC >>651
import functools
d={"a":{"b":{"c":{"d":111}}}}
ary=["a","b","c","d"]
print(functools.reduce(lambda d, k: d[k], ary, d))
import functools
d={"a":{"b":{"c":{"d":111}}}}
ary=["a","b","c","d"]
print(functools.reduce(lambda d, k: d[k], ary, d))
653デフォルトの名無しさん
2021/11/13(土) 23:36:54.00ID:wUFaz/ce654デフォルトの名無しさん
2021/11/14(日) 00:17:07.01ID:MXTEWU7A 静的にキーを定義してる時点で動的とは言えないのでは
655デフォルトの名無しさん
2021/11/14(日) 01:36:39.78ID:ZInZl5Ie656デフォルトの名無しさん
2021/11/14(日) 01:47:41.70ID:MXTEWU7A >>> d={"a":{"b":{"c":{"d":111}}}}
>>> def get_value(dd): return dd if isinstance(dd, int) else get_value(list(dd.values())[0])
>>> print(get_value(d))
111
lambda使って頑張ればいける?無理かな
>>> def get_value(dd): return dd if isinstance(dd, int) else get_value(list(dd.values())[0])
>>> print(get_value(d))
111
lambda使って頑張ればいける?無理かな
657デフォルトの名無しさん
2021/11/14(日) 02:13:49.47658デフォルトの名無しさん
2021/11/14(日) 04:27:10.93ID:PiYGiFgV >>644
挫折と言うのは努力した人がするもんだ
挫折と言うのは努力した人がするもんだ
659デフォルトの名無しさん
2021/11/14(日) 08:05:21.74ID:8oLu5/jW660デフォルトの名無しさん
2021/11/14(日) 13:36:33.18ID:E00roTgy そもそも日本語が不自由っぽくて
何をしたいのかが良く判らん
何をしたいのかが良く判らん
661デフォルトの名無しさん
2021/11/14(日) 13:40:46.75ID:E00roTgy と思ったが画像観てなかったわω
関数名 search_tree とか search_node の方が良いんじゃね
関数名 search_tree とか search_node の方が良いんじゃね
662デフォルトの名無しさん
2021/11/14(日) 14:59:17.47 相手の日本語を疑う前にまず抽象化して考えた方が良いと思うわ
質問者の質問には、期待部分とコード部分が分かれてるわけで。
コード部分だけみて文字通りコードだけみて
「何したいかわからん」っていう人いるけど
全部同じ人だとしたら、ずっとネタでやってんのかと思ってたけど
返しがガチアスペっぽいんだよなぁ・・
例えば if True:とか書くと
「Trueだと当たり前じゃん、何がしたいかわからん」
みたいな返しの人いるじゃん
これまじでネタでやってんのかと思ってたけど
安定して登場してるんでどうもネタでやってないっぽい
質問者の質問には、期待部分とコード部分が分かれてるわけで。
コード部分だけみて文字通りコードだけみて
「何したいかわからん」っていう人いるけど
全部同じ人だとしたら、ずっとネタでやってんのかと思ってたけど
返しがガチアスペっぽいんだよなぁ・・
例えば if True:とか書くと
「Trueだと当たり前じゃん、何がしたいかわからん」
みたいな返しの人いるじゃん
これまじでネタでやってんのかと思ってたけど
安定して登場してるんでどうもネタでやってないっぽい
663デフォルトの名無しさん
2021/11/14(日) 15:01:10.51ID:ckxtWecQ 画像?
人の日本語にケチつけるレベルじゃないだろw
人の日本語にケチつけるレベルじゃないだろw
664デフォルトの名無しさん
2021/11/14(日) 15:06:35.08ID:L6aMQe6P665デフォルトの名無しさん
2021/11/14(日) 15:38:37.79ID:vfrWY536 それあるわ
苦労して一行にまとめたコードだが、
何をしているのかを解説するコメントが10行くらい必要になって
これやらない方がよかったなって経験がある
苦労して一行にまとめたコードだが、
何をしているのかを解説するコメントが10行くらい必要になって
これやらない方がよかったなって経験がある
666デフォルトの名無しさん
2021/11/14(日) 15:41:51.67ID:mFG9NQD5 >>644
YouTube で有名な、雑食系エンジニア・KENTA のサロンの、Ruby on Rails 初心者用コースでは、
Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース(DB)
バックエンド技術者の大前提として、基本情報処理資格も必須。
DBも、第3正規形まで入る
さらに、データベース技術者資格・ミックの本も読んだ方がよい
YouTube で有名な、雑食系エンジニア・KENTA のサロンの、Ruby on Rails 初心者用コースでは、
Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース(DB)
バックエンド技術者の大前提として、基本情報処理資格も必須。
DBも、第3正規形まで入る
さらに、データベース技術者資格・ミックの本も読んだ方がよい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★2 [蚤の市★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- JAが"政府の備蓄米買い上げ"見越して価格下げず!?「古いコメは食用向きでないなどと理由をつけ...」専門家解説 [煮卵★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【結婚の壁】結婚どころか今まで恋愛経験は一切ない人も…「年収500万の壁」を突破できない中間層の苦しい現実 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【悲報】世界「トランプよりヤバいリーダーがいた!」トランプ「俺よりやべえ奴がいる!」高市早苗「??何で皆アタシを避けるの?」 [517791167]
- 【高市悲報】レーダー照射で日本が喧嘩売ってる中、アメリカ軍「我々はパールハーバーを忘れない」と日本に向けてポストへ [709039863]
- 本当の問題は高市がバカなことじゃなくて高市みたいなバカを支持するバカが大量にいることだよな [314039747]
- 高市首相「自らの命は自らが守るという原則で、行動とっていただきたい」 [256556981]
- 【ひまわり内閣】ネトウヨ「国会に高市さんが封筒と書類の束持ち込んでる!🤩用意周到!すごい!」6万いいね [359965264]
- 今時手編みのマフラーとセーターと帽子と手袋のプレゼントってwww
