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

■ このスレッドは過去ログ倉庫に格納されています
2021/10/01(金) 15:46:47.17ID:9qOHXj6D
当スレに★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 ###
2021/10/21(木) 08:45:58.03ID:POpI6QwK
>>202
大変遅くなりましてすみません
>>198です
丁寧に説明してくださりありがとうございます
とてもわかり易い

Effective Python についてググるだけでも掻い摘んだ説明が出てきて面白いです
2021/10/21(木) 08:47:32.47ID:rE4toNa0
どっちのやり方が良いかは場合によるんではっきり言えないけど、swiftやrubyを除けばメジャーな言語の多くがindexは0始まり、範囲は開始位置、終了位置+1で指定するんで、多くのプログラマにとってはpythonのやり方のほうが慣れ親しんでいるとは言えるかも

ちなみにswift、rubyは終了位置、終了位置+1のどちらの記法も使える
2021/10/21(木) 12:27:44.59ID:moBizkab
round(val, n)
みたいな簡単な書き方で、小数点○桁以下切り捨て、っていうのは無いのですかね?
浮動小数点の誤差については気にしないです
123.4567を小数点2桁で切り捨てなら、
123.45 (またはそれに限りなく近い数値)になってほしいです

math floorは桁指定できないですよね
探してもdecimalだとか10^nしてintしてから割るとかやることに対してちょっと大げさなものしか見つかりませんでした
238デフォルトの名無しさん
垢版 |
2021/10/21(木) 12:46:20.72ID:/d/0VOpU
floor(x*10**n)/10**n
239デフォルトの名無しさん
垢版 |
2021/10/21(木) 13:17:26.48ID:T2C3Q12E
さすがにそれは
240デフォルトの名無しさん
垢版 |
2021/10/21(木) 16:14:53.89ID:8ILWSSPd
フリーランスエンジニア専門の案件一括検索サイト「フリーランススタート」、
掲載案件数15万件突破!さらにリモートワークの掲載案件数4,000件突破!

ITフリーランスの独立支援サービス『テックビズ』&定額制全国住み放題『ADDress』提携開始

ITフリーランスの独立支援サービス『テックビズ』とフリーランス向け報酬即日払いサービス『先払い』提携開始

新型コロナの影響で、常駐型フリーランスエンジニアのリモート対応が増加

フリーランスエンジニア必見!リモートワークや週3案件があるサービス5



高報酬案件を求めるフリーランスエンジニアのための案件マッチングプラットフォーム
「Pro Connect Enginner(プロコネクトエンジニア)」正式版、2021年2月28日リリース!
2021/10/21(木) 16:18:34.28ID:yuVpO81C
"1×2.txt"のように"×"が文字列に入ったファイル名を処理しようとしています。
files = sys.argv[1]
で受け取って
print(files)
すると、×がなくなって
12.txt
に化けています。避ける方法はありませんか?
2021/10/21(木) 16:22:23.38ID:gR5+oZUI
>>241
試してないけど
sys.argvをやめてファイルから読み込むか、JSON使うか。
243デフォルトの名無しさん
垢版 |
2021/10/21(木) 16:26:13.82ID:s+STdMnX
https://docs.python.org/ja/3.10/library/decimal.html
https://pypi.org/project/gmpy/
https://code.google.com/archive/p/python-gmp/
244デフォルトの名無しさん
垢版 |
2021/10/21(木) 16:27:35.45ID:s+STdMnX
filesのbyte列を出力してみろ
2021/10/21(木) 18:35:03.76ID:yuVpO81C
>244
やってみました。
print(files.encode())
b'12.txt'
どこで消えてるんだろう…全角の×なので、普通に通ると思っていたのですが…
2021/10/21(木) 18:41:59.80ID:iSzsEmw9
>>241
再現しないね
環境(OS/シェル/Python)と呼び出す側のコードも書いて
2021/10/21(木) 18:54:37.47ID:yuVpO81C
OS: Win11Pro
シェル: PowerShell 7.1.5
Python: Python 3.10.0 (tags/v3.10.0:b494f59, Oct 4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)] on win32

