【まず1嫁】くだすれPython(超初心者用) その58

■ このスレッドは過去ログ倉庫に格納されています
2022/09/07(水) 10:33:53.50ID:RjZl78eW
当スレに★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(超初心者用) その57
https://mevius.5ch.net/test/read.cgi/tech/1653225908/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
2023/05/10(水) 06:12:33.22ID:zmtoAUL0
コンピュータ技術の根源だから実は難しいんよね
自分も何十年もこの世界にいるけど
いまだにテキストファイルとバイナリファイルの違いが説明できないし
779デフォルトの名無しさん
垢版 |
2023/05/10(水) 17:11:24.88ID:5Rwc5Tpt
初学者なんだが[apple, banana, nut, mangosteen]というリストを文字の少ない順に並び変えてリストを再構築せよっていう問題
習ったことをあれやこれやで3時間くらいかけて作ったのがこれ

https://ideone.com/e5Zk2C
解答みて唖然としたね
いやぁなんか相当遠回りな損した気分
780デフォルトの名無しさん
垢版 |
2023/05/10(水) 18:13:02.07ID:3PLbEJS0
>>779
そういう経験大事よ
次から思考回路変わるから
781デフォルトの名無しさん
垢版 |
2023/05/10(水) 18:38:05.70ID:A8RgUVJx
>>776
その理解で間違ってないよ
バイト列を特定のエンコーディング(符号演サ方式)を使って文字列として扱うための型がstringやstrと呼ばれるもの
pythonのstrの内部的に持ってるのはUnicodeのcode pointで表示したり保存したりするときに指定のエンコーディングを使う(デフォルトはUTF-8)
2023/05/10(水) 19:32:28.22ID:vO85M+b+
>>779
俺氏も似たり寄ったりだわ
L = ['apple', 'banana', 'nut', 'mangosteen']

# 文字数 M = [5, 6, 3, 10]
M = [len(n) for n in L]

# 配列 ML = [[5, 'apple'], [6, 'banana'], [3, 'nut'], [10 'mangosteen']]
ML = [[M[i], L[i]] for i in range(len(L))]

# 文字数でソート S = [[3, 'nut'], [5, 'apple'], [6, 'banana'], [10 'mangosteen']]
S = sorted(ML)

# リストから要素を抽出して新しいリストを作成
result = [n[1] for n in S]

print(result)
783デフォルトの名無しさん
垢版 |
2023/05/10(水) 20:50:02.82ID:yeAvKW24
単純にソートすればええやんと思っちゃうんだが
ソートに関数を渡すという感覚を持ち合わせてないということなのかな?
2023/05/10(水) 20:51:09.20ID:oYBR9wSW
>>777
>>781
ありがとうございます
2023/05/10(水) 21:07:58.85ID:hwwKafRF
ソートを使うと計算量がn^2になってしまうから
配列のインデックスを文字列長にして
配列の内容をリンクドリストにして
追加しておくようにすれば
計算量が2nで済むけど
プログラミングは誰かに任せる
2023/05/10(水) 21:42:57.53ID:VnJnYO4m
>>785
rubyなら
a = ['apple', 'banana', 'nut', 'mangosteen', 'bbb']
p a.each_with_object([]) {|x, a| (a[x.size] ||= []) << x}.compact.flatten

["nut", "bbb", "apple", "banana", "mangosteen"]
787デフォルトの名無しさん
垢版 |
2023/05/10(水) 21:47:38.00ID:Csgt+W1x
>>785
timsortが要素数が少ないときにn^2になるinsertion sortを使うのはその方がn log nのmerge sortより速いから

