当スレに★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
557デフォルトの名無しさん
2021/11/10(水) 09:23:24.08ID:morNzhKw >>555
SJISで半角カタカナ混在は想定してる?除外?
SJISで半角カタカナ混在は想定してる?除外?
558デフォルトの名無しさん
2021/11/10(水) 09:25:16.07ID:morNzhKw そもそも問題の設定が可笑しいな
行の長さをバイト数でってことなら
バイト列で\nから\nまでのバイト数を数えれば良いんじゃね
行の長さをバイト数でってことなら
バイト列で\nから\nまでのバイト数を数えれば良いんじゃね
559デフォルトの名無しさん
2021/11/10(水) 09:25:49.53ID:l5Ahtbnb >>555
str.encode()
str.encode()
560デフォルトの名無しさん
2021/11/10(水) 10:56:18.25ID:BOw4D0hZ x = 0
y = 0
cmd = 0
var = x if cmd else y
var = 1
# x=0, y=1
というのがやりたい.値じゃなくて変数を自体を代入したいんだけど,できますか?
if cmd:
__x = 1
else:
__y = 1
y = 0
cmd = 0
var = x if cmd else y
var = 1
# x=0, y=1
というのがやりたい.値じゃなくて変数を自体を代入したいんだけど,できますか?
if cmd:
__x = 1
else:
__y = 1
561デフォルトの名無しさん
2021/11/10(水) 11:00:38.81ID:pJeuK/iL >>560
最終的な目的がわからんと、全く何がしたいのかわからんわ。
最終的な目的がわからんと、全く何がしたいのかわからんわ。
562デフォルトの名無しさん
2021/11/10(水) 11:05:25.69ID:ABhSQgxq cmdって名前の変数に数値が入ってるのはまだしも、それが条件判断に使われてるのはセンスが凄い
563デフォルトの名無しさん
2021/11/10(水) 11:33:47.73ID:4NOC2kX2 pythonの三項演算子だけは許せない
見にくすぎる
ほかの言語と同じくこの形にしてほしい
hoge = condition ? true_value : false_value
見にくすぎる
ほかの言語と同じくこの形にしてほしい
hoge = condition ? true_value : false_value
564デフォルトの名無しさん
2021/11/10(水) 11:34:23.49ID:enrtMuCa >>556
計算量って考え方がCS独特だからな
計算機科学としてしっかり教えてるような大学か専門課程、またはトレーニングコースで学んでないと身に付きにくい
正解の根拠を数理的な証明じゃなく、出力としてのアサーションに求める時点で
つまり根本的なことろから変わってくるからな
計算量って考え方がCS独特だからな
計算機科学としてしっかり教えてるような大学か専門課程、またはトレーニングコースで学んでないと身に付きにくい
正解の根拠を数理的な証明じゃなく、出力としてのアサーションに求める時点で
つまり根本的なことろから変わってくるからな
565デフォルトの名無しさん
2021/11/10(水) 11:40:16.83ID:ZiQaM7Uu > 560
x = cmd
y = 1 - x
x = cmd
y = 1 - x
566デフォルトの名無しさん
2021/11/10(水) 11:41:15.02ID:l5Ahtbnb >>560
varに変数そのものへの参照を保持するのは無理じゃないかな
変数を参照するための文字列を格納しておいてvars()やlocals()だったり
getattr()やsetattr()を使えばできなくはない
どうしてもそれが必要な場面以外ではまずやらないけど
varに変数そのものへの参照を保持するのは無理じゃないかな
変数を参照するための文字列を格納しておいてvars()やlocals()だったり
getattr()やsetattr()を使えばできなくはない
どうしてもそれが必要な場面以外ではまずやらないけど
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使って頑張ればいける?無理かな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国とロシアの爆撃機、日本周辺で共同飛行 [少考さん★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
- 防衛省、中国を完全論破www 「事前通告があったのは海自であって空自ではない」 高市早苗勝利 [175344491]
- 買ったばかりのオーブンレンジ「この機種はお餅を焼くことはできません」
- 【悲報】キティちゃん率いるサンリオ軍団、深刻な若手不足に陥る
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- 気が狂いそう