VS Codeのworkspace.jsonに
"args" : ["1×2.txt"]

呼び出しは
files = sys.argv[1]
files = files.encode()
print(files)

です。>246さん、なにかわかりますでしょうか? お願いします。
2021/10/21(木) 19:04:23.86ID:YezGVy7K
>>240
サンキュー!こんなとこで宣伝するなんてろくでもないとこだろうからローカルプロキシにNGブチこんどくわ!
2021/10/21(木) 19:10:04.13ID:wgFCmdkg
エラー吐かずにスルーする目的でtryを使うのは
行儀としてどうですか?
やめたほうがいいのでしょうか

for:
_try:
__エラーが出ても次の処理を実行
_except Exception as e:
__print(e)
__pass
__continue

みたいな感じです
2021/10/21(木) 19:54:31.39ID:yqrc4/Lg
>>247
ターミナルの引数の時点で×が消えてるからvscode側の問題かな
251デフォルトの名無しさん
垢版 |
2021/10/21(木) 20:02:45.41ID:T2C3Q12E
>>249
ぜんぜんいいけど
Exceptionじゃなくて想定している例外にしないと
想定外の問題が発生してもすり抜けるのでダメ

実際に例外だしてそれを指定してあげる
たとえば配列の範囲外ならIndexErrorなど
2021/10/21(木) 20:07:36.86ID:yuVpO81C
>250
切り分けありがとうございます。
vscodeのスレで聞いてみます。
2021/10/21(木) 21:35:10.28ID:iSzsEmw9
>>247
シェルのエンコーディングとフォント、ファイル名のエンコーディングを確認するといいんでないかな

UTF-8のファイルで文字列を受け取って、UTF-8のファイルに出力してみて
出力の中身をエディタで確認して問題ないか確認して切り分けしてみれば?
2021/10/21(木) 22:23:10.34ID:yuVpO81C
>253
1×2 とUTF-8で書いたtxtを openしてreadしたところ、×が表示されました。
シェルはUTF-8、jsonもUTF-8です。やはりvscodeがなにか悪さしてるのでしょうか?
255デフォルトの名無しさん
垢版 |
2021/10/21(木) 22:28:15.67ID:EiXMJcNZ
>>249
スルーしていいエラーならいいよ
256デフォルトの名無しさん
垢版 |
2021/10/22(金) 12:09:19.87ID:KhubwY06
>>241
そのファイルがある場所でlsしてみて
そして、その結果をそのままここに貼って
2021/10/22(金) 13:08:40.17ID:pSuh16SX
>256
-a--- 2021/10/21 22:08 8 1×2.txt
表示されます!
なんかvscodeのバグなのか仕様なのかのせいなんですかね…
2021/10/22(金) 13:09:12.13ID:pSuh16SX
vscodeでのデバッグのときだけみたいなんで、半分諦めです。
2021/10/22(金) 14:11:33.51ID:X7QNDBcm
PySimpleGUIをつかってスクレイピング用のスクリプトをGUIにしてpyinstallerでexe化(コンソール無し設定)しました。exeで起動するとなにかしらのアクションですぐにコードが強制終了します。調べたところ、スクレイピングに使っているクロームドライバーの自動更新ライブラリがサブプロセスを開始しようとするときにコンソールを封じられているために落ちるってことらしいのですが回避方法がわからないです。知っている方がいたら教えてください。
2021/10/22(金) 15:26:37.44ID:NCC4eAK/
>>241 >>258
すまんこれvscodeじゃなくてpowershellのモジュールの方だった
https://social.technet.microsoft.com/Forums/ja-JP/862dda39-0c53-447c-b4bd-05e147a4f9e4/powershell
vscodeからの実行はコピペ+enterで実現してるようでPSReadLineのバグに引っかかる
ターミナル上でRemove-Module PSReadlineを実行した後は正常
当然シェルをbashやコマンドプロンプトに変更でも回避可能
2021/10/22(金) 16:28:01.92ID:pSuh16SX
>>260
すごい!!ありがとうございます!
無事、全角×が表示されました!!
これでdebug作業が進みます!
ありがとうございました!!
262デフォルトの名無しさん
垢版 |
2021/10/22(金) 16:46:07.04ID:DsjZYzXm
>>259
AllocConsole
2021/10/22(金) 17:23:28.01ID:X7QNDBcm
>>262
ごめん。調べたけどそれだけじゃわからんかった。OSにGUI用のコンソールを用意してもらうってことなんかな。だとしても実装方法が皆目見当つかん。
2021/10/22(金) 20:02:41.52ID:5ieIGpLh
辞書のソート方法を探してたんだけど