それにそのアルゴリズムは実速度が遅くなることを抜きにしても文字列長をインデックスにした配列の長さmをオーダーに入れる必要がある
788デフォルトの名無しさん
垢版 |
2023/05/11(木) 02:49:11.76ID:IsUfqIsW
jypyterで再起動するごとにdataframeの列が上下ひっくり返る謎現象に悩んでたけど
通常のコードにしたら謎に解決した
意味わからん
2023/05/11(木) 05:12:37.30ID:BtuDU+NS
ソートのキーに文字数が指定できるという衝撃
実務でも使うのかな?
2023/05/11(木) 08:44:28.44ID:rmkBIaEM
>>789
文面にあるほどの特殊性はない
比較可能な値を返す任意の関数を指定できるだけ
791デフォルトの名無しさん
垢版 |
2023/05/11(木) 11:28:35.88ID:0xrwE4ea
sort関数使わずに苦労したのかと思ったら使ってはいるんだな
https://docs.python.org/ja/3.10/library/stdtypes.html#list.sort
にあるソート HOW TOに色々書いてある
L.sort(key=lambda x: len(x))

>>789
関数オブジェクトを渡すことは珍しいことではない
2023/05/11(木) 12:17:48.22ID:rmkBIaEM
>>791
L.sort(L, key=len)
sorted(L, key=len)
2023/05/11(木) 12:18:30.58ID:rmkBIaEM
前者はtypoっす
794デフォルトの名無しさん
垢版 |
2023/05/11(木) 12:19:04.09ID:Uzb7NzNr
>>791
そのlambdaは余計

>>789
関数の受け渡しはめちゃくちゃ使う
795デフォルトの名無しさん
垢版 |
2023/05/11(木) 12:20:33.76ID:Rj96Hzk9
LとかMみたいな命名はなるべく早く卒業したほうがいいぞ
lやmも同様
2023/05/11(木) 12:21:04.18ID:T7OjrNg5
>>791
そう
sortを学習したのに変な遠回りを踏んでしまった...
2023/05/11(木) 12:21:38.71ID:T7OjrNg5
>>795
具体的にどういう命名がいいんですか?
なんか数学の癖でよく使うlだのmだの置いてしまう
2023/05/11(木) 12:31:50.70ID:rmkBIaEM
名前だから伝わってなんぼ
理解を妨げないなら略記でもOK
でもPythonが提供する識別子には略記がほぼないことを考えてほしい
一方で>>791のlambdaのxは局所的なので長々命名する方が不適
2023/05/11(木) 12:34:00.77ID:2/EQwNdd
Ruby なら、sort_by でシュオーツ変換なので高速。
sort はO(N^2)

input_fruits_ary = %w(apple, banana, nut, mangosteen)

# 文字列数の少ない順でソート
input_fruits_ary.sort_by! { |fruit| fruit.length }

p input_fruits_ary
#=> ["nut,", "apple,", "banana,", "mangosteen"]

# 文字列数の多い順でソート
input_fruits_ary.sort_by! { |fruit| fruit.length * -1 }

p input_fruits_ary
#=> ["mangosteen", "banana,", "apple,", "nut,"]
800デフォルトの名無しさん
垢版 |
2023/05/11(木) 15:34:24.35ID:0xrwE4ea
確かにlenだけでよかったね、lambdaもあるよっていう事で許して
2023/05/11(木) 19:51:35.88ID:VmIYuEHk
>>799
rubyなら
a = ['apple', 'banana', 'nut', 'mangosteen', 'bbb']
p a.sort_by(&:size)

["nut", "bbb", "apple", "banana", "mangosteen"]
802デフォルトの名無しさん
垢版 |
2023/05/14(日) 18:33:45.85ID:TVRCUOVE
pickleファイルの他のクラスから読めない制約知らんかったわ…
先に教えてくれよ…
2023/05/14(日) 19:39:14.54ID:JeiAQ+ra
rubyは無いわ

>>802
回避方法も同時に解説されてるふぁ
804デフォルトの名無しさん
垢版 |
2023/05/15(月) 12:25:46.20ID:XYoBnzaj
すみません、pythonのべん今日のために数独のプログラムを作ろうとしていますが、
以下のコードで、なぜかbreakを読み取ってくれません
下らないミスだとは思いますが、ご指摘お願いします。