https://techacademy.jp/magazine/19309

このページ見たら

dic = {"X": 80, "A": 200, "E": 5, "R": 20, "S": 40}
dic2 = sorted(dic.items())

で出来るって書いてあったがこれ、type(dic2)やったらlistになっとるやんけ
辞書のままソートする方法を普通書かないか?
2021/10/22(金) 20:08:47.66ID:5ieIGpLh
これ、元の辞書を並べ替える場合って

dic1.clear

dic2(実はリスト)を
dic1.update(dic2)
ってやるしかないの?
2021/10/22(金) 20:13:56.45ID:5ieIGpLh
ちょっと間違えてたから書き直した

dic = {"X": 80, "A": 200, "E": 5, "R": 20, "S": 40}
dic2 = sorted(dic.items())
dic.clear()
dic.update(dic2)

これで辞書のkeyでの並び替えが出来るっぽいんだけど、これ以外に方法ある?
2021/10/22(金) 20:57:16.61ID:szev1NjN
どうしてdictionaryをsortしたいの?
268デフォルトの名無しさん
垢版 |
2021/10/22(金) 21:15:58.94ID:QiF9wMqh
dictがOrderedDict相当になったとき
順序に依存するコードが増えたら嫌だなとおもったけど
処理コスト変わらんのに便利さを選ばないのも偏狭なんだろうな

>>266
dict(sorted(dic.items()))
2021/10/22(金) 21:47:08.80ID:5ieIGpLh
>>267
文字列の長さの数値をキーにして、同じ長さの文字列を値にする辞書を作ったから

dic1 = {5: 'apple',3: 'pen'}
みたいなやつ
>>268
ありがとう
2021/10/22(金) 22:05:03.21ID:szev1NjN
お、おう。
2021/10/22(金) 22:32:57.50ID:0c+YzSoZ
アンチパターンってやつやな
2021/10/22(金) 22:59:32.08ID:8L7RGAQS
例えば以下のように、デスクトップにショートカットを作って、
コマンドプロンプトから、Ruby スクリプトを起動すると、
C:\Program Files/ みたいに、半角空白が入っているパスで、バグる

C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/a.rb"

(注意。書き込めないので間に、@を入れました)

これをショートカットからコマンドプロンプトを通さず、
直接、Ruby スクリプトを起動すると、正常に動く

C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/a.rb

とにかく、コマンドプロンプト・Power Shell と、
Linux 系の動的言語との通信には、
半角空白・日本語のファイルパスなど、文字列のバグが多い

VSCode は、WSL2 などLinux, Docker にも対応しているので、動的言語でもバグらない。
バグるのは、コマンドプロンプト・Power Shellの部分
273デフォルトの名無しさん
垢版 |
2021/10/23(土) 01:41:10.93ID:L2XVMbSO
pilで複数の画像を1枚の背景に貼り付けたい
入力される画像の位置がランダムbbox(x1,y1,x2,y2)なんだけど
すべての座標を含む最小範囲の背景(0,0,x2,y2)ってどうやって計算したらいいのですか?
274デフォルトの名無しさん
垢版 |
2021/10/23(土) 03:20:28.76ID:L2XVMbSO
あー
bgbbox = min(x1s),min(y1s),max(x2s),max(y2s)