コード:
https://pastebin.com/fzN186CM
実行結果:
[1, 5, 0, 0, 2, 0, 0, 9, 7]
2023/05/15(月) 12:34:22.26ID:gqAJstNf
for内にprint(i)入れたらすぐわかるよ
デバッグはVSCODEあたり使った方が圧倒的に便利だよ
806804
垢版 |
2023/05/15(月) 12:46:26.64ID:XYoBnzaj
ありがとうございます、解決しました
VSCODEも試してみます
2023/05/15(月) 16:44:25.66ID:WphFmj6/
プログラムの勉強こそ、ChatGPT活用したほうがいいよ
2023/05/15(月) 21:12:54.24ID:96tZdU2Q
>>807
それな
以前、「特定のフォルダを監視して新たに保存されたファイル名を
DBに格納していく。ただし監視中にCPUを占有しないこと」という
コードを書きたくて質問したことがあるけど
ChatGPTに同じ質問を投げたら、何とそのまま動くコードが返ってきてビビった
809デフォルトの名無しさん
垢版 |
2023/05/16(火) 00:15:28.47ID:2QNh0/Yl
>>532
''.join( "s_i_t_e:ko_kk_ai.n_dl.go.j_p 朝_鮮".split("_") )
810デフォルトの名無しさん
垢版 |
2023/05/16(火) 20:14:23.46ID:V9hbYivE
>>803
中身定義しないでpassだけ書いてもロードできたから
クラス名書き換えるだけのスクリプト書いてなんとかなったわ
スペルミス直すだけで苦労するとは…
2023/05/17(水) 05:26:13.56ID:RdROygPB
>>810
> プログラムの勉強こそ、ChatGPT活用したほうがいいよ

ChatGPTはバカ専用なので、
自分でググッたほうが良い

>>811
それはお前がバカだから。
ChatGPT4スゲー!とか言ってるの低脳w
812デフォルトの名無しさん
垢版 |
2023/05/17(水) 11:47:49.75ID:J1gzoaOm
【動画】「憲政史上初」国会でChatGPTが岸田総理に質問(2023年3月29日) | ANNnewsCH
ps://www.youtube.com/watch?v=o1zv1cxt9G0
ChatGPTトップ「政府の規制が重要」議会初証言で|TBS NEWS DIG | TBS NEWS DIG Powered by JNN
ps://www.youtube.com/watch?v=C85FOvn_woE
第211回国会 衆議院 内閣委員会 第9号 令和5年3月29日 | テキスト表示 | 国会会議録検索システム シンプル表示
ps://kokkai.ndl.go.jp/simple/detail?minId=121104889X00920230329&spkNum=16
2023/05/17(水) 12:34:52.88ID:akNcZT8e
import webbrowser

lst = [ ['htt','ps://','www.youtube','.com/watch'],
['?v=','KkwWALkuYOM'],
['&list=','PLBjMF7sSdVpiSnddPZsfTEOjOZUD4ftCa'] ]

link = "".join( ["".join(e) for e in lst] )

print( "韓国による嘘[・・・日本が朝鮮にした恐ろしいこと?] | tokinomori13",
link, sep="\n")

webbrowser.open( link )
2023/05/17(水) 18:44:02.07ID:0tiXVM80
トロイの木馬みたいなコードを書くなら、もっと精巧にやってほしいよな。
そんな見ただけで結果が明らかなコード書かれても何も面白くないじゃないか。
815デフォルトの名無しさん
垢版 |
2023/05/17(水) 21:23:47.47ID:WYa1maRz
LogicクラスとCreateクラス作って
MainクラスからLogicクラスのインスタンス作って
LogicクラスからCreateクラスのインスタンス作って