ペースト時x系に-abs(min(x1s)), y系に-abs(min(y1s))
※pip 基点0,0なので

2021/10/23(土) 05:04:17.46ID:n7GT2TeK
>>270
超初心者相手にそういう意味の分からん反応止めてくれや

東大が公開してるPythonプログラミング入門の例題に
https://utokyo-ipp.github.io/3/3-1.html

辞書 dic1 と文字列 str1 が引数として与えられたとき、 以下のように dic1 を変更する関数 handle_collision を作成してください。 ただし、dic1 のキーは整数、キーに対応する値は文字列を要素とするリストとします。
dic1 に str1 の長さ n がキーとして登録されていない場合、str1 のみを要素とするリスト ls を作成し、 dic1 にキー n、n に対応する値 ls を登録します。
dic1 に str1 の長さ n がキーとして登録されている場合、そのキーに対応する値(リスト)に str1 を追加します。
以下のセルの ... のところを書き換えて handle_collision(dic1, str1) を作成してください。

def handle_collision(dic1, str1):
...

ってのがあって、その回答が
def handle_collision(dic1, str1):
if dic1.get(len(str1)) is None:
ls = [str1]
else:
ls = dic1[len(str1)]
ls.append(str1)
dic1[len(str1)] = ls
#handle_collision({3: ['ham', 'egg'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken']}, 'tea')

だったんだよ
2021/10/23(土) 05:08:31.39ID:n7GT2TeK
で、このコード実行すると