Mainからlogic.hoge()しても実態はCreate.hoge()読んでるだけだったりするとき
もうMainから直接インスタンス作れば良いんじゃないかって思ったりする訳ですが
何重にもラッパー作る意味ってなんですか?
2023/05/17(水) 22:09:19.38ID:oza9WAtC
コードの例え話は好きではないんだけども
八百屋で野菜買いたいだけなのに仕入れとか栽培まで考慮したくなくない?
やりたいのは夜ご飯をつくることなのに
関心事を適度に分離して役割分担するのが
リアルでもコードでもシンプルで上手くいくコツ
2023/05/17(水) 23:41:19.05ID:iFswwcsk
>>1
print("IT業界のヤバすぎる落とし穴5選 | やまもとりゅうけん",
"htt" "ps://www" ".youtube.com/watch?v=" "WPPCJ4o-mpA", sep = "\n")
2023/05/18(木) 10:01:24.32ID:hFb4AYt9
>>811
自分にアンカ付けてバカとか言ってるw
てかChatGPTとGPT4の区別が出来てない時点で分かってないんだろうなw
2023/05/18(木) 11:58:11.35ID:aICdVmJ+
pdfminerでページごとにテキストを抽出しようとしているのですが、
Aの抽出にすると何故か次ページの情報まで含まれてしまいます。
Bの方法だとちゃんと該当ページの情報だけになるのですが、
テキストグループ単位で改行されないのでちょっと都合が悪いです。
Bの方法でテキストグループ単位でセパレートすることはできるのでしょうか?

A: device = TextConverter(rsrcmgr, retstr,codec=codec,laparams=LAParams())
B: device = TextConverter(rsrcmgr, retstr,codec=codec)
820819
垢版 |
2023/05/18(木) 13:17:57.42ID:aICdVmJ+
とりあえずは自己解決しました。
PDFの方で非表示情報を削除することで解決しました。
821デフォルトの名無しさん
垢版 |
2023/05/19(金) 02:07:24.52ID:iSJAQTOS
http://mevius.5ch.net/test/read.cgi/tech/1680075092/89
[Python]の例が気になったんですが、
この書き方は普通ですか?もっとエレガントに書くとしたらどうしますか?
2023/05/19(金) 02:27:08.01ID:yl46Wrbm
シンプルに書くと
"-".join(map(str, sorted(a, reverse=True)))
右から左の流れで書くなら
"-".join(str(x) for x in sorted(a, reverse=True))
エレガントかは自信なし
823デフォルトの名無しさん
垢版 |
2023/05/19(金) 04:05:00.53ID:ZOdh2xkh
pythonにエレガントさを求めるのが間違い
"-".joinの時点ですでにエレガントじゃないから諦めろ
2023/05/19(金) 10:14:23.98ID:RFMu3wvR
なんで リスト.join() じゃなく
文字列.join(リスト) にしたんだろうな。
.split()なんかに対して、直感に反してる気がする。実際に他言語はリスト.joinだし
2023/05/19(金) 11:35:03.05ID:RFMu3wvR
と思ったらこれには思想と歴史的な背景があるのね。
826デフォルトの名無しさん
垢版 |
2023/05/19(金) 11:39:01.45ID:ouZU/kaO
オブジェクト指向言語じゃなかったから
2023/05/20(土) 05:07:12.15ID:r4oY1rB+
この言語は完全に行き詰まってるから
ゴキブリに乗り換えるしかないな
828デフォルトの名無しさん
垢版 |
2023/05/20(土) 15:29:18.20ID:ej5QdAy9
# >>812

text = '''
国会会議録検索システム
ps://kokkai.ndl.go.jp
帝国議会会議録検索システム
ps://teikokugikai-i.ndl.go.jp/
国会会議録検索システム シンプル表示
ps://kokkai.ndl.go.jp/simple/
帝国議会会議録検索システム シンプル表示
ps://teikokugikai-i.ndl.go.jp/simple/
国会会議録検索システム ヘルプ(使い方ガイド)
ps://kokkai.ndl.go.jp/help.html
APIの利用|国立国会図書館―National Diet Library
ps://www.ndl.go.jp/jp/use/api/index.html

site:kokkai.ndl.go.jp python
'''

print(text.replace("ps://","htt"+"ps://"))
2023/05/20(土) 16:09:02.25ID:pXEYjqEz
text = '''\
蛇 -filetype:pdf site:teikokugikai-i.ndl.go.jp\
'''

lst = text.split('\n')

for line in lst: print( text, lst, ' '.join( line.split()[::-1] ), sep="\n\n" )
2023/05/20(土) 17:15:32.37ID:wv6TyxaN
初心者です。よろしくお願いします。
チャート画像をスクレイピングしたいのですが上手くいきません。

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

browser = webdriver.Chrome('chromedriver.exe')
url = "https://jp.kabumap.com/servlets/kabumap/Action?SRC=chart/base&codetext=4449";
browser.get(url)
sleep(10)
elem_img = browser.find_element(By.ID, "gifChart_img_real")
elem_img

デベロッパーツールでチャートのidを取得したのに
NoSuchElementException と出ます。
どうすればよいでしょうか?
831デフォルトの名無しさん
垢版 |
2023/05/20(土) 17:58:15.66ID:BNhw9lNy
shelveで定期的にsyncしてるのにコミットチャージが線形で増えていきます
適度にdel挟まないといけないのでしょうか?
2023/05/20(土) 23:01:09.44ID:6r8zDIVe
>>830
gifChart_img_realはiframeの中にあるので
iframe = browser.find_element(By.ID, "chart_frame")
browser.switch_to.frame(iframe)
してから取得する
833デフォルトの名無しさん
垢版 |
2023/05/21(日) 05:35:06.71ID:kjzRL6kn
Getting Started with Headless Chrome - Chrome Developers
ps://developer.chrome.com/blog/headless-chrome/
Chrome’s Headless mode gets an upgrade: introducing `--headless=new` - Chrome Developers
ps://developer.chrome.com/articles/new-headless/#-virtual-time-budget

"C:\Program Files\Google\Chrome\Application\chrome.exe" --headless --disable-gpu --virtual-time-budget=10000 --window-size=1920,2100 --screenshot=c:\Pictures\screenshot-21.png "スクリーンショットを撮りたいページのURL"
2023/05/21(日) 11:12:03.76ID:hzjc2KCd
>>832
出来ました。
frameに切り替える必要があるなんて初めて知りました。
本当にありがとうございます。
2023/05/22(月) 03:22:18.92ID:+e0jygvo
# >>828-829
site = '''\
外務省
G7広島サミット\
'''

url = "htt" + "ps://www.mofa.go.jp/mofaj/ms/g7hs_s/page1_001673.html"

print( site.replace("\n", " > "), url, sep="\n" )
836デフォルトの名無しさん
垢版 |
2023/05/23(火) 08:38:40.20ID:pqsi5Ho/
スレとはあんま関係ないかもしれんが、デバッグの方法やらテストの方法やらってどこで学ぶの?
vscodeにその機能があるらしいとは知っててもろくに使えない
使い方やコツみたいなのあったら教えて
837819
垢版 |
2023/05/23(火) 08:59:30.99ID:d8FV5sbM
>>836
vscode python デバッグ でググる
838デフォルトの名無しさん
垢版 |
2023/05/23(火) 13:43:59.19ID:WU8GLoy9
Debugging configurations for Python apps in Visual Studio Code
ps://code.visualstudio.com/docs/python/debugging
2023/05/23(火) 19:55:51.71ID:JMXPuiCR
計算処理しかしたことないけどデバッグはprint関数を置きまくって、実行はステップ実行。
ステップ実行もしないけど。
vscodeのステップ実行はブレークポイントを設置したところからしかできないようだ。
2023/05/24(水) 01:44:50.96ID:iSsmVkws
>>833
>C:\Program Files
じゃなくて、