dic1_orig = {3: ['ham', 'egg'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken']}
handle_collision(dic1_orig, 'tea')

{3: ['ham', 'egg', 'tea'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken']}

これになるんだけど、'tea'以外のやついれたらどうなるのかな、って試してみたら

handle_collision(dic1_orig, 'pp')
{3: ['ham', 'egg'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken'], 2: ['pp']}
って 2のキーが最後尾に追加されてなんかモヤったからキーを順序どおりの並びにするにはどうすんのかな、って思ったわけ
2021/10/23(土) 07:39:54.83ID:uHOK1QLC
1. str1 の長さ n がキーとして登録されていない場合は、追加
2. str1 の長さ n がキーとして登録されている場合は、更新

存在しなければ追加・存在すれば更新は、データベースでも、よくある処理

そりゃ、2文字は登録されていないから、追加される。
2: ['pp']
278277
垢版 |
2021/10/23(土) 07:45:14.89ID:uHOK1QLC
一般的には、辞書・集合には順序がない。
まれに、辞書・集合へ追加した順番を、記憶している言語もある

だから、順序よく並べたいなら、ソートする
2021/10/23(土) 11:44:43.09ID:Y/CMfyXG
https://lite.blogos.com/article/565782/
2021/10/23(土) 11:51:35.15ID:qhVW7VS5
>>275
お、おう、すまんかった
表示する時にきれいに並べたいだけならpretty printで

from pprint import pprint
pprint(dic)

3.7以降の辞書は挿入順で並んでることが保証されてるんだけど
表示目的のためだけに新しい辞書を作成して挿入しなおして並び替えることは普通やらない

同じ並び替えを何度も繰り返し実行しないといけない場合なら無駄ではないんだけど
その場合は他のデータ構造を使ったほうがいい可能性が高いので
わざわさ並べ直した辞書が欲しい用途ってなんだろうと思って聞いてみた
281デフォルトの名無しさん
垢版 |
2021/10/23(土) 12:26:09.46ID:VN/PPZMZ
教えてください

「keyerrorがでるけどどこがだめなのかわからない」 https://teratail.com/questions/365802?sip=n0070000_019&;uid=199109 #teratail #python
2021/10/23(土) 12:32:34.22ID:n7GT2TeK
>>280
なるほど

いちいち関数の中で並び替えしてたら時間かかるとか実際に使う場面では必要ないとかそういう事なのかな
pprint()で出力すれば良いってのは参考になった
ありがとう
2021/10/23(土) 12:41:34.85ID:qhVW7VS5
>>281
KeyError: 'びわこ'
2021/10/23(土) 12:51:17.61ID:+0P0mc8U
>>281
dict_stadiumに'琵琶湖'はあっても'びわこ'はない
2021/10/23(土) 13:19:57.09ID:DsNdyrVS
テラタよりこっちのが回答早いのか
2021/10/23(土) 17:01:23.55ID:TEk5cWky
re.complie(パターン)
complie済みのパターンが複数ある場合
パターン同士を結合するのってどうやるのでしょうか?
2021/10/23(土) 18:18:18.96ID:skaucHgA
Djangoを始めました
view.pyの中にある変数の中身を確認したいですが方法が分かりません
デバッグ方法はちゃんと分かってませんが一応環境は作りました
見たいのはDjangoチュートリアルにもあるlatest_question_list = Question.objects.order_by('-pub_date')[:5]
の中身です

エディターはvscodeです
2021/10/23(土) 18:45:21.20ID:skaucHgA
>>287
すみませんこれ出来ました
ブレークポイントを次の行に作って見たい変数にカーソルホバーさせたら見れました
2021/10/23(土) 21:09:29.62ID:qhVW7VS5
>>286
.patternでパターン文字列に一度戻ってから
パターン同士を結合して再度コンパイル
直接結合するAPIは用意されてないと思う
2021/10/23(土) 21:54:12.92ID:uHOK1QLC
Ruby なら、Regexp.union でパターンを、OR で合成できる

p Regexp.union(/a/, "*") # => /(?-mix:a)|\*/

p Regexp.union(/a/, /b/, /c/) # => /(?-mix:a)|(?-mix:b)|(?-mix:c)/

arr = [/a/, /b/, /c/]
p Regexp.union(arr) # => /(?-mix:a)|(?-mix:b)|(?-mix:c)/
291デフォルトの名無しさん
垢版 |
2021/10/23(土) 23:19:51.40ID:oBaQvszz
ルビキチってどこにでも涌くのな
2021/10/24(日) 09:17:16.16ID:ju8sH4Lg
この板の外にも湧いてるんだぞ
2021/10/24(日) 12:57:50.65ID:nICPJrT1
>>289
ありがとうございますパターンが取れました

ptn1 = re.compile("\.gif$").pattern
ptn2 = re.compile("\.jpg$|\.png$",re.IGNORECASE).pattern

ptn2が
"\.jpg$|\.JPG$|\.png$|\.PNG$"
な感じだったらよかったんですけどね
re.compile(ptn1+"|"+ptn2,re.IGNORECASE)
だと
"\.gif$|\.GIF$|\.jpg$|\.JPG$|\.png$|\.PNG$"
と同等?になってしまうので
2021/10/24(日) 13:06:47.73ID:nICPJrT1
改めてぐぐってみると
そもそもフラグの記述はいろいろあるみたいですね >>293
(?フラグ:パターン)
これなら基本は文字列でもcompile済でもどちらでもいい気がしました

ptns = ["\.gif$","(?i:\.jpg$|\.png$)"]
ptn = re.compile("|".join(ptns))
2021/10/24(日) 14:04:30.70ID:9GD27ADQ
>>293
> ptn2が
> "\.jpg$|\.JPG$|\.png$|\.PNG$"
> な感じだったらよかったんですけどね
それだと .Jpg とかがヒットしなくなる
2021/10/24(日) 15:34:01.95ID:dQwbGYLm
Ruby で、漏れは自分で関数を作っている
拡張子を小文字に変換してから、それが配列内にあるかどうか

ただし、jxr はブラウザで表示できない

ary = %w(png jpg jpeg gif webp) # 画像の拡張子

extname = "JPeg"
extname.downcase! # 小文字へ変換する

p ary.include? extname # 含まれている?
#=> true
2021/10/24(日) 16:09:48.63ID:nICPJrT1
>>295
たしかに
>>293は、大文字小文字区別つかないすべてのパターンの意味でした
2021/10/24(日) 18:40:19.51ID:ugUepsfY
vscodeでdjangoやってます
views.pyでrenderの第2引数に指定したhtmlやreverseの第1引数のアプリ名:urlネームに書いてあるその場所にGo toしたいのですが方法ありますか?

djangoに限らずpath書いてないとgo to definitionできない感じですか?
2021/10/25(月) 17:14:48.98ID:MOhV5cOT
class hoge:
_items = []
_def each(self,callback=None):
__res=[]
___argcount=callback.__code__.co_argcount
__if _argcount==1:
___for item in self.items:
____res.append(callback(item))
__elif _argcount==2:
___for i,item in enumerate(self.items):
____res.append(callback(i,item))
__return res

h=hoge()
h.items = ["a","b","c"]
print( h.each(lambda item: "_"+str(item)) )
print( h.each(lambda i,item: str(i)+"_"+str(item)) )
#['_a', '_b', '_c']
#['0_a', '1_b', '2_c']

callbackでindexも取りたいので↑のように書いたのですが
こうするしかないのでしょうか?
今は引数は、(item)と(i,item)しかとりませんが
仮にcallback内でitemやindexとは別の何か引数を引き継ぎたくなったという場合
どう拡張していけばいいのかな、と思いました
2021/10/25(月) 18:13:43.66ID:YeRcjGgP
*argsとか**kwargsで可変長の引数を取るようにすればいい、とかそういう話か?
2021/10/25(月) 19:23:30.01ID:MOhV5cOT
>>300
すこし違います
*指定だとインスタンス側でcallbackを書くときに
常にcallback(*arg)とか、callback(**kwards)とかを書かなければならない気がします
>>299の例の場合
each対象はself.itemsなのでcallbackの中身を書くときの引数は
callback(ここでの引数名はitemsに入る値に関係する名前)
にしたいのです

299の例だと拡張されたのはインデックスのみなので、
インデックスが欲しいかほしくないかに関わらずインデックスを取ることにすると
class hoge:
_items = []
_def each(self,callback=None):
__res=[]
__for i,item in enumerate(self.items):
___res.append(callback(item,i))#itemの方が使用頻度高いので引数を逆に渡す
__return res
h=hoge()
h.items = ["a","b","c"]
print( h.each(lambda item: "_"+str(item)) )#エラー
print( h.each(lambda item,i: str(i)+"_"+str(item)) )
と書けると思いましたが
無い引数を渡すとエラーが出てしまいました

この辺の慣習とかあるのか、そもそもそんなことしなくてもいい(継承できるようなテクニックがある)のか
というのがわからないので
iを使わない場合も、callback(i,item)と書けばいいのでは?とか
index情報を持ったitemオブジェクトを返却して、item.itemでitem取得
みたいな方法は保留してます

今考えているのは
callback.__code__.co_varnames[:callback.__code__.co_argcount]
使ってみたりの条件分岐です
2021/10/25(月) 20:51:56.35ID:LSRIz4jp
リスト内包表記で得られたリスト
[’金額¥150’,’金額¥222’,’’,’’,’金額¥0’,’金額¥465’]のうち、’’を’金額¥0’に置換するにはどのようにしたらいいですか?

[money.replace("","¥0") for money in moneys]ではだめでした。
303デフォルトの名無しさん
垢版 |
2021/10/25(月) 21:10:11.44ID:utaK2F0U
>>302
>>> ['金額¥0' if money == '' else money for money in moneys ]
['金額¥150', '金額¥222', '金額¥0', '金額¥0', '金額\0', '金額\465']


ていうか、動くコード貼れよ
304デフォルトの名無しさん
垢版 |
2021/10/25(月) 21:43:12.61ID:i1JdqDPj
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw

在日朝鮮人は強姦と窃盗してる犯罪者!
在日朝鮮人は皆殺しにすべし!
2021/10/25(月) 22:45:53.76ID:sv7Zp2+/
>>301
コールバック関数のシグニチャが違えば違うAPIを用意するのが普通
Pythonに限らずJS以外の言語ではそれが普通だと思う
Rubyで言うeachとeach_with_index

HogeをIterableにして
print([f”_{item}” for item in hoge]) や
print([f”{i}_{item}” for i, item in enumerate(hoge)]) することのほうがPythonでは多いと思う
2021/10/26(火) 18:26:21.05ID:58PW1UcQ
javascriptに限った話じゃないんだけど、
Max Retry、っていったら純粋に"リトライ"の回数でカウントする?それとも総実行回数を指す?
MaxRetry=5なら
初回の1回含めて最大6回やるのか、5回なのか。
なんか気になって。
2021/10/26(火) 18:34:57.12ID:qzAOjqD0
そんな名前絶対につけないけど、その名前なら6回でしょ
2021/10/26(火) 19:14:57.68ID:BNqSw8pO
最初の試行は"Re"tryじゃないから6回だわな
2021/10/27(水) 13:56:39.52ID:0D9sPP+O
???????????????????
?????????????????????????????
310デフォルトの名無しさん
垢版 |
2021/10/27(水) 16:50:18.70ID:rwCBpLuv
pyodbcの接続時にスキーマまで指定する方法ありませんか
接続文字列に入れてもエラーになってしまいます
2021/10/27(水) 18:14:05.36ID:CtZ0vCqQ
変数の名付けでちょうど良い具合がわからない

たとえば文字列の長さの変数をstr1_wordlengthとしたんだけど
---------------------
str1 = 'apple'
str1_wordlength = len(str1) # 5
#文字列と文字数を格納する辞書dic1をつくる
dic1 = {str1_wordlength: str1} # {5: 'apple'}
---------------------
「str1_wordlength ならたぶん意味が通じると思うけど長過ぎじゃね? 毎回これ書くのか?」とも思うし
この変数「名付けするの面倒だからいっそ a でいいんじゃね?」とも思うし
「そもそも変数作る必要あるか? len(str1)は変数名より短いじゃん?」とも思うし

練習問題やってるうちはぶっちゃけ何でも良いと思うんだが
後々を考えるとどうしたらいいんだろうな、と
312デフォルトの名無しさん
垢版 |
2021/10/27(水) 18:15:13.83ID:sQbCpqyG
>>310
DSN側で設定しておくんじゃない?

https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-databases
ここのDB別の文書読んでみて
2021/10/28(木) 02:31:25.25ID:bnoFQANv
strの特殊メソッドつかったらprintにも反応するんですね・・
class pr:
_value="aa"
_def __str__(self):
__return self.value+"bb"
p=pr()
print(p)

def __str__の中にエラー処理いれてたらprintでエラー引っかかっていて
気づくのに時間かかりました・・
2021/10/28(木) 04:45:57.20ID:Nbft1WLw
PythonやDjangoでオススメの本ありますか?
2021/10/28(木) 06:56:16.71ID:dSweiYMb
特殊メソッドは使わんほうが無難
ていうかPythonはクラス自体使わない方がいい
昔ながらの構造化言語としてシンプルに使うのがベスト
2021/10/28(木) 07:27:59.28ID:p07hGs8T
データを構造化するためにclassを使うだろ
2021/10/28(木) 07:52:44.16ID:xUl7Twuj
今どきクラス使うなとか言うアホは放置で
2021/10/28(木) 08:10:34.09ID:X05RtFia
関数間で状態を保持するときにのみクラスは有効
319デフォルトの名無しさん
垢版 |
2021/10/28(木) 10:18:44.69ID:MKFZM1zj
>>312
結果的にはファイルdnsで出来ますた
2021/10/28(木) 12:42:04.06ID:RV1LSDaq
PythonでマイクロソフトAccessをDBとして使う実例は多いけど、単にAccessをマクロ起動かける例が無いんです
誰か成功した人は居ますか?
321デフォルトの名無しさん
垢版 |
2021/10/28(木) 12:56:15.77ID:XVuwIiyB
Access側のマクロのエントリポイント用の関数を造っておく
pywin32でその関数を呼ぶ
2021/10/28(木) 13:09:38.96ID:XVuwIiyB
https://stackoverflow.com/questions/32653792/python-code-for-running-ms-access-module-subroutine
2021/10/28(木) 13:19:37.36ID:RV1LSDaq
>>321,322
ありがとうございました。
これで実行してみます。
2021/10/28(木) 14:14:58.06
from datetime import datetime
now=str(datetime.now())
#2021-10-28 05:12:03.857881
#この文字列を、datetime型に変換したい
_at=now.split(" ")
_at[0]=_at[0].split("-")
_at[1]=_at[1].split(":")
print( datetime(int(_at[0][0]),int(_at[0][1]),int(_at[0][2]),int(_at[1][0]),int(_at[1][1]),int(float(_at[1][2].split("+")[0])) ) )

としたのですがこれってスマートなやり方ではないですよね・・?
ようはstr(datetime)でフォーマットが決まってるのだから、もっと簡単にその文字列からdatetime型に変換できたらいいのに
と思うのですが・・
2021/10/28(木) 14:17:08.33ID:Fr3tDLQH
>>324
ほれ
https://qiita.com/shibainurou/items/0b0f8b0233c45fc163cd
2021/10/28(木) 14:17:55.41ID:JRDKMzLv
datetime.fromisoformat
2021/10/28(木) 16:09:10.81
>>325
いえ・・そういうことじゃないんです
それだと指定子を選定する作業が出てくるかもしれないので・・

>>326
うおおおおおおあったんですね ありがとうございます!!!
from datetime import datetime
now=datetime.now()
print(str(now))
str2dt=datetime.fromisoformat(str(now))
print(now==str2dt)#True

できました!!!
2021/10/28(木) 17:41:33.23ID:Nbft1WLw
>>314
これなんですけどvenvを推奨していてdjangoのことも書かれているpythonの本です
名前を忘れました
誰か分かりませんか?
2021/10/28(木) 17:46:38.21ID:IFkzxSt8
テキストとかだと
list = [0]*10 は [0,0,0,0,0,0,0,0,0,0] になるから初期値作るのに使えるぞ
とか書いてあるのに

list1 = [[0,0,0]]*3
list2 = [[0,0,0],[0,0,0],[0,0,0]]
list3 = [[0,0,0]] + [[0,0,0]] + [[0,0,0]]

print(list1 == list2)
print(list2 == list3)
--------------------
True
True

この結果は両方Trueなんだけど

list1[0][0] = 1
list2[0][0] = 1
list3[0][0] = 1
print(list1)
print(list2)
print(list3)
--------------------------------
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]

こうなるのって結構罠じゃね?
2021/10/28(木) 17:54:29.27ID:Mv6YjZts
listのコピーはcopyでやれ定期やね
2021/10/28(木) 17:54:51.49ID:Nbft1WLw
>>329
この話題無限に出るな
それだけ分かりにくい所だし何度でもすればいいと思うけど
2021/10/28(木) 20:34:34.97ID:o6HAoERy
https://gist.github.com/srndpty/43c76d74188884f25716f25a44ef0818
だれか、これpythonに翻訳して。
333デフォルトの名無しさん
垢版 |
2021/10/28(木) 21:08:20.17ID:WnlLUDNQ
os.walkで一発だろ。
2021/10/28(木) 21:20:53.36ID:3jEWrZM3
django2.2、vscode、venvでプロジェクト作りました
models.py

from django import models

Import "django.utils" could not be resolved from source Pylance
とエラーになります

解決策ありますか?

因みにdjango3.2で作ったプロジェクトではエラーでませんがpythonインタープリターがPython3.9.7 64-bit ('mysite': venv) ./mysite/bin/pythonとなってます

2.2でのプロジェクトではPython 3.9.7 64-bit /opt/homebrew/bin/python3となってます
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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