C:\Program Files (x86)
じゃないの?
2023/05/24(水) 15:13:01.76ID:e8mgmyMR
画像をスクレイピングする場合、
ブラウザを立ち上げず、リクエストライブラリを使用するのと
ブラウザを立ち上げて行う2つの方法がありますが
どちらが良いのでしょうか?
842デフォルトの名無しさん
垢版 |
2023/05/24(水) 15:38:12.72ID:81lSzauF
>>841
状況次第
まずはブラウザが必要かどうかを判断すること
2023/05/24(水) 16:36:40.21ID:e8mgmyMR
>>842
すみませんがわかりません。
必要かどうかはどうやって判断するのですか?
2023/05/24(水) 16:47:21.89ID:JcQICt1W
言い換えになるけどリクエストライブラリで事足りるかどうか
一般的にはブラウザ経由の方が処理時間やコストが増えるから避けるけど
そんなの困ってないよってならわかりやすい方のがいい
混在させるよりブラウザのみの方が統一感あるかもしれんし(しらんけど)
845デフォルトの名無しさん
垢版 |
2023/05/24(水) 17:03:00.18ID:CWlHzDqw
>>843
リクエストライブラリってのは
簡単に言うとHTTPのGETやPOSTしかできないわけ
ログイン処理が必要ならブラウザを介して入力フォームにIDとパスワードを入力してログインボタンを押すのとは違って
ログインボタンが押されたときに発行されてるPOSTリクエストを自分でHTTPリクエストを組み立てる必要がある
さらにログインが成功したときのHTTPレスポンスに含まれるログイン済みを示す情報を引き継ぎながら次のリクエストを発行しないといけない

要するにブラウザがHTTP通信以外でやってくれてることをブラウザを使わずにやるかブラウザを使ってやるかの違い
2023/05/24(水) 17:42:23.43ID:e8mgmyMR
>>844
>>845
ありがとうございます。おそらくですが理解できました。
勉強不足なのでしばらくはブラウザを立ち上げての実行にしていきます。
847デフォルトの名無しさん
垢版 |
2023/05/24(水) 18:45:10.57ID:sa8KwLuD
画像URLの抽出にログインやJavaScriptの実行が不要なサイトならRequsts使った方が簡単かもしれないよ
スクレイピングをそこそこやるなら両方やっとくといいと思う
2023/05/24(水) 18:50:12.46ID:o9Uxzgb8
>>840
ショートカットのリンク先が"C:\Program Files\Google\Chrome\Application\chrome.exe"だった
環境によって違うかも
2023/05/28(日) 02:49:17.77ID:XJdWjJIm
画像のURLぶっこ抜いてHTML生成してブラウザ表示してSaveAsするのが一番無難
あまり変な動きすると察知されて対策されることがある
2023/05/29(月) 20:31:31.56ID:Z3AJ5TFy
スクレイピングをしていいサイトかの確認は
サイトのメインURLにrobots.txtを追加しての確認以外にあるんでしょうか?
利用規約もなく、見つからない場合は不可なのですかね
851デフォルトの名無しさん
垢版 |
2023/05/29(月) 23:42:31.93ID:Kbo/ewZe
>>850
電話とかメールでスクレイピングしても良いですか?って聞いたらいいよ
2023/05/29(月) 23:52:23.05ID:a+bTqmTP
スク水レイプはダメですって言われた
2023/05/30(火) 00:29:18.21ID:N3V0sKr2
pipかcondaかでなく

ryeとかいうpython環境構築、管理コマンドが出来てるのか
バージョンも揃えやすいと
2023/05/30(火) 06:22:34.38ID:6xFQRkRK
>>850
Webサイトって人間が手でブラウザを操作すること前提に作られてるわけで、スクレイピング歓迎なんてサイトはないと思うよ
データ提供目的なら最初からFTPとかAPIを用意するでしょ
2023/05/30(火) 12:10:05.00ID:LsKm3Edu
python3.10を使用しているのですが、以下のコマンドは成功します。
pip install psutil==5.9.5

しかし、「psutil==5.9.5」とだけ書いたrequirements.txtを用いた以下のコマンドは失敗します。
pip install -r requirements.txt

エラーの内容は以下のとおりです。
なぜこのような違いが発生するのでしょうか…

ERROR: Could not find a version that satisfies the requirement psutil==5.9.5 (from versions: none)
ERROR: No matching distribution found for psutil==5.9.5
2023/05/31(水) 06:50:23.05ID:xbJXN5Yq
>>839
printじゃなくてlogging.debugを使うと後々楽
2023/05/31(水) 14:20:22.86ID:7cq+DXpo
>>855
pip freeze > requirements.txt
で出力したら

モジュール名[半角スペース]==[半角スペース]5.9.5
とかになってますかねえ
半角スペース入れたらどうなりますかね
2023/06/02(金) 16:22:31.87ID:USkVLBTx
relativedeltaって、たとえばmonths=1とかで翌月同日(なければ直前の日付)を求める場合、加算元のdatetimeの値に応じて振る舞いが変えられるのはどういう仕組みなの?

datetime.now() + relativedelta(months=1)みたいなケース。
datetime.now()の値によって、timedelta的な値が変わる(加算すべきdaysが31だったり30だったり)のが不思議で仕方ないのだけど。
859デフォルトの名無しさん
垢版 |
2023/06/02(金) 17:27:19.30ID:T19cekas
>>858
2023/06/02なら内部的に2023と6と2を値として持っておいて
+relativedelta(months=2)なら内部的に持ってるmonthの値を+2すればいい
計算後のmonthの値が0以下や13以上になれば上の桁に計算が繰り上がる
860デフォルトの名無しさん
垢版 |
2023/06/02(金) 17:59:09.50ID:xbhDiUQd
2か月前にパソコンを買い2週間前からPythonを学び始めた初心者です。classを使用しpygame.image.load("")などを使って画像を表示しようとしたところエラーはどうにか解決できたのですが解決した後実行しても画像が表示されません。
なぜなのか全くわからず困っています。なにか教えていただけると幸いです。
2023/06/02(金) 18:42:13.66ID:USkVLBTx
>>859
質問の書き方が悪かったのと、勘違い的なものもあるかもだけど、

datetime(2023,5,31) + relativedelta(months=1)
→6/30(同日が無いから6月の最後の日)
datetime(2023,7,31) + relativedelta(months=1)
→8/31
この結果になるのは分かる。

ただそもそもdatetimeのtimedeltaにはmonth(月の加算)の概念が無いからrelativedeltaを使うのだけど、単なる加算演算子で演算してるだけなのに、relativedeltaは加算元の値に応じて加算すべき日数が分かるのはなんでなのかな、という話。
たとえば
hoge.addMonth(datetime(2023,5,31), 1)
というメソッド(関数)で返るなら分かりやすいんだけど、+ という演算子だけで加算元を考慮した結果が得られるのが理解できてない。
これって、加算演算子だけど、内部的には上のaddMonthみたいな関数が呼ばれてる感じなのかな??
余計に分かりづらくてすみませんね。
862デフォルトの名無しさん
垢版 |
2023/06/02(金) 23:14:49.95ID:ga0CYTsD
>>861
そういう話だったのか
演算子がどう解決されるかを知ると納得できると思う

x + yならまずx.__add__(y)が呼ばれる
このメソッドが実装されてないもしくはNotImplementedが返されたら
次にy.__radd__(x)が呼ばれる
これも実装されてないもしくはNotImplementedが返されたらエラーになる

今回のケースの+演算子はrelativedeltaの__radd__経由でrelativedeltaの__add__が呼ばれる
2023/06/03(土) 00:35:10.82ID:7xlPHi7r
>>862
なるほどー!そういう挙動をするのかー
勉強になりました。ありがとう
2023/06/04(日) 10:07:17.81ID:OdnWsaej
>>860
画像ファイルへのpathを絶対パスで指定する
2023/06/04(日) 16:41:01.48ID:u7zI0NRH
import os
filepath = os.path.abspath( 'pygame.png' )
print( filepath )
866デフォルトの名無しさん
垢版 |
2023/06/06(火) 11:20:12.83ID:NOo63SXR
ぱいソン、
なんでもできる言語だと聞きましたが
ブログとか作ろうと思ったら
HTMLのほうがいいんですか?
JAVAの人気もそうですが、
パイソンが出てきても他の言語が駆逐されてないんですね…
2023/06/06(火) 11:34:58.54ID:5Roa6A6s
もうちょっと色々と勉強してきたほうがいい
2023/06/06(火) 11:42:32.80ID:xQyF/w+u
>>866
そのレベルならとりあえずChatGPTに相談したほうが早い
2023/06/07(水) 03:18:30.79ID:NvR9KUMb
>>866
基本的にほとんどの言語はなんでも出来る言語だけど、
得意不得意がある
すごくいい加減な情報量の話になるんだけど、複数の言語の同じ文字数で出来ることは、機能をどのように圧縮表現するのかということになって、圧縮アルゴリズム(言語仕様のことだけど)によって得意不得意が出てくるという感じ
PNGはロゴに向いてるけど写真には向いてない、JPEGは逆、みたいなね
Pythonはなんでも簡単に出来るけど、CPUの性能を最大限に出すのは無理な言語。簡単に出来ることに全振りしている
2023/06/07(水) 03:32:58.82ID:EKgpPP2Q
切ろうと思えばハサミでも大根切れるが包丁使ったほうが楽みたいな話
銀の弾丸みたいな言語は存在しない
2023/06/07(水) 07:52:19.49ID:uhVmgr37
最近はハサミで肉切る風習が日本でも浸透して汚な
2023/06/09(金) 12:12:11.06ID:NHFuTyG1
『慰安婦像を世界中に建てる日本人たち』
を読んでみたまえ。
在日中国人と在日朝鮮人、韓国人を、
排除して国外追放すべきという主張が全く正しいと
納得していただけるはず。

在日中国人、在日朝鮮人・韓国人、
そして日本国籍を取得した二世、三世を含めると
約500万人である。

有名新聞社やテレビ局の社長も在日系がいる。
もちろん政治家にも二世、三世がいる。
追放すべきだ!

IT企業の社長は在日だらけ。
注意せよ!
873デフォルトの名無しさん
垢版 |
2023/06/13(火) 03:27:40.19ID:ZJJmD30i
蒸れますか?
2023/06/14(水) 08:25:44.27ID:SH/RHF7T
関数のデフォルト引数は、関数定義の時点で確定してしまうってマジですか
いや実際下記のコードだと1が2回表示されるんですけど、これ怖すぎませんか
自分、関数外の変数をパラメータとしてよく使うんで戦々恐々です

N = 1
def sample(S = N):
print(S)
N = 2
sample()
N = 3
sample()
875デフォルトの名無しさん
垢版 |
2023/06/14(水) 11:07:22.05ID:j5xHAvkw
それは普通に引数で渡せよw
どうしてもデフォルト引数として使いたいなら
↓みたいにして実行時に外部スコープから値を取り込むか部分適用で新しい関数を返すようにするか
def sample(S = None):
if S is None:
S = N
print(S)
2023/06/14(水) 11:30:09.50ID:iWYHYN4r
def fun(hoge=[]):
....print(hoge)
....hoge += ['C', 'D']

fun()
fun(['A', 'B'])
fun()
fun()
2023/06/14(水) 14:59:25.34ID:bsnrwMoS
>>876
わかりやすい!
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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