◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

【まず1嫁】くだすれPython(超初心者用) その57 YouTube動画>3本 ->画像>9枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1653225908/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん
2022/05/22(日) 22:25:08.74ID:/hGmbW/Z
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合★は、
  表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。

Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
https://techiedelight.com/compiler/  Run Code機能あり。
http://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
http://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
http://pastebin.com/     まずまずシンプル。
http://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式◇ http://www.python.org/
◇まとめwiki◇ http://python.rdy.jp/wiki.cgi

〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その56
http://2chb.net/r/tech/1640536690/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
2デフォルトの名無しさん
2022/05/22(日) 22:37:38.56ID:jNpDIIz5
立て乙
3デフォルトの名無しさん
2022/05/24(火) 13:49:28.09ID:cQhl8P2i
かわいい女の子に上目遣いで拗ねたように「いじわる」と言われると興奮するんです
4デフォルトの名無しさん
2022/06/05(日) 08:46:24.02ID:Sg+yaBaV
pandasについての質問です。
"PRICE1","PRICE2","PRICE3","P1(%)","P2(%)","P3(%)"の順にデータが入ってるとします。
下記みたいな感じです。
@[0,0,2470,0,0,27] ○
A[0,0,1570,0,0,0] ☓
B[0,1580,1440,0,35,31] ○
C[0,1290,2878,0,0,31] ☓
D[2522,885,940,31,0,0] ☓
E[1527,1057,1639,28,5,31] ☓
F[1527,1457,1639,28,26,31] ○
○をつけたデータが残したいデータになります。
@AのようにPRICE>0のPRICEデータが1つの場合は、該当するP(%)データが25より大きい場合に残したいです。
BCのようにPRICE>0のPRICEデータが2つの場合は、該当するP(%)データがどちらも20より大きい場合に残したいです。
DEFのようにPRICE>0のPRICEデータが3つの場合は、該当するP(%)データがどちらも15より大きい場合に残したいです。

調べたら下記のような感じでやっていくことがわかったのですが、思うように整理できません。
df = pd.read_sql(sql=f'SELECT "PRICE1","PRICE2","PRICE3","P1(%)","P2(%)","P3(%)" FROM {schema}."{get_table}";', con=conn)
df = df[(df["PRICE1"]>0) | (df["PRICE2"]>0) | (df["PRICE3"]>0) | (df["P1(%)"]>25) | (df["P1(%)"]>25) | (df["P1(%)"]>25)]
df = [tuple(x) for x in df.values]
誰か助けてくだしあ
5デフォルトの名無しさん
2022/06/05(日) 11:40:11.32ID:ocueg4o5
よーしらんが、論理回路の問題なんだろ?
なら一時的にif(if(if))みたいなネストの深いクソコード書いて、細かくデバック通すか
関数宣言をさぼらずに、(df["PRICE1"]>0)や(df["P1(%)"]>25)に分かりやすい関数名付けたほうがいいんじゃねえかな
6デフォルトの名無しさん
2022/06/05(日) 12:23:41.62ID:NOI2DZIw
datetime.datetimeクラスの順序比較に手を加えたくなって、モジュールのソースをみたら_cmp()メソッドが比較の本体だったので
https://techiedelight.com/compiler/?zbRJ というコードで試したのですが、そもそも_cmp()が呼ばれません
これって、私は何を間違えているのでしょう? (なお、当初やりたかったこと自体は__eq__, __gt__, __ge__, __le__, __lt__, __ne__を直接オーバーライドすることで達成できました)
7デフォルトの名無しさん
2022/06/05(日) 12:40:05.08ID:u0j22vIZ
条件に合うものを残すより
条件に合わないものを消していく方が効率が良い
8デフォルトの名無しさん
2022/06/05(日) 12:44:51.80ID:u0j22vIZ
>>6
https://qiita.com/nkennek/items/8c54365cb873cca8730a
https://www.delftstack.com/ja/howto/python/python-private-method/
https://blowup-bbs.com/python-class3/
9デフォルトの名無しさん
2022/06/05(日) 14:26:03.02ID:NOI2DZIw
>>8
お返事ありがとうございます
しかし、_cmpのアンダースコアは一つですし、AttributeErrorが発生したりせず単に呼ばれないだけ(比較自体は出来ているので親クラスの_cmp()が呼ばれているはず)です
マングル化に関するページをご紹介いただいた意味がよく分かりません
10デフォルトの名無しさん
2022/06/05(日) 14:57:15.34ID:ocueg4o5
def もれそう(arg1, arg2, arg3, arg4, arg5, arg6):
__うんこ = [arg1, arg2, arg3]
__おもさ = [arg4, arg5, arg6]
__def 内容量(element):
____return len(list(filter(lambda x: x > 0, element)))
__def 耐久力(element, n):
____return list(filter(lambda x: x > n, element))

__if 内容量(うんこ) == 1:
____return 耐久力(おもさ, 25)
__elif 内容量(うんこ) == 2:
____return 耐久力(おもさ, 20)
__elif 内容量(うんこ) == 3:
____return 耐久力(おもさ, 15)

df = もれそう(茶色1,茶色2,茶色3,重量1, 重量2, 重量3)
pandasのことよー知らんから>>5で適当なこと書いちゃったけど、こういうことだよな
どっかで関数一覧に目を通すなりして、array関数とかcallback関数の使い方覚えたほうがいいぞ
11デフォルトの名無しさん
2022/06/05(日) 15:01:54.57ID:v/p+BagL
>>4
sqlでの抽出は知らんけど、他の方法で抽出でけた

import pandas as pd
data=[
  [0,0,2470,0,0,27],
  [0,0,1570,0,0,0],
  [0,1580,1440,0,35,31],
  [0,1290,2878,0,0,31],
  [2522,885,940,31,0,0],
  [1527,1057,1639,28,5,31],
  [1527,1457,1639,28,26,31]]

df = pd.DataFrame(data)
def check(row):
  d = {1:25, 2:20, 3:15}
  return all(i[1] > d[len(row)] for i in row)

# 各PRICEと各P(%)の組をzipで作って、その中からPRICEがゼロのものを削除したものをcheck関数でチェック
[check([k for k in j if k[0]>0]) for j in [list(zip(i[:3], i[3:])) for i in df.values.tolist()]]
[True, False, True, False, False, False, True] # ブールインデックス作成

df2 = df[_] # ブールインデックスで抽出
df2.values.tolist()
[[0, 0, 2470, 0, 0, 27], [0, 1580, 1440, 0, 35, 31], [1527, 1457, 1639, 28, 26, 31]]
12デフォルトの名無しさん
2022/06/05(日) 15:18:41.40ID:v/p+BagL
プロンプトが無くて入力と出力が分かりにくかったので、プロンプト追加

>>>import pandas as pd
>>>data=[
・・・  [0,0,2470,0,0,27],
・・・  [0,0,1570,0,0,0],
・・・  [0,1580,1440,0,35,31],
・・・  [0,1290,2878,0,0,31],
・・・  [2522,885,940,31,0,0],
・・・  [1527,1057,1639,28,5,31],
・・・  [1527,1457,1639,28,26,31]]

>>>df = pd.DataFrame(data)
>>>def check(row):
・・・  d = {1:25, 2:20, 3:15}
・・・  return all(i[1] > d[len(row)] for i in row)

# 各PRICEと各P(%)の組をzipで作って、その中からPRICEがゼロのものを削除したものをcheck関数でチェック
>>>[check([k for k in j if k[0]>0]) for j in [list(zip(i[:3], i[3:])) for i in df.values.tolist()]]
[True, False, True, False, False, False, True] # ブールインデックス作成

>>>df2 = df[_] # ブールインデックスで抽出
>>>df2.values.tolist()
[[0, 0, 2470, 0, 0, 27], [0, 1580, 1440, 0, 35, 31], [1527, 1457, 1639, 28, 26, 31]]
13デフォルトの名無しさん
2022/06/05(日) 15:20:27.82ID:joAjo/JZ
>>5>>10>>11
ありがとうございます!
家帰ったら内容目通していじってみます
14デフォルトの名無しさん
2022/06/05(日) 15:21:54.55ID:joAjo/JZ
>>12
正直かなり助かりました。
まだ家帰れてないので試せてないけど、かなり行けそうなイメージです
15デフォルトの名無しさん
2022/06/05(日) 15:24:04.14ID:udiiYXiV
>>9
>親クラスの_cmp()が呼ばれているはず

確かめた?
16デフォルトの名無しさん
2022/06/05(日) 15:33:26.33ID:NOI2DZIw
>>15
お返事ありがとうございます。親クラスのメソッドが呼び出されていることを実際にどう確認すればいいのか思いつけないレベルです(デバッガ? トレース?)
ただ単に、例外が送出されずに比較結果が表示されたので、何らかの比較するメソッドが呼ばれたのだろうと想像しただけです

例えば、foo <= datetime.datetime.max が評価されるとき

1) foo.__le__(datetime.datetime.max) が呼ばれる
2) fooには__le__メソッドが定義されていないので親クラスに遡って datetime.datetime.__le__(self=foo, other=datetime.datetime.max) が呼ばれる
3) https://github.com/python/cpython/blob/main/Lib/datetime.py の2110行 self._cmp(other) へ進む
 ここでself=foo, other=datetime.datetime.max なので、 foo._cmp(other=datetime.datetime.max) と、 https://techiedelight.com/compiler/?zbRJ の4行目で定義したメソッドが呼ばれる

と考えていたのですが……継承に関する理解がどっかで間違っているのでしょうね
17デフォルトの名無しさん
2022/06/05(日) 15:56:02.34ID:U0Dsg58D
俺も気になる。何で_cmp呼ばれんの?
18デフォルトの名無しさん
2022/06/05(日) 18:26:33.72ID:NPpCVuaP
foo を造ってるのが now() なので
foo の型が datetime のままなんじゃね
19デフォルトの名無しさん
2022/06/05(日) 19:36:27.49ID:NPpCVuaP
print(super(DatetimeTest, self)._cmp)

AttributeError: 'super' object has no attribute '_cmp'
20デフォルトの名無しさん
2022/06/05(日) 19:37:47.11ID:NPpCVuaP
こっちは動く
https://techiedelight.com/compiler/?Jmnq
21デフォルトの名無しさん
2022/06/05(日) 19:39:44.56ID:v/p+BagL
>>12
allの引数が空の場合(全てのPRICEがゼロの場合)にTrueを返すのでcheck関数修正

def check(row):
  d = {1:25, 2:20, 3:15}
  return all(i[1] > d[len(row)] for i in row) if row else False
22デフォルトの名無しさん
2022/06/05(日) 20:20:03.24ID:x6+Exssm
ジェネレーター式まで学習が進んだが
ちゃんと慣れないと突然でてきたとき「なんだこれ!?」ってなるとおもうわ

見やすくするためのものだからそんな複雑な構造で出てくることはないと思うが
23デフォルトの名無しさん
2022/06/05(日) 21:55:46.01ID:NOI2DZIw
ID:NPpCVuaPさん、ありがとうございます

> foo を造ってるのが now() なので
> foo の型が datetime のままなんじゃね
type(foo)はちゃんと"<class '__main__.DatetimeTest'>"になっていましたので、その線は無さそうです

で、試していただいた https://techiedelight.com/compiler/?Jmnq ですと、>>16で私が考えたとおりの動作をしているように見えますね
となると、datetime.datetimeとHogeで何が違うのか……ちょっと脳味噌が煮えてきたので、一旦専ブラを閉じて頭を冷やします
24デフォルトの名無しさん
2022/06/05(日) 23:10:11.97ID:v/p+BagL
>>23
dirで_cmpが見えるか見えないかの違いじゃないでしょうか

>>20 のdir(Hoge(0)), dir(Fuga(0))は伴に_cmpが見えますが
dir(datetime.datetime.now())は_cmpが表示されないのでアクセスできないんですよ
25デフォルトの名無しさん
2022/06/06(月) 08:54:18.93ID:9r9DwyjN
見えないのはわかったけどその挙動を実現するための言語仕様ってあるんだっけ?
26デフォルトの名無しさん
2022/06/06(月) 09:18:43.10ID:Ug3DHjCK
本体はこっちじゃね
https://github.com/python/cpython/blob/main/Modules/_datetimemodule.c
27デフォルトの名無しさん
2022/06/06(月) 09:23:35.02ID:Ug3DHjCK
まずやるべきことは >15 だろ
28デフォルトの名無しさん
2022/06/06(月) 09:43:37.49ID:zYl8ARh2
やりましたみなさん、分かりました!

datetime.pyの最後のにfrom _datetime import *をtryする記述があり
成功したら_cmpなどを消す処理が書いてあるんですが、この_datetimeをimportする関連個所を
ごっそりコメントアウトして

import datetime
dir(datetime.datetime.now())

したら_cmpが表示されましたよ、つまりdatetimeの本体は_datetimeで>>26のヤツじゃないでしょうか
296, 9, 16, 23
2022/06/06(月) 09:50:52.59ID:PsDk58Y7
>>24
お返事ありがとうございます
呼べないのはDatetimeTest._cmp()であってdatetime.datetime._cmp()は呼べている(ように見える)わけですから
datetime.datetime._cmpが見えないことに意味があるのかどうか……一晩経っても脳が煮えたままです
ちなみにdir(foo)だと_cmpが見えてますね……

>>26-28
とりあえず知識もスキルもないなりに手を動かそうと思って、 https://techiedelight.com/compiler/?zbRJ のimport datetimeの位置に
datetimeモジュールのソースをそのまま全部貼り付けてあれこれ試したところ(そのコードはでかいしTECHIE DELIGHTの利用規約的にクリアかどうか分からないのでアップしません)
https://github.com/python/cpython/blob/main/Lib/datetime.py の最後、2614行目以降が無ければ>>16で私が考えたとおりの動作になる、つまりfoo._cmp()が呼ばれますが、2614行目以降がそのままだと呼ばれませんでした

ということで、遅ればせながら>>28さんと同じ結果に辿り着けました
Cで書かれたモジュールを読み込んで、未使用の名前を削除して、という工程の中になにかありそう、というあたりが今のところ私の限界です
30デフォルトの名無しさん
2022/06/06(月) 09:54:12.32ID:Ug3DHjCK
なるほど _cmp は存在しなかったで FA
31デフォルトの名無しさん
2022/06/06(月) 09:54:13.01ID:PsDk58Y7
皆さまいろいろとありがとうございます
やはり>>27さんのおっしゃるとおり、まず>>15さんの指摘を確かめなければならなかったようですね
32デフォルトの名無しさん
2022/06/06(月) 09:56:28.25ID:9r9DwyjN
>>28
まじか
グローバルにも_cmpがあるからそれを消すためのコードと思いきや、datetime.datetime._cmpも消えるのね…
33デフォルトの名無しさん
2022/06/06(月) 10:03:42.68ID:Ug3DHjCK
>>29
そこで削除されてる _cmp は module のグローバルの _cmp であって
各クラス内の _cmp は削除されてないようにも観える
34デフォルトの名無しさん
2022/06/06(月) 10:05:27.81ID:Ug3DHjCK
>>32
かぶったが
解せぬ
35デフォルトの名無しさん
2022/06/06(月) 10:13:54.31ID:zYl8ARh2
>>32
グローバルの_cmpを消す処理で合ってると思いますよ

通常は _datetime (たぶん本体がC言語)をimportする、この中にはself._cmpが無いのでdirで見えないし
グローバルの_cmpを消す処理でグローバルの方も見えない

_datetimeのimportに失敗したらdatetime.pyに書かれているdatetimeクラスが使われるし
グローバルの_cmpを消す処理が実行されないので
dir(datetime)でグローバルの_cmpが見えるし、dir(datetime.datetime)でself._cmpが見える
36デフォルトの名無しさん
2022/06/07(火) 17:25:02.03ID:NE4LVa9l
なんのための fake
37デフォルトの名無しさん
2022/06/08(水) 06:15:05.14ID:8a3xVi5I
python 2.x 系の環境です。
file_path を関連付けで実行させるために下記コードを記述しました。
目的としては引数の文字列を unicode として渡したいです。

subprocess.Popen(「'start', file_path], shell=True)

この際、引数は cp932 として扱われるようで、
file_path を cp932 にencode しないと失敗します。
unicode にしかない文字が含まれる場合があるので
unicode のまま渡したいのですが
Popen 側で引数を unicode として受け取れる方法はありますか?

encoding= は Python 2.x は未対応、
またパイプを使って chcp 65001 を先に実行させてもダメでした。
3837
2022/06/08(水) 07:56:30.16ID:Ty02xZw9
win環境なのですが2.x系では内部で
ANSI版のCreateProcessAを呼び出しているとのことで
そもそもダメということが分かりました
ctypesなど使ってCreateProcessWを直接呼び出すなどするしかないみたいです
39デフォルトの名無しさん
2022/06/08(水) 12:41:12.70ID:P10Nnex8
今のWindowsおすすめpython環境はなんですか?
教育用?にWindowsでのpython環境を作りたいです。
無印python、anaconda、PyCharmはどれがいいでしょうか。
エディタはVSCodeの利用を考えてます。

自分は普段、LinuxやWSL2でemacsを使っているオールドタイプです。

教えて下さい
40デフォルトの名無しさん
2022/06/08(水) 13:17:16.31ID:Ylodbyzl
google colaboratry で十分
41デフォルトの名無しさん
2022/06/08(水) 13:42:31.40ID:rPUwIz8x
たとえば以下のようなリストが即興で欲しくなった場合ってどうしてます?
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]…………]
(下の例では0~12まで)
ググった結果numpyで配列を作ってtolistでリスト化する方法は見つけたんですけど
もっとぱっと書けないですかね?

import as numpy np
arr_2d = np.arange(12).reshape((4, 3))
print(arr_2d.tolist())
42デフォルトの名無しさん
2022/06/08(水) 13:43:05.22ID:rPUwIz8x
0~12じゃねえわ11だった
43デフォルトの名無しさん
2022/06/08(水) 15:41:41.08ID:Mk/J73jd
>>39
前は素の python 入れて pip してた
Anaconda + conda 使ったこともある
Thonny + pip も良いと思う
44デフォルトの名無しさん
2022/06/08(水) 15:45:15.80ID:Mk/J73jd
np.arange(12).reshape((4, 3)).tolist()

[[y * 3 + x for x in range(3)] for y in range(4)]
45デフォルトの名無しさん
2022/06/08(水) 15:50:39.30ID:WqwdOMp+
>>41
[list(range(i, i+3)) for i in range(12)[::3]]
46デフォルトの名無しさん
2022/06/08(水) 15:55:39.94ID:SMHvnx3K
import more_itertools
list(more_itertools.chunked(range(12), 3))
47デフォルトの名無しさん
2022/06/08(水) 16:25:32.81ID:KT22GtKj
[np.array([0, 1, 2]) + 3*_ for _ in range(4)]
48デフォルトの名無しさん
2022/06/08(水) 18:22:00.06ID:WqwdOMp+
>>41 さらに短くできた
[list(range(i, i+3)) for i in range(0,12,3)]

もう出尽くしたやろ、ワイのが一番やな、組み込みのみだし直感的だし
応用もきくし、ワイが一番やろw
49デフォルトの名無しさん
2022/06/08(水) 18:40:08.42ID:3lPgPXCP
>>39
WinPython+VScodeが正解だぞ

anacondaは、Pythonを習得し、Pythonと外部ライブラリの境界を把握できるように
なった人のうち、anacondaを必要とする人だけが使うものだ
50デフォルトの名無しさん
2022/06/08(水) 19:34:37.02ID:nVdli+zf
>>39
Pythonで何やりたいのかわかんねーからてきとーだけど
Dockerコンテナにanacodaとvscodeが正解
51デフォルトの名無しさん
2022/06/08(水) 19:37:13.76ID:d7/kuIlk
dockerはdockerの勉強になるしwindowsだと安定しないから要らんな
52デフォルトの名無しさん
2022/06/08(水) 23:45:53.43ID:rPUwIz8x
>>44-48
ありがとう、勉強になった!
53デフォルトの名無しさん
2022/06/09(木) 03:35:46.64ID:aPNi5OBU
pythonのライブラリを調べているのですが
C言語で書かれている部分(cソースコード)には
どうやってたどり着けばいいのでしょうか?
例としてrandom.random()が0.0以上1.0未満の浮動小数点数を
かえしますが、どうゆう仕組みで返すのかを調べたいのです
54デフォルトの名無しさん
2022/06/09(木) 04:32:16.69ID:FzQACe2i
>>53
コンパイル済みのを一般に調べるのは無理。標準ライブラリなら例えばcpython のリポジトリから探せる。https://github.com/python/cpython
55デフォルトの名無しさん
2022/06/09(木) 05:11:23.67ID:aPNi5OBU
>>54
回答ありがとうございました
_randommodule.cまでたどりつきました
少しハードルが高いですが頑張って理解に努めようと思います。
56デフォルトの名無しさん
2022/06/09(木) 05:17:33.48ID:FzQACe2i
>>55
蛇足かもですがpython の乱数はメルセンヌツイスタというアルゴリズムなので調べてみるといいかもしれません
57デフォルトの名無しさん
2022/06/09(木) 05:44:46.90ID:aPNi5OBU
>>56
_randommodule.cの中に日本人の名前があったので
何故だろうと思いましたがメルセンヌツイスタで検索したら
つながりました。感謝です
58デフォルトの名無しさん
2022/06/09(木) 18:02:41.85ID:i3H8tE1L
>>39
公式Python+PyCharmが便利
59デフォルトの名無しさん
2022/06/09(木) 18:22:37.05ID:8SlPB6O/
教育用なら圧倒的シェアを獲得しているVSCodeの方が良いと思うよ
60デフォルトの名無しさん
2022/06/09(木) 18:36:52.52ID:ZOUr8HN/
pycharmはなぁ…
61デフォルトの名無しさん
2022/06/09(木) 22:20:46.40ID:KIKA+I2C
>>39
教育に、環境構築の手間を含められるかどうかによるかな。
純粋にプログラムとは何かを知ってもらうだけだったらcolab
Pythonスクリプトをちゃんと動かせるようになることが目標だったらWindows用のPythonかなぁ。
62デフォルトの名無しさん
2022/06/09(木) 22:22:21.55ID:1X1IjXim
ideoneでいいじゃん。
colabより高性能だよ。
公開されてしまうが。
63デフォルトの名無しさん
2022/06/09(木) 23:14:03.21ID:gzzbtW8N
そいや親戚のとこの子供が学校でPythonのプログラムやっているというのだが、
ああいうのって、どういう仕様の実行環境なんだ?

グラフや絵を描けたり、画面上のピアノの鍵盤叩くと音が出せるとか、
なにやら色々とできるようなのだが
というかpipであれこれ山盛りにされてる環境にも思える

Scratchだと思ってた
64デフォルトの名無しさん
2022/06/09(木) 23:16:22.96ID:1tSt6fQl
ideoneとColab(Jupyter)だと機能がダンチだから土俵がちがう
65デフォルトの名無しさん
2022/06/09(木) 23:20:50.91ID:1tSt6fQl
>>63
MakeCodeとかUI Flowのあたり?
ブロックプロラミングとPythonを行ったり来たりできる
66デフォルトの名無しさん
2022/06/10(金) 03:26:54.12ID:v7zmV4Lt
vscodeって途中のコードいじってると下記の折り畳み全部開いちゃうじゃん。あれ超鬱陶しい
67デフォルトの名無しさん
2022/06/10(金) 12:08:03.84ID:sFhUkWJJ
関数の引数型説明(アノテーション?)をつけるとき、intやstr等の組込み型ではなく、クラスのインスタンスの場合どのように書けばよいでしょうか
68デフォルトの名無しさん
2022/06/10(金) 12:38:18.30ID:Lq4KcKs2
https://docs.djangoproject.com/ja/3.2/intro/tutorial05/

このページの最初のコードをshellモードでやってもtimezone has no 'now'って出るんだけどなんでだよ

ついでにいうとsettings.pyでuse_tz = Falseにすると逆に日本時間になってTrueにするとUTCになる
69デフォルトの名無しさん
2022/06/10(金) 14:22:36.04ID:Lq4KcKs2
解決
from django.utils import timezone
じゃなくて from datetime import timezoneって書いてた
70デフォルトの名無しさん
2022/06/11(土) 10:31:55.75ID:yOzdOwl+
超初心者です!古いMacでも出来ますか?
71デフォルトの名無しさん
2022/06/11(土) 11:18:37.09ID:85fUpHB3
>>70
https://homepages.cwi.nl/~jack/macpython/index.html
これだとバージョン古いからMac-on-Linux化してLinux側で動かすか
リモートでもいいならWebブラウザのGoogle Colabやクラウド上のLinuxでやれる
72デフォルトの名無しさん
2022/06/11(土) 11:20:32.01ID:IHQzlSUe
>>67
例えばpandas(pd)のデータフレーム(df)なら

import pandas as pd

def some_func(df: pd.DataFrame, some_num: int = 42) -> pd.DataFrame:
 df2 = df.cooy()
 # 処理
 return df2
7367
2022/06/12(日) 06:48:37.19ID:0q70LBVd
>>72
ありがとうございます
74デフォルトの名無しさん
2022/06/12(日) 08:55:03.32ID:LQ+2P+LS
サポート期限すぎたMac使ってそう
75デフォルトの名無しさん
2022/06/12(日) 18:06:38.20ID:9B8stwi/
leetcodeの問題解いてるんだけどさ

コードをvscodeとかのエディタ上で再現しようとしてもinputはleetcode側がやってるから、コードコピペしてもうまく動かないってことか?

Input: strs = ["flower","flow","flight"]
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
# 回答をここに書いた

こういうクラスを実行する場合って

solu = Solution()
solu.longestCommonPrefix()
こんな感じにすると思うんだが、エラーが
NameError: name 'List' is not defined

とかになるんだよね
76デフォルトの名無しさん
2022/06/12(日) 18:18:33.18ID:d5yVlq+K
そのくらいはimportしろよ
77デフォルトの名無しさん
2022/06/12(日) 18:22:48.72ID:V8Tt9ICP
エラー文も読めないのか
新しいpythonならlist[str]だバカタレ
78デフォルトの名無しさん
2022/06/12(日) 18:23:08.52ID:fSdhUbKc
>>75
そこだけの話でいうと
from typing import *
だけど、問題のコードが古い
今はListをlistと書くようになったから
79デフォルトの名無しさん
2022/06/12(日) 18:42:58.91ID:w/rq6Our
nameErrorとかattributeErrorと最低限のエラーぐらい読めるようになろう
問題といてる場合じゃない
80デフォルトの名無しさん
2022/06/12(日) 19:23:48.95ID:9B8stwi/
>>78
なるほどそういうことか
ありがとう
81デフォルトの名無しさん
2022/06/17(金) 03:56:57.46ID:i0EppADi
>>1
def reverse(url): return url[::-1]
lst = [ ['=v?hc','taw/','moc.e'], ['.www','//:sp','tth'], ['but','uoy'] ]
yt = ''.join( lst[0] + lst[2] + lst[1] )
id_lst = ['MOYukLAWwkK', 'A4c_Lbwf-Jw', '0glgH5rR_po']
for id in id_lst: print( reverse( id + yt ) )
"".join("ht_t_ps://ja_.wiki_pedia.o_rg/_wiki/朝鮮神宮".split("_"))
82デフォルトの名無しさん
2022/06/17(金) 05:22:40.60ID:eircCDFG
>>1
reverse = lambda *argv: [ '//:sptth'[::-1] + url[::-1] for url in argv ]
lst_url = reverse('IPq5AyxxvpM=v?hctaw/moc.ebutuoy.www',
'0EgauYFUN8N=v?hctaw/moc.ebutuoy.www',
'48132/-/selcitra/pj.tnediserp',
'4456111984139806941/sutats/oobnolihsusta/moc.rettiwt',
'81605591320X602502201/txt/elpmis/pj.og.ldn.iakkok',
'1021=morf?15978662os/hctaw/pj.oedivocin.www',
'8xebddeeiYY=v?hctaw/moc.ebutuoy.www')
print(*lst_url, sep='\n')
83デフォルトの名無しさん
2022/06/17(金) 08:29:57.19ID:doPvN/Dz
これを三項演算子で書くことってできますかね?

if a:
if b or c:
print("1")
else:
pring("2")
84デフォルトの名無しさん
2022/06/17(金) 08:40:15.00ID:impPpfbo
インデントどこやった
85デフォルトの名無しさん
2022/06/17(金) 09:16:26.10ID:b18JcTPN
5chはインデント未対応なので
pythonコードを貼るときは
行頭インデントを全角アンダーバーで
埋めてください
86デフォルトの名無しさん
2022/06/17(金) 09:26:11.91ID:doPvN/Dz
こんなかんじです
a b c は true か falseが入る変数です

if a:
_if b or c:
__print("1")
else:
_print("2")
87デフォルトの名無しさん
2022/06/17(金) 09:35:01.18ID:nb2nCyEf
>>86
print((1 if b or c else "") if a else 2)

三項演算子ならば全ケース対応する必要がある
a and not (b or c)の場合は空文字列とした
88デフォルトの名無しさん
2022/06/17(金) 09:52:15.09ID:Ws3c1l54
回答になってないが
if not a:
__print(2)
elif b or c:
__print(1)
でよくない?
89デフォルトの名無しさん
2022/06/17(金) 12:17:47.74ID:uqpMsu92
a = True, b = False, c = Falseのケースを見落としてるのか
意図して何もしてないのかが読み手にはわからないからすごく気持ち悪い
90デフォルトの名無しさん
2022/06/17(金) 12:40:54.46ID:u2aqxJXf
テキストだと以下のようになるんだけど

# 整数(Python の int 型)の要素をもつリストを与えた場合
x = np.array([1, 2, 3])
x.dtype

結果
dtype('int64')

自分の環境だとdtype('int32')になるんだよね
これってあんまり気にしなくて良い部分?


ちなみに以下のはテキストと同じ結果になる

# 浮動小数点数(Python の float 型)の要素をもつリストを与えた場合
x = np.array([1., 2., 3.])
x.dtype

結果
dtype('float64')
91デフォルトの名無しさん
2022/06/17(金) 13:02:51.91ID:sBNVv+WO
numpyのintはC言語のlong
あなたの環境はWindowsで本はLinuxなのだろう
92デフォルトの名無しさん
2022/06/17(金) 16:24:32.82ID:G79h5Zer
>>87
無駄な改行が増えるので仕様が異なる
93デフォルトの名無しさん
2022/06/17(金) 16:26:41.62ID:G79h5Zer
>>90
OSの32/64と
pythonの32/64と
それぞれどっちが動いてるかは意識するべき
94デフォルトの名無しさん
2022/06/17(金) 17:59:15.20ID:JzEGKltv
>>93
それとは別の話なんやで
95デフォルトの名無しさん
2022/06/17(金) 19:32:27.63ID:Ta4m0XWe
>>82
'stnemugra-gnikcapnu-tut#lmth.wolflortnoc/lairotut/3/aj/gro.nohtyp.scod//:sptth'[::-1]
96デフォルトの名無しさん
2022/06/17(金) 20:07:00.23ID:IFnpw5My
jupyternotebook で実行中のセルからほかのセルを呼び出して実行できませんか?
マジックコマンドをみてもそれらしきものがないような
vbaでいえば、セルをプロシージャ、ノートブックをモジュールのように扱いたいのですが・・
97デフォルトの名無しさん
2022/06/17(金) 23:55:43.50ID:doPvN/Dz
86ですが回答ありがとうございました。

これでいけそうです
print("b") if not a else print("a") if b or c else print("c")
98デフォルトの名無しさん
2022/06/18(土) 01:17:30.65ID:lHai4Yqe
>>96
モジュール化するのはだめなんか?
インポートしたらいいじゃまいか
99デフォルトの名無しさん
2022/06/18(土) 11:02:31.05ID:0BdDrqNN
>>90
気になるなら
x = np.array([1, 2, 3], dtype=np.float32)
100デフォルトの名無しさん
2022/06/18(土) 17:19:34.23ID:AeKYwQGO
""と''の違いってある?
単に出力の違いとかじゃなくてコードを書く上での使い方の違いとか
101デフォルトの名無しさん
2022/06/18(土) 18:19:13.17ID:HiXA4239
https://pep8-ja.readthedocs.io/ja/latest/#section-11
102デフォルトの名無しさん
2022/06/18(土) 18:53:41.89ID:U2ccem7m
>>100
英語キーボードなら''のほうが楽
103デフォルトの名無しさん
2022/06/18(土) 19:06:28.02ID:H57335ve
>>98
ありがとうございます
検索すると、実行セルのipynbとは別のipynbファイルおよびセルをインポートする方法はあるのですが、
実行セルと同じipynbファイルにある別セル(例えば、実行セルの一つ上のセル)を呼び出したい
場合は、自分自身のipynbをインポートするということでしょうか?
インポートするipynbのセルすべてを実行するとあるので、素人感覚では無限ループになってしまうそうなのですが・・
呼び出される側のセルをpyファイルに出力してそのpyファイルをインポートすればいい話かもしれませんが、いちいち
pyファイルで書き出すのもなあ…と 理解が悪くてすみません
104デフォルトの名無しさん
2022/06/18(土) 19:19:37.26ID:HiXA4239
普通に関数を作るのではだめなの
105デフォルトの名無しさん
2022/06/18(土) 20:04:40.40ID:H57335ve
>>104
ありがとうございます
それでももちろんできるのですが、呼び出される側のセルを単体で実行することも多く、また同一ipynbのその他多くの
セルからも呼び出したいのです(処理が共通している 
vbaだと、publicsubプロシージャで独立させてしまえばいい話だったので同じことがしたいなと
106デフォルトの名無しさん
2022/06/18(土) 20:08:08.31ID:cOcEcivy
jupyterなんて池沼用だろ
107デフォルトの名無しさん
2022/06/18(土) 22:44:24.65ID:FjYCWDRz
blenderでpythonスクリプトを使ってキャラクターの目のまばたきの動きを制御してるんですがやってることをグラフで表すとこんな感じで

【まず1嫁】くだすれPython(超初心者用) その57 YouTube動画>3本 ->画像>9枚

yにどのくらい目を動かすかの数値が入り
xにアニメーションの経過フレーム数が入るとして
xが0のときyは0 xが3のときyは6 という条件があるものとして
それをグラフで表すと増量が一定ならば一番左のグラフのようにyが2ずつ増えるグラフになると思いますけど
これだとまばたきが毎回同じ動きになってしまうので変化をつけたいんですが
たとえば真ん中や右のグラフのようにyの数値が不規則に増えていくグラフを計算するたびに作成するみたいなことをしてまばたきの動きに変化をつけたいんですが
それに使える関数とか計算式みたいのってないですかね
108デフォルトの名無しさん
2022/06/18(土) 22:53:35.95ID:HiXA4239
この分野はド素人だが
CSSにはanimation-timing-functionってのがあって似てる
109デフォルトの名無しさん
2022/06/19(日) 09:13:37.77ID:CQcbRoeX
dictionary_one = {"a": 1, "b": 2, "c": 3}
dictionary_two = {"c": 3, "d": 4}

merged1 = {**dictionary_one, **dictionary_two}
print(merged) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

merged2 = dictionary_one | dictionary_two
print(merged2)

これの "merged1="部分と"merged2 ="部分ってやってること同じという認識でいいのかな?
110デフォルトの名無しさん
2022/06/19(日) 09:55:52.19ID:EfD69g8z
>>109
前者は遅い
111デフォルトの名無しさん
2022/06/19(日) 11:42:39.18ID:Lvzk3izZ
速度はほぼ同じ

しかし今の時代に演算子にやらせる処理じゃないな
それも論理演算子を想起するものを使うとか正気と沙汰とは思えない
Guidoも演算子推してたけどセンスが悪すぎないか?
112デフォルトの名無しさん
2022/06/19(日) 12:37:09.83ID:sa8W0ZGX
論理演算自体、集合演算と切っても切れない関係だから、まるで違和感ないな
113デフォルトの名無しさん
2022/06/19(日) 15:08:21.20ID:mFXr9uBN
dictを拡張するPEPは、setに準じた挙動にするのが目標の一つだったから、どう転んでも論理演算子のオーバーライドは外されなかっただろう
114デフォルトの名無しさん
2022/06/19(日) 15:26:32.46ID:cDaRhPWb
>>112
dictは集合演算じゃないからね
a | bで両方にkeyがある場合はsetと同じくaが採用されるならまだよかった
115デフォルトの名無しさん
2022/06/19(日) 15:37:38.06ID:V2Ko/eSH
>>113
最初は+で提案されてたんだぞ
それにsetに準じたいなら何で他の演算子は実装されないのさ?
116デフォルトの名無しさん
2022/06/19(日) 15:47:44.79ID:JUrmuEeo
https://peps.python.org/pep-0584/
こんなの追加するなよと思ってしまうけど結構面白い
117デフォルトの名無しさん
2022/06/19(日) 16:18:18.38ID:AfW1xcqK
inplaceじゃないdict.updateが欲しかっただけなのに
それをメソッドで用意できないところがPythonの限界
sort/sortedやin演算子に共通する基本的API設計の問題だから
Pythonはそういうもんだと諦めて
用意されたものを使う事だけに専念した方が精神衛生上いいよ
118デフォルトの名無しさん
2022/06/19(日) 16:34:05.36ID:+3VyORCf
>>114
keyに注目すれば集合演算そのものじゃん。
valueという属性が各keyに付いてるというだけ。
大体、>>111はsetだったら納得したのかね
119デフォルトの名無しさん
2022/06/19(日) 17:04:44.33ID:SF0ERYFz
不毛な返しだな
潜在的に不幸な奴はどこでどんな生活をしてても不幸だって言うだろ
同様にどこでどんな仕様の言語を使ってても不平を垂れてんだよ
120デフォルトの名無しさん
2022/06/19(日) 17:17:33.66ID:tgIktWD1
誰と会話してるのか知らないが
Pythonこそ人類最大の功績だろ
いかがわしいウェブサイトの構築からAIや研究畑まで広がる広大な活躍範囲
JavaもRubyも要らんかったんや
121デフォルトの名無しさん
2022/06/19(日) 18:03:25.93ID:EYUnw8+k
>>118
setのunionやintersectionの演算子は違和感ないぞ
それにsetの場合は穴にはまるような仕様もないし
__or__以外の通常メソッドも用意されてるから全然状況が違う
122デフォルトの名無しさん
2022/06/19(日) 19:03:27.86ID:MGBoiv+i
俺もDictの論理和で違和感ないがなぁ。
123デフォルトの名無しさん
2022/06/19(日) 22:17:06.63ID:njnZ7xZC
dict1 | dict2で同じ(hash値の)keyが両方にあれば
keyはdict1からvalueはdict2から取ってくる

一般的な論理和の定義とは明らかに異なるけど
これをpythonではdictの論理和と呼ぶことにしたのならそれでいいんじゃない
124デフォルトの名無しさん
2022/06/19(日) 22:17:07.56ID:m8jSBDD8
>>120
原理主義者w

読みやすさがダンチすぎるわな
あとは高速にさえなれば最強
125デフォルトの名無しさん
2022/06/19(日) 22:44:59.15ID:sa8W0ZGX
>>123
keyは同じものなんだからどっちからもってきてもいいだろ。
仕様でもvalueをdict2から持ってくることだけしか決められてないんだからそんなところに依存するコードを書いたらお前が悪いとしか言えん。
あと同じhash値ってだけで同定されると思ってるみたいだな
126デフォルトの名無しさん
2022/06/20(月) 00:01:19.54ID:FO/JkqKw
>>123
誰もdictの論理和と呼ぶ奴いないが
127デフォルトの名無しさん
2022/06/20(月) 00:04:58.71ID:FO/JkqKw
こんな場末の掲示板で美学()を垂れてる大先生達はPEPに提案でもすればいいのにな
https://github.com/python/peps/blob/main/CONTRIBUTING.rst
128デフォルトの名無しさん
2022/06/20(月) 00:51:48.01ID:3bt1t/j5
>>126
>>122
129デフォルトの名無しさん
2022/06/20(月) 09:01:28.64ID:clQvML/w
picture(数字).pngで連番のファイルを生成したんだけどpathlibでディレクトリの中身覗くと
picture0.png
picture1.png
picture3.png
picture2.png
picture4.png
みたいな順番になってる事があってなんだか気持ちが悪い
これって何が原因なんです?pathlibの仕様?
130デフォルトの名無しさん
2022/06/20(月) 10:51:33.24ID:bmv2finQ
iterdir()とiterdir()が使ってるos.listdir()の仕様
131デフォルトの名無しさん
2022/06/20(月) 10:52:01.17ID:NopO3X5I
lenovoのL420っていうノートパソコン使っています
celeron,4GBです
教科書レベルのプログラムを写経してます
画像ファイル256枚、一枚あたり30kb位のファイルを
重ねる画像処理をpythonで行っているのですが
MemoryErrorがでて処理が止まります
画像処理の分野ではよくあることなのでしょうか

メモリ空きスロットが無いです

今までメモリ不足なんて無かったのですが
PC買い替えでしょうか?
132デフォルトの名無しさん
2022/06/20(月) 11:06:40.33ID:VCuoWLch
>>131
エラーメッセージを読んでエラーの原因をまず確かめろ
ハード的なメモリ不足よりプログラムの書き方が悪い可能性のほうがはるかに高い
133デフォルトの名無しさん
2022/06/21(火) 19:48:14.54ID:BPheRP/d
#次のような集合のリストのリストrを作りました:
r = [[set(range(1,4))]*3]*3
> print(r)
[[{1,2,3}, {1,2,3}, {1,2,3}],
[{1,2,3}, {1,2,3}, {1,2,3}],
[{1,2,3}, {1,2,3}, {1,2,3}]]

#上から2番目、左から3番目の集合を更新して要素を1のみとしました:
r[1,2] = {1}

#するとr[0,2]とr[2,2]も{1}になっちゃいました:
> print(r)
[[{1,2,3}, {1,2,3}, {1}],
[{1,2,3}, {1,2,3}, {1}],
[{1,2,3}, {1,2,3}, {1}]]

r[1,2]以外が変わった原因と、r[1,2]以外が変わらないような方法教えて下さい
134デフォルトの名無しさん
2022/06/21(火) 20:00:56.97ID:BPheRP/d
>>133 訂正
r[1,2]じゃなくてr[1][2]でした (他同様)
135デフォルトの名無しさん
2022/06/21(火) 20:03:33.86ID:nUT03NU2
deepcopyで検索ゥ
136デフォルトの名無しさん
2022/06/21(火) 20:08:37.10ID:SE7t042v
[[set(range(1, 4)) in x for range(3)] in y for range(3)]
137デフォルトの名無しさん
2022/06/21(火) 20:18:32.01ID:SH7wWIQd
>>133
多次元のリストを作るにはどうしますか?
https://docs.python.org/ja/3/faq/programming.html#faq-multidimensional-list
138デフォルトの名無しさん
2022/06/21(火) 20:18:51.87ID:BPheRP/d
>>136
ありがとうございます〜forとin換えたら行けました

>>135
検索してdeepcopyの話かな?という所には辿り着きましたが適応の仕方がよく分かりませんでした 勉強しときます
139デフォルトの名無しさん
2022/06/22(水) 11:44:54.88ID:EcTc17L7
ほとんどの言語は、shallow copy

実体をコピーしない。
ポインター・参照しかコピーしない

実体をいじると、それを参照している全ての参照に影響が出る。
実体を参照を通して見ているから

なかなか簡単には、deep copy できない。
参照のリンクを切り離せない

Elixir みたいな関数型言語は、
オブジェクトを更新できない(状態を持てない)から、
こういう問題はなく、安全にプログラミングできる
140デフォルトの名無しさん
2022/06/22(水) 12:13:41.31ID:TN4B0obT
なんかさ、もううんこだよね
141デフォルトの名無しさん
2022/06/22(水) 21:49:37.76ID:kEl16R0O
特定のフォルダ以下のサブフォルダから拡張子を取得して
指定したフォルダ下に拡張子のフォルダを作りたくて
下記のプログラムを書いたところで動作しましたが
os.makedirs文のみで完結する簡素な記述方法はありますか?

cd_path ← フォルダを作りたい場所
file_extension ← FOR文で取得した拡張子

path = os.path.join(cd_path, file_extension)
os.makedirs(path, exist_ok=True)
142デフォルトの名無しさん
2022/06/22(水) 22:14:47.11ID:1aHzqpDi
>>141
回答になってないけど、初心者なら最初からpathlib覚えたほうがいいぞ
os.pathやglob.globはいろんな罠がある
あと、拡張子にはドットが含まれるから注意
143デフォルトの名無しさん
2022/06/22(水) 23:39:08.69ID:uPuQk0KY
みんな一時は罹ってしまうコードゴルフ
中二病にちかい
144デフォルトの名無しさん
2022/06/23(木) 00:13:39.08ID:RPGBecSe
配列(array)の要素それぞれにリストを入れることは出来ない?
リストの要素それぞれに配列を入れることはできる?

でいいのかな?
145デフォルトの名無しさん
2022/06/23(木) 00:24:13.97ID:RKdZXyYS
あまりやらないけれど
配列の要素はそれぞれ任意のものを入れられるから
最初に配列、次に文字列でもすきなクラスでも大丈夫
もちろんぜんぶ配列でもOK
146デフォルトの名無しさん
2022/06/23(木) 10:12:12.29ID:bFbjfjx7
dictのキーにString型のリストとバリューにリストに入った多重結界みたいなデータ作ってjsonとして書き出すみたいな遊びだよね
147デフォルトの名無しさん
2022/06/23(木) 14:55:17.55ID:EV0+4t37
https://github.com/yaneurao/Ayane
のunit_test1.pyの、一番基本的なtest_ayane1を通そうとするとプロンプトにtest_ayane1 : とだけ
でてwrite_workerの734行目のself.proc.stdin.flush()でスレッドが死んでるような?感じなのですが
試して原因を教えてくれる神はいませんか。

ちなみに呼び出すエンジン自体は別のソフトや、cshogiというこれと似たライブラリからの呼び出しでちゃんと
動作していることを確認しています。
148デフォルトの名無しさん
2022/06/23(木) 15:04:04.22ID:Ukh7Grgr
判った
149デフォルトの名無しさん
2022/06/23(木) 15:58:15.03ID:EV0+4t37
>>147
Python 3.7.13で、macOS12.4 Montley上です。
150デフォルトの名無しさん
2022/06/24(金) 11:43:47.67ID:3JV7YPJq
socketのサーバー側で
i=0
while True:
data=soc.recv(受信サイズ)
if not data:
break
data_sum+=data
with open(f"保存するファイル名_{i}.zip",mode="ab") as f:
f.write(data_sum)
i+=1
みたいにするとクライアント側が送信したデータの他に数個のzipファイルが出来るんだけどこのデータの中身は何なんだろう?
zipfileで開こうとするとエラー出力しちゃう
変数iを使わずに受信するとクライアントが送信したデータだけが残るみたいだけど…
151デフォルトの名無しさん
2022/06/24(金) 12:05:35.52ID:K2we1Lar
>>150
死ね
http://2chb.net/r/bizplus/1655956236/
152名無し募集中。。。
2022/06/24(金) 13:18:15.52ID:d6WBxki6
FOR文の中にtqdm()を入れてみたんんですが
下記みたいなのしか表示されなくプログレスバーが表示されません
70786it [3:35:59, 1.94it/s]
なにが問題なんでしょうか?
153デフォルトの名無しさん
2022/06/24(金) 14:31:40.66ID:yJmddVFh
実際のコードを書かないこと
154ぴよ
2022/06/24(金) 14:59:09.01ID:XR8KeGTq
ほげほげ
155デフォルトの名無しさん
2022/06/24(金) 19:30:36.14ID:n0/ceoPd
>>152
lenが不明なiteratorだとそうなる
tqdm(iterator, total=100)のようにする
156デフォルトの名無しさん
2022/06/24(金) 23:45:09.14ID:/S8ogjuv
>>150
VSCode で、バイナリエディタの拡張機能・Hex Editor でも使って、バイナリとして見てみれば?
文字コードなどが不明なので、テキストとして見るには困る

適当に内容を作って、ファイルの拡張子を .zip にしても、
正しいZIPファイルの形式になるはずがないので、ZIPファイルとしては動作しない

各拡張子のファイルには、決められた構成があるため、
それに従っていない場合は、正常に動作しない
157デフォルトの名無しさん
2022/06/25(土) 00:01:18.86ID:eoWHGkrH
Phil Katz に聞くべき
158デフォルトの名無しさん
2022/06/25(土) 00:11:42.65ID:z9QRxAiq
降霊術を習得しないと
159デフォルトの名無しさん
2022/06/25(土) 19:47:06.55ID:fwnfW89W
Pythonでsetの要素がイミュータブルでないといけないのはなぜですか?

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
S = {a, b, c}
a.append(0)

この状況で、

a in Sの値が偽になっても別に構わないと思います。
Sに登録した時点でのaは{1, 2, 3}だったわけですから、
d = {1, 2, 3}
d in Sが真になりさえすれば何もおかしなことはないと思います。
160デフォルトの名無しさん
2022/06/25(土) 19:57:20.22ID:I0eUacPf
S = {a,b,c}
TypeError: unhashable type: 'list'
161デフォルトの名無しさん
2022/06/25(土) 20:23:18.44ID:bZig/WUT
こういう馬鹿が辞書のキーにまでリスト入れたいとか言い出すんだろうな
162デフォルトの名無しさん
2022/06/25(土) 20:26:09.88ID:gQjoPRQF
>>159
Pythonのオブジェクトは基本参照だし、setに突っ込んでもコピーされる訳じゃない
重複を許さないsetの要素が変更されたら保証できないし、比較のコストも考えたら…かな
163デフォルトの名無しさん
2022/06/25(土) 20:36:01.58ID:9jpr7vFN
>>159
自作クラスとか、mutableでもsetに突っ込めるよ。
何か読み違えたのでは?
164デフォルトの名無しさん
2022/06/25(土) 21:18:41.55ID:gQjoPRQF
>>163
本質的にはそうじゃない、ユーザークラスは既定でハッシュ化できるが
これは一般的な実装ではid()、即ちインスタンスアドレスに基づくもの
実質的に求められているのはハッシュの不変性であり、それならば通る

しかし同一性を内容で評価するなら意味は成さないのでlistだと未定義
データモデル曰く「クラスがミュータブルなオブジェクトを定義しており、
__eq__() メソッドを実装しているなら、 __hash__() を定義してはなりません。」
165デフォルトの名無しさん
2022/06/26(日) 01:34:01.17ID:A2gDvo6x
やってやれないことはないけど
デメリットを打ち消すだけのメリットを見いだせなかったんでしょGuidoが

単に他の言語のdict/setに合わせただけかも知れんが
ともかく、真実が知りたかったら開発者に聞いてこいよ
166デフォルトの名無しさん
2022/06/26(日) 07:16:45.51ID:eSuyoUi6
>>95
print('QHG pj.og.ldn.iakkok:etis'[::-1],
'/elpmis/pj.og.ldn.iakkok//:sptth'[::-1], sep='\n')
167デフォルトの名無しさん
2022/06/26(日) 13:31:03.88ID:DTfGvOZF
ねんまつ
168デフォルトの名無しさん
2022/06/27(月) 08:09:04.08ID:Zqv939YP
PCでのアプリ操作を自動化したいのですが、pyocrで文字認識して、内容によって判断し、pyautoguiでxy座標指定して、ボタン押すしかないでしょうか?
169デフォルトの名無しさん
2022/06/27(月) 08:14:55.95ID:RN7qnQjk
物によるとしか言いようが無いな
170デフォルトの名無しさん
2022/06/27(月) 08:17:13.06ID:RN7qnQjk
PyAutoGui でカバー出来るか出来ないかを判断してみたら?
171デフォルトの名無しさん
2022/06/27(月) 18:27:20.11ID:3qzf3wBJ
以前MACにいれたpython3を削除できないです。

% rm -rf /usr/bin/python3
rm: /usr/bin/python3: Read-only file system


% sudo rm -rf /usr/bin/python3
Password:
rm: illegal option -- ?
usage: rm [-f | -i] [-dPRrvW] file ...
unlink file

原因わかる方いますか?
172デフォルトの名無しさん
2022/06/27(月) 18:53:43.40ID:0yF6vhsn
>>171
sudoのほうは全角スペースが入ってるのが原因
173デフォルトの名無しさん
2022/06/27(月) 19:05:21.65ID:a8sMrZjJ
172の優しさに感動
174デフォルトの名無しさん
2022/06/27(月) 19:25:49.92ID:cL/RIHXE
そのpython入れたのはAppleだから通常起動したOSからは削除できない仕組み
消えたらOS内のスクリプトが動かなくなるよ
よかったねOSが壊れなくて
175デフォルトの名無しさん
2022/06/27(月) 20:20:17.78ID:3qzf3wBJ
>>172
迅速なレスありがとうございます。
もう一度コメント打ちましたが同じ結果でした。全角は入ってないようです。
>>174
MACから元々インストールされているのはphyon2なので
Phyon3とは関係ない、削除しても問題ないと思うのですが..

【まず1嫁】くだすれPython(超初心者用) その57 YouTube動画>3本 ->画像>9枚
176デフォルトの名無しさん
2022/06/27(月) 20:45:49.02ID:xsOnLI+U
>>175
何経由でインストールしたんだこれ
Homebrew使ってインストールしたなら
brewコマンド経由でアンインストール出来ない?
177デフォルトの名無しさん
2022/06/27(月) 21:25:48.96ID:cL/RIHXE
>>175
python3入ってないmacOSってわりと古いよ?
ここ最近はpython2が逆に入ってない(公式サポート終わってるからね)
もし自前で /usr/bin にインストールしたってんならクラッカー気質あるわw
178デフォルトの名無しさん
2022/06/27(月) 21:44:39.26ID:XFwxgXBL
>>175
同じ結果とちゃうやん
全角入ってた時とエラーメッセージ変わってるやん

どうしても削除したいならSIP無効にしてから削除で
179デフォルトの名無しさん
2022/06/27(月) 22:13:08.24ID:3qzf3wBJ
>>175
追記 すみません自分の勘違いでこのpython3はデフォルトから入ってるファイルのようです。

>>177 さんの仰る通りでした。申し訳ありません。

そして再度インストールしようとhomebrewを入れpyenvを入れ

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
を追加し
source ~/.zshrcを実行してpython3.10.4をインストールするとうまくいきません。。おまかんなのでしょうか??

【まず1嫁】くだすれPython(超初心者用) その57 YouTube動画>3本 ->画像>9枚
180デフォルトの名無しさん
2022/06/27(月) 22:13:29.06ID:3qzf3wBJ
>>178
申し訳ありません。
181デフォルトの名無しさん
2022/06/28(火) 01:52:22.87ID:GjoTbrJZ
>>179
自決ですが、xcodeが古かったので新しいバージョンにいれた所無事インストールできました。
182デフォルトの名無しさん
2022/06/28(火) 08:26:42.80ID:UgaAibo1
またしても犠牲者が。
pythonの乱用は精神に作用するのかもしれない
183デフォルトの名無しさん
2022/06/28(火) 12:11:58.39ID:W8L8uteA
macのOS環境ごとふっとんで死ねば良いのに
184デフォルトの名無しさん
2022/06/28(火) 12:22:02.22ID:SMUgtqGT
日本人が作った、多言語バージョンマネージャーのanyenv を使えばよい。
同様のツールには、asdf もある

nodenv, pyenv, rbenv,
exenv, goenv, tfenv など

node, python, ruby, elixir, go, terraform など

他には、Docker も多い
185デフォルトの名無しさん
2022/06/28(火) 13:58:17.02ID:5S91HeIj
re.subで[]で囲まれた文字列の中を置換するとき、どんな記述をすればよいですか?
re.sub(r'\[.*c.*\], 'x', '[abcabc]abc')
期待する値
[abxabx]abc
186デフォルトの名無しさん
2022/06/28(火) 14:07:39.85ID:N3XtpiKU
>>185
re.sub(r'\[[^\]]*\]', lambda m: m[0].replace('c', 'x'), '[abcabc]abc')
187185
2022/06/28(火) 14:31:31.24ID:5S91HeIj
>>186
多謝!! そしてごめんなさい。良ければ解説を。
188185
2022/06/28(火) 14:49:53.04ID:5S91HeIj
[]の中だけを対象にreplaceしているのは、なんとか分かるんですが、re.sub の第2引数、
lambda m: m[0].replace('c', 'x')
が何をしているのかわかりません(泣)
189デフォルトの名無しさん
2022/06/28(火) 14:52:51.94ID:dX7Zsa+9
マニュアルを読もう
https://docs.python.org/ja/3/library/re.html#re.sub
190デフォルトの名無しさん
2022/06/28(火) 14:59:09.76ID:d3+RKzUY
repl が関数であれば~の下りね、m[g]はm.group(g)と同等
後読みアサーションに固定幅制約がないライブラリなら
面倒なことしなくても(?<=\[.*)c(?=.*\])で済みそうだが
191デフォルトの名無しさん
2022/06/28(火) 15:42:31.79ID:5S91HeIj
re.sub(r'\[.*\]', lambda m: m.group(0).replace('c, 'x')
でlambda関数がヒットするたび呼ばれるわけか!!
仕組みは理解できました。

>>190
look-behind requires fixed-width pattern
に阻まれました。
192デフォルトの名無しさん
2022/06/28(火) 19:31:26.15ID:mooH0Iqw
m.group はめんどくさい
findall の方が便利
193デフォルトの名無しさん
2022/06/29(水) 07:52:27.56ID:9vdu/PbE
>192
re.findall だと re.sub のような仕掛けが利用できなくないですか?
>185 できますか??
194デフォルトの名無しさん
2022/06/29(水) 10:56:55.09ID:CtIvUBkO
re.findallで[]付きとそれ以外に分けて処理
ちょっと長くなるけど色々応用がききます

# []の中だけreplace
>>>re.findall(r'\[[\w]+\]|[\w]+', 'a[abcabc]abc[abc]')
['a', '[abcabc]', 'abc', '[abc]']
>>>[m.replace('c', 'x') if m[0]=='[' else m for m in _]
['a', '[abxabx]', 'abc', '[abx]']
>>>''.join(_)
'a[abxabx]abc[abx]'

# []の中以外をreplace
>>>re.findall(r'\[[\w]+\]|[\w]+', 'a[abcabc]abc[abc]')
['a', '[abcabc]', 'abc', '[abc]']
>>>[m.replace('c', 'x') if m[0]!='[' else m for m in _]
['a', '[abcabc]', 'abx', '[abc]']
>>>''.join(_)
'a[abcabc]abx[abc]'
195デフォルトの名無しさん
2022/06/29(水) 19:29:51.42ID:CtIvUBkO
完成形できました!記号が含まれていても[]がちゃんと閉じてなくても
ちゃんと閉じているのだけreplaceします
>>186が秀逸だけど、[]で囲まれていない方をreplaceするとなると
途端に難しくなるから、やっぱ私の方法が良いんじゃないでしょうかw

>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*|[^\[\]]*', 'a[abcabc]abc[abc]')
['', 'a', '[abcabc]', '', 'abc', '[abc]', '']
>>>[m.replace('c', 'x') if m and m[0]=='[' else m for m in _]
['', 'a', '[abxabx]', '', 'abc', '[abx]', '']
>>>''.join(_)
'a[abxabx]abc[abx]'
# 文字列に記号が含まれていて[]がちゃんと閉じていなくても大丈夫
>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*|[^\[\]]*', 'a[abcabc]abc[abc$$[abc]')
['', 'a', '[abcabc]', '', 'abc', '[', '', 'abc$$', '[abc]', '']
196デフォルトの名無しさん
2022/06/29(水) 22:12:59.69ID:sd1PgpdM
見通し悪すぎて要件満たしててもレビューで蹴られるコード
197デフォルトの名無しさん
2022/06/29(水) 22:25:07.73ID:TQFqK5Fi
ちゃんと閉じているの定義があやしい
[[abc]とか
198デフォルトの名無しさん
2022/06/29(水) 23:13:54.03ID:CtIvUBkO
>>196 見通し良いでしょ、角カッコで囲まれた角カッコ以外 or 角カッコ or 角カッコ以外でfindallじゃん
角カッコしか出てこないじゃん、簡潔、シンプル、分かりやすい

>>197 良い指摘、アナタのおかげで改善されました^^
>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*?|[^\[\]]*', 'a[abcabc]abc[[abc]')
['', 'a', '[abcabc]', '', 'abc', '', '[', '[abc]', '']
199デフォルトの名無しさん
2022/06/30(木) 02:06:34.63ID:HSayXmFT
kazuyuki
200デフォルトの名無しさん
2022/06/30(木) 20:55:30.42ID:QXLJbWFQ
ナンプレのゲーム作りたい

縦横はチェックする方法わかるが
3x3マスの部分だけ配列で考える方法がわからない
↓までは考えたんだが方向性が違う気もする

https://techiedelight.com/compiler/?xIkw


9進法から3進法への変換がベース(ただし3進法は0から始まる)
for x in range(81)
x // 3
x % 3

3桁目に入る場合、1桁目に(3桁目)*3が足される
10 (1,0,0)→(0,3)
4桁目に入る場合、2桁目に(4桁目)*3が足される
28 (1,0,0,0)→(3,0)
201デフォルトの名無しさん
2022/06/30(木) 21:46:07.32ID:0uxZVqVl
簡単なのは3x3を座標系とは別の9マスの配列の配列として保持
置いたときに縦横とは別にその配列へ反映させる
縦横も同じ手法をとると統一感ある
コード上は9マスの配列はクラスにするかも
202デフォルトの名無しさん
2022/06/30(木) 22:01:04.82ID:zKJ67H3+
5桁8色のhit&blowを造りたい
人間が設問してpythonに解かせたい
203デフォルトの名無しさん
2022/07/02(土) 07:54:20.82ID:oFwScFTn
>>201
既存の座標系にこだわらないほうがいいか
ありがとう

ナンプレのゲーム作りたいから手始めにナンプレを解くプログラムの検証をしてたんだけど

https://techiedelight.com/compiler/?b-I8

37行目の部分ってどうなってるの?
再帰関数なのはわかるんだけど、if文の中で再帰してるじゃん

def 関数():
if 再帰関数():
retrun Ture
retrun Flase
204デフォルトの名無しさん
2022/07/02(土) 09:00:34.91ID:Zph8lW04
>>203
再帰だけどやってることは探索のための分岐
rangeの列挙からcontinueされなかった分を順番に分岐してて
呼んだ先で18-20にひっかかると中断して最初の呼び出しまで戻ってる
deepcopyしてるところが富豪的だけどシンプル
205デフォルトの名無しさん
2022/07/02(土) 09:39:17.61ID:EefHjxyZ
>>204
この37行目
if set_num(ndata, idx + 1): return True

これを
set_num(ndata, idx + 1)
に変えてみたんだけど結果変わらなかった
if の中に入れる意味あるの?
206デフォルトの名無しさん
2022/07/02(土) 09:44:12.51ID:EefHjxyZ
答えが出た後も探索しちゃうからそれを止めるための処理ってことか
207デフォルトの名無しさん
2022/07/02(土) 09:57:44.64ID:COZLaCzb
ninbe
208デフォルトの名無しさん
2022/07/11(月) 12:19:00.64ID:aiHSnYNz
google colabでcuda使いたい。
良い方法ある?
209デフォルトの名無しさん
2022/07/11(月) 12:19:00.73ID:aiHSnYNz
google colabでcuda使いたい。
良い方法ある?
210デフォルトの名無しさん
2022/07/11(月) 12:39:20.78ID:L4tB3bvp
金払ってないのか?
211デフォルトの名無しさん
2022/07/11(月) 14:48:46.26ID:aiHSnYNz
>>210
colabはdjangoやfraskができないっぽいからやってない。
もしdjangoが使えるならお勧めあったら教えてほしいっす!
vsかチャームか、atomか・・・。
212デフォルトの名無しさん
2022/07/11(月) 15:51:00.64ID:EGP2A4JX
好きなテキストエディタないの?それで基本いいんだけど
拘りないなら拡張とユーザ数からvscodeでいいんじゃない
PyCharmはリファクタまわりが優れているけど必須じゃないし
Atomはオワコン
213デフォルトの名無しさん
2022/07/11(月) 17:35:44.11ID:rDGcpouH
vsもマイクロソフト以外のプラグインが信用出来ないからあまり良いとは言えないかなー
214デフォルトの名無しさん
2022/07/12(火) 00:04:57.18ID:eIaiUALg
文字列〜〜〜ID123456.text

みたいなファイルからID123456だけを抜き出したいんだけど、どんな方法がある?
IDの後には必ず数字がきて、桁数はかならず6
215デフォルトの名無しさん
2022/07/12(火) 00:06:23.62ID:eIaiUALg
補足
IDが書かれてる場所はファイルによって異なる

文字列〜〜〜ID123456文字列〜.text
ID123456文字列〜〜〜.text
みたいなときもある
216デフォルトの名無しさん
2022/07/12(火) 02:57:47.18ID:yBYukR5V
>>214
普通は正規表現でも使うのかな
俺は正規表現使えないからこう書く

from pathlib import Path
p="C:\abc\あいうID1234567XYZ.text"
print("ID" + Path(p).stem.split("ID")[1][:6])
217デフォルトの名無しさん
2022/07/12(火) 08:19:17.52ID:hTnf4I/y
>>215 正規表現を制する者は文字列を制する、他の言語でも仕様はほぼ同じ、覚えて損は無し

>>>import re
>>>s='''文字列〜〜〜ID123456文字列〜.text
・・・ID789012文字列〜〜〜.text
・・・みたいなときもある'''

>>>re.findall(r'ID\d{6}', s)
['ID123456', 'ID789012']
218デフォルトの名無しさん
2022/07/12(火) 10:53:36.86ID:eIaiUALg
>>216>>217
ありがとうございます、勉強になります
219デフォルトの名無しさん
2022/07/12(火) 20:48:55.38ID:gRW1mfOh
例外処理ってどう使えばいいんだろ

スクレイピングしてあるサイトのデータ拾いに行って
”データ”がある場合に代入となるんだけど
拾いに行くページによって、その行自体がなくてエラーになってしまうんだよな

if Data[0][0] == ”データ”:
s = Data[0][0]

Data[0][0]がそもそも存在しない時にエラーにならないよう例外処理を使うといい、ぐらいまでは調べたんだけど
書き方がよくわからない
220デフォルトの名無しさん
2022/07/12(火) 21:11:11.59ID:hTnf4I/y
>>218
より具体的な例としてC:/hogehogeディレクトリ内の全ファイルのファイル名からIDを抜き出します

>>>import pathlib, re
>>>src = pathlib.Path('C:/hogehoge')
>>>list(src.glob('*')) #ファイル確認、この例ではディレクトリ内にファイルが2つあります
[WindowsPath('C:/hogehoge/ID789012文字列〜〜〜.text'), WindowsPath('C:/hogehoge/文字列〜〜〜ID123456文字列〜.text')]

# 以下、ID抜き出し処理
>>>l = [re.findall(r'ID\d{6}', f.name) for f in src.glob('*')]
>>>l
[['ID789012'], ['ID123456']]
>>>sum(l, []) #フラット化
['ID789012', 'ID123456']
221デフォルトの名無しさん
2022/07/12(火) 21:56:43.39ID:UQgGu1pu
>>219
データがなかった場合にどう処理したいのかによって
例外処理にするのかif-elseみたいな分岐処理にするのかを選択する

スクレイピングの場合は対象データがなかったら
何も処理しないとか空文字とかのデフォルト値を入れる場合が多いんだけどそのやり方もいろいろ

if-elseで簡易的な関数にした例
def extract(html, selector, fn, default=""):
return fn(element) if (element := html.select_one(selector)) else default

def extract_text(html, selector, default=""):
return extract(html, selector, lambda x: x.text.strip(), default)

def extract_link(html, selector, default=""):
return extract(html, selector, lambda x: x.get('href'), default)
222デフォルトの名無しさん
2022/07/12(火) 22:40:42.84ID:xLkMA/UK
>>219
スクレイピングでたとえると
途中の要素が取得できないと結局な結果が得られないのでその場でプログラム終了する
とすると、取得失敗の都度ifでsys.exit()と書けはする
ここで終了前になにかメッセージ出力したり上位の関数にエラーで戻ったりアレコレしたいとすると
共通化したくなり例外以外では見通しが悪く書きにくい
そういうのもうまく関数設計すれば書けはするけど
Pythonは標準の操作(Data[0][0] とか)で例外あげる場面が多いので例外に寄せる方が楽
223デフォルトの名無しさん
2022/07/13(水) 20:23:40.86ID:EtP8dxEe
Pythonのトップ・キノコードがキノクエストと言う、Pythonの学習サービスを作った!
224デフォルトの名無しさん
2022/07/13(水) 22:27:14.03ID:XjBOe/Qa
s = ’aaa bbb ccc ddd’
という文字列を
s = ’[aaa],[bbb],[ccc],[ddd]’
という文字列にする方法って

s.split()
で一度リストにして
for文内で新しいリストにappendとか使って [ や ] や , をリストの要素として追加して
そのリストをまた文字列に戻すって方法しか思いつかないんだけど、他にあるかな?
225デフォルトの名無しさん
2022/07/13(水) 22:38:12.38ID:ZiN6uKeA
>>224
s = '[' + s.replace(' ', '],[') + ']'
226デフォルトの名無しさん
2022/07/13(水) 22:42:11.00ID:tPrODk9K
s='[' + s.replace(' ',']',[') + ']'
これでいけんか?
227デフォルトの名無しさん
2022/07/13(水) 22:43:26.48ID:tPrODk9K
かぶったし打ち間違いあるしスマホでコード書くの合わないな…
228デフォルトの名無しさん
2022/07/13(水) 22:44:17.92ID:hJXXd+YV
“,”.join(map(lambda x:f”[{x}]”, s.split(“ “)))
そらで書いてるから動くか分からんが、こんな感じ
229デフォルトの名無しさん
2022/07/13(水) 22:46:15.33ID:tPrODk9K
あと方法としてはjoin使うのとリストをそのまま文字列にするのができる気がする
230デフォルトの名無しさん
2022/07/13(水) 22:53:13.90ID:XjBOe/Qa
>>225-229
マジか
思いつかなかった
231デフォルトの名無しさん
2022/07/13(水) 23:08:11.77ID:Hjnw35/j
教科書的に書くとつまらんな
','.join(f'[{x}]' for x in s.split(' '))
232デフォルトの名無しさん
2022/07/14(木) 10:16:40.49ID:dxotV0yq
くだらんすれ
233デフォルトの名無しさん
2022/07/14(木) 11:38:32.14ID:3XfxOzel
python使い始めて何年も経つが
‘,’.join(…)書くたびにクソコード書いてんなと思う
234デフォルトの名無しさん
2022/07/14(木) 12:12:10.59ID:mZF8rPll
>>233
よく言われるけど、私はPythonスタイルが好きだな
文字列にするのだから文字列のメソッドであるべき
ちゃんと議論されてRubyスタイルは否定されてんだよね
https://www.lifewithpython.com/2017/07/why-python-join-is-string-method.html
235デフォルトの名無しさん
2022/07/14(木) 16:24:53.41ID:NrPRW2+E
>>234
読んだけど結構乱暴な議論だな
> 文字列にするのだから文字列のメソッドであるべき
数字かどうかを判定するisdigit()をboolのメソッドにしろってか?w
236デフォルトの名無しさん
2022/07/14(木) 16:42:14.94ID:VCUQdsgR
>>234
じゃsplitはリストにするのだからリストのメソッドであるべきだなw
ちゃんと議論ww
237デフォルトの名無しさん
2022/07/14(木) 17:24:02.64ID:TABkZ95a
Pythonって何故だかこういうエクストリームな擁護者が他言語に比べて多いんだよなぁ

どの言語にも良い点悪い点はあるのになんでなんだろ?
238デフォルトの名無しさん
2022/07/14(木) 17:57:33.90ID:mZF8rPll
エクストリームな擁護ならRubyの右に出るものはないよ
「日本人ならRuby」「楽しいからRuby」だもん、初めて聞いた時は寒気がしたね
RubyじゃなくてPython選んでマジで良かった、Python最高!

joinもsplitの話ももう出尽くしているから、勝手にググってフンガーって発狂しててよ
私に言われても困っちゃうし、公式で結論出ているのだからそれで理解できないなら素養が無いよ
239デフォルトの名無しさん
2022/07/14(木) 18:15:53.09ID:ObgbLbGZ
あ~あ、みんな寄ってたかって叩くからファビョっちゃったじゃん
240デフォルトの名無しさん
2022/07/14(木) 18:18:53.53ID:ATT2arO1
>>237
pythonのスレ(しかも超初心者用)で言うことですか?
241デフォルトの名無しさん
2022/07/14(木) 18:40:20.64ID:NYmoorKP
超初心者に変な常識を植え付けないように色んな意見のレスがあっていいと思うよ
変だと思う人も居るんだなということを知ってて損は無い
超初心者だと他言語における常識を知る機会も無いし
242デフォルトの名無しさん
2022/07/14(木) 19:04:20.42ID:ji0JpZgM
>>238
> 私に言われても困っちゃうし
これお前の意見だろ?
> 文字列にするのだから文字列のメソッドであるべき
リンク先も公式もそんなアホなことを言ってないぞw
243デフォルトの名無しさん
2022/07/14(木) 19:09:23.50ID:mZF8rPll
>>242
ひゃーファビョッちゃってるぅーw
素養も読解力も無いことをアピールされましても困りますw
244デフォルトの名無しさん
2022/07/14(木) 19:51:42.67ID:/4X/rYOa
>>243
レスするならちゃんと反論したら?
読解力ガーとか低脳が顔真っ赤になりながらレスしても虚しいだけだろw
245デフォルトの名無しさん
2022/07/14(木) 20:59:57.30ID:jjxIhgjT
スレ違い自演連投荒らしが誰何に反応して身元確定したので新スレで書き込み禁止されたのを「いじめ」だと言い出す被害妄想っぷりが狂人クオリティ
246デフォルトの名無しさん
2022/07/14(木) 21:03:26.05ID:mZF8rPll
>>244
IDコロコロ変えるコロ助が何をファビョってんの?w
もう>>238で終了してんだよ、公式読んで理解できないなら反論も糞も無いじゃんw
認めたくないだろうけど、そこは認めようよ、君は低能だから理解できなわけよww
別に理解できなくてもいいじゃん、joinって変だな、何でなんだろう?ってずーっとファビョってればいいじゃん
こういう経緯でこうなってんだよってリンクまで貼ってんのに、それで理解できずにそんなことなーい!って
言われてもさ、公式に文句言えばいいじゃん、ほんと低能だなぁーw 何と戦ってんの?w
247デフォルトの名無しさん
2022/07/14(木) 21:41:30.43ID:1UfgY23j
>>246
どっちが読解力ないだか...
もう一度書いとくね、

> これお前の意見だろ?
>> 文字列にするのだから文字列のメソッドであるべき

公式もリンク先も関係なくお前がアホなだけw
248デフォルトの名無しさん
2022/07/14(木) 21:53:51.76ID:GadqcTvG
これ読むと>>237に同意せざるを得ないな
https://stackoverflow.com/questions/493819/
249デフォルトの名無しさん
2022/07/14(木) 22:25:47.47ID:mZF8rPll
>>247
うん?じゃあ文字列のメソッドでなくてもいいの?
どーやったらそう読めるんだよwwwwバーーカwww
250デフォルトの名無しさん
2022/07/14(木) 22:56:25.17ID:vHzneFGJ
>>249
まだ恥の上塗りするのかよw
「文字列にするのだから」がアホだって話な
>>235-236 のツッコミみたら普通わかるだろ
251デフォルトの名無しさん
2022/07/14(木) 23:02:08.05ID:53iLOIJP
わざと馬鹿のフリしてんのかな?どっちにしても馬鹿にしか見えないが。
252デフォルトの名無しさん
2022/07/14(木) 23:02:36.06ID:pmXXTX87
読んだけどseqは引数な方が良いってだけで

> 文字列にするのだから文字列のメソッドであるべき
こんなこと書いてない
253デフォルトの名無しさん
2022/07/14(木) 23:04:03.42ID:mZF8rPll
>>250
君が読解力無いのは分かったから、それよりIDコロコロ変えているのバレちゃったねw
>>247の「もう一度書くね」でヘマしちゃったのはやっぱりファビョってるからなの?ww
これ全部オマエだろ、何連投してんだよw顔真っ赤なのどっちだよって話だよ
いやー自作自演バカって本当にいるんだなぁー アホなりに頑張ってるのは分かるけど低能だから
全部台無しだわぁ〜ww アホだからすぐバレちゃうwww
そのIDコロコロ変えるようになった経緯を思い出せよ、まともにやるとすぐ負けちゃうからだろ?
自作自演で勝ってる感が欲しかったけど、それも手に入りませんでしたぁ〜w 恥の上塗りって
自分のこと言ってんのかよww 全部ブーメラン!おまえは民主党かよってw
254デフォルトの名無しさん
2022/07/15(金) 01:28:28.52ID:wi0x7exo
すごいチー牛顔引き攣らせて笑ってそう
255デフォルトの名無しさん
2022/07/15(金) 03:30:42.52ID:MdZ2tfzQ
>>253
とうとう壊れちゃったw
256デフォルトの名無しさん
2022/07/15(金) 07:32:09.26ID:mXh/FC5X
なんかこわい
257デフォルトの名無しさん
2022/07/15(金) 12:20:14.72ID:Y2OiW31R
こんな人生終わってそうな社会不適合者でも稼げちゃうのがIT業界なんだよな

人生終わってそうな外見のやつばかりなのに、金が稼げるからジョーカーみたいなのが生まれにくい
258デフォルトの名無しさん
2022/07/15(金) 14:11:44.43ID:78D2/2K4
iterableを定義してそこにjoinメソッドを追加するだけでよかったのにね

joinメソッドは今どきこんな設計する人がいたらすぐ外されても文句言えないレベル
259デフォルトの名無しさん
2022/07/15(金) 14:28:12.17ID:MVHCgXBf
当人ちゃうけどまず >>234 のリンク先読んどこう
260デフォルトの名無しさん
2022/07/15(金) 15:21:03.77ID:cpkuMkfN
俺も当人ちゃうけどそのリンク先読んでも>>258に同意するわ
261デフォルトの名無しさん
2022/07/15(金) 15:35:58.33ID:rlSsskU5
ずいぶんとお利口な超初心者の集まりだこと…
262デフォルトの名無しさん
2022/07/15(金) 15:52:36.65ID:cpkuMkfN
超初心者が質問できるスレであって住人全員が超初心者というわけじゃないよ
263デフォルトの名無しさん
2022/07/15(金) 17:56:14.83ID:qGSK8RbV
メーリングリストのログ追ってみたが議論らしい議論は全くなかったぞコレ
Tim Petersが案をだして、じゃそれでくらいのノリ
264デフォルトの名無しさん
2022/07/15(金) 19:33:17.31ID:5LwbToQX
悲しいとき〜、悲しいとき〜、不毛な努力をしているアホをみたとき〜
265デフォルトの名無しさん
2022/07/15(金) 21:59:49.41ID:Mg+hVTQU
少し内容がずれているかもしれませんが質問させてください。
Windows10で右クリック-新規作成で空のpythonファイル(.py)を作成するようにしたいのですが、
何か方法はありますでしょうか?
下記のURLを参考にしてレジストリを変更する方法を調べて実行したのですが、反映しません。
https://qiita.com/ioComk/items/ab79749b0f0bf05db97e

教えていただきたく。よろしくお願いします。
266デフォルトの名無しさん
2022/07/15(金) 23:42:53.55ID:Fa+NFDEY
>>258
実際bytesとかでjoin相当のことをしようとしたらどうすればいいんだろう?itertools使えばなんとかなりそうだけど
267デフォルトの名無しさん
2022/07/16(土) 00:03:25.16ID:HB6roBeY
__add__かjoin専用メソッドがある前提でひたすらinject
それらが型変換できないケースだと失敗とか
268デフォルトの名無しさん
2022/07/16(土) 00:23:45.26ID:fjBrDVen
>>265
少なくとも今試しても記事の通りできた
詳しくどうやったか開示しないと分からん
269デフォルトの名無しさん
2022/07/16(土) 10:38:02.22ID:5edRFReA
>>268
詳しくといっても難しいですが
pythonはAnacondaでインストール。
新規pyファイルはサクラエディタと紐づいています。
270デフォルトの名無しさん
2022/07/16(土) 14:30:48.70ID:7RINBtm9
>>269
そしたらサクラエディタに関連付けしてるからだろうね
新規作成は関連付けされてるアイコンとファイルタイプ名称で表示される
271デフォルトの名無しさん
2022/07/16(土) 16:20:01.38ID:ck4+820Y
なんでこうなるのかわからない


_, *elements , _ = [1, 2, 3, 4, 5, 6, 7, 8]
print(elements) # [2, 3, 4, 5, 6, 7]
print(type(elements)) # <class 'list'>

elements_B = [1, 2, 3, 4, 5, 6, 7, 8]
B = _, *elements_B, _
print(B) # (8, 1, 2, 3, 4, 5, 6, 7, 8, 8)
print(type(B)) # <class 'tuple'>
272デフォルトの名無しさん
2022/07/16(土) 16:34:54.36ID:730D9OZt
print(_)してみたら
273デフォルトの名無しさん
2022/07/16(土) 16:56:27.29ID:ck4+820Y
ああ、理解したわ

a, b, c = 1,2,3
a=1
b=2
c=3
ってのと変わらんのか

a, *b, c = 1,2,2,2,2,3
a=1
b=2,2,2,2
c=3
みたいなことか
274デフォルトの名無しさん
2022/07/16(土) 19:51:21.14ID:GdTpN6Df
bytes で join ってさ
b''.join(bytes_data)
で良いんじゃね
275デフォルトの名無しさん
2022/07/17(日) 11:57:25.95ID:VAtjDotR
2^26倍精度浮動小数点数の最大値
(2^((2^(111-1))-1))*(2-(2^-2147483536))
https://ideone.com/3sxXF1

は計算できるが、

2^27倍精度浮動小数点数の最大値
(2^((2^(115-1))-1))*(2-(2^-4294967180))
https://ideone.com/MDO46W

は誤差が出て計算できない。
何とかならない?
276デフォルトの名無しさん
2022/07/17(日) 12:39:58.12ID:Un2LAdnT
emaxの最大値は999999999999999999みたいだからどうにもならんのでは
277デフォルトの名無しさん
2022/07/17(日) 15:02:05.03ID:QiBhjgar
emacs
278デフォルトの名無しさん
2022/07/17(日) 15:16:14.73ID:VAtjDotR
>>276
10^10^100000
https://ideone.com/PIILdo
279デフォルトの名無しさん
2022/07/17(日) 15:22:34.18ID:QiBhjgar
>>266
>>274
https://ideone.com/cEpoSf
# joinの問題と言うよりもlist(b'hoge')の方に問題が在る訳だな
280デフォルトの名無しさん
2022/07/17(日) 15:44:47.39ID:7GRljLrT
def f(a):
  return a+1

a=[1,2]
print(f(a))

>[2,3]

みたいなことがやりたいんですが、
関数にまとめてデータを渡して処理してもらうようなことはできないでしょうか

本来はf(1),f(2)とするところです
数が多ければforで回すのですが、まとめてどさっと渡したいです
281デフォルトの名無しさん
2022/07/17(日) 16:13:54.34ID:eihDCF0F
>>280
https://www.tech-teacher.jp/blog/python-map/
282デフォルトの名無しさん
2022/07/17(日) 17:40:51.90ID:mQpJsc2r
何だこの記事は
283デフォルトの名無しさん
2022/07/17(日) 17:47:08.08ID:GTQ/Lt+k
>>279
なるほど。strをバラしてもstrだが、bytesはバラすとintになってしまうということか。
まあ、実用上は問題ないかなあ。というかここを崩すとbytesを1バイトずつバラしてjoinするという殆どしない操作のために、
strとbytesの実用性がかなり失われるよね
284デフォルトの名無しさん
2022/07/17(日) 17:58:37.99ID:Fxi+TDuE
>>280
素直にnumpy使う

ではツマランのでこんなのはどうだろう

def matome(func):
__def process(*list_args):
____return [func(*args) for args in zip(*list_args)]

__return process
@matome
def f(a):
__return a+1
a = [1, 2, 3]
print(f(a))
285280
2022/07/17(日) 18:36:03.96ID:jWrWgoZv
なるほど、map関数や*list_argsなどのやり方があるのですね
これはどちらもforよりは軽くなりそうな感じはします

>>284
素直にnumpy、がそもそもわかってないのですが、教えていただけませんか?
286デフォルトの名無しさん
2022/07/17(日) 19:23:47.87ID:pr2Iyzs9
>>284
無駄な処理があるので修正しときますね
def matome(func):
____def process(list_arg):
________return [func(list_item) for list_item in list_arg]
____return process

>>285
ググレば一発で出てきますよー
import numpy as np
a = np.array([1,2,3])
a+1
_.tolist()
287デフォルトの名無しさん
2022/07/17(日) 19:47:38.44ID:Fxi+TDuE
>>286
それだとfの引数が増えた時に対応できない
288デフォルトの名無しさん
2022/07/17(日) 20:59:15.42ID:4v0QWrzY
mapと内包表記どっちが軽いんだろ?
a=[1,2]
b=[i+1 for i in a]
これで終わる話ではあるよね
289デフォルトの名無しさん
2022/07/17(日) 21:23:00.57ID:zoulLgXv
話を単純化して話してんだろ
一般的な解があるほうが親切
290デフォルトの名無しさん
2022/07/17(日) 21:25:35.67ID:pr2Iyzs9
>>287
なるほど、f([1,2,3],[4,5,6]) → [5,7,9] とかにするならmatomeはそのままで
def f(*a):
__return sum(a)

で対応できるけども、しかし! 引数が1つの場合が f([1,2,3]) → [2,3,4] であるならば、
引数が2つの場合、f([1,2,3],[4,5,6]) → ([2,3,4], [5,6,7]) となるのが自然ではなかろうか?
であるとするならば、fはリストの各要素の計算でありそのままにして、matomeを改造する必要がある
291デフォルトの名無しさん
2022/07/17(日) 21:31:17.15ID:LbIjTSt1
>>289
どれに対しての話?
292デフォルトの名無しさん
2022/07/17(日) 21:38:02.50ID:Rw0hMsrD
>>290
sumでない場合は?
たとえばa1*a2+a3みたいな一般式もありうるよね
293デフォルトの名無しさん
2022/07/17(日) 21:38:57.48ID:Rw0hMsrD
というか、ただのsumなら普通は関数にぶっこまないよね
294デフォルトの名無しさん
2022/07/17(日) 21:43:59.07ID:pr2Iyzs9
リストの各要素に1足すだけの場合も普通に関数にぶっこまないけどな
295デフォルトの名無しさん
2022/07/17(日) 22:12:41.33ID:pr2Iyzs9
>>292
matomeのデコレータ付けるだけで色んな一般式を適用した関数が簡単に作れるってことね
はいはい、理解しました
fをそのまま可変にすることばかり考えてたわ
296デフォルトの名無しさん
2022/07/17(日) 22:43:41.36ID:Xin01ayH
zipするのは違うと思うけどな
297デフォルトの名無しさん
2022/07/18(月) 09:21:19.20ID:4im9UY7E
>>286
教えてくださりありがとうございます
>>284のほうが拡張性があって気に入りました
やりたいことはできそうです
ありがとうございました
298デフォルトの名無しさん
2022/07/18(月) 10:01:23.22ID:4lWXgehE
f(a,b,c) -> rをリスト用にリフトするなら
f'([(a1,b1,c1), (a2,b2,c2),(a3,b3,c3)…]) -> [r1,r2,r3,…]

f'(([a1,a2,a3,…], [b1,b2,b3,…], [c1,c2,c3,…])) -> [r1,r2,r3…]
にするのは筋が悪い
299デフォルトの名無しさん
2022/07/18(月) 10:22:26.91ID:q/MsDqBP
>>290の完成イメージ
def get_list_items(func):
____def process(*lists):
________ret = tuple([func(item) for item in lst] for lst in lists)
________return ret[0] if len(ret) == 1 else ret
____return process

@get_list_items
def f3(item):
____return item+1

f3([1,2,3],[4,5,6],[7,8,9]) → ([2, 3, 4], [5, 6, 7], [8, 9, 10])
f3([1,2,3],[4,5,6]) → ([2, 3, 4], [5, 6, 7])
f3([1,2,3]) → [2, 3, 4]

なるほど、この場合は可変にする必要性をあまり感じないね
f3([1,2,3]), f3([4,5,6]), f3([7,8,9])って個別に呼べばいいだけだし
>>284の方が断然優れていますわ
300デフォルトの名無しさん
2022/07/18(月) 10:36:45.20ID:E3N1Hbif
個別に呼ぶよりまとめて呼んだほうが処理が軽いんじゃないの
301名無し募集中。。。
2022/07/18(月) 10:39:15.32ID:kc1Sb0dj
FOR文でフォルダ以下のサブフォルダの中のファイルを
拡張子毎に振り分けるプログラムを作ってみましたが
1ファイルを移動するのに1秒くらいかかってしまいます
shutil.move(FFF, KKK) (FFFとKKKは変数)
この文を削除するとものすごく早くなります
どうすれば早くなりますか?
302デフォルトの名無しさん
2022/07/18(月) 10:44:27.05ID:E3N1Hbif
でもあれか、matomeをつけてfを宣言してしまうと、普通にfを使うことができなくなってしまうのか
このへん関数を呼ぶときにmatomeをつけるかどうかで使い分ける方法ないのかな
303デフォルトの名無しさん
2022/07/18(月) 10:54:26.68ID:Tf87Irt3
>>302
ごく素直に、fはデコレーターを付けずそのまま宣言する
matomeを適用する関数はf_matome = matome(f)と定義する
304デフォルトの名無しさん
2022/07/18(月) 11:04:03.01ID:q/MsDqBP
>>302
デコレータ付けた関数はまとめてモジュール化するのが一番良いと思う
list_func.f([1,2,3])
305デフォルトの名無しさん
2022/07/18(月) 11:36:57.20ID:1omE+gQa
なんか頭の可笑しいのが劣化版だしまくるスレになってるな
306デフォルトの名無しさん
2022/07/18(月) 12:10:19.60ID:jgot1txW
>>301
srcとdstが同じドライブならos.renameかPath.renameにすれば速くなる
1秒が遅いのかどうかはファイル内容や環境によるから分からない
307デフォルトの名無しさん
2022/07/18(月) 12:13:47.35ID:J9TOF8GR
numpy ぐらい、Python のトップ・キノコードの動画があるのでは?

キノクエストと言う、2千円のサロンも始まった
308デフォルトの名無しさん
2022/07/18(月) 12:42:22.47ID:Ni7oGdeS
>>301
PythonのバージョンやOS、テストしたファイルサイズ書こうよ
Python3.10.5 Windows10は同じドライブならそんな時間かからないよ
309デフォルトの名無しさん
2022/07/18(月) 12:47:11.59ID:q/MsDqBP
>>305
いじけてないでキミも劣化版出せばいいんだよ
格好つけてたら何もできないぞ
310デフォルトの名無しさん
2022/07/18(月) 13:41:26.68ID:Zd8mDGLh
少なくとも>>280をやるためにデコレーターはないわ
311デフォルトの名無しさん
2022/07/18(月) 14:39:38.37ID:lIUF2c+K
>>310
>>289
312デフォルトの名無しさん
2022/07/18(月) 14:46:42.16ID:koL1rSR0
初心者に対して不要な一般化は余計に分かりにくくするだけやろ
やり方自体が御世辞にもいいアプローチとは言えないし
313デフォルトの名無しさん
2022/07/18(月) 15:01:53.40ID:q/MsDqBP
>>310
デコレータみたときは「やられた!」って思ったね
しかも可変、嫉妬してちょっと噛みついてみたけど見事に返り討ち
いやはや、彼のコードはみんなマネした方がいいよ、良いものはどんどん取り入れよう

そういえば、ひろゆきが良く自慢げに言う話を思い出したんだけど、
ゲームを作ってみる授業?か何かで友達が書いたコードがメチャメチャ短かったんだって
上下左右の操作なんだけど、ちょっとした計算で実現していて、それ見たひろゆきが才能の差を
感じてゲームクリエイターをあきらめたとかいう才能の話
それ聞いたときはアホじゃね?良いコードみたらパクればいいだけじゃんって思ったものだよ
たぶんひろゆきはすごくプライドが高くてちょっと躓いただけで諦めちゃうメンタルなんだよね
そんなこんなで出来上がったのがヒマつぶしwとか言って他人の文句しか言わない人間になっちゃった
「頭悪い!」と他人を下げることで自分を慰める毎日、やっぱ諦めずに挑戦するのって大事だなって思いました
そうホリエモンってひろゆきと真逆だよね、ホリエモンは今も色んなことに挑戦している、ホリエモンは輝いているよ
314デフォルトの名無しさん
2022/07/18(月) 15:04:25.71ID:PImFDAtt
>>312
>>297
315デフォルトの名無しさん
2022/07/18(月) 15:04:43.60ID:EPf9iKEG
>>311
一般的?
316デフォルトの名無しさん
2022/07/18(月) 15:17:32.88ID:J9TOF8GR
Ruby とか、関数型言語Elixir では、map が基本
317デフォルトの名無しさん
2022/07/18(月) 15:18:04.67ID:o0lyPM3S
他人の話を否定するだけの奴って何の生産性もないよな
低レベルでもコード提示するほうがよっぽど役に立つわ
318デフォルトの名無しさん
2022/07/18(月) 15:22:34.62ID:qwr+PsCM
>>312
参考までに良いアプローチplz
319デフォルトの名無しさん
2022/07/18(月) 15:36:01.64ID:y8tEu6pL
matomeとmap、どっちが速いんだろうか
どっちもforで毎回f呼び出すよりは速そうだけど
320デフォルトの名無しさん
2022/07/18(月) 15:55:55.10ID:GojDtZHN
デコレータ
使って観たい
御年頃
321デフォルトの名無しさん
2022/07/18(月) 15:59:17.63ID:LKJtspF0
処理時間測定してみたらmapのほうが2割前後速かったわ
322デフォルトの名無しさん
2022/07/18(月) 15:59:40.46ID:GojDtZHN
>低レベルでもコード提示するほうが

ないわ
323デフォルトの名無しさん
2022/07/18(月) 16:06:47.73ID:kISKbyyY
ついでなんで書いとくね
実行時間
forを使ってf呼び出し:1
matome:0.5
map:0.4
324デフォルトの名無しさん
2022/07/18(月) 16:21:22.72ID:ln/vUyrz
>>322
比較対象は
> 他人の話を否定するだけの奴
だぞ、頭大丈夫か?
325デフォルトの名無しさん
2022/07/18(月) 16:30:53.42ID:qwr+PsCM
デコレーターに親殺されたニキがおるな
326デフォルトの名無しさん
2022/07/18(月) 17:45:39.65ID:UwLRS3iL
普通に考えてリストに関数をそれぞれ適用させたいならmapが一番シンプルでmapと同意の内包表記が最もPythonらしいのでは?
327デフォルトの名無しさん
2022/07/18(月) 18:04:13.67ID:LNL0CNxW
mapと同意?どういうこと?
328デフォルトの名無しさん
2022/07/18(月) 18:04:19.00ID:pfq1SIlO
お盆も近いからデコレータに恨みがある奴も
這い出して来ているんでしょう
329デフォルトの名無しさん
2022/07/18(月) 18:08:48.63ID:PImFDAtt
単にmapの人が、なんでmap使わないんだと言っているだけなのでは?
それがデコレータsageに見えると
330デフォルトの名無しさん
2022/07/18(月) 18:23:16.60ID:q/MsDqBP
内包表記の方が断然好きだな〜、mapはシンプルになる場合もあるけど
今回のようにゴチャる場合もあるんだよな〜
下記はmatomeを自分好みの関数名と変数名に改変したヤツでっす!

def get_lists_items(func):
____# 内包表記版
____def process(*lists):
________return [func(*items) for items in zip(*lists)]
____return process

def get_lists_items(func):
____# map版
____def process(*lists):
________return list(map(lambda items: func(*items), zip(*lists)))
____return process
331デフォルトの名無しさん
2022/07/18(月) 18:28:18.32ID:2ipqvE3v
>>330
なんでzip?
そういう引数リスト専用の関数を作りたいの?
332デフォルトの名無しさん
2022/07/18(月) 18:40:20.03ID:qwr+PsCM
>>280の望みは「intを引数に取り計算結果を返す関数を、"シームレスに"リストにも拡張すること」だからデコレーターが適当じゃない?Pythonicかどうかは知らん
333デフォルトの名無しさん
2022/07/18(月) 18:50:45.67ID:0V7pBSnr
デコレータは不適当

デコレータは基本的に元の関数を透過的に拡張するために使う物

def f(a, b, c)をデコレートしても
デコレート前と同じf(a, b, c)で呼び出し可能で
成功時には同じ戻り値を得られるように作る

高階関数ならなんでもデコレータにすればいいわけじゃない
334デフォルトの名無しさん
2022/07/18(月) 18:52:28.91ID:q/MsDqBP
>>331
そのとおり、>>280だけでなく色んなパターンのリスト関数が簡単に作れるのだよ
このデコレータがあればね!
335デフォルトの名無しさん
2022/07/18(月) 18:53:15.28ID:9fYXH/DB
勉強になったわ。
今までPyQtでアプリ作っていたが、@pyqtSlot()がQtデザイナーからのリンクみたいなもんかと思ってました。
すっきりです。
336デフォルトの名無しさん
2022/07/18(月) 18:58:21.00ID:VjQ/Ckj0
デコレーターのメリットがあるならそれ使えばいいけど遅い上に記述量増えるしね
どう見ても>>320だろw
337デフォルトの名無しさん
2022/07/18(月) 20:38:42.55ID:FbOneiqz
forよりは速い
338デフォルトの名無しさん
2022/07/18(月) 22:52:23.80ID:P7xIx3wJ
今回の話でデコレータが内包表記より優れているという理屈が理解できない
def f(a):
  return a+1

a=[1,2]
print([f(i) for i in a])

これで事足りるでしょ
339デフォルトの名無しさん
2022/07/18(月) 22:52:35.33ID:SFjyzDm9
超絶初心者です。
counter: int = 0 # 他の処理で変わっていく
def test(self):
  user_name = "xxxx"
  if counter > 0:
   now = datetime.datetime.now()
   ..... # 色々処理
now ←ここで nowは参照させたくない、スコープ外にしたい

今だとnow変数はif文が処理されれば値が入ります。
now変数のスコープをif文内だけにするってことはできますか。
340デフォルトの名無しさん
2022/07/18(月) 23:05:31.63ID:2hrGCnNJ
self ということはクラスメソッドだと思うけど
他のメソッドから self.test() を呼べば now は隠蔽される。
もしくは頭で now = None しておいて
if now is not None:
でわけるとか。
341デフォルトの名無しさん
2022/07/18(月) 23:13:05.76ID:1e6Pm9kS
>>330
starmap使えばlambdaいらない
342デフォルトの名無しさん
2022/07/18(月) 23:22:42.01ID:q/MsDqBP
>>341 なるほど、でも内包表記の方が見やすいよね!
from itertools import starmap
def get_lists_items(func):
____# starmap版
____def process(*lists):
________return list(starmap(func, zip(*lists)))
____return process
343デフォルトの名無しさん
2022/07/18(月) 23:35:38.05ID:Yb4pZTqb
>>342
二択ならね
でもどっちも用途に対してアンチパターンだから使わないのが吉
344デフォルトの名無しさん
2022/07/18(月) 23:42:11.41ID:q/MsDqBP
>>343
for文使うのがベストってこと?
345デフォルトの名無しさん
2022/07/18(月) 23:54:17.73ID:8wpG6nJ0
re.matchで何がマッチしたか知る方法てある?
s = 'ABCDEFGHIJK'
m = re.match(r'ABC|HIJ', s) 'm: <re.Match object; span=(1, 4), match='BCD'>

match='BCD'を取ってきたいのだが、方法てある?


ネットだと()でくくってgroupsでとれて書いてあるけど、
s = 'ABCDEFGHIJK'
m = re.search(r'(BCD|HIJ)', s)
x_text = m.groups(0)
print(x_text)

('BCD',)て表示されるし、x_textはstr型じゃないから文字列操作ができない。

Python 3.9.13です。
346デフォルトの名無しさん
2022/07/19(火) 00:05:16.63ID:pVZms+nG
>>339
pythonにはブロックスコープがないので
if文の中で新しく作成した変数のスコープをif文内だけにすることはできないよ
347デフォルトの名無しさん
2022/07/19(火) 00:32:46.32ID:8NIkYSWg
>>345
groupとgroupsとそれぞれある
group(0)ならstr
348デフォルトの名無しさん
2022/07/19(火) 01:22:31.44ID:XqVlnmi4
>>339
del now でどうでしょうか
349デフォルトの名無しさん
2022/07/19(火) 08:41:05.75ID:UwsMPoKY
内包表記って普通のforと違うみたいだけど、なんでこんなに速いの?
350デフォルトの名無しさん
2022/07/19(火) 09:10:11.34ID:mYl9AT7Z
>>340,346,348
339です、どうもありがとうです。言語仕様的にブロックスコープないのはしょうがないですね。
del は試してみたいと思います。
351デフォルトの名無しさん
2022/07/19(火) 09:30:11.93ID:ioxaO2di
a=[f(x) for x in range(100)]
で、今xがいくつのところをやってますとprintする方法はありますか?
forを外に持ってくると処理が遅くなってしまうので避けたいです
352デフォルトの名無しさん
2022/07/19(火) 09:32:53.74ID:Dm4GA3mb
訂正
a=[f(x[i]) for i in range(100)]
にします
iの値は関数に持ち込みません
持ち込むのなら関数でprintできますが、それはなしにします
353デフォルトの名無しさん
2022/07/19(火) 10:04:16.93ID:L7UUhMht
>>352
a = [print(i) or f(x[i]) for i in range(10)]
354デフォルトの名無しさん
2022/07/19(火) 10:12:32.45ID:zbPEuSRT
CPU処理を高速化するのはmultiprocessingを使うことでできたのですが、
今度はGPUでmodel.fitするほうが遅くてしょうがないです
multiprocessing同様に簡単に速くする方法があれば教えてください
355デフォルトの名無しさん
2022/07/19(火) 10:15:51.10ID:XqVlnmi4
>>352
fの中でカウント用の変数を持ってインクリメントする
356デフォルトの名無しさん
2022/07/19(火) 10:20:19.62ID:+zTkD2Kt
357デフォルトの名無しさん
2022/07/19(火) 10:20:59.40ID:+zTkD2Kt
>>353
できましたありがとう
ところで、どうしてorなんでしょう?
358デフォルトの名無しさん
2022/07/19(火) 10:23:27.04ID:2mzjLS5j
>>332
numpyが最適
わりとまじで
359デフォルトの名無しさん
2022/07/19(火) 10:30:11.09ID:2mzjLS5j
>>345
re.findall
360デフォルトの名無しさん
2022/07/19(火) 10:31:34.68ID:2mzjLS5j
>>349
普通のforと違うから
361デフォルトの名無しさん
2022/07/19(火) 10:36:57.19ID:COa8jHBw
>>357
print(i)の戻り値がNoneだから、必ずorの右辺を返す
362デフォルトの名無しさん
2022/07/19(火) 10:51:26.50ID:brlHmAiq
>>357
どうして?という直感はまっとうで
読み手の思考が止まるので必ず成功・失敗するケースだとその用法は不適
書き捨て用
363デフォルトの名無しさん
2022/07/19(火) 11:07:31.09ID:+zTkD2Kt
>>361
なるほど、かしこいですね

>>362
では、どのような書き方が適切なのか教えてください
364デフォルトの名無しさん
2022/07/19(火) 11:30:53.28ID:bdrM7/md
printしたらforと内包表記の違いなんて誤差に見えるほど遅くなると思うがそれはええんか?
365デフォルトの名無しさん
2022/07/19(火) 11:33:51.75ID:RISkfx3J
forと内包表記で速さに違いが出るのはなぜですか?

同じコードをなぜ生成しないんですか?
366デフォルトの名無しさん
2022/07/19(火) 11:37:38.74ID:856tCJOd
内包表記でプログレス挟んで遅いのは嫌とかバカの極み
可読性考えて普通のforで回せ。 つか速度測ってみろ。大差ねえわたぶん

[(f(x[i]), print(i)) for i in range(10)]
367デフォルトの名無しさん
2022/07/19(火) 12:00:14.16ID:GEUE7oT9
超初心者を馬鹿にしないと精神の安定が保てないかわいそうな人
368デフォルトの名無しさん
2022/07/19(火) 12:19:44.97ID:192s6b8D
馬鹿にされるような日本語使いする自称超初心者が悪い
369デフォルトの名無しさん
2022/07/19(火) 12:24:07.94ID:AricPVYV
>>349
比較したコードを出してみて
370デフォルトの名無しさん
2022/07/19(火) 12:31:03.42ID:ZGMRA42U
>>351
print等の副作用を伴う処理を繰り返す場合は
内包表記ではなくforを使うのがpythonにおける暗黙の了解
値の加工生成と入出力を分けて書くのはpythonに限らずプログラミングの基本
371デフォルトの名無しさん
2022/07/19(火) 12:45:56.52ID:2mzjLS5j
>>363
a = [[print(i), f(x[i])][1] for i in range(10)]
372デフォルトの名無しさん
2022/07/19(火) 12:59:28.59ID:COa8jHBw
カウント1毎にプログレス表示すると内包表記使う意味ないかもしれんが、
リストへの追加100毎
カウント10000000毎にプログレス
で時間計測してみた

内包表記
a = [(i%10000000 or print(i), str(i))[1] for i in range(100000000) if i%100 == 0]
8秒

forループ
a=[]
for i in range(100000000):
____if not (i%10000000):
________print(i)
____if i%100 == 0:
________a.append(str(i))
20秒

行儀悪い書き方だが、条件しだいで効果はある
373デフォルトの名無しさん
2022/07/19(火) 13:09:56.89ID:ieHxnJ8/
>>365
ループ内でpythonのインタプリタで実行される処理とコンパイル済みのCのコードで実行される処理の行き来が減れば速くなる

内包表記は式しか書けないのとlist.appendのようにインタプリタがメソッドを探す処理が不要にになることが多いので単純な式評価だと内包表記がやや速い結果になりやすい
(例えばループの外でappend = outlist.appendとしてループ内ではメソッドじゃなく関数呼び出しにすれば多少速くなる)

ただforより内包表記が速いから内包表記を使うというのは使い方が間違ってるか使う言語を間違ってる
374デフォルトの名無しさん
2022/07/19(火) 13:35:02.16ID:RISkfx3J
>>373

ありがとうございました。
処理系が書き方の違いを吸収して同じ(速い)コードを生成することは難しいのでしょうか?
375デフォルトの名無しさん
2022/07/19(火) 13:41:20.47ID:2mzjLS5j
8秒の方はstr()呼ばれる回数も少ないんじゃね
やり直し
376デフォルトの名無しさん
2022/07/19(火) 13:45:55.20ID:e6PA2QPH
内包表記を配列操作以外に使うな(関数叩くな)って書いてるのeffective pythonだっけ

>>374
速いコードって、たとえば進捗吐かないとか、無駄な評価式やループしないとか、そうやって作ってくんよ
鈍重な書き方しても速いのがいいっていうなら、もう根本的にpythonは遅い言語だよ
377デフォルトの名無しさん
2022/07/19(火) 13:57:38.21ID:COa8jHBw
>>375
str()呼ばれる回数は同じじゃね
でも、i%10000000の回数違ってた

内包表記
a = [(i%10000000 or print(i), str(i))[1] for i in range(100000000) if i%100 == 0]
8秒

forループ
a=[]
for i in range(100000000):
____if i%100 == 0:
________if not (i%10000000):
____________print(i)
________a.append(str(i))
12秒
378デフォルトの名無しさん
2022/07/19(火) 14:02:29.41ID:6WNMcjy9
>>377
printしない場合は?
379デフォルトの名無しさん
2022/07/19(火) 14:08:53.16ID:COa8jHBw
>>378
str(i)呼ぶ回数は、両方 100000000 / 100 = 1000000回
380デフォルトの名無しさん
2022/07/19(火) 14:12:29.27ID:6WNMcjy9
>>379
うんだから何秒なの?
381デフォルトの名無しさん
2022/07/19(火) 14:12:50.87ID:Xr1AbmZQ
結局書きづらい、読みづらくてミスしちゃうんだから
普通のforループの方が総カロリー低いと思います
382デフォルトの名無しさん
2022/07/19(火) 14:17:28.28ID:COa8jHBw
>>380
printしない内包表記
a = [str(i) for i in range(100000000) if i%100 == 0]
8秒
383デフォルトの名無しさん
2022/07/19(火) 14:19:06.99ID:RISkfx3J
行列プログラマーという本では、集合の表記に近い内包表記のほうが分かりやすいと書いてあります。
実際、もっぱら内包表記を使っています。
384デフォルトの名無しさん
2022/07/19(火) 14:40:11.78ID:HHxHBIIc
>>382
つまりprintは時間がかかってないわけだよね
で、普通のforより内包表記のほうが速い分だけ速くなってると
それは何の実験なんだい?
385デフォルトの名無しさん
2022/07/19(火) 14:49:08.31ID:Dd2ngZhk
内包表記でもインデントしていいんですよ
可読性高めていけ
386デフォルトの名無しさん
2022/07/19(火) 14:52:21.67ID:COa8jHBw
>>384
進捗を大雑把に表示したい場合、内包表記でprintするのも有りという実験
俺は開発中以外では使わんけど
完成したコードにこんなの書いてたらやだ
387デフォルトの名無しさん
2022/07/19(火) 15:07:57.56ID:COa8jHBw
printは時間がかかってないのではなく回数を少なくしてる
他の人が指摘してるように、進捗を細かく表示したい場合、内包表記もforループも時間差はほぼ無くなる
printはやはり時間がかかる
388デフォルトの名無しさん
2022/07/19(火) 15:17:30.04ID:kjnFmzM9
時間差は4秒で変わらないんじゃないの
printに時間がかかるから4秒の割合が小さくなってほとんど意味ないじゃんってことでしょ
389デフォルトの名無しさん
2022/07/19(火) 15:40:36.31ID:COa8jHBw
>>388
そういうことです
進捗を細かく表示したい場合、ほとんど意味ないってこと
完成状態で内包表記にprintはおすすめできない
テスト中に内包表記にprintを入れるのはお好みで
390デフォルトの名無しさん
2022/07/19(火) 15:40:46.26ID:bdrM7/md
a=[]

a.append(str(i))
でなくて、
a=[0]*100000000/100

a[i]=str(i)
だとますます変わらなそう
391デフォルトの名無しさん
2022/07/19(火) 16:01:31.52ID:Ao+3qyOr
>>377
そんな差でる?
むしろforループのほうが3~5%程度速いんだが
392デフォルトの名無しさん
2022/07/19(火) 16:03:31.06ID:/jGGKkxp
>>389
であれば、可読性より速度を重視する場合、内包表記にprintを入れたほうがいいということですよ
意味は4秒ぶんあるわけです
393デフォルトの名無しさん
2022/07/19(火) 16:18:19.62ID:COa8jHBw
>>391
こちらは化石PCで測定したので。
誤差じゃない充分な時間差が開く程度にrangeの値を大きくしてみて
394デフォルトの名無しさん
2022/07/19(火) 16:28:38.52ID:L7UUhMht
そもそも内包表記は可読性良いよ、ギュッと1行にまとまりつつも分かりやすい
for文見る方がダルイわ、内包表記にできないものを仕方なくfor文にしているよ
慣れだよ慣れ、最近だと二重ループの内包表記も全然苦じゃない、美しいとさえ感じる
395デフォルトの名無しさん
2022/07/19(火) 16:31:26.97ID:RISkfx3J
>>394

ですよね。集合論的な表記に似ています。
396デフォルトの名無しさん
2022/07/19(火) 16:40:41.64ID:wHnodxSw
forループのほうが内包表記より速いなんてことあるの?
397デフォルトの名無しさん
2022/07/19(火) 18:36:04.44ID:paq2dZhq
それこそ、内包表記で呼ぶ関数の回数をカウントして確認たいならデコレーターとかでtqdm使うようにした方が良くないかな?
内包表記の中をごちゃごちゃにするのは基本的には避けた方がいいと思うんだよな。
シンプルに書くために内包表記を使ってるのであって、Zコンビネーターとか使ってへんなことするなら普通のforとかにした方がいいよね
遊びとしては否定しないけどね
398デフォルトの名無しさん
2022/07/19(火) 19:06:26.25ID:xA31LZ9f
code golf で言うと
打数多い方が自慢してるような
糞な流れ
もうやめませんか
399デフォルトの名無しさん
2022/07/19(火) 19:27:22.92ID:w0DVg8Bk
自治厨久しぶりに見た
400デフォルトの名無しさん
2022/07/19(火) 19:55:09.64ID:z/It7jZN
>>397 に一票
こういうのこそデコレーターの出番だと思う
401デフォルトの名無しさん
2022/07/19(火) 20:20:06.84ID:n8OVMrsb
つまり具体的にはどういうこと?
402デフォルトの名無しさん
2022/07/19(火) 22:29:55.85ID:Dd2ngZhk
一行にまとめた内包表記より、インデントした内包表記の方が可読性が下がる
403デフォルトの名無しさん
2022/07/19(火) 22:32:42.31ID:Dd2ngZhk
の?
404デフォルトの名無しさん
2022/07/19(火) 23:31:48.45ID:paq2dZhq
>>401
こんな感じ
imgur.com/a/UsKhUuD

tqdm使いたくなかったらpbarの初期化やpbar.updateの代わりにカウント変数とprintでも使っておいて
405デフォルトの名無しさん
2022/07/20(水) 00:25:50.52ID:sLuJt4wx
>>404
rangeの100で100回ループさせるから
tqdm_wrapperに100を渡してるんだよね?
406デフォルトの名無しさん
2022/07/20(水) 01:30:58.07ID:aFoX4Dx/
>>405
そうそう、その辺はもっといい方法があるかもしれないが、ちょっと思いつかなかったのでそんな感じ。
回数が決まってないときは棒グラフは出せないけど1秒に何イテレーションできてるとかはわかると思う。
407デフォルトの名無しさん
2022/07/20(水) 03:27:59.73ID:vTCCBmkT
@tqdm_wrapper(total_count)ってできればいいんだけど、そういうのは無理なのかな?
408デフォルトの名無しさん
2022/07/20(水) 06:19:50.33ID:uVwid/eb
printなしでやってもforループのほうがほんの少し内包表記より速いんだけどなぜだろう
409デフォルトの名無しさん
2022/07/20(水) 07:14:30.03ID:vC0V/6Za
PEP
pythonは描き方がひとつ(キリっ
410デフォルトの名無しさん
2022/07/20(水) 07:58:53.16ID:rNnuNQ69
>>408
計測結果は何秒だったの
メモリが少なくてスワップ発生してるとか?
411デフォルトの名無しさん
2022/07/20(水) 09:48:14.82ID:53g3nF67
Pythonのネット記事読んでるとAnacondaを入れてどうこう、というチュートリアルばっかりあるんだけど
肝心のAnacondaはどういう状況下で使うものなのか、説明省かれててよくわからないんだよな

ライブラリとpythonのバージョンが合わないと使えないことがあるからそれを避けるため、って認識でいいの?
不具合無かったらAnacondaつかわなくていいのかな?
412デフォルトの名無しさん
2022/07/20(水) 11:17:28.13ID:wWIP1AbD
anacondaはAnaconda社の計算科学のための商品で学生の方など教育や学術目的、または趣味の用途であれば無償でご利用いただけます

入門書とかで使われてるのは、色々と最初から入ってるから開発やデプロイ先の環境構築を解説しなくて済むからだよ
anacondaに依存しないやり方覚えた方が楽っていうか、むしろその方が必須になる
413デフォルトの名無しさん
2022/07/20(水) 11:22:56.97ID:wWIP1AbD
退屈なことは Python にやらせようを書いた人も同じような事言ってた
414デフォルトの名無しさん
2022/07/20(水) 11:27:11.69ID:wWIP1AbD
アナコンダを否定してるわけじゃないよ。素晴らしい商品ですし、選択肢の一つとして選べるのは良いことだと思います
415デフォルトの名無しさん
2022/07/20(水) 11:55:51.53ID:L6JCmqAC
あえて、IronPythonに手を出して茨の道をw
416デフォルトの名無しさん
2022/07/20(水) 13:27:25.36ID:SSFD7/IV
今Twitterなどで話題になってる仮想通貨のbotを作りたいです

年間で1億円ぐらい稼ぐには何の勉強すればいいですか?
417デフォルトの名無しさん
2022/07/20(水) 13:38:38.86ID:pMrjs46b
経済と仮想通貨
418デフォルトの名無しさん
2022/07/20(水) 13:38:57.02ID:ShYgaPwJ
デッサン力
419デフォルトの名無しさん
2022/07/20(水) 14:14:10.83ID:hOJNeZde
これからのキーワードは仮想環境
anacondaもIronPythonもPyTorchも欲しい環境をコンテナ一発でドーン!
ってやりたいからDocker勉強しようかと思っている
420デフォルトの名無しさん
2022/07/20(水) 15:00:19.03ID:qJwz0nM8
ぶっちゃけ
docker の anaconda 版とか
docker の 標準 python 版とか
そういうので良いんだわ
解説書あっても各々インスコ時にバージョンガーとかおま環とか
だるいサポートにみんな疲れたんだろ
421デフォルトの名無しさん
2022/07/20(水) 15:29:51.99ID:djIfGOxS
windows10 + python3.9 では生ソケットを扱う事ができないのでしょうか

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
ソケット作成のとこでエラーがでます
[WinError 10013]
アクセス許可で禁じられた方法でソケットにアクセスしようとしました
とエラーメッセージがでます

ログインしているユーザはadministratorの権限も持っています
英語のサイトで調べるとprohibitというワードもありました
識者の方ご指導願います
422421
2022/07/20(水) 15:40:01.72ID:djIfGOxS
421です
コマンドプロンプトを管理者権限で実行する事が必要であると学びました
423デフォルトの名無しさん
2022/07/20(水) 16:51:36.92ID:rnlV1uw8
anacondaはまああれだけどspyderはなんか好きだ
424デフォルトの名無しさん
2022/07/20(水) 17:04:37.61ID:rNnuNQ69
a=[]
append = a.append
for i in range(30000000):
____append(i)
のように、メソッドをあらかじめ変数に入れると高速化できるという情報をよく見かけるけど本当なの?
何回計測しても誤差程度の差しかなく、速くなってるのか確認できないんだけど
425デフォルトの名無しさん
2022/07/20(水) 17:27:44.50ID:Lx4+ezqp
https://wandbox.org/permlink/xE2gHLprP4RKuqf0
426デフォルトの名無しさん
2022/07/20(水) 17:49:55.19ID:ZOYHOoJs
このくらい最適化してよと思っちゃうんだが無理なんかな?
427デフォルトの名無しさん
2022/07/20(水) 17:50:04.72ID:rNnuNQ69
>>425
ありがとうございます
計測方法のミスに気づきました
関数を作らず計測していたので、append = a.append のところがグローバル変数になって遅くなり、
その結果、高速化していなかったようです
428デフォルトの名無しさん
2022/07/20(水) 18:01:43.03ID:D9vTvaEa
これの出所は概ね公式Wikiだけど、2が全盛期に書かれた物なので
https://wiki.python.org/moin/PythonSpeed#Take_advantage_of_interpreter_optimizations

属性を検索したり、インスタンスを紐付けてバウンドメソッドを返す様な
https://docs.python.org/ja/3.7/howto/descriptor.html#invoking-descriptors
こういった機構を回避するので多少速くなるけど、現行のPythonでは比較的小さい
ローカル変数がグローバル変数より読み書きが速いのも実際そう

>>426
型がないダックタイピングな以上は都度解決するしかないであろうなぁ…
429デフォルトの名無しさん
2022/07/20(水) 18:58:09.37ID:QlVkmKZp
anaconda入れたけど、avastがなぜかウイルス扱いしていて、anaconda立ち上げるとすぐ落ちて使えなくて、あきらめてvscにした
430デフォルトの名無しさん
2022/07/20(水) 20:09:39.43ID:eRSlBPBh
pythonで質問なんですがコンソールに表示される数値の横に量を表したバーを表示させたいのですが

300 ■■■
20 ■
150 ■■

ぐぐっても進捗率をあらわすプログレスバーのtqdmが出てきてしまいどうやって数字に連動した量を表示させるのかわかりません
何かヒントがあればお願いします
431デフォルトの名無しさん
2022/07/20(水) 20:21:54.00ID:hglVd79x
pbar.update(1) ←これの数字をいじる
432デフォルトの名無しさん
2022/07/20(水) 21:24:08.50ID:npea7ePl
>>431
ありがとうございます、おかげさまでなんとかできそうです
素敵なお方だ
433デフォルトの名無しさん
2022/07/20(水) 22:26:00.73ID:rNnuNQ69
>>432
「tqdmが出てきてしまい」て書いてるので、静的に表示するだけだからtqdmは使いたくないのかと思った

静的に表示したい人用おもちゃ
def print_bar(n, max, expansion):
____box = "▏▎▍▌▋▊▉█"
____rate = (n * expansion * 100) // max
____bar = "" + box[7] * (rate//8) + box[rate%8]
____print(bar)

print_bar(50, 100, 1)
print_bar(55, 100, 1)
print_bar(100, 100, 1)
print_bar(100, 200, 1)
print_bar(100, 200, 3)

今書いた書いたらちゃんとテストしてない
434デフォルトの名無しさん
2022/07/20(水) 22:32:08.75ID:rNnuNQ69
>>433
バグってた
すぐ直します
435デフォルトの名無しさん
2022/07/20(水) 22:42:20.27ID:rNnuNQ69
def print_bar(n, max, expansion):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = "" + box[0] * (rate//8)
____if rate%8 != 0:
________bar += box[rate%8]
____print(bar)
print_bar(0, 100, 1)
print_bar(1, 100, 1)
print_bar(2, 100, 1)
print_bar(3, 100, 1)
print_bar(4, 100, 1)
print_bar(5, 100, 1)
print_bar(6, 100, 1)
print_bar(7, 100, 1)
print_bar(8, 100, 1)
print_bar(50, 100, 1)
print_bar(55, 100, 1)
print_bar(100, 100, 1)
print_bar(100, 200, 1)
print_bar(100, 200, 3)
436デフォルトの名無しさん
2022/07/20(水) 22:53:43.67ID:JXXlHdvc
Ruby on Rails なら、VSCode, WSL2, Vagrant, Virtual Box でも出来るけど、
Python は依存モジュールが多いから、Docker が普通

自宅ではじめるDocker入門[改訂版]、浅居 尚、2021/4

この本が最も簡単
437デフォルトの名無しさん
2022/07/20(水) 23:38:31.06ID:hOJNeZde
>>435
barだけだとやっぱり分かりにくいですね数字も必要だと思いました
もしくはbarの到達位置の表示が必要
438デフォルトの名無しさん
2022/07/20(水) 23:59:09.30ID:hOJNeZde
>>436
Dockerの書籍でているのね、レビュー評価もメチャいいじゃん
でもネット上に公式?の日本語ドキュメントがあるからこれでいけるんじゃないかな??どうかな?w
https://matsuand.github.io/docs.docker.jp.onthefly/
https://docs.docker.jp/index.html
439デフォルトの名無しさん
2022/07/21(木) 01:17:04.66ID:dz51dLzk
>>437
値、開始位置、最大到達位置を表示しました

def print_bar(n, max, expansion):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 200) // max
____bar = "" + box[0] * (rate//8)
____if rate%8 != 0:
________bar += box[rate%8]
____print(f"{n:{len(str(max))}d} | {bar:{expansion*25}s} |\n")
print_bar(8, 100, 4)
print_bar(50, 100, 4)
print_bar(90, 100, 4)
print_bar(100, 100, 4)
440デフォルトの名無しさん
2022/07/21(木) 03:59:00.54ID:c34Fgnuj
PythonでAI作り始めてから電気代が2000円以上高くなった
441デフォルトの名無しさん
2022/07/21(木) 08:50:46.37ID:nja0E+A7
>>439
すばらしい全部入っている! けども200とか25とかなんだろう?ああ小数点がイヤだから2倍しているのか
となったので、計算式が分かるようにした方が可読性とメンテナンス性があがると思いました
以下計算式を明示した改良版

import math
def print_bar(n, max, expansion):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = "" + box[0] * (rate//8)
____if rate%8 != 0:
________bar += box[rate%8]
____print(f"{n:{len(str(max))}d} |{bar:{math.ceil(expansion*100/8)}s}|\n")
442デフォルトの名無しさん
2022/07/21(木) 11:05:44.45ID:nja0E+A7
さらに良くなった
import math
def print_bar(n, max=100, expansion=1):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = box[0] * (rate//8)
____if rate%8 != 0:
________bar += box[rate%8]
____print(f"{n:{len(str(max))}d} |{bar:{math.ceil(expansion*100/8)}s}|\n")
443デフォルトの名無しさん
2022/07/21(木) 19:29:07.60ID:dz51dLzk
やっぱりmath.ceil使ったほうがいいよな
importを減らしたがる癖が抜けず2倍してしまった
444デフォルトの名無しさん
2022/07/21(木) 20:09:26.68ID:dz51dLzk
最終型
import math
def print_bar(n, max=100, expansion=1, *, cr=2, sep="|", prefix="", suffix="", unit=""):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = box[0] * (rate//8) + box[rate%8] * bool(rate%8)
____print(f"{prefix}{n:{len(str(max))}d}{unit} {sep}{bar:{math.ceil(expansion*100/8)}s}{sep}{suffix}" + "\n"*cr, end="")
445デフォルトの名無しさん
2022/07/21(木) 21:25:09.45ID:nja0E+A7
>>444
すんごーい! crの初期値は1が良いかな、それ以外は全部気に入りました
446デフォルトの名無しさん
2022/07/22(金) 00:46:45.54ID:LN4IvGf8
>>444
ありがとうございます
447デフォルトの名無しさん
2022/07/22(金) 11:32:26.12ID:emgmw9dd
>>421-422
runas
448デフォルトの名無しさん
2022/07/22(金) 14:53:38.79ID:hAgOKfi8
>>444
数値を非表示にするオプションつけ忘れた
449デフォルトの名無しさん
2022/07/22(金) 17:03:59.46ID:t+dBeaSp
>>448
そのオプション名を何にするかでセンスが問われる
num, display_num, meter, bar_value, ..etc
さあ、キミのセンスを見せてくれ!
450デフォルトの名無しさん
2022/07/22(金) 17:47:22.62ID:iaUAG8EO
ここはきみの日記帳じゃない
451デフォルトの名無しさん
2022/07/22(金) 19:07:18.92ID:t+dBeaSp
>>450
関数や変数の命名はとても重要だよ? 端的で分かりやすくする必要がある
それが可読性やメンテナンス性をあげるわけなのだよ
プログラミングは名前付けであると言われる所以はそういうことなのだよ

今回の数値の非表示オプション名は非常に難しい、私的にはdisplay_valueがベストかな?
と考えつつも彼の意見も参考にしたいわけだ、もちろんtqdmではどうしているのかな?
と調べたりもした、tqdmではbar_formatで書式を指定できるみたいだね
その中で数値部分はpercentageという変数名のようだ
print_barはunit指定ができるわけで%表示固定ではないから、percentageは適切ではない
と考えると・・ね?難しいでしょ? 皆の意見も聞きたいじゃん!
452デフォルトの名無しさん
2022/07/22(金) 19:43:18.38ID:bpOnuI9e
名前は重要。
開発が終わった後でも、コードを見る事があるから

プログラミングの3割の時間は、分かりやすい名前を考えること

簡潔に説明されている名前なら、
処理を詳しく見なくても理解が進むので、バグも減って高品質になる

リファクタリング・メソッド化などは、Rubyist の基本
453デフォルトの名無しさん
2022/07/22(金) 19:52:25.71ID:PdYjn4LX
メソッドが長すぎると名付けが難しいから結局は短く作るのがいいのか?
でもそれだと分割しすぎとか言われそうだし

「汎用的、抽象的」な名前がいいのか「汎用的な名前を避けて具体的」にすべきなのか
454デフォルトの名無しさん
2022/07/22(金) 19:52:35.56ID:t+dBeaSp
>>448
でけた! tqdmのbar_formatを採用
これで数値の表示/非表示はもちろん色々柔軟に対応できる

def print_bar(n, max=100, expansion=1, *, bar_format="{prefix}{num}{sep}{bar}{sep}{suffix}",
____________ unit="%", sep="|", prefix="", suffix="", cr=1):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = box[0] * (rate//8) + box[rate%8] * bool(rate%8)
____bar = f"{bar:{math.ceil(expansion*100/8)}s}"
____num = f"{n:{len(str(max))}d}{unit}"
____print(bar_format.format(**locals()) + "\n"*cr, end="")
455452
2022/07/22(金) 21:05:54.53ID:bpOnuI9e
例えば、Ruby のモジュール関数の名前なら、
cancel_button_label_text
apply_or_cancel_button

インスタンスメソッド名なら、
obj.suspended?

末尾の? で、戻り値がbool 型だと表現できる
456デフォルトの名無しさん
2022/07/22(金) 21:06:08.18ID:aVBkeTN2
>454
print_bar.update ってできない?
457デフォルトの名無しさん
2022/07/22(金) 21:29:43.19ID:t+dBeaSp
>>456
tqdmのupdateみたいなことができるかってこと? クラス化すればできるよ
ああ、bar_formatとか呼び出すごとに変数指定するのはアホだよね
クラス化してインスタンス生成時にbar_format指定した方がいいよね
458デフォルトの名無しさん
2022/07/22(金) 22:27:04.77ID:t+dBeaSp
クラス化できたけど、関数バージョン(>>444)の方が好きかも

class print_bar:
____def __init__(self, max=100, num_format="{num:{max_digit}d}{unit}",
____________ bar_format="{prefix}{num_format}{sep}{bar}{sep}{suffix}",
____________ unit="%", sep="|", prefix="", suffix="", cr=1):
________self.box = "█ ▏▎▍▌▋▊▉"
________self.max = max
________self.max_digit = len(str(max))
________self.num_format = num_format
________self.bar_format = bar_format
________self.unit = unit
________self.sep = sep
________self.prefix = prefix
________self.suffix = suffix

____def update(self, num, expansion=1, cr=1):
________rate = (num * expansion * 100) // self.max
________num_format = self.num_format.format(num=num, **self.__dict__)
________bar = f"{self.box[0] * (rate//8) + self.box[rate%8] * bool(rate%8):{math.ceil(expansion*100/8)}s}"
________print(self.bar_format.format(bar=bar, **dict(self.__dict__, num_format=num_format)) + "\n"*cr, end="")

p = print_bar()
p.update(70)
459デフォルトの名無しさん
2022/07/22(金) 22:57:55.57ID:oFTCo3Qt
日記帳で試行錯誤して、結論が出てから書き込んでください
460デフォルトの名無しさん
2022/07/22(金) 23:49:56.07ID:XYg2RZCf
boxサーバーに上がっているExcelやcsvのデータってpythonで読み取ることできるのでしょうか?
https://app.box.com/file/xxxxxxxxxxxxxのようなURLを指定して
ファイル内のデータを読み込みたいのですがうまくいきませんでした。
461デフォルトの名無しさん
2022/07/23(土) 06:43:50.22ID:NAv7kQq5
beautifulsoupでいったんダウンロードすれば?
462デフォルトの名無しさん
2022/07/23(土) 06:53:36.23ID:DC0ZGSft
ども、print_barの作者です。こんな短いプログラムに作者もくそもないですが・・・
上記コードを参考させてもらい考えました。私ならこうします
import math
def print_bar(num, max=100, expansion=1, *, prefix="", display_num=True, unit="", sep="|", suffix="", cr=1):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (num * expansion * 100) // max
____bar = f"{box[0] * (rate // 8 ) + box[rate % 8] * bool(rate % 8):{math.ceil(expansion * 100 / 8)}s}"
____num_formated = f"{num:{len(str(max))}d}" * display_num
____print(f"{prefix}{num_formated}{unit} {sep}{bar}{sep}{suffix}" + "\n"*cr, end="")
display_valueのほうがわかりやすいけど長いから好きじゃない。何度も書く名前ならdisp_numに短縮するかも。
bar_formatは付けたい人が自分でつければいい
最低限の機能が付いていて、可読性・カスタマイズの容易性を考えるとこんなところでしょうか
463デフォルトの名無しさん
2022/07/23(土) 07:10:57.00ID:DC0ZGSft
>>462
formattedです。恥ずかしいミス
464デフォルトの名無しさん
2022/07/23(土) 07:22:10.22ID:ytdxYh/D
なんか昨日のアップデートでWindows TerminalがIME勝手にON(英字入力)になる。とっても面倒くさい。
OFFにする方法ない?
465デフォルトの名無しさん
2022/07/23(土) 09:23:17.53ID:bR39w9BX
>>459
++
ほんそれ
466デフォルトの名無しさん
2022/07/23(土) 09:48:06.05ID:lkZCuVJ2
>>462
おつかれちゃーん、なかなか楽しめたし勉強になったわ
日記帳とか言ってる奴等も参加すれば良かったのに、実際にコード書かないと勉強にならないぞっ!w
467デフォルトの名無しさん
2022/07/23(土) 10:20:26.06ID:zqWGCIwO
コード出してあれこれやるのはいいと思うけどここまで引っ張るのはさすがにスレチだわな
こっちへ行けよ

Pythonのお勉強 Part67
http://2chb.net/r/tech/1653540315/
468デフォルトの名無しさん
2022/07/23(土) 10:32:50.67ID:lkZCuVJ2
>>467
引っ張るとスレチって意味が分からんw そっちのスレも同じじゃん何が違うのよ?
うーん、、もしかして自分が質問したレスが埋もれちゃったとか?
それは関係ないよ、単に答えられるor答える人が居なかっただけで我々のせいではない
469デフォルトの名無しさん
2022/07/23(土) 10:41:14.21ID:iHVC6bwv
我々…
470デフォルトの名無しさん
2022/07/23(土) 10:43:44.38ID:bR39w9BX
自演で自分のレス褒めてるレスとか観ると
他人事乍ら哀しくなるな
471デフォルトの名無しさん
2022/07/23(土) 10:59:03.42ID:zqWGCIwO
>>468
スレタイも読めないのか?
ここは超初心者用な
>>430はスレタイに沿ってるけどその後print_bar でグダグダ書くのは違うだろ
472デフォルトの名無しさん
2022/07/23(土) 11:09:30.68ID:QCnlUATD
スレタイに日記帳って書いてあるスレで試行錯誤すべきだったよな
473デフォルトの名無しさん
2022/07/23(土) 11:18:41.28ID:lkZCuVJ2
>>471
うん?>>433からすでにスレチってこと?
コード出してあれこれは良いとか>>467に書いてるし
何が言いたいのか意味が分からん、どこからスレチなのかレス番号かけや
474デフォルトの名無しさん
2022/07/23(土) 11:21:00.46ID:Q9mI3iQv
しつこい
475デフォルトの名無しさん
2022/07/23(土) 11:29:25.91ID:zqWGCIwO
>>473
スレチかどうかの閾値なんて人によって違うからここからスレチなんて言うことはできない
それでも「ここまで引っ張ったら」多くの人がスレチって感じるだろって話
476デフォルトの名無しさん
2022/07/23(土) 11:31:58.41ID:lkZCuVJ2
>>475
ほえぇぇぇぇえぇぇええええええええ〜〜〜〜〜〜〜〜!!
ボクちゃんが気に食わなかったからスレチですってことですかぁああああ???
びっくりしましたぁぁああああああwwww
477デフォルトの名無しさん
2022/07/23(土) 11:38:20.58ID:3Ek+JvxJ
3回までよくて4回目がだめなんてことはない
3回でだめな人もいるし、4回はアウトだろうという人もいる
だが10回までくるとさすがに全員がアウトと感じる
そういう状況
478デフォルトの名無しさん
2022/07/23(土) 11:49:34.23ID:lkZCuVJ2
>>477
うん?10回は全然良いよ、っていうかスレに沿っているなら何回でもええがな
全員がアウトと感じるとかウソつくなよw 君たちのお気持ちの表明がまさにスレチw
なぜならPythonと全く関係ございません!これが完璧なスレチの指摘というものだよ
お気持ちとか何だよww 脳みそ付いてんのか?w
479デフォルトの名無しさん
2022/07/23(土) 11:49:41.79ID:Py93vpAm
>>476
> ボクちゃんが気に食わなかったからスレチですってことですかぁああああ???
ダメな理由は前に書いてあるだろ...

> スレタイも読めないのか?
> ここは超初心者用な

> びっくりしましたぁぁああああああwwww
お前の無能さにこっちがびっくりだよw
480デフォルトの名無しさん
2022/07/23(土) 11:51:51.55ID:NAv7kQq5
>>478
そう、君たち、この言葉がすべて
おまえだけだよいいと思ってんのは
481デフォルトの名無しさん
2022/07/23(土) 11:52:41.39ID:lkZCuVJ2
>>479
ダメな理由は>>475に書いてあんだろ、スレに沿っていたけど途中で彼の閾値を超えたんだってww
10回はダメでちゅ〜〜ww
482デフォルトの名無しさん
2022/07/23(土) 11:53:42.77ID:lkZCuVJ2
>>480
はい、じゃあ全員じゃないね、答え合わせありがとうw
483デフォルトの名無しさん
2022/07/23(土) 12:01:36.99ID:LCkddkGN
>>460
460です。beautifulsoupも初めて聞いたレベルなのですが、
チャレンジさせていただきます。
ありがとうございました。
484デフォルトの名無しさん
2022/07/23(土) 12:01:47.65ID:LCkddkGN
>>461
460です。beautifulsoupも初めて聞いたレベルなのですが、
チャレンジさせていただきます。
ありがとうございました。
485デフォルトの名無しさん
2022/07/23(土) 12:02:11.20ID:cx+wDCne
>>482
そうだね
一人だけ空気読めないやつがいる
これが正確な言い方
486デフォルトの名無しさん
2022/07/23(土) 12:12:16.70ID:zqWGCIwO
今日の様に暑いとID:lkZCuVJ2みたいな奴が犯罪にはしらないか心配になるw
487デフォルトの名無しさん
2022/07/23(土) 12:12:53.56ID:DC0ZGSft
462です。
スレ見なおしたけど反省するようなレスしていない
449で予想外のツッコミ受けて驚いたが。
自治厨の相手はしたくないので、この件のコメントはこれが最初で最後
488デフォルトの名無しさん
2022/07/23(土) 12:13:10.23ID:Sr9KJy9/
絶望的に適性ないやつがいるな
そんな無駄なことは今すぐやめろ
限りある人生をもっと有意義なことに使え
489デフォルトの名無しさん
2022/07/23(土) 12:16:15.57ID:cx+wDCne
まあ反省できるようなやつだったら最初からこんなことしないわな
490デフォルトの名無しさん
2022/07/23(土) 12:39:52.71ID:zqWGCIwO
コード出して色々言うのはいいけど適切なスレでやってねって話なんだけど自治厨とか言い出してる時点で反省なんてしてないわなw
491デフォルトの名無しさん
2022/07/23(土) 12:46:43.25ID:b3gXMMo0
自己中なんだろ
自分以外見えてない
492デフォルトの名無しさん
2022/07/23(土) 15:41:49.42ID:FAO+OpS7
ネオ麦茶
493デフォルトの名無しさん
2022/07/23(土) 17:14:17.68ID:QCnlUATD
>>492
犯罪示唆ですね
通報しました
494デフォルトの名無しさん
2022/07/23(土) 18:06:21.74ID:KR63qUqp
随分とハイコンテクストな犯罪教唆だな
495デフォルトの名無しさん
2022/07/23(土) 21:20:29.07ID:MqDru3I9
>>460
例えばRuby では、input.csv が以下の内容として、
a
b,c

require 'csv'
require 'open-uri'

url = "http://localhost:8000/input.csv";

CSV.parse( open( url ).string ).each do | row | # 1行ずつ処理する
p row
end

出力
["a"]
["b", "c"]

または、curl コマンドを使う事もできる。
input_csv = `curl #{ url }`
496デフォルトの名無しさん
2022/07/23(土) 22:54:21.58ID:jIlcufBL
完全自殺なんチャラって本も流行ったなぁ
497デフォルトの名無しさん
2022/07/24(日) 05:32:21.57ID:or5HZl/v
1.適性がない、というその適性を定義してください。
2.適性がない、となぜ判断したのか 1. をもとに詳しく記述してください
3.1.2.が出来ないのではないのならば、あなたこそ、あなたのいう適性をもちあわせていない、と私は判断します
以上
498デフォルトの名無しさん
2022/07/24(日) 10:18:49.14ID:VDm4wods
>>497
非論理的だね
著しく論理的思考能力の低い人はプログラミングの適性がないと言われても仕方ない
499デフォルトの名無しさん
2022/07/24(日) 12:33:12.33ID:DlP0Pw4T
>>498
1.自民党と統一教会の関係を説明してください
2.公明党と政教分離の関係を説明してください
3.おまえは馬鹿
500デフォルトの名無しさん
2022/07/24(日) 13:48:43.90ID:Kadg5L8P
>>499
ここで政治の話は止めて頂きたい
501デフォルトの名無しさん
2022/07/24(日) 14:03:28.06ID:s7YMPwIQ
>>500
おまえは馬鹿
502デフォルトの名無しさん
2022/07/24(日) 14:09:01.48ID:nqGRTr2S
プログラミングしてると、
Delete、Enter、BackSpace、半角全角、home、end
ここらへんがホームポジションから遠すぎて困るな
半角、全角は無変換と変換に割り当てたんだけど

みんなはキーマップカスタマイズとかしてるの?
503デフォルトの名無しさん
2022/07/24(日) 14:12:13.07ID:s7YMPwIQ
それはPythonと関係のある話題ですか?
504デフォルトの名無しさん
2022/07/24(日) 14:14:56.30ID:QkJUlhBv
手を叩いて大きくすると良い感じになるよ。
505デフォルトの名無しさん
2022/07/24(日) 14:20:46.38ID:VlRFcd7U
>>499
メンバシップ関数を定義するのけ?
506デフォルトの名無しさん
2022/07/24(日) 14:43:22.46ID:Kadg5L8P
>>502
ctrl<->capsの入れ替えくらい
507デフォルトの名無しさん
2022/07/24(日) 16:12:15.26ID:ydeGY7xn
>>502
親指活用できるエルゴノミクスキーボード使ってる
詳しくはハードウェア板のエルゴノミクスキーボードスレへ
kinesis, ergodox, teckあたりかねその辺打ちやすいの
508デフォルトの名無しさん
2022/07/24(日) 16:23:06.62ID:oKMHGzT9
集団自決したはずなのに生きていた人が死去
509デフォルトの名無しさん
2022/07/24(日) 19:45:11.64ID:e/hljxBO
スクレイピングの練習中でリスト内包表記とre.search()について教えてください
seleniumとlxmlで取得したデータの変換がうまく行かないです

url_list = ['https://www.tekitou'+re.search(r'[^0-9A-Z]dp[^0-9A-Z]([0-9A-Z]{10})([^0-9A-Z]|$)',a.get('href')).group() for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]

html.cssselect('#tekitou > div > div > a:nth-child(1)').get('href')の時点で取得できてるurlは下記のような感じです。

https://www.tekitou/%〇〇%〇〇/dp/(10桁の英数字 英は半角大文字)/ref=zg_bs_10桁の数字_2桁の数字/3桁の数字-7桁の数字-7桁の数字?pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1

https://www.tekitou/music/player/ref=zg_bs_10桁の数字_2桁の数字/3桁の数字-7桁の数字-7桁の数字?pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1


re.search().group()する前のurlが/dp/ありのurlと/dp/なしのurlに分かれるのですが、
re.search(r'[^0-9A-Z]dp[^0-9A-Z]([0-9A-Z]{10})([^0-9A-Z]|$)',a.get('href')).group()の作業の際にエラーがでてしまうため
/dp/なしのurlを削除するようにするか、
pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1の(10桁の英数字 英は半角大文字)を取得するようにしたいです。

なにかうまい表記があれば教えてください
510デフォルトの名無しさん
2022/07/24(日) 19:55:36.27ID:IZxLU3+7
秀丸最強
511デフォルトの名無しさん
2022/07/24(日) 20:08:14.75ID:JBPZyDq1
アマゾンのURLくらいググったら色々出てきそうだけどクソ見にくい正規表現で無理せずにスラッシュでsplitでifにlengthとアスキー確認くらいでいいんじゃないの?
512デフォルトの名無しさん
2022/07/24(日) 23:38:55.79ID:GhBFnIe8
プログラミングって直感じゃね?
論理は直感を説明するのに用いることに有効だけど
プログラム書くのにいちいち考えないっしょ
考えるのは設計とテストだけだし
513デフォルトの名無しさん
2022/07/24(日) 23:39:26.11ID:GhBFnIe8
それ以外にもあるかもしれんけど
514デフォルトの名無しさん
2022/07/24(日) 23:43:50.14ID:nVQ6Xq/p
>>509
pd_rd_iから取得
url_list = ['https://www.tekitou/dp/{0}/'.format(re.findall(r'\?pd_rd_i=(\w+)', a.get('href'))[0]) for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]
515デフォルトの名無しさん
2022/07/25(月) 00:22:12.12ID:kwIPZDW5
argparse使って、たとえば1つ目の位置引数(スイッチのようなもの)の違いで、それ以降は全く異なる引数ルールになるような場合はどのような指定をすればよいでしょうか?
それともそれぞれ別のルールを定義してパースする必要がありますか?

すごく簡単な例ですが、addの場合とlistの場合で指定する引数が違うようなものとか
user.py
-add name [--prop property]
-list [--group group]
516デフォルトの名無しさん
2022/07/25(月) 00:41:00.73ID:YiCqNPeZ
>>515
1つめの位置引数を読んでから残りをargparseにかければいいんでないの?

それかサブコマンド対応してるライブラリを使うか
517デフォルトの名無しさん
2022/07/25(月) 00:57:12.30ID:kwIPZDW5
>>516
なるほど。argparseで一度にまとめてできればと思ったんですが、できないってことですね…
518デフォルトの名無しさん
2022/07/25(月) 01:00:15.74ID:gTrk2zFk
>>509
例えば、Ruby なら、

URI.split で、URL のパス部分だけを抜き出して、
その文字列内に、/dp/ が含まれているかで条件分岐する

require 'uri'

dp_url = "http://example.com/%E3%81%82/dp/a"; # あ = %E3%81%82
non_dp_url = "http://example.com/%E3%81%82/a";

p dp_ary = URI.split( dp_url )
p non_dp_ary = URI.split( non_dp_url )
#=> ["http", nil, "example.com", nil, nil, "/%E3%81%82/dp/a", nil, nil, nil]
#=> ["http", nil, "example.com", nil, nil, "/%E3%81%82/a", nil, nil, nil]

# パス部分
p dp_ary[ 5 ]
p non_dp_ary[ 5 ]
#=> "/%E3%81%82/dp/a"
#=> "/%E3%81%82/a"

p dp_ary[ 5 ].match( '/dp/' )
p non_dp_ary[ 5 ].match( '/dp/' )
#=> <MatchData "/dp/"> : 一致する
#=> nil : 一致しない
519デフォルトの名無しさん
2022/07/25(月) 01:03:04.79ID:oCKr0yXR
add_subparsersでやればいいんじゃない
520デフォルトの名無しさん
2022/07/25(月) 09:00:21.95ID:9Mfr9nvz
>>512
うう……設計がプログラミングに含まれてない……うそやろ……
521デフォルトの名無しさん
2022/07/25(月) 09:35:32.16ID:Tcjxae6G
>>509
/dp/(10桁の英数字 英は半角大文字)があれば、その(10桁の英数字 英は半角大文字)を取得
?pd_rd_i=(10桁の英数字 英は半角大文字)があれば、その(10桁の英数字 英は半角大文字)を取得
どちらも無ければ空文字を返しエラーとはならない方法

url_list = ['https://www.tekitou/dp/{0}/'.format(re.search(r'(?<=/dp/)(\w+)|(?<=\?pd_rd_i=)(\w+)|$', a.get('href')).group()) for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]
522デフォルトの名無しさん
2022/07/25(月) 09:43:03.78ID:VgpbHR93
>>520
Don't think. Feeeel!!
523デフォルトの名無しさん
2022/07/25(月) 10:25:41.85ID:kwIPZDW5
>>519
add_subparsers使えばできますね!
ありがとうございます。
524デフォルトの名無しさん
2022/07/25(月) 12:52:01.49ID:gFjrq6Gs
>>520
設計は人が考えたものを具現化するプロセスまでの事でプログラミングに含まれないよね

プログラミングは優秀な言語と開発支援ツールに頼って直感のままに組み立てる作業

人が本来やることは自身の進化とソフトウエアのアップデート対応に強い設計する事と作業を減らす工夫と世界が前進することへの貢献
525デフォルトの名無しさん
2022/07/25(月) 12:57:49.15ID:gFjrq6Gs
簡単そうに言ってるけど
かなり時間かけて様々なことを知らないといけないし知らない未知のことへの挑戦もしてかなきゃいけない
そーゆー志を持った人がこのスレの中に居てくれたら俺は嬉しい
526デフォルトの名無しさん
2022/07/25(月) 13:20:20.14ID:9Mfr9nvz
>>524
(それコーディングじゃない?)
527デフォルトの名無しさん
2022/07/25(月) 14:36:18.33ID:evu7R6rH
docker入れてみたけどやっぱ仮想環境だからGB単位でメモリそこそこつかうんだよな
アイドル状態で8GB、vscodeで1〜2GB、dockerで2GB、Chromeで動画見ながら作業したら2〜3GBぐらい使うからギリギリで困る
やっぱメモリ32GBは入れないとだめか
528デフォルトの名無しさん
2022/07/25(月) 15:07:03.89ID:fmU0SO/o
>>526
(ちんこかゆい)
529デフォルトの名無しさん
2022/07/25(月) 16:14:04.12ID:GOtCNvAE

530デフォルトの名無しさん
2022/07/25(月) 19:47:19.85ID:GWKUHzSt
>>514
>>521
ありがとうございます
行けました!
531デフォルトの名無しさん
2022/07/25(月) 19:49:50.49ID:GWKUHzSt
seleniumで複数ブラウザ立てて並列処理してみたいけど難しそう
scrapyで楽天からスクレイピングしてみたら非同期処理?のせいで早すぎて速攻アク禁くらった
532デフォルトの名無しさん
2022/07/25(月) 20:11:37.41ID:NlibKZuA
>>531
プロファイルを別にすればいけるよ
高速化目的で同じサイトに並列アクセスするのはやめた方がいい
533デフォルトの名無しさん
2022/07/25(月) 20:20:18.30ID:mO6SEFWJ
流石にもういきなり逮捕はされないと思うけど、librahackみたいなことが起こらないとは言えないから怖いよねー。
アクセスログで見ても、ギリギリ人間がアクセスしてるって言い訳できるぐらいの間隔を乱数で作ってsleepしてるわ。
534デフォルトの名無しさん
2022/07/25(月) 21:11:33.84ID:Tcjxae6G
>>511
フハハハハハハハハ、>>521を刮目せよ! 賞賛の声(>>530)を聞け!
正規表現はクソ見にくいわけはなく、むしろ簡潔であり完璧であり完全無欠なのである
正規表現にできないことはなく、正規表現に代わるものはなし
正規表現はまさに人類の叡智なのである
535デフォルトの名無しさん
2022/07/25(月) 21:14:45.44ID:GF1rw+EH
イヤイヤイヤイヤ、普通にクソ見にくいでしょ。
他人が理解できないものを書くほうが偉いって風潮何とかならんの?
536デフォルトの名無しさん
2022/07/25(月) 21:44:24.25ID:Tcjxae6G
>>535
偉いとかじゃなくて便利なんだよ
>>521の正規表現は別に難しい部類じゃない、\wは単語文字という意味で英数字も含まれる
\w+で単語文字が1個以上という意味になる、その前の(?<=...)は後読みアサーションで
これにマッチした後の\w+をサーチしているわけで基本というか、ちょっと勉強すれば、というか
正規表現の仕様に例が載ってるから、例みたらすぐ理解できるよ
https://docs.python.org/ja/3/library/re.html

自分的には最後の|$が工夫した点で、コレでサーチできなかった場合に空文字を取得させることができる
正規表現使わずにスラッシュでsplitでifにlengthとアスキー確認なんかの方が見にくいだろうし
面倒すぎてやっとれんよ
537デフォルトの名無しさん
2022/07/25(月) 22:07:08.94ID:5m9dN2FM
(超初心者用)
538デフォルトの名無しさん
2022/07/25(月) 22:50:49.78ID:Tcjxae6G
>>529
最新動画の@cacheがマジ感動した、最後のフィボナッチの高速化がマジ良かった
マジでマジでマジだから
539デフォルトの名無しさん
2022/07/25(月) 23:03:45.65ID:gTrk2zFk
WSL2, Docker は、8GB メモリじゃキツイ

16〜32GBは欲しい
540デフォルトの名無しさん
2022/07/25(月) 23:56:34.13ID:XTViXxR/
>>536
スラッシュでsplitでアスキー確認って
[i for i in ○.split('/') if len(i) == 10 and i.isascii()]
で終わりでしょ
それ自体に難しさも見にくさも感じないが
541デフォルトの名無しさん
2022/07/26(火) 01:23:31.22ID:HcfNtCqI
正規表現学びたいけど複雑すぎて訳分かんねえよ
なんか練習できるところないの?
ゲームっぽく遊べたりする所どっかあるだろ?
542デフォルトの名無しさん
2022/07/26(火) 03:23:25.62ID:fUa59wf/
ターミナル
543デフォルトの名無しさん
2022/07/26(火) 08:00:48.09ID:hxnsYVU0
>>540
これはアカンでしょ、ifってそんなけ? /dp/の判定が無いし
/dp/が無かった場合にpd_rd_iから取得する処理が無いし
これでいいなら正規表現ならこうじゃわいな
re.search(r'\w{10}|$', ○).group()
544デフォルトの名無しさん
2022/07/26(火) 08:23:18.19ID:hxnsYVU0
findall使った方がいいか、こっちの方が>>540と処理結果同じだわ
re.findall(r'\w{10}', ○)
545デフォルトの名無しさん
2022/07/26(火) 09:42:11.06ID:28W+mdVQ
10桁英数のチェックが必要ないならこれでいけるんじゃね
([i[:10] for i in url.split("/dp/") + url.split("pd_rd_i=") if not i.startswith("https:")] + [""])[0]
チェック必要なら1行ではきびしいか
546デフォルトの名無しさん
2022/07/26(火) 10:10:32.06ID:2F7nQnXP
pd_rd_iは必須じゃないからなあ
547デフォルトの名無しさん
2022/07/26(火) 11:04:25.18ID:hxnsYVU0
>>545 を抽象化+10桁チェック+isasciiチェック追加(10桁チェックは不要だとは思うけども・・)
[i[:10] for i in url.split("/dp/")[1:] or url.split("pd_rd_i=")[1:] if len(i[:10])==10 and i[:10].isascii()]
気づいたんですけどこのisascii()でのチェックはasciiのチェックであって、ascii文字のチェックじゃないから
英数字だけじゃなくて/やtabやらもTrue判定しちゃいますからダメですね

ちなみに>>521も10桁チェックは入っていないのですが、入れた場合は以下のようになりまして
その場合もやはり分かりやすい、可読性が良い、簡潔、何をしているかすぐ分かる
正規表現スキになっちゃったって方はgoodボタン押してください^^
re.search(r'(?<=/dp/)(\w{10})|(?<=\?pd_rd_i=)(\w{10})|$', url).group()
548デフォルトの名無しさん
2022/07/26(火) 11:06:35.56ID:Uy4U9BVa
goodボタンってどこにあるの?
549デフォルトの名無しさん
2022/07/26(火) 11:37:39.45ID:PhJ4pIjK
精神病になるとそういうボタンが見えるらしいよ
550デフォルトの名無しさん
2022/07/26(火) 12:16:00.10ID:k5BnME6W
こいつ上の方にいた日記帳キチガイだな
551デフォルトの名無しさん
2022/07/26(火) 12:21:32.78ID:r5zklFsb
ハッタツしょう害なんじゃねえの
552デフォルトの名無しさん
2022/07/26(火) 12:37:44.00ID:28W+mdVQ
>>547

英数字チェック完全版+セイウチ
[x for i in url.split("/dp/")[1:] or url.split("pd_rd_i=")[1:] if len(x:=i[:10])==10 and x.isascii() and x.isalnum()]
553デフォルトの名無しさん
2022/07/26(火) 12:44:17.32ID:IrL7txwd
・フリーランスに立ちはだかる「常駐」の壁。慣例を打ち壊し、
“テレワーク”案件3割→8割へと成長を遂げた「クラウドテック」の軌跡
・リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、
 業務委託契約の求職者と企業をマッチング 
・1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
 人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!
・『ReWorks(リワークス)』リモートワーク特化型転職サイトとして 3月5日 リニューアル
・副業・兼業マッチングサービス「クラウドリンクス」登録者数2万人突破
 中小企業で進む副業人材の採用、96%が継続採用を希望
・フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
・茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金
・長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給
554デフォルトの名無しさん
2022/07/26(火) 12:59:25.55ID:hxnsYVU0
>>552
すばらしい! これ以上は良くなりそうにないね
こうして見るとやはり正規表現の方がいい、仕様変更にもすぐ対応できるし
555デフォルトの名無しさん
2022/07/26(火) 13:07:45.08ID:563vGs1S
ではこの話はこれで終わりです
556デフォルトの名無しさん
2022/07/26(火) 13:15:56.15ID:hxnsYVU0
へ? ここで>>552が「実行速度では負けてないもんね!」つって速度勝負をしかけてきて
それならre.compileじゃぁあああって応戦してからの、やっぱ「速度じゃreは不利じゃわい」
つって、「いやいや、やはり正規表現さんの勝ちですわ、メンテナンス性では完敗ですもん」
ってお互いが歩み寄ってからの熱い握手で終幕やろうが! まあええわ次の話題もってこいや
557デフォルトの名無しさん
2022/07/26(火) 13:30:39.77ID:P5K5X/wN
ID:t+dBeaSp
ID:lkZCuVJ2
ID:Tcjxae6G
ID:hxnsYVU0
558デフォルトの名無しさん
2022/07/26(火) 16:43:34.40ID:gc9s0ohk
以上
今日の自演でした
559デフォルトの名無しさん
2022/07/26(火) 17:59:35.79ID:gc9s0ohk
>>492-494
秋葉で暴走した加藤は死刑完了したそうだ
560デフォルトの名無しさん
2022/07/26(火) 18:59:47.50ID:aND0EYYo
python使いやすくていいわーって思ってたけど
json使ったら面倒だなと思った…
これ自分で辞書にしたり戻したりしないといけないわけ?
pickleちゃんはバイナリになるからやだ
561デフォルトの名無しさん
2022/07/26(火) 19:06:35.62ID:QBs9x9BG
>>559
あの事件で大学の同級生死んじゃったよー……。執行まで長かったなー
562デフォルトの名無しさん
2022/07/26(火) 19:40:58.02ID:Uy4U9BVa
まじかよ
東大近いもんな
優秀な人を亡くすのは実に惜しい
563デフォルトの名無しさん
2022/07/26(火) 19:44:17.06ID:QBs9x9BG
>>562
は?東大生死んでないが?
564デフォルトの名無しさん
2022/07/26(火) 19:44:58.50ID:Sr1olQPp
while True:
 わーいPython便利だなー
 あれ?このXを扱うのってめんどくさくね?
 他の言語にしよっと
 X以外がめんどくさすぎる!
565デフォルトの名無しさん
2022/07/26(火) 19:57:04.85ID:hxnsYVU0
>>560
じゃあyamlちゃんは?

566デフォルトの名無しさん
2022/07/26(火) 20:47:35.71ID:GQvz79KS
Jsonって殺人鬼だったのに。
567デフォルトの名無しさん
2022/07/26(火) 21:16:10.07ID:OUnIdkcH
全損
568デフォルトの名無しさん
2022/07/26(火) 22:30:48.06ID:Rgm2Z23r
>>560
これってどういうこと?Pythonのオブジェクトに変換せずに何かをやりたいっていうこと?
569デフォルトの名無しさん
2022/07/26(火) 23:43:27.38ID:wQrOnGuH
yamlの仕様を学ばないままcomposeやk8sを使ってる
570デフォルトの名無しさん
2022/07/27(水) 03:54:50.01ID:PQGmIH2y
パスの\を/にかえなきゃいけないのが面倒すぎるんだがなんか方法ないのか?
\\にかえるのもめんどう

で調べたらRつけるだけでいいらしい……
だったら最初から\読み込めるようにしろよ!
571デフォルトの名無しさん
2022/07/27(水) 09:00:44.94ID:pyuUgR41
>>560
jsとpythonでしかjson使ったことないけど、どちらも使い勝手は変わらんと思うが。
572デフォルトの名無しさん
2022/07/27(水) 10:05:16.97ID:elZrgoJK
>>560
があほすぎなすれ
573デフォルトの名無しさん
2022/07/27(水) 13:08:32.87ID:B7vnAx8k
>>570
その文句は、エスケープ文字を勉強したほうしたほうがいい
あといちいち手動でreplaceするよりPathlib使った方がかかいもよ

https://pystyle.info/python-pathlib/
574デフォルトの名無しさん
2022/07/27(水) 13:27:46.89ID:aU47T/gU
パースするだけなのにそんなに面倒か?
575デフォルトの名無しさん
2022/07/27(水) 13:28:56.39ID:aU47T/gU
すまん、jsonの話な
576デフォルトの名無しさん
2022/07/27(水) 15:26:57.56ID:B7vnAx8k
PythonでJSONの取り扱いは、JS以外の他の言語と比べたらめちゃくちゃ楽な方だと思うけどな。ほとんどJSと変わらない。
CはともかくC++だって全然簡単じゃないからねえ。CだとPythonの5倍、C++でも2.5倍ぐらいの記述量になる気がする。
577デフォルトの名無しさん
2022/07/27(水) 16:26:23.72ID:G6wuTkcd
何年前の話よ
https://github.com/nlohmann/json
578デフォルトの名無しさん
2022/07/27(水) 16:52:22.09ID:aU47T/gU
jsonはpythonのビルトインパーサーでなんとかなるな
使えないhtmlパーサーとは大違い
579デフォルトの名無しさん
2022/07/27(水) 19:30:05.71ID:xJ8anoa4
python に限った話じゃないけどなぜか html パーサーっこれって言う奴ないよね
580デフォルトの名無しさん
2022/07/27(水) 20:20:11.22ID:aU47T/gU
>>579
htmlが、sgml/xmlを簡略化した派生で
文法があまりに自由でゆるゆるだったから、
もともとデータ処理には向いていなかったということなんだと思うよ
581デフォルトの名無しさん
2022/07/27(水) 20:28:14.33ID:xJ8anoa4
>>580
そうは言っても html で公開されてるデータもあるんだからねぇ
582デフォルトの名無しさん
2022/07/27(水) 20:42:25.68ID:aU47T/gU
>>581
現状では、外部モジュールに頼るか、力づくでなんとかするかしかないものねw

最近はhtmlに組み込まれたjsonデータ形式(json-ld)が多くなって、
データを探るくらいならあまり悩まずにすむので助かってるわ
583デフォルトの名無しさん
2022/07/27(水) 22:42:50.60ID:+MHO4Y86
君ら二人が思ってるほどそういう需要がないんじゃない
結局やりたいのはスクレイピングでしょ
584デフォルトの名無しさん
2022/07/27(水) 23:00:58.07ID:+MHO4Y86
スクレイピングできるようなライブラリを標準ライブラリに組み込んで欲しくはないよね
html.parseは確かにシンプルだとは思うけど、どこまでってなると難しい
html自体がかなり緩いから、サービス依存とか流行に依存してしまうんだよね
まぁ、Beautiful Soupもあるしいいじゃないすか
585デフォルトの名無しさん
2022/07/28(木) 00:22:28.49ID:nqLen+JC
yieldって初めて見た

ジェネレーター関数?を作るときに使うのか
正直使い道がわからんな
ジェネレーターとかイテレーターとかはだいたいわかるけど
586デフォルトの名無しさん
2022/07/28(木) 05:13:59.70ID:mvZe9xm4
>>585
> ジェネレーターとかイテレーターとかはだいたいわかるけど
わかってたらyieldの使いどころがわからんとかないと思うが...
587デフォルトの名無しさん
2022/07/28(木) 05:40:55.75ID:8YG1K1uV
>>586
こういうやつって結局何聞かれても説明できないやつだよな
588デフォルトの名無しさん
2022/07/28(木) 05:45:38.18ID:yBjc1Rgi
国債取引してればyieldなんてしょっちゅう見るけどな
589デフォルトの名無しさん
2022/07/28(木) 16:20:58.93ID:m8z1CQHY
教えてください。
Wordpressに記事投稿する際に閲覧パスワードをつけたい場合
‘status’=‘publish’,
‘contents’=‘記事本文’,,
‘password’=‘閲覧パスワード,
‘tag’=1
….
と指定しています。
投稿自体は成功しているのですがパスワード付きの記事になりません。
どなたか解決策をお願いします。
590デフォルトの名無しさん
2022/07/28(木) 20:16:12.08ID:Hv8PyQaz
>>585
馬鹿には無理
591デフォルトの名無しさん
2022/07/28(木) 22:51:57.42ID:9hZjKw0t
>>585
リスト返すよりよりジェネレータ―の方がコスト低いからでは解決しない質問?
592デフォルトの名無しさん
2022/07/28(木) 22:58:58.42ID:cRsx7yDk
リスト作成のコストと比べても意味ないやろ
yield使わずにジェネレーターを作ればありがたみが分かる
593デフォルトの名無しさん
2022/07/29(金) 00:22:32.77ID:fEBZH37g
リストをfilter()使ってlambda式ではなく外部関数を呼び出して抽出する場合、外部関数に追加の引数を渡すことってできますか?
リストの要素に加えてさらに判定用の引数を与えて外部関数で処理させたいです
594デフォルトの名無しさん
2022/07/29(金) 01:28:35.66ID:8gcFFgPp
>>593
部分適用した関数を用意すればできるよ
partialとか関数を返す関数を書くとかで
リストを[(要素, 追加引数)]の形にzipするのでもてきる

ただlambda使って外部関数に引数渡すのが一番よく使われてる印象
595デフォルトの名無しさん
2022/07/29(金) 02:05:51.08ID:sW6reep3
>>593
functools. partial
596デフォルトの名無しさん
2022/07/29(金) 02:28:02.24ID:fEBZH37g
>>594,595
functools.partialもlmbdaもできました。ありがとうございます。
確かにlambdaのほうがすぐに書けるのと、パッと見て分かりやすいかもですね
597デフォルトの名無しさん
2022/07/29(金) 16:36:15.82ID:0LOpWdsN
ある変数に対してifまたはelseで値を代入するとき「未定義の可能性があります」という警告が出てしまいます。
この警告は無視して構わないのでしょうか?
実際はifかelseが必ず実行されるため、未定義になることは無いと思います。
598デフォルトの名無しさん
2022/07/29(金) 18:15:50.48ID:APedJzV4
両方でちゃんと定義があれば問題ないんじゃないの
599デフォルトの名無しさん
2022/07/29(金) 18:30:32.97ID:XaB7Y5c2
>>597
その部分のコード書いてみ
たぶん未定義になるパターンがある
600デフォルトの名無しさん
2022/07/29(金) 19:07:07.88ID:GzwVbssN
ifとelse両方で定義してあれば未定義にはならんと思うけどな
定義してないから警告出るのかね
601デフォルトの名無しさん
2022/07/29(金) 19:10:09.40ID:WG/TpH2M
>>597
無視しない方がいい
602デフォルトの名無しさん
2022/07/29(金) 19:58:02.11ID:47SIIXKm
て言うか未定義の「可能性」なんて普通の処理系ではでないだろ
なんかツール使ってるならそのツールの名前書きなよ
603デフォルトの名無しさん
2022/07/29(金) 20:45:46.18ID:IOBifLpO
どこかに未定義ルート有るんだ
そこらへんを探すのが楽しい
604デフォルトの名無しさん
2022/07/29(金) 21:51:50.81ID:a1Tgek7B
Ruby では、条件分岐で初期化されるはずの変数が、
初期化されなかった場合に、nil・未定義になる

if false
n = 1
end

p n #=> nil
605デフォルトの名無しさん
2022/07/29(金) 23:03:00.11ID:jDexz6tX
翔泳社のスラスラわかるPythonを読み終えて、
次にソフトバンクのPython完全入門を買おうか迷ってるんですが、
どなたか読んだ方いましたら感想を教えて下さい
よろしくお願いします
606デフォルトの名無しさん
2022/07/30(土) 02:27:49.30ID:z4LSWTQO
入門書は1冊で充分なのでは?
607デフォルトの名無しさん
2022/07/30(土) 02:27:58.30ID:z4LSWTQO
入門書は1冊で充分なのでは?
608デフォルトの名無しさん
2022/07/30(土) 02:34:45.44ID:f1hyBgWY
レスは1回で充分なのでは?
609デフォルトの名無しさん
2022/07/30(土) 09:23:55.07ID:azT7AVAA
webアプリ作って内部サーバーから使ってみよう、みたいな本読んでるんだが

コマンドプロンプトに
python -m http.server --cgi 8080
と書いてwebサーバー立ち上げて
ブラウザで
hthttp://localhost:8080
開くまではできたんだ

ここから
hthttp://localhost:8080/開きたいwebアプリ.py
へ移動しても、中身がテキストとして表示されるだけでwebアプリとしては機能しない
これはなにか手順間違えてるかな?

pythonコード自体は以下
https://techiedelight.com/compiler/?MN5F
610デフォルトの名無しさん
2022/07/30(土) 09:27:36.20ID:paa5jUiA
●未定義ルートがある
●typoを見落とし
611デフォルトの名無しさん
2022/07/30(土) 09:28:23.25ID:paa5jUiA
>>606-607
レスは一回で充分
612デフォルトの名無しさん
2022/07/30(土) 09:29:27.96ID:paa5jUiA
>>609
flask使え
613デフォルトの名無しさん
2022/07/30(土) 13:25:48.25ID:OlgNXvPr
呼ばれたクラスのメソッド実行やインスタンスの参照はできますでしょうか?
RubyのBinding_of_caller gemのようなことをやりたいです。
614デフォルトの名無しさん
2022/07/30(土) 15:23:09.66ID:8gKCOMRQ
>>609
例えば、Ruby では、

コンソールで、ウェブサーバー・WEBrick を起動する
ruby -run -e httpd . -p 8080

ブラウザで、
http://localhost:8080/a.html
とすると、HTML が表示される

例えば、これが、
http://localhost:8080/a.csv

a.csv, a.txt など、ブラウザが解釈できない拡張子の場合は、ダウンロードされる
615デフォルトの名無しさん
2022/07/30(土) 15:41:57.89ID:cxvuT0Ap
>>609
cgi_directoriesで定義されてるディレクトリの中にあるソースコードじゃないとじっこうできないかも

>>614
csvじゃなくてcgiの話な、チンカス
616デフォルトの名無しさん
2022/07/30(土) 15:55:32.29ID:lN6AqJ/F
>>609
/cgi-binに配置して
localhost:8080/cgi-bin/xxx.pyでアクセス
617デフォルトの名無しさん
2022/07/30(土) 15:56:01.53ID:lN6AqJ/F
あ、被ったね
618デフォルトの名無しさん
2022/07/30(土) 16:15:20.28ID:t64/Q8Lh
14分差でかぶるとかすごいな
619605
2022/07/30(土) 17:33:25.97ID:opcLftHA
レスありがとうございます

実は最初にソフトバンクの本を買おうと思ったのですが、アマゾンレビューを見たら
少しわかりにくい箇所もある、という感想があったのでワンクッション入れました

今となっては独習Pythonなどの中級書に進んだ方がいいですか?
620デフォルトの名無しさん
2022/07/30(土) 17:49:27.02ID:6SJJiflx
手段が目的になってるパターン
621デフォルトの名無しさん
2022/07/30(土) 19:25:46.15ID:EI1U6qjF
民明書房の「結局あんたはpythonで何がしたいの?」とか読むといい
622605
2022/07/31(日) 08:22:18.53ID:V2xTXw/0
辛口ですね
623デフォルトの名無しさん
2022/07/31(日) 08:43:12.47ID:bF6WKikK
bool([])がFalseなのに
all([])がTrueになる理屈を教えてください
624デフォルトの名無しさん
2022/07/31(日) 08:56:05.73ID:IhfjCb0y
イテラブルの要素の探索中にFalseでリターンされなければTrueをリターンされるようにallが実装されてるから
https://github.com/satwikkansal/wtfpython#-all-true-ation-

設計思想的な話しなら分からん
625デフォルトの名無しさん
2022/07/31(日) 09:01:11.39ID:qkw0CgkT
数学的にそれが自然
Wikipediaの論理包含とかVacuous truthを読め
626デフォルトの名無しさん
2022/07/31(日) 09:35:16.42ID:qvc5fIgv
test
627デフォルトの名無しさん
2022/07/31(日) 09:36:51.24ID:qvc5fIgv
r = True
for e in S:
r = r and e
return r

S が空の場合,for文の中は1度も実行されない.
返されるのは,rの初期値であるTrue
628デフォルトの名無しさん
2022/07/31(日) 09:37:12.57ID:bF6WKikK
>>624
理屈はわかりました
その実装にした人を小一時間問い詰めたい気分でいっぱいです
all([])の結果にTrueを求めるユーザーが世の中に一人でもいるのでしょうか…

>>625
数学はよくわからんのですごめんなさい
629デフォルトの名無しさん
2022/07/31(日) 09:39:03.02ID:qvc5fIgv
似たような例として,Sの要素の和を計算することを考える.

r = 0
for e in S:
 r = r + e
return r

Sが空の場合,rの初期値である0が返される.
630デフォルトの名無しさん
2022/07/31(日) 09:45:32.68ID:qvc5fIgv
似たような例として,Sの要素の積を計算することを考える.

r = 1
for e in S:
 r = r * e
return r

S が空の場合,返されるのはrの初期値である1
631デフォルトの名無しさん
2022/07/31(日) 09:48:34.65ID:qvc5fIgv
sum, prodという関数がPythonにあるのならば,

sum([]) == 0

とするのが自然だし,

prod([]) == 1

とするのが自然.

prodのほうは不自然に感じる人がいるかもしれないが,sumが自然なのと同じ理由でprodも自然.
632デフォルトの名無しさん
2022/07/31(日) 10:26:40.61ID:qvc5fIgv
0! := 1と定義するのも同じ理由.
633デフォルトの名無しさん
2022/07/31(日) 12:12:56.03ID:eQtf7hMi
anyとかallは評価できるものがある場合にのみ使うべきだと思うんだ。空打ちしたら「何だこりゃ」ってなる
つまり
all([]) ではなくall([''])と使いたい。これなら正しく(評価がなされて)falseが返る
つかall([]) ってどういう状況よ
634デフォルトの名無しさん
2022/07/31(日) 12:23:51.14ID:1z9jykhy
リテラルを渡すわけじゃないだろ
635デフォルトの名無しさん
2022/07/31(日) 12:55:33.13ID:VBdofYjo
論理包含、Vacuous truthを読めと言ってる人は理由を知っているだけで理解できていない
636デフォルトの名無しさん
2022/07/31(日) 13:14:04.77ID:aNbLKyix
>>635
言葉足らずは役立たず
637デフォルトの名無しさん
2022/07/31(日) 13:25:03.81ID:qvc5fIgv
any([]) == False
all([]) == True

こうだと何が問題になるのかが分からない.
638デフォルトの名無しさん
2022/07/31(日) 13:32:01.26ID:qvc5fIgv
all(S)は∀x(x∈S ⇒ x==True)が真であるときに,Trueになり,偽であるとき,Falseになる.

Sが空なら∀x(x∈S)は偽だから,∀x(x∈S ⇒ x==True)は真である.

any(S)は∃x(x∈S and x==True)が真であるときに,Trueになり,偽であるとき,Falseになる.

Sが空なら∃x(x∈S)は偽だから,∃x(x∈S and x==True)は偽である.
639デフォルトの名無しさん
2022/07/31(日) 14:16:45.61ID:WKv/EkLm
お勉強スレで403がでる
640デフォルトの名無しさん
2022/07/31(日) 14:23:06.73ID:VBdofYjo
allとanyのあるある言いたい TrueとFalseのあるある早く言いたい
641デフォルトの名無しさん
2022/07/31(日) 15:56:07.05ID:KzJjN0dA
聞いてねえ黙っとけマザコン男
642デフォルトの名無しさん
2022/07/31(日) 16:39:23.51ID:6uU1oN4W
突然マザコンという単語が出てきた
普通の人はすぐに思い浮かぶ単語ではない
つまり、自分がそうだとよく言われたから頭に浮かびやすいと自己紹介しているわけだ
643デフォルトの名無しさん
2022/07/31(日) 17:10:58.62ID:a1qLKfui
vscでインタープリターが設定出来ずエラーになる
なんでぇ…検索しても出てこない…
644デフォルトの名無しさん
2022/07/31(日) 17:19:39.16ID:WKv/EkLm
vscスレあるからそっちで聞いたら?
645デフォルトの名無しさん
2022/07/31(日) 17:40:03.84ID:VBdofYjo
>>623の疑問にバッチリ明快にお答えしましょう
all([1,2,3]) -> True
all([1,2,3]+[]) -> True
all([1,2,3]) and all([]) -> True
よって、all([]) -> True

同様にanyの場合は
any([1,2,3]) -> True
any([]+[1,2,3]) -> True
any([]) or any([1,2,3]) -> True
よって、any([]) -> False

Vacuous truthとか言われても分かんないでしょ、wiki見ても分かんない
>>638の取って付けた数式見ても分かんない、でもコードで書くとあら不思議一目瞭然
646デフォルトの名無しさん
2022/07/31(日) 18:21:17.32ID:vZudoVRF
全く疑問に答えてなくて草生えるwwwww
647デフォルトの名無しさん
2022/07/31(日) 18:30:32.80ID:IhfjCb0y
>>645
空リストに分解するのはいいね
ただanyはFalse側で示さないといけないな
648デフォルトの名無しさん
2022/07/31(日) 18:42:16.99ID:1IXOln4s
1. [True, True]
2. [True, False]
3. [False, False]
4. []

この4つから
1種類だけ処理したい場合と2種類だけ処理したい場合を
all, any, notで各listにつき1回走査するだけで書けるかどうか
もしall([])がFalseだとしたらどうか
649デフォルトの名無しさん
2022/07/31(日) 19:03:02.60ID:VBdofYjo
>>647
配列例を一緒にしようとしたんだけど、こっちの方が分かりやすいか

any([0,0,0]) -> False
any([0,0,0]+[]) -> False
any([0,0,0]) or any([]) -> False
よって、any([]) -> False
650デフォルトの名無しさん
2022/07/31(日) 19:10:05.63ID:SPHl3eVE
こう決めてるからといって準備してあるものから答えを持ってくるのではない
あくまでデジタル計算の答えがそうなっているだけ
それをわかってないみたいね
651デフォルトの名無しさん
2022/07/31(日) 20:42:04.88ID:nQONknSe
ID:VBdofYjo
ルビーガイジと別のベクトルで頭おかしいね
652デフォルトの名無しさん
2022/07/31(日) 22:11:23.00ID:NZWDJWM/
単なる慣習でしかなくて合理的な理由はない
プログラミングではall([])がFalseだったほうが楽になるケースの方が圧倒的に多い

残念ながらempty listだけ別途チェックするのが無難
653デフォルトの名無しさん
2022/07/31(日) 22:46:03.58ID:MJo3DzqX
all()は論理積のロジックなので初期値True
any()は論理和のロジックなので初期値False
そうしないと成り立たない
654デフォルトの名無しさん
2022/07/31(日) 23:10:20.11ID:Q3Sy7AQw
ドキュメントのallの説明で、(or if the iterable is empty)が加えられたのは2009年か2010年ぐらいから
655デフォルトの名無しさん
2022/07/31(日) 23:18:11.45ID:CM+nxrXh
>>653
それ使う側の視点じゃなくて
内部実装上の都合でしょ?
656デフォルトの名無しさん
2022/07/31(日) 23:50:52.02ID:MJo3DzqX
>>655
これ以上に自然な定義はあるのか?
引数が空の時に余計な評価を挟む方がよっぽど不自然だと思うが
657デフォルトの名無しさん
2022/08/01(月) 01:15:16.60ID:NO37bZGb
>>656
実装の都合上は自然かもね
使う側の視点からは全くもって自然じゃないよ
658デフォルトの名無しさん
2022/08/01(月) 01:55:03.33ID:wljefKG6
>>657
all()とany()の動作を文章にして書いてみたら分かる
関数の仕様自体が気に入らないなら自分で書くしかない
659デフォルトの名無しさん
2022/08/01(月) 02:13:06.07ID:4h+jHRsn
>>652
> プログラミングではall([])がFalseだったほうが楽になるケースの方が圧倒的に多い
具体的にコードで示して欲しい
660デフォルトの名無しさん
2022/08/01(月) 04:29:53.53ID:rSGUMJSi
まあ5×0=0で5^0=1なのも実装した人にとって自然なだけだし言いたいことはわかる
661デフォルトの名無しさん
2022/08/01(月) 09:45:47.74ID:hJhRRxUQ
やっとバカにも理解できたようですが、>>660を見る限り理解できていませんw 残念
662デフォルトの名無しさん
2022/08/01(月) 16:21:23.81ID:Vk1tQ6YT
Eric Matthesの「python crash course」(和名:最短コースでゼロからしっかり学ぶpython入門)を完了して次にデータ解析をやりたいんです
そこで
オレイリーの「pythonによるデータ分析入門」を読んだのですがまだ私にはレベルが高いようです
橋渡しになるレベルの本はありませんでしょうか?
663デフォルトの名無しさん
2022/08/01(月) 17:14:07.64ID:WOhHaybL
>>662
『Pythonによるあたらしいデータ分析の教科書』辺りで
Jupyter Notebookとか分析の基本覚えてから
『Python実践データ分析100本ノック』でデータの前処理とかを本格的に勉強してから
オライリー本読んだ方がええかもね
664デフォルトの名無しさん
2022/08/01(月) 18:05:15.09ID:BgE8bCyg
型ヒント(num: int = 1など)って普通に使われてますか?
私も常に使った方がいいですか?
665デフォルトの名無しさん
2022/08/01(月) 20:36:49.60ID:Vk1tQ6YT
>>663
ありがとうございます
ポチりました
666デフォルトの名無しさん
2022/08/01(月) 23:46:48.65ID:It4OEKpF
使われてると思うし使えた方がいい
PyCharmとかVSCodeで書いてると型を判断してくれるので書きやすくなるしミスも判明しやすくなる
667デフォルトの名無しさん
2022/08/02(火) 00:20:43.20ID:R2oSGNsV
>>653
配列の全ての要素が5以上かをチェックするcheck関数を作りました
def check(lst):
return all(i >= 5 for i in lst)
空リストが入力された場合Falseを返したいのですが
論理積のロジックなのでFalseを返すと成り立たなくなります
空リストのチェックはどうすれば良いでしょうか
668デフォルトの名無しさん
2022/08/02(火) 03:57:40.09ID:AJvhpMFc
def check(l):
__if l:
____return all(map(lambda i: i>5, l))
__else:
____return False

すべて5以上か みたいな関数名にして使う
checkはダメ。論外
669デフォルトの名無しさん
2022/08/02(火) 04:03:59.45ID:KlfR+zxP
>>667
return bool(lst) and all(i >= 5 for i in lst)
670デフォルトの名無しさん
2022/08/02(火) 07:10:05.89ID:R2oSGNsV
>>668
>>669
これはいけません 論理積のロジックなので空リストが入力された場合はTrueを返す必要があります
Vacuous truthを知らないのですか? 論外です
671デフォルトの名無しさん
2022/08/02(火) 07:19:05.10ID:Qu9LGAtZ
空listはfalseなのでbool()は不要
もしくは lst or [0] とすれば空listチェック不要
672デフォルトの名無しさん
2022/08/02(火) 08:36:47.08ID:KlfR+zxP
>>670
ああそういうことか
667の質問の意味が今わかった
変な質問だなと思いながら適当に答えちゃった
673デフォルトの名無しさん
2022/08/02(火) 08:45:25.83ID:UYHD5f/y
>>670
空のリストでtrue返したいならall([i for i in lst if i>5])で返るが
674デフォルトの名無しさん
2022/08/02(火) 08:56:18.05ID:KlfR+zxP
>>671
bool()は不要のほうは、戻りが True,False,[]の3種類になるから個人的にいや。
lst or [0]のほうは、i >= 5 とかの場合使えなくなるからよろしくないかと。
675デフォルトの名無しさん
2022/08/02(火) 08:57:08.71ID:KlfR+zxP
>>674
訂正
lst or [0]のほうは、i >= 0 とかの場合使えなくなるからよろしくないかと。
676デフォルトの名無しさん
2022/08/02(火) 12:52:45.59ID:7OOUBMB7
>>668
配列じゃなくiterableだと詰むよ
677デフォルトの名無しさん
2022/08/02(火) 13:36:46.22ID:R2oSGNsV
>>672
そうなんッス >>667のcheck関数は完璧ッス 論理積のロジックでVacuous truthで数学的に自然なんッス
check(a+b+c) と check(a) and check(b) and check(c) が等価になると理解できるッス
でも空リストは弾きたいじゃないッスか しかし空リストの場合にFalseで返すと数学的に不完全になるッス
つまり空リストを弾きたいならcheck関数外の前後どちらかで引数のチェック処理が必要というわけッス
メッチャ不便じゃないッスか これが>>659の回答ッス
メッチャ不便なんで数学的に不完全な>>668-669 のようなコードになるッス これが自然ッス
でもその場合 check(a) and check(b) and check(c) みたいな使い方はできなくなるッスよね 空リストが来たらアウトッスから
つーわけでどっちもOKな解決策はあるのかなという質問ッス
同じようなcheck関数を書く場合に空リストの扱いはどうするのかって話ッス
もしそれが>>668-669のようなコードになるのならオイラの勝ちということッス
もちろんall([])がTrueになる理由は理解してるッスよ 5×0=0で5^0=1ってことッスもんね 分かってるッス そこは大丈夫ッス
678デフォルトの名無しさん
2022/08/02(火) 13:57:06.18ID:AJvhpMFc
>>676
要件は配列の要素をチェックする関数の作成だけど。
679デフォルトの名無しさん
2022/08/02(火) 14:10:48.20ID:3RqJykXJ
>>677
そもそも数学的な計算がしたいとき、空のリストが来たら不自然になる って
そりゃ空のリストは数学的じゃねーんだから不自然になって当然だろ

空のリストとかいう非数学を数学化する関数を実装しろよ。それはお前の好きにしろ
680デフォルトの名無しさん
2022/08/02(火) 14:25:29.34ID:UYHD5f/y
そういえばBytesIOがイテレーターなのはなんでなの?
配列じゃあかんのか?
681デフォルトの名無しさん
2022/08/02(火) 14:44:44.43ID:PAwGL3nC
>>677
全然意味わからん
空リストを弾きたいならcheckの中で例外発生させるなりすればいいだけじゃねーの?
682デフォルトの名無しさん
2022/08/02(火) 14:58:23.12ID:4vAniN45
>>681
こいつはネチョネチョ言葉遊びしたいだけのゴミ野郎だから無視でいいよ
上の方でも暴れとる。rubyキチガイと同列の泥人形
683デフォルトの名無しさん
2022/08/02(火) 15:02:37.40ID:3/XF33uC
どうせ発生しないような例外的なやつの対応ばかり考えている無能
684デフォルトの名無しさん
2022/08/02(火) 15:21:43.17ID:GXJqSimc
>>677
100%同意する
685デフォルトの名無しさん
2022/08/02(火) 15:24:08.55ID:uvL1JwEu
>>678
all([]) == Trueはデメリットが大きい例として>>667が書かれてるという文脈を理解してから書いてね
686デフォルトの名無しさん
2022/08/02(火) 15:36:16.40ID:4vAniN45
>>684-685
バレてるぞ恥晒し
687デフォルトの名無しさん
2022/08/02(火) 15:44:30.79ID:aYPyq7OS
all([]) == True
any([]) == False

であると困る例を教えてください.
688デフォルトの名無しさん
2022/08/02(火) 17:37:12.67ID:PAwGL3nC
>>685
それ all([ ]) = False でも何も解決しないだろw
True / False しか返せないのに空リストかどうかの情報欲しいなら別の方法で返すしかない
689デフォルトの名無しさん
2022/08/02(火) 19:22:29.51ID:R2oSGNsV
実は空リストの場合Noneを返すという手を考えたッスけど 数学的完全性を保つことはできなかったッス
しかしたった今思いついたッス 空リストの場合は2を返せばいいッス 2はTrueッス
我ながら自分の才能が恐ろしいッス
690デフォルトの名無しさん
2022/08/02(火) 19:46:15.70ID:R2oSGNsV
>>689
訂正するッス 2じゃなくて1.0を返せばいいッス 空リストの場合は1.0を返すッス
1.0なら check(a+b+c) == (check(a) and check(b) and check(c)) が成立するッス
691デフォルトの名無しさん
2022/08/02(火) 20:00:27.12ID:rqWYIp9A
それで最初に言ってた
> 空リストが入力された場合Falseを返したいのですが
これは満たせるの?
692デフォルトの名無しさん
2022/08/02(火) 20:07:03.39ID:R2oSGNsV
>>691
・・・満たせないッスね 判別ができるようになるだけで その判別方法もrepr()=='True'とかで煩雑 だめッスね
693デフォルトの名無しさん
2022/08/02(火) 20:21:40.29ID:KlfR+zxP
>>690
1.0が返ってくると
if check(lst) == 1.0: と if check(lst) == True: のどちらもTrueになるけど
if type(check(lst)) == float: で判定するの?
副作用は少ないけど美しくない
1.0じゃなくて1のほうがさらに副作用なくていいとおもうけどね
694デフォルトの名無しさん
2022/08/02(火) 20:44:31.40ID:H9/akC1Y
元になってる数学の考え方自体の限界
使う側がバグらないよう注意するしかない

python特有の問題じゃないのが救い
695デフォルトの名無しさん
2022/08/02(火) 20:48:40.69ID:R2oSGNsV
>>693
美しくないッスね そもそも空リストチェックは言うほど不便じゃないッスよね
if lst and check(lst): ってするだけッスもんね
オイラの中で結論が出たッス やはりallにならってcheck関数も空リストのときはTrueを返すべきッス
必要に応じて空リストチェック( lst and check(lst) )をする こんだけッス シンプルで美しいッス
ビギナーズトラップかもしれないけどそんなの知らないッス
696デフォルトの名無しさん
2022/08/02(火) 21:07:06.53ID:rqWYIp9A
初心者すぎて、これでいいのか分からんけど
boolとandあたりをオーバーライドしたクラスを返却するとか?
空リストかどうかの情報まで持たせたクラス

って、最初の仕様を捻じ曲げていいのか・・・
697デフォルトの名無しさん
2022/08/02(火) 22:23:57.41ID:XEhMcRRQ
超初心者なんですが、
社内LANの共有ストレージ内のExcelファイルを操作して作業自動化をしたいと思っています。
社用PCへのインストール申請が面倒なのでGoogle Colabでやってみたら、ストレージ内のファイルが読めないということで渋々インストール申請しようとしているところです。
JupyterLab Desktopで社内LANの共有ストレージのファイルは操作できますか?
環境構築から躓いてます…
698デフォルトの名無しさん
2022/08/02(火) 23:17:59.15ID:Z18rEo5s
浮動小数点数を==比較すると言うとヒステリックな反応する奴いるよな
699664
2022/08/03(水) 00:27:23.50ID:Ce9Xia0b
>>666
レスが遅くなってしまってすいません

ありがとうございました
なるべく使っていこうと思います
700デフォルトの名無しさん
2022/08/03(水) 02:48:22.00ID:HUfXY4jl
>>697
インストール申請いる会社だとpythonは厳しい
外部ライブラリをいくつもインストールすることになるから、そのたびに申請申請…
701デフォルトの名無しさん
2022/08/03(水) 03:03:39.79ID:OfDGteUO
自分自身が会社にアンインストールされちゃうよなw
702デフォルトの名無しさん
2022/08/03(水) 06:34:50.12ID:NNzHRQEi
>>697
環境はWindowsだと思うが元からあるExcel VBA、VBScript、PowerShellあたりでできないか考えた方がいいかと
703デフォルトの名無しさん
2022/08/03(水) 06:44:43.69ID:SAIeW7L3
>>697
インストール申請云々の縛りあるなら普通にVBAでやれよ
704デフォルトの名無しさん
2022/08/03(水) 06:55:06.47ID:6v79gKr9
インストール申請あるところならVBA/VBS禁止とかありそうだけどな
705デフォルトの名無しさん
2022/08/03(水) 09:06:23.71ID:7qOk9bFG
大半のライブラリはインストールじゃなくダウンロード
706デフォルトの名無しさん
2022/08/03(水) 09:20:26.19ID:6HJ5FZxO
P ⇒ QはPが偽のとき真です。
707デフォルトの名無しさん
2022/08/03(水) 12:49:46.77ID:s6+jOjkc
pythonのパッケージ管理ってどうやってる?
初心者だから本とかウェブ記事とか読みながらそのまま適当にpipしてたんだけど
このままだとめんどくさいことになりそうな気がしてきた
708デフォルトの名無しさん
2022/08/03(水) 13:06:03.07ID:jXa2B14I
poetryで作った環境にインストールしてグローバルに使いたい奴だけリンク張ってる
poetry使ってるのはライブラリ開発するのに使ってるついで
環境分けたいだけならvenvそのまま使えばいい
709デフォルトの名無しさん
2022/08/04(木) 03:46:24.05ID:BBoT8RMz
プログラミングなんて大してSSDの容量使わねーだろ、と思ってたらanacondaが10GBぐらい使ってきて泣いた
710デフォルトの名無しさん
2022/08/06(土) 09:34:49.25ID:80xJcjdY
pyinstallerで.pyファイルのexe化を試みています。
opencvがエラーを吐いて正常に動作しません。

ImportError: ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation.

google検索してやったこと。
paths=でモジュールの場所を指定
opencvのバージョンを4.5.3.56まで落とす(インストールエラー)

python: 3.10.6
altgraph==0.17.2
future==0.18.2
numpy==1.23.1
opencv-python==4.6.0.66
pefile==2022.5.30
Pillow==9.2.0
pillow-avif-plugin==1.2.2
pyinstaller==5.3
pyinstaller-hooks-contrib==2022.8
pywin32-ctypes==0.2.0
Send2Trash==1.8.0
711デフォルトの名無しさん
2022/08/06(土) 10:40:10.54ID:XSn5nlI0
nuitkaを使う
712デフォルトの名無しさん
2022/08/06(土) 15:50:19.67ID:eSBCWCwI
>>709
Anacondaはぶっ太い糞
713デフォルトの名無しさん
2022/08/06(土) 15:51:47.59ID:eSBCWCwI
>>710
opencv-python-headless
714デフォルトの名無しさん
2022/08/06(土) 16:30:43.76ID:80xJcjdY
>>710 レスありがとうございます。
nuitka、使ってみました。やはりopencv周りは色々問題があるようです。うまく動作しませんでした。

>>713 レスありがとうございます。
opencv-python の代わりに opencv-python-headless を使ってみましたが、全く同じエラーでした。

やはり opencv は難しいのでしょうか…
715デフォルトの名無しさん
2022/08/06(土) 17:26:48.46ID:PSjXEZOE
GoogleはGoなんて作る暇があったらPythonコンパイラを作るべきだった
716デフォルトの名無しさん
2022/08/06(土) 19:16:19.27ID:kORMtiG2
pycodestyleの機能って便利ですね
717デフォルトの名無しさん
2022/08/06(土) 19:22:52.36ID:Cy8sVH5p
お気づきになられましたか
718デフォルトの名無しさん
2022/08/06(土) 19:54:32.19ID:Tb2OU3Zj
impor requests
ってやると
Library stubs not installed for "requests" (or incompatible with python 3.9)
とでてくるんだが
リクエスト "用のライブラリスタブがインストールされていない(またはpython 3.9と非互換)。

よくわからん
719710
2022/08/06(土) 20:04:04.35ID:80xJcjdY
結局、ネット上で実績ありそうな、

Python 3.8.5
altgraph==0.17.2
future==0.18.2
numpy==1.23.1
opencv-python-headless==4.5.3.56
pefile==2022.5.30
Pillow==9.2.0
pillow-avif-plugin==1.2.2
pyinstaller==5.3
pyinstaller-hooks-contrib==2022.8
pywin32-ctypes==0.2.0
Send2Trash==1.8.0

で実行ファイルからエラーが消えたようです。
アドバイスくださった方、どうもありがとうございました。

バージョン管理って大変ですね。
720デフォルトの名無しさん
2022/08/06(土) 20:29:16.15ID:7+clXBwJ
>>718
そのまんまじゃねーか
721デフォルトの名無しさん
2022/08/06(土) 20:49:02.89ID:XxOEvUoc
pytorch入れた時の悪夢が蘇って来た。orz
722デフォルトの名無しさん
2022/08/06(土) 21:42:16.91ID:PGZhucx9
>>718
何使ってるか知らんがmypyが有効になってるんじゃないの?
723デフォルトの名無しさん
2022/08/06(土) 21:47:15.58ID:PQ7gBqNg
ディレクトリがcase-sensitiveかどうか調べる方法ありますか?
環境はWindows10です
やり方がわからないので対象のディレクトリ内にcase-sensitiveなディレクトリ名やファイル名が存在するか調べることでなんとかしようとしたけど
pathlibのglobではcase-sensitiveなディレクトリ名やファイル名では読み抜け発生
os.walkならいけるかもと思い実験中
724デフォルトの名無しさん
2022/08/06(土) 22:42:37.85ID:IJoLUcj8
>>723
abc でディレクトリ作って ABC で存在確認するとかかな
恐ろしいことにOSXではパス毎にCase Sensitiveかどうかを設定出来るらしい...
https://stackoverflow.com/questions/7870041/check-if-file-system-is-case-insensitive-in-python
725デフォルトの名無しさん
2022/08/06(土) 23:10:23.53ID:PQ7gBqNg
>>724
最近のWindowsもフォルダ毎にCase Sensitiveかどうかを設定出来るんですよ
対象のパスの下のサブディレクトリも個別に調べなきゃいけない
726デフォルトの名無しさん
2022/08/07(日) 01:53:51.53ID:HkpslvdA
pylintというのを知った
俺の作ったコード
pylintしたら4点だった
きびしすぎん?
727デフォルトの名無しさん
2022/08/07(日) 04:45:52.49ID:qW86g0dh
つ Flake8
728デフォルトの名無しさん
2022/08/07(日) 09:31:21.46ID:7cQO/w5k
pip installでインストールしたモジュールがどのフォルダ(ディレクトリ)に
入ってるか確認する方法ってありませんか?
エクスプローラーで見てもありません…
729デフォルトの名無しさん
2022/08/07(日) 09:51:04.57ID:qW86g0dh
pip show パッケージ名
730デフォルトの名無しさん
2022/08/07(日) 09:51:59.31ID:wF6HChc5
隠しファイル、隠しフォルダー、および隠しドライブを表示する
731デフォルトの名無しさん
2022/08/07(日) 11:38:08.36ID:H7AA9Gyj
>>728
__file__ でわかる。
例えばopencvなら
>import cv2
>print(cv2.__file__)
732728
2022/08/07(日) 15:47:17.43ID:7cQO/w5k
答えてくれた方、ありがとうございました

pip show requests を実行したらパスが表示されました
pythonの処理系があるフォルダの近くにあるみたいなんですが、
VSCodeのどのフォルダにいる状態でインストールしても、
インストールされる場所は同じなんでしょうか?
733デフォルトの名無しさん
2022/08/07(日) 16:25:21.48ID:qancDJyG
class A(text:str, value:int)
class B(A)

VSCodeだとマウスオーバーで引数が確認できますが
上記のような継承があるとき
b = B()
マウスオーバーでAの引数を確認したいのですが、どうすればいいですか?
734デフォルトの名無しさん
2022/08/07(日) 16:29:37.57ID:wx1/uok7
今のデフォルトはpylanceだっけか
735デフォルトの名無しさん
2022/08/07(日) 16:31:40.47ID:Iy538lTc
>>733
>class A(text:str, value:int)

今ってこんな定義方法があるの?
736デフォルトの名無しさん
2022/08/07(日) 17:18:29.82ID:PNBshUzP
__init__か?
クラスBでオーバーライドしてなきゃAの引数が表示される
737デフォルトの名無しさん
2022/08/07(日) 18:29:09.72ID:J7BfdoVn
pipよりもpypl
738デフォルトの名無しさん
2022/08/07(日) 18:37:37.64ID:qancDJyG
素で間違えた
いまこうです
Bじゃなくて継承元のAの引数が見たいです
【まず1嫁】くだすれPython(超初心者用) その57 YouTube動画>3本 ->画像>9枚

vscodeはpylanceですね
739デフォルトの名無しさん
2022/08/07(日) 18:41:34.68ID:k9D8AutH
え・・・・・
740デフォルトの名無しさん
2022/08/07(日) 18:50:58.51ID:ZjeWku4d
Bの__init__を消そう
741デフォルトの名無しさん
2022/08/07(日) 19:08:00.18ID:qancDJyG
>>740
おーありがとう
そういうことk
742デフォルトの名無しさん
2022/08/07(日) 21:07:17.99ID:uhtWaMBb
>>710
specファイルに、

pathex=['C:\........\site-packages\\cv2']
(パスは環境次第)
とcv2のフルパス入れてますか?
743デフォルトの名無しさん
2022/08/08(月) 10:00:21.56ID:RWKMU7OX
numpy配列をopencvで扱う画像にする時って
cv2.imdecodeとnumpy.reshapeの二通りのやり方があるみたいだけどどう使い分けるんです?
744毛の生えたブリーフ
2022/08/08(月) 10:56:42.38ID:nUMoT9LF
2003年 当時荒れていたdelphiスレッドの緊急避難先で作った「くだすれDelphi 」

ヘッダーを各言語用に改変してPythonのスレッドが出来ていたのか・・・・
あれから20年近く・・・俺も還暦になるわけだ。

プログラム板にきたのは13年ぶり。 いつのまにか2chが5chになって
ひろゆきがメジャーになってた。
745デフォルトの名無しさん
2022/08/08(月) 10:57:33.77ID:nUMoT9LF
いやん誤爆してごめんくさい
746デフォルトの名無しさん
2022/08/08(月) 11:17:06.38ID:AUtZ1mrn
>>742
はい。specファイルの pathx に入力する方法も試したのですが、同じエラーです。

その後色々組み合わせをためしているのですが、3.10系では成功したことがありません。
3.8, 3.9系では opencv のバージョン次第で正常に動作します。

あと>>711 が教えてくださった nuitka ですが、アンチウィルスが過剰に反応するので諦めました。
747デフォルトの名無しさん
2022/08/08(月) 16:30:56.98ID:ej7caoJh
ショートサーキットについてお聞きしたいです

本によるとandやorの両側には関数も取ることができ、
1 < 2 and print('right')
1 > 2 or print('right')
をインタラクティブシェルで実行すると
それぞれ'right'が表示されるみたいですが、釈然としません

そういうものだと覚えておくしかないでしょうか?
748デフォルトの名無しさん
2022/08/08(月) 16:37:01.79ID:GNjKAHJ2
なにがわからないの?
x and y === if x then y else x
x or y === if x then x else y
749デフォルトの名無しさん
2022/08/08(月) 17:05:06.74ID:Rerux/uK
>>747
それ
True and print('right')
False or print('right')
と同じで両方共に print('right') の値を見ないと全体の値は確定しないから 'right' が表示されるのは当たり前
1 > 2 and print('right')
ってやればどうなる?
750デフォルトの名無しさん
2022/08/08(月) 17:15:18.30ID:w9crSB+N
andは左側が真の場合、右側を評価する
andは左側が偽の場合、右側を評価しない
orは左側が真の場合、右側を評価しない
orは左側が偽の場合、右側を評価する
左側だけで真か偽か判明してる場合は右側を評価しない
751デフォルトの名無しさん
2022/08/08(月) 18:30:45.48ID:VXkV51Mv
>>746
そうですね。書いてありましたね。
あとやったとすれば、
a.datas += [('習済みデータ.xml','.\\習済みデータ.xml', 'DATA'),]
※学習済みデータは「haarcascade_frontalface_default.xml」等
を記述したことと、1つのファイルにしたときに、Temporaryの実行パスを取得を工夫したことくらい…

あ、できたファイルを実行時にウィルスとして検知されるので、
pyinstallerの中のファイルの再コンパイルも必要です。
752747
2022/08/08(月) 19:28:04.38ID:ej7caoJh
>>748-750
ありがとうございます

すいません、聞き方が悪かったです
ショートサーキットの機構については分かります
bool型を返すわけではないprint()関数が右端に「使える」ことが不可解です
print()は確かNoneを返す関数だったはず
753デフォルトの名無しさん
2022/08/08(月) 19:40:14.54ID:Rerux/uK
>>752
None を bool として評価すると False になる
754デフォルトの名無しさん
2022/08/08(月) 19:41:18.38ID:wsYAfPSE
>>752
NoneはFalse
bool()で非ブール型もブールに変換した上で解釈される
755デフォルトの名無しさん
2022/08/08(月) 20:06:39.11ID:UzajzKaJ
右辺はboolとしてなんて評価されません
適当なことを言うな
https://wandbox.org/permlink/gk6gdiVzpzvoPWfI
756デフォルトの名無しさん
2022/08/08(月) 20:15:13.65ID:EDIALeRU
>>755
評価時に__bool__が呼ばれます。if とかで使うと出力される。
757デフォルトの名無しさん
2022/08/08(月) 20:33:20.93ID:EDIALeRU
左だとすぐに呼ばれるのに対して違うんですね理解しました
758デフォルトの名無しさん
2022/08/08(月) 21:21:18.46ID:icSMNlYR
文字列の置換って
translate()とreplace()のいいとこ取りの置換方法ないの?

translate()は
"aa"→"b"
にできないんだよね?

あと
AAA = kansuu(AAA)
BBB = kansuu(BBB)
CCC = kansuu(CCC)
DDD = kansuu(DDD)
みたいな感じになってるときって
for文で入れていく以外思いつかないんだけど、他に見やすい書き方あるかな?
759デフォルトの名無しさん
2022/08/08(月) 22:27:42.98ID:GdyVfCQX
>>758
文字列をmappingベースで置換したいならflashtext使うといいかも

2つ目のはAAA, BBB, CCC, DDDをコレクション(dict, list, tuple等)にする
760デフォルトの名無しさん
2022/08/09(火) 11:17:14.43ID:6xBGELHM
フォルダパスとファイル名とURLを書くと画像を保存してくるコードを書いたんだけど
https://techiedelight.com/compiler/?BQkA

エラーの対処はわかったんだけど、もっと別の書き方があるのではと思ってしまう
他の人はこれをどう書きますか?
761デフォルトの名無しさん
2022/08/09(火) 13:25:52.34ID:804xd0t9
raw文字列
762デフォルトの名無しさん
2022/08/09(火) 14:13:10.80ID:6cdAV71K
バックスラッシュの代わりに、スラッシュを使う
でもいい
763デフォルトの名無しさん
2022/08/09(火) 14:27:14.68ID:reKZbZGW
raw文字列、joinpath、with_suffix
764デフォルトの名無しさん
2022/08/09(火) 16:46:37.99ID:904t2Z05
pathlib一択でしょうね
765デフォルトの名無しさん
2022/08/09(火) 17:34:17.89ID:VX/MyXfz
HTTPErrorやIOErrorのハンドリングもやったほうがいいよ
766デフォルトの名無しさん
2022/08/09(火) 17:48:28.39ID:/U/bpI39
外部からの入力系は全部
try:
req
except:
クソ
するな俺は。ユーザーは信用しない
あとダウンロード系も
try:
down
except:
失敗
する。どんなわけわからんエラーくるかしらんし
767デフォルトの名無しさん
2022/08/09(火) 18:07:25.22ID:RasYFqXo
外部とのやり取りは一筋縄ではいかないからねえ
ついでにリトライも入れておきたい
requestsには頼らずビルトインで頑張るw
768デフォルトの名無しさん
2022/08/09(火) 18:28:07.98ID:Lt/MnBAv
>>766
それ普通じゃね?
769デフォルトの名無しさん
2022/08/09(火) 21:17:15.16ID:DxAePLof
わざわざtryしなくても例外が起きると止まるっしょ
770デフォルトの名無しさん
2022/08/09(火) 22:15:13.78ID:v2aJaQdL
わざわざブレーキつけなくても事故れば止まるっしょ
771デフォルトの名無しさん
2022/08/09(火) 23:22:34.01ID:xxgft6hm
>>760
Windows で、path = "C:\a\b"
みたいに、\ を使わなければならないの?

Ruby では、
path = "C:/Users/Owner/Documents/a"
みたいに、/ を使うけど
772デフォルトの名無しさん
2022/08/09(火) 23:25:51.13ID:KqAyUORM
>>771
前半、バックスラッシュを使わなくてもアクセスできる。
後半、スレチ。いちいち書くな。
773デフォルトの名無しさん
2022/08/09(火) 23:34:41.82ID:oM0lzHLp
合わせてバックストレッチ。
774747
2022/08/09(火) 23:46:35.97ID:8UDvOyKH
レスが遅くなってすいません
答えてくれた方ありがとうございました
ああいった書き方もあるんだと頭の片隅に留めておきます
775デフォルトの名無しさん
2022/08/10(水) 00:02:07.83ID:DjE5xMJT
>>769
普通はエラー処理系にraiseするからtry節置くと思うが
776デフォルトの名無しさん
2022/08/10(水) 02:29:00.47ID:kx7L/9BB
なにが普通かは人による
777デフォルトの名無しさん
2022/08/10(水) 03:50:21.12ID:obfeaPUq
なぜこの関数が作られたのかを考えながらプログラム書くとすっきりする
778デフォルトの名無しさん
2022/08/10(水) 10:26:29.49ID:rR8/AFmc
Enum 列挙型という概念を初めて知ったが
使い所がよくわからない
779デフォルトの名無しさん
2022/08/10(水) 12:53:32.14ID:vnHVeG1e
関数をローカル変数に代入するメリットって何でしょうか?
780デフォルトの名無しさん
2022/08/10(水) 13:19:15.14ID:8RUvvZbB
何度も同じ計算をしないで結果だけ繰り返し使える
781デフォルトの名無しさん
2022/08/10(水) 13:33:33.79ID:bGy3yklD
場合によるけど、処理前半でローカル変数に関数を代入しておくことで、処理後半の分岐が消えて見通しが良くなる可能性はあるかも。
何らかの理由でリネームしたかったとか?
782デフォルトの名無しさん
2022/08/10(水) 15:00:50.94ID:vnHVeG1e
ありがとうございます
783デフォルトの名無しさん
2022/08/10(水) 15:59:42.31ID:WlLD55gQ
>>779
同じコードで呼び出す関数だけ違うパターンって結構あるから
ソートとか
784デフォルトの名無しさん
2022/08/10(水) 17:43:12.15ID:YLnkT8Qt
>>779
ループ内で毎回foo.bar()するよりも
ループの外でbar = foo.barして
ループ内ではbar()だけにすると微妙に速くなる
785デフォルトの名無しさん
2022/08/10(水) 21:48:18.68ID:5JgNVH0W
かけるかな
786デフォルトの名無しさん
2022/08/11(木) 07:13:22.60ID:HPSk7Pik
【まず1嫁】くだすれPython(超初心者用) その57 YouTube動画>3本 ->画像>9枚
質問です。WindowsでColabでやってます。
1024×768のサイズの画像のみを収集したいのですが、
違うサイズの画像が入ってきます。どうすればいいですか?
787デフォルトの名無しさん
2022/08/11(木) 07:56:07.13ID:X31RE6bn
>>786
設定したfiltersがcrawlに設定されていない
google_crawler.crawl(keyword='流星', filters=filters, max_num=10)
788101
2022/08/11(木) 09:45:20.53ID:fCiqpa8j
英語って本当にプログラムに適してるのか?
isspace()
って何かと思ったらis spaceかよ
空白ないと判別しにくいのはプログラミングにおいてどうかと思うわ
789デフォルトの名無しさん
2022/08/11(木) 10:00:41.98ID:nadsErGw
キャメルケースとかスネークケース使えよ
790デフォルトの名無しさん
2022/08/11(木) 10:13:40.52ID:ECrQVbq4
atoi
791デフォルトの名無しさん
2022/08/11(木) 11:12:03.43ID:m7iYSaV1
>>788
少なくともあんたはプログラムに向いてないな
792デフォルトの名無しさん
2022/08/11(木) 12:26:10.60ID:fKEJQx+N
【まず1嫁】くだすれPython(超初心者用) その57 YouTube動画>3本 ->画像>9枚
>>787
ありがとうございます。早速、記入してみたのですが、
画像が収集できなくなりました!
AssertionError となりましたが、どうすればいいですか?
793デフォルトの名無しさん
2022/08/11(木) 12:46:20.99ID:7cUH/Z7I
×(かける)じゃなくて x(エックス)じゃねーの?
=1024x768
てか、コードはスクショじゃなくてコピペしてくれ
794デフォルトの名無しさん
2022/08/11(木) 13:47:35.08ID:fKEJQx+N
>>793
ありがとうございます。早速、修正してみたのですが、
TypeError となりました!どうすればいいですか?
コードのコピペ↓
from icrawler.builtin import GoogleImageCrawler

google_crawler = GoogleImageCrawler(storage={'root_dir': '流星フォルダ'})
filters = dict(size='=1024x768')
google_crawler.crawl(keyword='流星', filters=filters, max_num=10)
795デフォルトの名無しさん
2022/08/11(木) 13:58:15.94ID:7cUH/Z7I
エラーもコピペしてくれよ...
796デフォルトの名無しさん
2022/08/11(木) 14:07:01.78ID:fKEJQx+N
>>795
このようなエラーとなっています。
エラー↓
Exception in thread parser-001:
Traceback (most recent call last):
File "/usr/lib/python3.7/threading.py", line 926, in _bootstrap_inner
self.run()
File "/usr/lib/python3.7/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.7/dist-packages/icrawler/parser.py", line 104, in worker_exec
for task in self.parse(response, **kwargs):
TypeError: 'NoneType' object is not iterable
797デフォルトの名無しさん
2022/08/11(木) 15:00:05.18ID:7cUH/Z7I
>>796
バグかも...
https://github.com/hellock/icrawler/issues/107
798デフォルトの名無しさん
2022/08/11(木) 15:15:10.72ID:fKEJQx+N
>>797
バグですか...ありがとうございます。
他のコード、1024×768のサイズの画像のみを収集するには、
どうすればいいですか?
799デフォルトの名無しさん
2022/08/11(木) 15:27:49.52ID:JwgkCgjA
めちゃ無駄だけど1024x768以外の画像は捨てちゃうぐらいしか思いつかん...
800デフォルトの名無しさん
2022/08/11(木) 16:47:42.06ID:X31RE6bn
>>798
できました、min_sizeとmax_sizeも指定する必要があるみたいです
Python3.10でやりました、TypeErrorにはなりませんでした

google_crawler = GoogleImageCrawler(storage={'root_dir': '流星フォルダ'})
filters = dict(size='=1024x768')
google_crawler.crawl(keyword='流星', filters=filters, max_num=10, min_size=(1024, 768), max_size=(1024, 768))
801デフォルトの名無しさん
2022/08/11(木) 18:48:40.17ID:fKEJQx+N
>>800
ありがとうございます。早速、試してみましたが、
バージョン違いのためかNameError となりました。
現在、Python 3.9.12 のバージョンなのですが、
ColabでPython3.10にするにはどうすればいいですか?
802デフォルトの名無しさん
2022/08/11(木) 18:56:22.30ID:X31RE6bn
エラーもコピペしてくれよ...
803デフォルトの名無しさん
2022/08/11(木) 19:26:39.81ID:L6VcpDZr
バージョン違いって断定してるんだからそれでいいだろ
他の可能性を検討しようとするなよ
804デフォルトの名無しさん
2022/08/11(木) 19:33:40.56ID:RPSv5K1g
そんな能力あるのになんでColabのバージョンは変えられないの?
805デフォルトの名無しさん
2022/08/11(木) 19:36:46.54ID:X31RE6bn
>>801
Python 3.9.7が残っていたからicrawlerインストールして>>800実行したら
問題無くできたのでPython3.9.12でもできるハズ
Colabが悪いのではないでしょうか?
806デフォルトの名無しさん
2022/08/11(木) 19:38:03.60ID:m6fa3uRQ
windowsの3.9.13でも問題ないな
ちゃんとgoogleの検索結果取得できてないか、htmlパースに使ってるbeautifulsoup4かlxmlがおかしいかかな
807デフォルトの名無しさん
2022/08/11(木) 20:01:15.15ID:X31RE6bn
>>801
まさかだけどNameErrorって、NameError: name 'GoogleImageCrawler' is not defined じゃないよね?
>>800の前にfrom icrawler.builtin import GoogleImageCrawler してるよね?
808デフォルトの名無しさん
2022/08/11(木) 20:18:34.40ID:fKEJQx+N
>>807
ありがとうございます。早速、試してみましたが、
見事に解決しました。
>>800
改めてありがとうございます。
お陰さまで、1024×768のサイズの画像のみを収集することができるようになりました。
809デフォルトの名無しさん
2022/08/11(木) 20:24:18.19ID:7cUH/Z7I
>>807
せめて>>794ぐらいは見てから書きなよ...
まあエラーのコピペ待ちでいいかと
810デフォルトの名無しさん
2022/08/11(木) 20:25:02.29ID:7cUH/Z7I
>>808
えっ、まじで>>807だったの?...
811デフォルトの名無しさん
2022/08/12(金) 05:55:29.63ID:vrgQH6RZ
(超初心者用)
812デフォルトの名無しさん
2022/08/12(金) 11:12:46.10ID:OS8SYcAO
jupyternotebookでセル内のコードが長くなるため,
defで定義した関数を同一ディレクトリ内のmy_func.pyに保存し
メインのコードmain.py 内でimportすることにしました.

my_func.pyに保存した関数内では,numpyを使っているのですが,numpyが認識されません.
main.py でnumpyをインポートしていますが,その効果をmy_func.py内に待避した関数に及ばせるためには
どうすればよいでしょうか.
813デフォルトの名無しさん
2022/08/12(金) 11:54:38.42ID:V16IFZ6j
my_func.pyでnumpyをインポート
814デフォルトの名無しさん
2022/08/12(金) 13:39:22.16ID:f9Pn84YJ
>>813
ありがとうございます。早速、記入してみたのですが、
my_func.pyでnumpyが認識されました。
main.py内にインポートしているnumpyどうすればいいですか?
815デフォルトの名無しさん
2022/08/12(金) 14:10:01.68ID:AKRIAlbQ
main.pyでnumpyを使っていなければいらない
816デフォルトの名無しさん
2022/08/12(金) 15:01:37.64ID:P/MIlql5
そのライブラリを直接呼ぶコードがあるファイル毎にimportする。直接呼ばないなら不要

main.py
__import funcs

__funcs.test()


funcs.py
__import numpy

__def test():
____print(numpy.random.randint(0, 10))
817デフォルトの名無しさん
2022/08/12(金) 15:14:18.69ID:f9Pn84YJ
>>815
>>816
ありがとうございます。早速、試してみましたが、
見事に解決しました。
818101
2022/08/12(金) 16:36:29.89ID:SBMPsz73
普通、FunctionalをFucって略すか?


幻塔というゲームのテスト用のサーバーネームが
JP Fuc Test Server
だったらしく炎上してた
819デフォルトの名無しさん
2022/08/13(土) 03:28:02.47ID:nuG2c1c/
mypyでエラーにならないように pathlib.Path の型を示したいんだが、これはどうすりゃいいのかね?
type()でチェックすると
<class 'pathlib.WindowsPath'>
となるんだが pathlib.WindowsPath と指定してもエラー出るし
820デフォルトの名無しさん
2022/08/13(土) 03:32:04.91ID:nuG2c1c/
動的な基底クラスはmypyでチェックできないって言ってる人がいたわ
そういうことなのか?
821デフォルトの名無しさん
2022/08/13(土) 03:54:53.99ID:xLCZiP8v
pylanceだとpathlib.Pathでいけるけどmypyあかんか?
822デフォルトの名無しさん
2022/08/13(土) 07:30:43.65ID:nuG2c1c/
>>821
お、いけたわ
さんくす
823デフォルトの名無しさん
2022/08/14(日) 04:23:42.79ID:aYzApZcG
pythonでcuda使いたいが、お勧めのサイトありますか?
ちなみにcudaは3090とかの方がいいですか?
824デフォルトの名無しさん
2022/08/14(日) 09:47:31.64ID:7VRuM4Xa
にほんごでおk
825デフォルトの名無しさん
2022/08/14(日) 10:12:56.20ID:A6qxvdf0
[python cuda]🔍
826デフォルトの名無しさん
2022/08/14(日) 11:25:05.75ID:Gnb69e0i
Noneの比較はis を使うべきで==を使うべき"でない"なんて記述を見かけるのですが、

if dictData.get('key') == 'hogehoge':
__echo 'OK'

例として辞書のgetメソッドのようにキーが無ければNoneを返すような場合で上記のような判定もすべき"でない"のでしょうか?
この場合dictData.get('key', '')のように、キーが見つからない場合の値を明示的に書くべき?
(ただdict.get()のようにコントロールできないのもありますよね)
827デフォルトの名無しさん
2022/08/14(日) 12:06:39.34ID:KzxSNF0d
if hoge is None:
こんな風に定数Noneと比較する場合の話だよ
828デフォルトの名無しさん
2022/08/14(日) 12:18:23.17ID:T9w5rPHY
Noneを==すると稀にNone==None ->Falseあるから避けよう。バグのもと。これはググれば解説あるから読んで

で、普通は
if dic.get('key') == 'foo':
__func()
だけでしょう。あればする、なければ終わり

if dic.get('key') == 'foo':
__func()
else:
__func_b()
でもいいけど。

基本的にNoneやFalseを判定しにいかない。まずTrue判定をして、その反対をelse (if)で受ける

ただまあNone / Falseだけを知りたい場合があって
そのときは
if dic.get('key') is None:
__func()
などと書く。英文として読みやすいからよい

つか辞書から無い可能性あるkeyのgetは避けたい
db検索的に書きたいならget使わずtry節書いてKeyError専用処理作ろう
829デフォルトの名無しさん
2022/08/14(日) 12:29:39.79ID:Gnb69e0i
>>827,828
なるほど、明示的にNoneであることの比較の場合はということですね。ありがとうございます。
>>828さんの最後の件も承知しました。
830デフォルトの名無しさん
2022/08/14(日) 12:34:40.20ID:Gnb69e0i
>>828
あ、やっぱりすみません、最後のget使うべきでない理由って簡単に教えていただけますか?
今回、API等の応答で、辞書の目的のキーがあったりなかったりするような応答で、キーがあれば拾う、無ければ無視、という単純なものなのですが、それでもgetは使わないほうが良かったりしますか?
831デフォルトの名無しさん
2022/08/14(日) 12:41:52.12ID:VI2zLni0
>>682
1000%同意する
832デフォルトの名無しさん
2022/08/14(日) 12:45:09.72ID:Xz0meKRj
>>830
dict['key']が存在してvalueがNoneの場合にTrueになっちゃうから、キーの不存在判定だけしたいなら'key' in dictの方がいいんじゃないかな
833デフォルトの名無しさん
2022/08/14(日) 12:50:22.70ID:T9w5rPHY
>>830
エラーは出ていいんよ
逆に握りつぶしちゃいけない
というかgetってなんのためにあるんだ?

try:
__dic[input()]:
____print('ある')

except KeyError:
__print('ねえわ')

except Exception as e:
__print(e.__class__.__name__)

外部入力受け付けるのって鬼門なんでこういう感じで書きたい
keyerrorは想定できるし、別の意図してないエラーも拾いたいだしょ
834デフォルトの名無しさん
2022/08/14(日) 12:51:39.01ID:T9w5rPHY
>>833
しつれい
try:
dic[input()]
print(1)
835デフォルトの名無しさん
2022/08/14(日) 12:53:45.52ID:A6qxvdf0
>>830
その用途なら、getでもいいんじゃない?
>>832が言う様な違いはあるけれど、キーが不存在でNoneが返る場合と、キーが存在するが値がNoneの場合とを、区別する必要があるかどうか、考えて決めれば良いよ
836デフォルトの名無しさん
2022/08/14(日) 15:22:06.37ID:nJs5efs8
キーに階層があって、途中のキーがなかったりすることがある場合なんかだと、
区別する実益はあるかもしれんね
一応、.get('key', {}) なんて方法もあるけど
837デフォルトの名無しさん
2022/08/14(日) 15:22:39.42ID:Gnb69e0i
>>832
失礼しました。最初の例ですとおっしゃるとおりですね。内容まで取得するケースも想定してました。

>>833-835
ありがとうございます。要件などふまえ考えてみます
838デフォルトの名無しさん
2022/08/14(日) 16:52:51.09ID:T9w5rPHY
ああわかった

db['key1': 0, 'key2':0,,,]
if key1:
__print('ある')
else:
__print('ない')

こんときgetじゃないといかんのだな
あるいは

try:
__value = db[a'']
__print('ある')
except KeyError:
__print('ない')
except:
__print('未定義エラー')
839デフォルトの名無しさん
2022/08/14(日) 22:47:50.08ID:549c+n4K
Ruby の偽は、nil, false だけ。
これ以外は真

でも、Python, PHP, JavaScript などは、
各型に偽値がある。空文字列・空配列・空辞書など

だから、とんでもなくバグるし難しい。
すべての型の可能性を考えないといけない

文字列型・配列型・辞書型ならとか。
だから、TypeScript みたいな型チェックツールが作られた
840デフォルトの名無しさん
2022/08/14(日) 22:57:22.86ID:I2sSNpX6
>>839
死ね
841デフォルトの名無しさん
2022/08/15(月) 09:22:07.96ID:c1YCm0IS
>>838
どういうこと?
842デフォルトの名無しさん
2022/08/15(月) 13:07:09.65ID:RvdaGkLE
>>841

dict['key'] = value

dict.get('key') = value

取得したvalueがFalseになるとき、つまり0とかNoneとか空白のとき
if dict['key'] is not True になる。値はあるにも関わらず
一方
if dict.get('key') is Ture なので、期待する挙動としてはgetのが正しい

値がダミー(0など)の辞書の用意とかありうるので
843デフォルトの名無しさん
2022/08/15(月) 14:06:42.23ID:0GtlIRwB
ああそういうことか
re.matchとかre.searchみたいなことをやりたいのか

辞書のキーがあるかないかbooleanの判定と値への処理は別の方がいいと思う
if 'key' in dでもKeyError処理はどっちでもいいけど
844デフォルトの名無しさん
2022/08/15(月) 15:15:52.94ID:gMKahu5b
>>842
keyに対するvalueが0やNoneの時に
dict.get(key) is Trueにはならんやろ

dict.get(key, [default])を使うのは
keyに対応する値がデフォルト値の場合と
keyに対応する値が無くてデフォルト値が返される場合を同じように処理したい時だけ

bool判定したいならin演算子
KeyError使うのはkeyが存在しない状況が例外的な場合
845デフォルトの名無しさん
2022/08/15(月) 15:38:01.56ID:RvdaGkLE
>>844
ありゃならんな
これはすまん。なんか勘違いしとった。

stackoverflow why dict.get(key) instead of dict[key]?
参照
846デフォルトの名無しさん
2022/08/15(月) 19:52:08.21ID:KlKo2Eqq
わざわざメソッドとして用意されるほどの価値がないんだよなあ
2時代は重宝したのかな
847デフォルトの名無しさん
2022/08/15(月) 20:37:42.59ID:Xxg2cjph
if (val := dic.get(key)) is not None:
は使うけどな
848デフォルトの名無しさん
2022/08/16(火) 04:15:40.22ID:MkpTU7zo
次のコードがあります
h=[[[]]]*10
h[0].append([0,0])
理想としては
>[[[], [0, 0]], [[]], [[]], [[]], [[]], [[]], [[]], [[]], [[]], [[]]]
となってほしいのですが、現実は
>[[[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]]]
となってしまいます
どうしたら理想の形になるでしょうか?
849デフォルトの名無しさん
2022/08/16(火) 07:26:37.30ID:GKkpSlmU
内包表記使って初期化
850デフォルトの名無しさん
2022/08/16(火) 08:04:39.39ID:9vnyTUy7
[[[], [0, 0]] if i == 0 else [[]] for i in range(10)]
851デフォルトの名無しさん
2022/08/16(火) 08:06:35.47ID:9vnyTUy7
h=[[[]] for i in range(10)]
h[0].append([0,0])
852デフォルトの名無しさん
2022/08/16(火) 11:31:22.44ID:2x3mrzZQ
要件後出しまくりとか
ゴールポスト移動させまくりとか
チョンメンタルの香具師とは付き合いたくないな
853デフォルトの名無しさん
2022/08/17(水) 13:20:06.97ID:5W303LUa
差別主義者で今どき香具師とか使ってるジジイとか逆に誰も付き合いたくないだろ
854デフォルトの名無しさん
2022/08/17(水) 16:37:01.73ID:tMNGLQPx
pandas のread_excelで式が入っている箇所の値を計算値ではなく、
整形されたテキスト値の方を取りたい場合はどうしたら良いのでしょうか?

数値で6.6がテキスト値として”7”として表示されている”7”の方の値をとりたいです。
855デフォルトの名無しさん
2022/08/17(水) 18:19:41.22ID:8E4xUz8+
>>854
Excelファイル内のデータとしてあるのは数値の6.6だけで
文字列の7という値はデータとしてファイルには存在しないので
直接読み取るのは無理

read_excelでdtypeやconverterを指定して数値の6.6を文字列の7に変換するか
一旦dfに読んでから変換するか
856デフォルトの名無しさん
2022/08/18(木) 04:13:52.58ID:OEqoy/Kx
0.00000001から10000.xxxxくらいまで取り得るfloatの変数を、数字の表記で文字列に変えたいのですが、
str()だと、0.0001未満の値が"1e-05"のような指数表記になってしまいます
一方f-string(format)だと、".8f"等で全桁表記はできますが、小数点以下が常に8桁で0で埋められてしまいます
(例 0.00001→0.00001000)
末尾には余計なゼロは付けず、かつ指数表記にならない形でfloatを文字列にする簡単な方法はありますか?
rstrip('0')など使って余計なゼロを処理するしかないでしょうか?(この場合、100.0などのゼロは削除できないので判定が必要そうで単純にはいかなそうですが)
857デフォルトの名無しさん
2022/08/18(木) 08:18:05.71ID:cEC5FUVy
>>856
numpy.format_float_positional
ググったらすぐ出て来た
858デフォルトの名無しさん
2022/08/18(木) 08:58:00.71ID:8X5QyRnM
>>855
ありがとうございます。やはりできないのですね。
オプション探してみましたがそれらしいものがなかったので。
場所ごとに与えられた式が同じとは限らないので、
エクセル側で読み込み用の文字列を作成することにしました。
859デフォルトの名無しさん
2022/08/18(木) 16:36:53.18ID:Sofq2Da+
条件分岐について質問です
3の倍数であるかどうかを判定する関数func1()とfunc2()を書いたのですが、
どちらの書き方のほうが良いでしょうか?
https://paiza.io/projects/mbEoYGp5wy7cU2oqpoTLbA
860デフォルトの名無しさん
2022/08/18(木) 16:40:44.96ID:s/eA3jUD
当然1
861デフォルトの名無しさん
2022/08/18(木) 16:48:56.73ID:X/mZUHYK
>>859
3の倍数が例外的な事象と言う事を表現したいならワンチャン2の可能性もあるかも
862859
2022/08/18(木) 17:00:51.08ID:Sofq2Da+
回答ありがとうございます

なぜfunc2()の書き方はあまり良くないのでしょうか?
よろしければ理由も教えて貰えるとありがたいです
863デフォルトの名無しさん
2022/08/18(木) 17:56:26.08ID:GYRCxwaB
すべてのnumは3の倍数かそうでないかのどちらかである、つまり必ずどちらかの処理が実行される事が一目で理解できる点ではfunc1がベター
一方で3の倍数の時は処理を行わず早期リターン、3の倍数でない時は長い処理を行う、といった場合はfunc2
864デフォルトの名無しさん
2022/08/18(木) 18:55:31.69ID:Rcho8+Nh
いや、return入れるならelseのときもreturnしろよ
両方入ってるなら2でもいいと思うけど、片方だけ終わらせるために入れるなら関数なのかサブルーチンなのかわからんからダメだろ
865859
2022/08/18(木) 19:10:48.59ID:Sofq2Da+
>>863
なのでこの場合はfunc1()なんですね
ありがとうございました
866859
2022/08/18(木) 19:15:55.23ID:Sofq2Da+
>>864
コードはなるべく短い方がいいと思ったので使わなくて済むところでは使いませんでした
関数なのかサブルーチンなのか分からないと駄目とはどういうことですか?
867デフォルトの名無しさん
2022/08/18(木) 20:03:27.19ID:Ly249j22
こっちのが好き

def is_multiple(num): return num%3 == 0
868デフォルトの名無しさん
2022/08/18(木) 21:14:57.76ID:uWlfhjm8
>>864
アラカン先輩ちぃーすっ
869デフォルトの名無しさん
2022/08/18(木) 21:32:20.64ID:49aIw1a5
>>867
判定処理と判定結果を表示する処理を分離しましょうという意味では同意する

けどis_multipleという関数名で3の倍数かどうか判定されるのは違和感しかない

じゃどういう名前にするのがいいかと考えると判定処理をわざわざ関数化するほどではないんじゃないかという気がする
870デフォルトの名無しさん
2022/08/19(金) 03:09:01.80ID:FK1lT4BX
def b_is_multiple_of_a(a: int, b:int): return bool(b % a == 0)

if b_is_multiple_of_a(a=5, b=10):
__print('可読性低すぎる')
871デフォルトの名無しさん
2022/08/19(金) 11:27:50.19ID:scgMDta4
アーリーリターンは何も珍しいこと時や無い
872デフォルトの名無しさん
2022/08/19(金) 11:28:55.77ID:scgMDta4
>>870
関数改行すんならifも改行すんなよ
873デフォルトの名無しさん
2022/08/19(金) 11:30:34.29ID:scgMDta4
しないなら
874デフォルトの名無しさん
2022/08/19(金) 18:24:24.93ID:opjWCie4
def func3(n):
p = 0
while n > 0:
p += n % 10
n //= 10
return not (p % 3)
875デフォルトの名無しさん
2022/08/20(土) 10:11:04.26ID:FuR2a/w3
>>710
https://github.com/opencv/opencv/issues/22088

4.6.xは色々ダメポ
876デフォルトの名無しさん
2022/08/20(土) 23:28:18.84ID:89Fpjor3
a = [1,2,3,4,5]
b = [2,3,4,5,6]
c = []

for i in range(5):
c.append(a[i] + 2*b[i])

こういうのをリスト内包表記で書くのは無理でしょうか
877デフォルトの名無しさん
2022/08/20(土) 23:35:43.31ID:mymTDVML
aとbの要素数が同じだったら[i+2*j for i,j in zip(a,b)]でいけね?
878デフォルトの名無しさん
2022/08/20(土) 23:38:46.37ID:cHNXWuBU
c=[x+2*y for x,y in zip(a,b)]
879デフォルトの名無しさん
2022/08/20(土) 23:39:36.80ID:mymTDVML
普通にrangeでも
c=[a[i]+b[i] in i for range(5)]でできるかな
880デフォルトの名無しさん
2022/08/21(日) 01:03:28.95ID:uqbZs7r8
どうでもいいけど
c = [i + (j * 2) for i, j in zip(a, b)]
と書きたいな俺は
# (1*i) + (2*j) のようなときのみ(2*j)でも可
# 計算スタックは()でくくる
初心者のうちは特に気をつけたい。動けばいいやんは動かなくなる原因になる
881デフォルトの名無しさん
2022/08/21(日) 01:23:15.12ID:m1bd5huk
>>876
好きなのを選び多摩へ
c = [(a+1) + (b+2)*2 for a,b in enumerate([i for i in range(5)])]
c = [(a+1) + b*2 for a,b in enumerate([i for i in range(2, 7)])]
c = [a + 2*b for a,b in zip([i for i in range(1,6)],[j for j in range(2,7)])]
882デフォルトの名無しさん
2022/08/21(日) 01:38:11.30ID:X34OpE8X
ありがとうございます!
883デフォルトの名無しさん
2022/08/21(日) 06:47:07.90ID:SCvvVl9f
def main(argv: Sequence[str]) -> None:


これってどういう意味というか、なにがやりたいんですか?

def main(argv):
ならmainにargvを渡すだけで分かりやすいんですが
884デフォルトの名無しさん
2022/08/21(日) 10:46:46.24ID:1U/+Hx4a
>>883
型ヒントっていうヤツでしょ
おじさんはもう新しいこと覚える気力ないから
どういう機能かは自分でググってくれ
885デフォルトの名無しさん
2022/08/21(日) 10:59:40.26ID:LqJQ4HOS
>>883
argvの型がstrのシーケンスで戻り値の型がNoneってこと
シーケンスはlistやtupleのように長さが事前に分かってて各要素にインデックスで直接アクセスできるようなコレクションの総称
886デフォルトの名無しさん
2022/08/21(日) 13:04:30.41ID:j3ukytx2
そこまで型ゴリゴリにするならpythonじゃなくても(じゃない方がむしろ)良いと思うから
放置してる
887デフォルトの名無しさん
2022/08/21(日) 13:07:09.50ID:JM/HSGoB
>>884
型ヒントでググりました
注釈だそうですね
要するにいらないんじゃないか!
888デフォルトの名無しさん
2022/08/21(日) 14:03:22.39ID:uqbZs7r8
型ヒント(と開発環境)があると作業効率がずっと上がる
【まず1嫁】くだすれPython(超初心者用) その57 YouTube動画>3本 ->画像>9枚
型ヒントのない世界は無
【まず1嫁】くだすれPython(超初心者用) その57 YouTube動画>3本 ->画像>9枚

オジジでもない限り、初学者は型ヒントつけるクセつけてったほうが
大きいコード書くようになったときなんかに助かるで
889デフォルトの名無しさん
2022/08/21(日) 14:29:46.94ID:j3ukytx2
そこでハンガリアンですよωωω=2πf
890デフォルトの名無しさん
2022/08/21(日) 14:38:59.74ID:jAGl7lqb
実際使ってみると、版画リアンはものすごく楽。
名前というものは被るように出来てるものらしい。
とはいえ推奨はしない。
891デフォルトの名無しさん
2022/08/21(日) 14:45:29.71ID:HDFqY1eo
Pythonでローカルサーバーを立ててhtmlの確認をしたいのですが、SSIを使いたいため、以下のスクリプトを使用しています。
https://github.com/danvk/ssi-server/blob/master/ssi_server.py
GITからクローニングして、MacOS + python 3.10.5で動作確認させたところ問題なく動きました。
Windows10 + Python 3.10.5で実行すると、localhostへのアクセス時に文末のエラーが出て動きません。
同一のクラウド上のファイルを参照して実行しています。GITからはMacで落としましたが、改めてwindowsで落としても同じでした。
MacOSでは動いているのでWindowsの環境なのかと思いつつ、何が原因かわからずにいます。
アドバイスください。

------エラー文章--------
Exception occurred during processing of request from ('::1', 58693, 0, 0)
Traceback (most recent call last):
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\socketserver.py", line 683, in process_request_thread
self.finish_request(request, client_address)
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Users\UserName\iCloudDrive\web\ssi_server.py", line 37, in __init__
SimpleHTTPRequestHandler.__init__(self, request, client_address, server)
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\http\server.py", line 651, in __init__
super().__init__(*args, **kwargs)
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\socketserver.py", line 747, in __init__
self.handle()
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\http\server.py", line 425, in handle
self.handle_one_request()
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\http\server.py", line 413, in handle_one_request
method()
本文長すぎの為続きは次に書きます
892デフォルトの名無しさん
2022/08/21(日) 14:46:16.53ID:HDFqY1eo
続きです。


File "C:\Users\UserName\iCloudDrive\web\ssi_server.py", line 40, in do_GET
SimpleHTTPRequestHandler.do_GET(self)
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\http\server.py", line 655, in do_GET
f = self.send_head()
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\http\server.py", line 679, in send_head
path = self.translate_path(self.path)
File "C:\Users\UserName\iCloudDrive\web\ssi_server.py", line 57, in translate_path
content = ssi.InlineIncludes(fs_path, path)
File "C:\Users\UserName\iCloudDrive\web\ssi.py", line 31, in InlineIncludes
content = open(path).read()
UnicodeDecodeError: 'cp932' codec can't decode byte 0x84 in position 1163: illegal multibyte sequence
----------------------------------------
893デフォルトの名無しさん
2022/08/21(日) 15:29:25.25ID:hzy7Wudw
GITって何て読むの?
じっと?ぎっと?
894デフォルトの名無しさん
2022/08/21(日) 15:41:28.40ID:gzL+j7A8
kit
git
895デフォルトの名無しさん
2022/08/21(日) 15:50:29.96ID:Tt3lkFsn
>>888
え、上が当たり前の感覚なんだけど
昔の人は下の状況でどうやってコード書いてたの? 引数とかオプションとかメソッドとか
ソースあたったりdir連打?
896デフォルトの名無しさん
2022/08/21(日) 15:50:38.42ID:tAy7F/Zf
>>892
たぶんこれでいけるんじゃね
content = open(path, encoding = "utf-8").read()
897デフォルトの名無しさん
2022/08/21(日) 16:17:28.38ID:EVXa4h0m
>>888
その比較は型ヒント関係ないやろ
898デフォルトの名無しさん
2022/08/21(日) 16:25:35.41ID:S3KIc3UD
>>895
help
899デフォルトの名無しさん
2022/08/21(日) 16:28:13.56ID:HDFqY1eo
>>896
ありがとうございます。
まだ上手く直せていないのですが、試していたらindex.htmlに日本語があるとWindowsではエラーが出ることがわかりました。
ssi_server.py、ssi.pyで正しく日本語を読むようにすればいいということでしょうか。
900デフォルトの名無しさん
2022/08/21(日) 16:49:17.07ID:HDFqY1eo
>>896
ssi.pyの31行目を教えていただいたものに書き換えても駄目でした。。。
他に試してみることがあればぜひ教えてください。お願いします。
901デフォルトの名無しさん
2022/08/21(日) 16:53:25.43ID:5N8drKmv
tensorflow Liteというのがあって、int8とかでTPU使うと計算が速いらしいのですが、調べても使い方が複雑すぎていまいちよくわかりません
初心者にもわかりやすくまとまってるサイトはありませんか?
もしくはどなたかが簡潔にまとめていただけると助かります
902デフォルトの名無しさん
2022/08/21(日) 17:07:51.78ID:gzL+j7A8
どこまで分かってるか分かってないか書いたほうがいいです
903デフォルトの名無しさん
2022/08/21(日) 17:32:33.39ID:4RZQsnIa
>>902
converter = tensorflow.lite.TFLiteConverter.from_saved_model(export_dir)
tflite_model = converter.convert()
とすれば変換できるみたいですが、まずtensorflow.lite.TFLiteConverterがありません
私の環境ではtensorflow.python.lite.TFLiteConverterかなと思いましたが、ありません
tensorflow.lite.pythonにTFLiteConverterではなくtflite_convertがあるのを見つけました
tflite_convert.dtypes.int8というのが存在するので、これを設定すればいいのかなとは思うのですが
あと何したらいいのか見当がつきません
904デフォルトの名無しさん
2022/08/21(日) 17:50:14.70ID:y+zMOwhn
>>899
index.htmlは何の文字コードで保存されてるの?
Linuxで動いてるのと同じならUTF-8だと思うけど、Windows側で弄った時に文字コード変わってると
ややこしいから確認したい
905デフォルトの名無しさん
2022/08/21(日) 17:56:00.04ID:y+zMOwhn
>>900でもそうだけど
ダメだった時に同じエラーが出たのか、違うエラーが出たのかははっきり書いた方が良い
エンコーディング指定をこれにしても同じ結果になる?
content = open(path,encoding='utf-8_sig').read()
906デフォルトの名無しさん
2022/08/21(日) 18:09:49.63ID:YEW47Y5U
ウェブ系など、すべてのシステムはUTF-8

でも、Windows だけは、CP932(shift-jis)。
5ch も、sjis だけどw

こういうシステムは普通はない
907デフォルトの名無しさん
2022/08/21(日) 18:14:09.27ID:YEW47Y5U
>>892
の最後の行に書いてある

>UnicodeDecodeError: 'cp932' codec can't decode byte 0x84 in position 1163: illegal multibyte sequence

UnicodeDecodeError: 'cp932'
cp932 でしょ?
908デフォルトの名無しさん
2022/08/21(日) 18:17:56.59ID:HDFqY1eo
>>904-905
content = open(path,encoding='utf-8_sig').read()
で解決しました!
index.htmlはUTF-8で保存されていました。
後学のために単にutf-8だったときのエラーメッセージと元のエラーメッセージの比較をしようと思ったのですが、
utf-8指定でも動作するようになってしまって、その点はよくわからずでした。
(最初のときは違う行に書いてしまったかもしれません)

レベルが低くせっかく即答いただいたのに手間取ってすみませんでした。ありがとうございました。
909デフォルトの名無しさん
2022/08/21(日) 21:07:30.06ID:msOimEye
今日初めてPython落としました!
何からやったらいいのかな?
910デフォルトの名無しさん
2022/08/21(日) 21:16:22.50ID:oSLHHX37
まずは交番に問い合わせ
911デフォルトの名無しさん
2022/08/21(日) 21:21:11.75ID:2nMf0Vdo
ニシキヘビ属(Python)は、爬虫綱有鱗目ニシキヘビ科(ボア科ニシキヘビ亜科とする説もあり)に属する属。ニシキヘビ科の模式属。
912デフォルトの名無しさん
2022/08/21(日) 21:56:34.82ID:uqbZs7r8
class Foo():
__def __init__(self, bar:Bar):
____self.bar = bar

他のクラスのインスタンスをselfで受けるのって慣習ですか?
特に必要なければしなくてもよい?
913デフォルトの名無しさん
2022/08/21(日) 22:08:55.27ID:pxrRhRxl
>>912
質問の意図がよく分からない

FooのインスタンスがBarのインスタンスに依存してて
コンストラクタで依存するインスタンスを受け取って参照を保持しておきたいというのがそのコードの意味
914デフォルトの名無しさん
2022/08/21(日) 22:36:44.36ID:m1bd5huk
ちんちんシュッシユ
915デフォルトの名無しさん
2022/08/21(日) 22:37:39.35ID:uqbZs7r8
>>913
fooはインスタンス生成時点のbarのインスタンス情報が要るけど
生成後は要らない、他のメソッドで使わないとき、self.barで保持する必要がないと思うんだけど、そういうコードあんまり見たことないなーと思って

def Foo():
__init(self, bar):
____x = bar.baz[0] * 2
____self.calc(bar.data)

とかでいいときもあると思うんだけど
だいたいインスタンス変数にするだしょ
なんか理由あんのかなっていう

def Foo():
__init(self, bar):
____self.bar = bar
____x = self.bar.baz[0] * 2
____self.calc(self.bar.data)
916デフォルトの名無しさん
2022/08/21(日) 23:00:36.99ID:sTNlugjb
何見たのか知らないけど保持する必要がないんならインスタンス変数にする必要ないね
917デフォルトの名無しさん
2022/08/21(日) 23:15:46.41ID:YEW47Y5U
is-a・継承・一種じゃなくて、has-a・包含・部品化でしょ

Foo は、Bar という部品を持っている
918デフォルトの名無しさん
2022/08/22(月) 07:03:46.35ID:nh7qwDlg
どなたか>>903わかりませんか?
919デフォルトの名無しさん
2022/08/22(月) 08:53:29.31ID:/DEJsMLY
>>915
> とかでいいときもあると思うんだけど
だいたいインスタンス変数にするだしょ

ルールも慣例もないから君がみた例がそうだっただけ
ただコンストラクタで受けるとき普通はクラス全体として依存するからインスタンス変数で受けることが多いね

まだはやいと思うけどコード設計レベルの話だと、依存しない型をコンストラクタ引数に持つのは余計な情報を含み生成コストが高くなるから、本当に必要な情報だけコンストラクタで渡すか、ファクトリメソッド(staticmethodかクラス外のただの関数)を経由すると良い
920デフォルトの名無しさん
2022/08/22(月) 10:58:30.17ID:YpfCjhrS
>>903
>まずtensorflow.lite.TFLiteConverterがありません
Python 3.10 にtensorflow入れて確認したけど、あるよ
ちなみにtensorflow のバージョンは2.9.1
921デフォルトの名無しさん
2022/08/22(月) 11:00:20.74ID:tAsFo3rY
統一教会は半島人の醜さを如実に表してる
922デフォルトの名無しさん
2022/08/22(月) 14:10:57.26ID:KX6mg0Ol
質問が既に触っちゃいけない人レベルだと答える気も起きない
923デフォルトの名無しさん
2022/08/22(月) 17:08:51.25ID:vrjH2pLG
>>920
こちらは2.11.0と出ました
こんな感じです
どっとup.org/uploda/どっとup.org2859768.png
924デフォルトの名無しさん
2022/08/22(月) 17:09:07.20ID:vrjH2pLG
あ、Pythonは3.10.6です
925デフォルトの名無しさん
2022/08/22(月) 18:48:00.04ID:KAheMTvm
ちなみに、tensorflow.kerasも、tensorflow.python.kerasになってます
926デフォルトの名無しさん
2022/08/22(月) 19:13:09.43ID:YpfCjhrS
>>924
こちらはIDLEでやってるけど、そちらは何でやってるの?

>>>import tensorflow as tf
>>>tf.lite.TFLiteConverter
<class 'tensorflow.lite.python.lite.TFLiteConverterV2'>

と出るから、あなたの環境?ではtensorflow.lite.python.lite.TFLiteConverterV2 でできるかも?
927デフォルトの名無しさん
2022/08/22(月) 19:19:54.92ID:mGTda2af
>>926
おおお、なんか出ました!!!
ちなみにVSCodeです
これをTFLiteConverterだと思って使えばいいんですね
ありがとうございます
928デフォルトの名無しさん
2022/08/22(月) 19:38:48.82ID:YpfCjhrS
ふぅ〜〜、、また迷える子羊を救ってしまったオレはメシア! >>922はウンコ!!
929デフォルトの名無しさん
2022/08/22(月) 19:44:46.61ID:7dOE9g6n
×触っちゃいけない
〇自分のレベルでは触れない
930デフォルトの名無しさん
2022/08/22(月) 20:41:16.68ID:xuCaDQYT
(悪い)
931デフォルトの名無しさん
2022/08/23(火) 07:46:45.41ID:AXaElLrn
かっこ悪い
932デフォルトの名無しさん
2022/08/23(火) 11:45:38.02ID:C7QGzGi8
(インテグラ)
933デフォルトの名無しさん
2022/08/23(火) 15:21:34.49ID:VG0bs36n
Python的にはタプル
934デフォルトの名無しさん
2022/08/23(火) 18:20:21.00ID:QvfGPIA0
スクレイピングの勉強でも始めようと思って
FANZAから持ってるエロゲーのデータ取得しようと思ったけど「18歳以上ですか?」のページに飛ばされるからうまくいかないんだよな

それでぐぐってみたらちゃんと回避する方法も載っててさすがエロは人類の英知だなって
935デフォルトの名無しさん
2022/08/23(火) 18:21:32.45ID:QvfGPIA0
で、もしかして商品データのAPIとかあるんじゃないかと調べたら普通にあるじゃん
FANZAでAPIの使い方も学べてしまうわけだ
936デフォルトの名無しさん
2022/08/23(火) 21:00:11.70ID:zoEAEgny
プログラムが<b></b>で囲まれてるのがあるんですが、どういう意味がありますか?
937デフォルトの名無しさん
2022/08/24(水) 11:40:37.72ID:GCuLQfVh
def mySort(x):
_return x-n

ary=sorted(ary,key=mySort)

上記の様なソートでmySort関数に別の引数(n)を
与えたい場合はどのようにすれば良いのでしょうか?
938デフォルトの名無しさん
2022/08/24(水) 11:40:54.28ID:GCuLQfVh
age忘れたのでageます
939デフォルトの名無しさん
2022/08/24(水) 12:06:03.74ID:nMDP5IX7
>>936
<b></b> は、HTML のタグ。bold・太字
940デフォルトの名無しさん
2022/08/24(水) 13:10:02.55ID:Q8Mi5AsJ
>>937
functoolのpartialとか
lambdaでclosureとか
941デフォルトの名無しさん
2022/08/24(水) 13:42:19.22ID:GCuLQfVh
>>940 ありがとうございます。以下のような感じでいけました。
def sortX(n):
_def sub(x):
__return x-n
_return sub
ary=sorted(ary,key=mySort(5))
942デフォルトの名無しさん
2022/08/24(水) 13:44:20.36ID:GCuLQfVh
どうでもいいけど、sortX(n)はmySort(n)でした
943デフォルトの名無しさん
2022/08/24(水) 17:14:42.06ID:MmGWx16i
比較関数の名前はmyCmp()とかの方がよくないか
944デフォルトの名無しさん
2022/08/24(水) 18:49:27.66ID:9+/sji0l
比較関数そのものじゃないのでgen_my_cmpとかに死体
945デフォルトの名無しさん
2022/08/25(木) 11:52:57.48ID:fZ4fACWe
floor が「切り捨て」なのはどういう意味なんだろう?
建物の「階」において、たとえば「2.5階」の高さがあったとしてもそれは2階の範疇、という理解でいいのか?
946デフォルトの名無しさん
2022/08/25(木) 12:17:01.44ID:t8dBENVC
>>945
まぁ…ある意味?floorは床(底)、ceilは天井。金融でも
動詞だと倒す、床に押しつける的な意味合いも持つようだね
947デフォルトの名無しさん
2022/08/25(木) 12:18:32.67ID:07FV37Yy
>>945
ガウス記号って学校で習わなかったのか?
948デフォルトの名無しさん
2022/08/25(木) 12:35:27.45ID:T8QO1Ud9
習ったかもしんないけど、習った時以外に使ったことないな
949デフォルトの名無しさん
2022/08/25(木) 19:50:52.48ID:JQLsrPvi
フレームワークスレ動いてないのでここで

jinja2のmacroって1つのmacroにつき1ファイル必要ですか?
便利だけど結構なファイル量になりそう
950デフォルトの名無しさん
2022/08/25(木) 19:53:38.52ID:JQLsrPvi
できそうですね
自決しましたすみません
951デフォルトの名無しさん
2022/08/25(木) 22:12:05.52ID:onQDGrDv
潔い最期であった
952デフォルトの名無しさん
2022/08/25(木) 23:23:20.07ID:11s99DpV
ヒットアンドブローを書いてみました
ここは直した方がいい、って箇所がありましたら教えて頂きたいです
よろしくお願いします

https://paiza.io/projects/V9PHgwFh2EAyhgA2PxxUbQ
953デフォルトの名無しさん
2022/08/25(木) 23:48:36.58ID:C7eFIied
3文字以下を入力したらエラー
954デフォルトの名無しさん
2022/08/26(金) 04:59:27.97ID:8E2pwf5q
>>952
数値チェック、桁数チェック、重複チェック追加
blowの計算が違う
2重ループの変数がすべてiなのはややこしい
answer_list、input_list、リストにするメリットを感じない
955デフォルトの名無しさん
2022/08/26(金) 05:00:05.01ID:8E2pwf5q
import random
answer_list_int = []
while len(answer_list_int) < 4:
____random_number = random.randint(0, 9)
____if random_number not in answer_list_int:
________answer_list_int.append(random_number)
answer_str = "".join(map(str, answer_list_int))
print('''\
数当てゲームをします!
4桁の重複しない数字を当てて下さい!
入力のチャンスは7回までです
'終了する場合はexitと入力して下さい
''')
for i in range(7):
____while True:
________input_number_str = input(f'{i + 1}回目 4桁の重複しない数字を入力して下さい->')
________if input_number_str == 'exit' or (len(input_number_str) == 4 and input_number_str.isdecimal() and len(set(input_number_str)) == 4):
____________break
____hit = len([j for j in zip(input_number_str, answer_str) if j[0] == j[1]])
____if input_number_str == 'exit':
________break
____print(f'hitは{hit}です!')
____if hit == 4:
________print('クリアです!おめでとう!')
________break
____print(f'blowは{len(set(input_number_str) & set(answer_str)) - hit}です!\n')
if hit != 4:
____print(f'残念!当たりは{answer_str}でした!')
956デフォルトの名無しさん
2022/08/26(金) 07:33:07.60ID:90ir5d7g
また人形遊びか
957デフォルトの名無しさん
2022/08/26(金) 10:37:48.28ID:i2SIEm4o
つまらんな
人間が出題してPC(または鯖)に解かせるhit&blowを描け
958デフォルトの名無しさん
2022/08/26(金) 14:03:10.97ID:b48ovCTY
重複しないならシャッフルして作る方が好み
こんな感じの
answer_list_int = random.sample(range(10),10)[:4]

>>955
細かい事だけど
isdecimal()って全角数字もTrueになりそうな
959952
2022/08/26(金) 15:53:44.20ID:YT1F4ulB
レスありがとうございました!
いろいろ改善してみたいと思います
960952
2022/08/26(金) 18:09:23.80ID:YT1F4ulB
修正しました
ややネストが深くなってしまいましたが

https://paiza.io/projects/nUxI-yeQLIlZSBGA4dmcKA
961デフォルトの名無しさん
2022/08/26(金) 19:10:15.58ID:8E2pwf5q
>>960
自分のスタイルで書けばいいと思うけど最終行はいかがなものか
print(f'\n残念!当たりは{"".join(answer_list)}でした!')
962デフォルトの名無しさん
2022/08/26(金) 21:56:17.10ID:qaneYf7D
標準ライブラリだけで、ローカルタイムゾーンのoffset値だけ取得したい(日本なら+9みたいな)のですが、直接取得できる方法などありますか?
963デフォルトの名無しさん
2022/08/26(金) 22:05:56.45ID:Iy9DcYfZ
マニュアル読め
964デフォルトの名無しさん
2022/08/26(金) 22:40:57.28ID:qaneYf7D
time.timezone / 3600
(→Asia/Tokyoだと -9 になる)
が一番簡素ですかね
965952
2022/08/26(金) 22:50:13.39ID:YT1F4ulB
>>961
ありがとうございます

もう1つだけどうしても気になる箇所があるのですが、
>>960の21行目で定義しているinput_number_strを、無意識のうちに
for文の外で使っちゃってるのですが、なぜエラーにならないのですかね?
Pythonではブロックは無視していい仕様なんですか?
966デフォルトの名無しさん
2022/08/26(金) 23:41:59.18ID:8E2pwf5q
>>965
関数ブロック(def/lambda)だけ考えればいい
967952
2022/08/27(土) 00:45:11.54ID:eQp61XjW
>>966
すごい仕様ですね、ちょっと受け入れるのに時間かかりそうです
ありがとうございました
968デフォルトの名無しさん
2022/08/27(土) 10:36:29.81ID:iQeLdPnf
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation:
えいちちーぴーえす://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

これはどうしろとおっしゃっているのですか?
data['column'][i]=(2**x)
こういう式に文句言われたんですが
969デフォルトの名無しさん
2022/08/27(土) 11:13:27.05ID:WyESGIww
その警告文で検索したら秒で解決するけど、しなかった?
970デフォルトの名無しさん
2022/08/27(土) 11:33:42.24ID:z31K+Zx9
pd.set_option('mode.chained_assignment', None)
971デフォルトの名無しさん
2022/08/27(土) 13:32:06.26ID:BTzbpX5q
よくまとまってる
https://www.dataquest.io/blog/settingwithcopywarning/
https://linus-mk.はてぶろ.com/えんとり/2019/02/02/200000
https://linus-mk.はてぶろ.com/えんとり/2019/03/14/235402
https://linus-mk.はてぶろ.com/えんとり/2019/05/18/161328
972デフォルトの名無しさん
2022/08/27(土) 14:42:22.60ID:n5VuK+5f
奥が深い
沼ズブズブ
973ややや
2022/08/27(土) 20:00:28.28ID:IQqR6XHY
https://qiita.com/mimuro_syunya/items/2464cd2404b67ea5da56

上のサイトを参考にしてジュピターノートブックからサイトの最後の方にあるソースコードをコピペして最後の3行をGetメソッドで指定したURLに飛びませんでした。
最後の3行を変更せずにやっても出来ませんでした!

上記のサイトの実行コマンドをbotファイルにするくだりはやってます。

目立ったエラーなどは現在無いです。


ブラウザ立ち上げた後にそのまま処理を行うにはどうすれば良いでしょうか?
974デフォルトの名無しさん
2022/08/27(土) 21:29:38.61ID:RK2Xjm2V
日時と得点からなる表Aがあったとします
最高得点が更新された履歴の表を作りたいです
Aの各要素にその日時より古い日時のAの全要素をouter joinかmergeでくっつけて、
くっつけた表の部分をgroupbyしてmaxを求め、
各要素の得点とmaxの得点が一致しているものだけをselectしたいのですが、
SQLならできるのにpandasではやり方がいまいちわかりません
普通にmergeしただけだと共通項があるものしかくっつけられないです
どう書けばいいか教えてください
975デフォルトの名無しさん
2022/08/27(土) 22:11:52.80ID:8j5Nb3+9
>>974
日時の順にループで1行ずつ最高点を更新したかどうかを判定して
更新してれば新しい表に(日時, 得点)を追記していけばいいよ
O(n)なのでouter joinするやり方よりも断然効率的
976デフォルトの名無しさん
2022/08/28(日) 09:44:53.82ID:my7A80XW
history=model.fit(x,t,epochs=epochnum,batch_size=batchnum,callbacks=[checkpoint,lr])
この行を実行すると、
Epoch 101/2000
1/1 [==============================] - ETA: 0s - loss: 0.11/1 [==============================] - 0s 3ms/step - loss: 0.1453 - mae: 0.2880
Epoch 102/2000
1/1 [==============================] - ETA: 0s - loss: 0.11/1 [==============================] - 0s 5ms/step - loss: 0.1452 - mae: 0.2888
などと出てきてしまいます
・完全に黙らせる場合
・Epoch数だけ表示させる場合
どうしたらいいでしょうか?
977デフォルトの名無しさん
2022/08/28(日) 16:01:50.37ID:kZD7TOdo
自己解決しました
失礼しました
978デフォルトの名無しさん
2022/08/28(日) 16:36:09.29ID:q65Nt2bT
解決法も書いてってや
後輩のために
979デフォルトの名無しさん
2022/08/28(日) 17:39:31.88ID:ULmp/dD0
失礼します
class内のメソッド宣言の際に、1つ目の引数にselfを必ず入れなければならない
理由や背景が何となくしか分かりません
それと、selfはJavaで言う所のthisと同じようなものと考えてよいですか?
980デフォルトの名無しさん
2022/08/28(日) 17:47:12.52ID:q65Nt2bT
そう
別にthisでもいいよ。selfでなく
981デフォルトの名無しさん
2022/08/28(日) 18:48:06.80ID:ScmkE54Q
他のOSでの挙動は分からないけどWindows版Pythonで
socketのrecvで受信待機している時に他のpyファイルを動かすと動作が停止してしまいます
終了ではなく永遠に待機している感じ
recv中に例外エラーも出ないのですが対処法ありますか?
982979
2022/08/28(日) 19:22:25.55ID:ULmp/dD0
>>980
ありがとうございました
983デフォルトの名無しさん
2022/08/28(日) 20:31:29.47ID:A7P8ZEj/
40代未経験だがPython覚えればプログラマとして就職できる?
984デフォルトの名無しさん
2022/08/28(日) 20:42:53.44ID:5PlXdxXB
他の業務知識があれば出来るんじゃね?

研究者は無理やろ
985デフォルトの名無しさん
2022/08/28(日) 21:04:51.02ID:K7gdf/So
求人数はJavaとJavaScriptとPHPの方が多いのだわ
PythonはML系の求人が多いことを考えると
未経験から最初に業界に首をねじ込むための言語としては
あんまりおすすめせんのだわ
986デフォルトの名無しさん
2022/08/28(日) 21:05:19.00ID:K7gdf/So
あ、985が立てるのか…
987デフォルトの名無しさん
2022/08/28(日) 21:25:02.87ID:0hsZj3lg
cudaで処理速度が20万倍っていうデータがあるんだけど
みんなはどれくらいの速度が適性だと思う?
988デフォルトの名無しさん
2022/08/28(日) 22:33:49.95ID:gOapjWvD
>>983
文系で未経験者の王道は、Ruby on Rails でポートフォリオを作って転職する

YouTube で有名な雑食系エンジニア・KENTA の初心者向けRailsサロンとか、
RUNTEQ、東京フリーランスのデイトラなど

かよちんchannel

【半年間使ってわかった】PythonのwebフレームワークDjangoを学ぶメリット・デメリット


かよちんは未経験の大学生で、Railsでポートフォリオを作って就職した。
1年運用で働いたが、開発したかったので転職した。
転職先では、Django で開発している

彼女は、初心者にはDjangoよりも、Railsを勧めている

理系なら大学院数学科とか、
AWS Certified Machine Learning(機械学習) - Specialty の資格があれば強い
989デフォルトの名無しさん
2022/08/28(日) 23:01:16.78ID:Uxqu4oWF
>>970 はアカン例やろ
990デフォルトの名無しさん
2022/08/28(日) 23:04:54.48ID:n2t07jCF
速ければ速いほどよい
991デフォルトの名無しさん
2022/08/29(月) 14:20:05.87ID:HM6f0MF8
q="太郎君の年齢は?"
ans=12
ans2="十二"


while True:
try:
text=int(input(q))
if text==ans:
print("正解")
elif text==ans2:
print("正解")
break
except:
print("不正解")

これで12、十二とinputで入力すると正解と
それ以外だったら不正解で最初に戻ると進行するようにしたいのですが
12以外だと全部不正解になってしまいます
992デフォルトの名無しさん
2022/08/29(月) 14:31:09.09ID:IoynIqHg
>>991
text=int(input(q))
でint型にキャストしようしてるんだから、例えば十二とか入れたら
文字列⇒数値へキャストできずに例外が発生してexcept:のルートに入っちゃうだろ
993デフォルトの名無しさん
2022/08/29(月) 14:31:14.78ID:lEy6aHnj
せめて質問文らしく書こうな。
text = int("十二")
の結果が0だからだよ。
int()をなくして12も"12"に変更して、全て文字列で扱うようにすれば
994デフォルトの名無しさん
2022/08/29(月) 14:35:17.73ID:SW+mNQvs
慣れないうちは簡単な書き方しよう
ごちゃごちゃ詰め込まない

while True:
__print ('年齢は?')
__ret = input()
__if ret == 12:
____print('ok')
____break
__elif ret == '十二':
__else:
____print('no')

if ret in [12, 12, '十二']
でもよい
995デフォルトの名無しさん
2022/08/29(月) 14:38:41.17ID:HM6f0MF8
>>992-993
ありがとうございます
自分の場合まずint()からしてよく理解してなかったです
996デフォルトの名無しさん
2022/08/29(月) 14:42:50.09ID:SW+mNQvs
うそ
ret = input()
ret in ['12', '12', '十二']
だわ

漢数字や全角ありうるならint型に変換しないほうがよいぬ
997デフォルトの名無しさん
2022/08/29(月) 14:44:38.06ID:eTTKQ396
>>994
慣れないうちは動作確認しよう
エラーは詰め込まない
998デフォルトの名無しさん
2022/08/29(月) 15:21:46.13ID:XtVEyX62
9+9+980
999デフォルトの名無しさん
2022/08/29(月) 15:22:51.65ID:XtVEyX62
うめ
1000デフォルトの名無しさん
2022/08/29(月) 15:23:06.50ID:XtVEyX62
http://2chb.net/r/tech/1653540315/
ニューススポーツなんでも実況



lud20251111144104ca

ID:koL1rSR0のレス一覧:


312デフォルトの名無しさん
2022/07/18(月) 14:46:42.16ID:koL1rSR0
初心者に対して不要な一般化は余計に分かりにくくするだけやろ
やり方自体が御世辞にもいいアプローチとは言えないし
313デフォルトの名無しさん
2022/07/18(月) 15:01:53.40ID:q/MsDqBP
>>310
デコレータみたときは「やられた!」って思ったね
しかも可変、嫉妬してちょっと噛みついてみたけど見事に返り討ち
いやはや、彼のコードはみんなマネした方がいいよ、良いものはどんどん取り入れよう

そういえば、ひろゆきが良く自慢げに言う話を思い出したんだけど、
ゲームを作ってみる授業?か何かで友達が書いたコードがメチャメチャ短かったんだって
上下左右の操作なんだけど、ちょっとした計算で実現していて、それ見たひろゆきが才能の差を
感じてゲームクリエイターをあきらめたとかいう才能の話
それ聞いたときはアホじゃね?良いコードみたらパクればいいだけじゃんって思ったものだよ
たぶんひろゆきはすごくプライドが高くてちょっと躓いただけで諦めちゃうメンタルなんだよね
そんなこんなで出来上がったのがヒマつぶしwとか言って他人の文句しか言わない人間になっちゃった
「頭悪い!」と他人を下げることで自分を慰める毎日、やっぱ諦めずに挑戦するのって大事だなって思いました
そうホリエモンってひろゆきと真逆だよね、ホリエモンは今も色んなことに挑戦している、ホリエモンは輝いているよ
314デフォルトの名無しさん
2022/07/18(月) 15:04:25.71ID:PImFDAtt
>>312
>>297
315デフォルトの名無しさん
2022/07/18(月) 15:04:43.60ID:EPf9iKEG
>>311
一般的?
316デフォルトの名無しさん
2022/07/18(月) 15:17:32.88ID:J9TOF8GR
Ruby とか、関数型言語Elixir では、map が基本
317デフォルトの名無しさん
2022/07/18(月) 15:18:04.67ID:o0lyPM3S
他人の話を否定するだけの奴って何の生産性もないよな
低レベルでもコード提示するほうがよっぽど役に立つわ
318デフォルトの名無しさん
2022/07/18(月) 15:22:34.62ID:qwr+PsCM
>>312
参考までに良いアプローチplz
319デフォルトの名無しさん
2022/07/18(月) 15:36:01.64ID:y8tEu6pL
matomeとmap、どっちが速いんだろうか
どっちもforで毎回f呼び出すよりは速そうだけど
320デフォルトの名無しさん
2022/07/18(月) 15:55:55.10ID:GojDtZHN
デコレータ
使って観たい
御年頃
321デフォルトの名無しさん
2022/07/18(月) 15:59:17.63ID:LKJtspF0
処理時間測定してみたらmapのほうが2割前後速かったわ
322デフォルトの名無しさん
2022/07/18(月) 15:59:40.46ID:GojDtZHN
>低レベルでもコード提示するほうが

ないわ
323デフォルトの名無しさん
2022/07/18(月) 16:06:47.73ID:kISKbyyY
ついでなんで書いとくね
実行時間
forを使ってf呼び出し:1
matome:0.5
map:0.4
324デフォルトの名無しさん
2022/07/18(月) 16:21:22.72ID:ln/vUyrz
>>322
比較対象は
> 他人の話を否定するだけの奴
だぞ、頭大丈夫か?
325デフォルトの名無しさん
2022/07/18(月) 16:30:53.42ID:qwr+PsCM
デコレーターに親殺されたニキがおるな
326デフォルトの名無しさん
2022/07/18(月) 17:45:39.65ID:UwLRS3iL
普通に考えてリストに関数をそれぞれ適用させたいならmapが一番シンプルでmapと同意の内包表記が最もPythonらしいのでは?
327デフォルトの名無しさん
2022/07/18(月) 18:04:13.67ID:LNL0CNxW
mapと同意?どういうこと?
328デフォルトの名無しさん
2022/07/18(月) 18:04:19.00ID:pfq1SIlO
お盆も近いからデコレータに恨みがある奴も
這い出して来ているんでしょう
329デフォルトの名無しさん
2022/07/18(月) 18:08:48.63ID:PImFDAtt
単にmapの人が、なんでmap使わないんだと言っているだけなのでは?
それがデコレータsageに見えると
330デフォルトの名無しさん
2022/07/18(月) 18:23:16.60ID:q/MsDqBP
内包表記の方が断然好きだな〜、mapはシンプルになる場合もあるけど
今回のようにゴチャる場合もあるんだよな〜
下記はmatomeを自分好みの関数名と変数名に改変したヤツでっす!

def get_lists_items(func):
____# 内包表記版
____def process(*lists):
________return [func(*items) for items in zip(*lists)]
____return process

def get_lists_items(func):
____# map版
____def process(*lists):
________return list(map(lambda items: func(*items), zip(*lists)))
____return process
331デフォルトの名無しさん
2022/07/18(月) 18:28:18.32ID:2ipqvE3v
>>330
なんでzip?
そういう引数リスト専用の関数を作りたいの?
332デフォルトの名無しさん
2022/07/18(月) 18:40:20.03ID:qwr+PsCM
>>280の望みは「intを引数に取り計算結果を返す関数を、"シームレスに"リストにも拡張すること」だからデコレーターが適当じゃない?Pythonicかどうかは知らん
333デフォルトの名無しさん
2022/07/18(月) 18:50:45.67ID:0V7pBSnr
デコレータは不適当

デコレータは基本的に元の関数を透過的に拡張するために使う物

def f(a, b, c)をデコレートしても
デコレート前と同じf(a, b, c)で呼び出し可能で
成功時には同じ戻り値を得られるように作る

高階関数ならなんでもデコレータにすればいいわけじゃない
334デフォルトの名無しさん
2022/07/18(月) 18:52:28.91ID:q/MsDqBP
>>331
そのとおり、>>280だけでなく色んなパターンのリスト関数が簡単に作れるのだよ
このデコレータがあればね!
335デフォルトの名無しさん
2022/07/18(月) 18:53:15.28ID:9fYXH/DB
勉強になったわ。
今までPyQtでアプリ作っていたが、@pyqtSlot()がQtデザイナーからのリンクみたいなもんかと思ってました。
すっきりです。
336デフォルトの名無しさん
2022/07/18(月) 18:58:21.00ID:VjQ/Ckj0
デコレーターのメリットがあるならそれ使えばいいけど遅い上に記述量増えるしね
どう見ても>>320だろw
337デフォルトの名無しさん
2022/07/18(月) 20:38:42.55ID:FbOneiqz
forよりは速い
338デフォルトの名無しさん
2022/07/18(月) 22:52:23.80ID:P7xIx3wJ
今回の話でデコレータが内包表記より優れているという理屈が理解できない
def f(a):
  return a+1

a=[1,2]
print([f(i) for i in a])

これで事足りるでしょ

レス:1-200 201-400 401-600 601-800 801-1000 ALL

このスレへの固定リンク: http://5chb.net/r/tech/1653225908/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「【まず1嫁】くだすれPython(超初心者用) その57 YouTube動画>3本 ->画像>9枚 」を見た人も見ています:
くだすれPython(超初心者用) その39
くだすれPython(超初心者用) その29
くだすれPython(超初心者用) その29
【まず1嫁】くだすれPython(超初心者用) その58
くだすれPython(超初心者用) その52【まず1嫁】
【まず1嫁】くだすれPython(超初心者用) その60
くだすれPython(超初心者用) その48【まず1嫁】
くだすれPython(超初心者用) その40
【まず1嫁】くだすれPython(超初心者用) その57
くだすれPython(超初心者用) その35
【まず1嫁】くだすれPython(超初心者用) その55
【まず1嫁】くだすれPython(超初心者用) その54
くだすれPython(超初心者用) その47【Ruby禁止】
くだすれPython(超初心者用) その42【Ruby禁止】
くだすれPython(超初心者用) その43【Ruby禁止】
くだすれDelphi(超初心者用)その59【Embarcadero】
くだすれDelphi(超初心者用)その58【Embarcadero】
くだすれDelphi(超初心者用)その60【Embarcadero】
くだすれDelphi(超初心者用)その56
くだすれDelphi(超初心者用)その54
くだすれFORTRAN(超初心者用)その7
くだすれC++Builder(超初心者用)その5
【MTGA】Magic The Gathering Arena 初心者スレ 25
【Rank100↓】グランブルーファンタジー超初心者スレ497
【モンスト】モンスターストライク超初心者スレ94・
【モンスト】モンスターストライク超初心者スレ91
【Rank100↓】グランブルーファンタジー超初心者スレ549
初心者でもsexできる★出会い系サイト 9
【rank100↓】グランブルーファンタジー超初心者スレ596
【rank100↓】グランブルーファンタジー超初心者スレ619
【モンスト】モンスターストライク超初心者スレ97
【モンスト】モンスターストライク超初心者スレ97
【Rank100↓】グランブルーファンタジー超初心者スレ419
【rank100↓】グランブルーファンタジー超初心者スレ598
【Rank100↓】グランブルーファンタジー超初心者スレ409
【モンスト】モンスターストライク脱・超初心者スレ9
【モンスト】モンスターストライク脱・超初心者スレ989
【モンスト】モンスターストライク脱・超初心者スレ319【脱超】
【モンスト】モンスターストライク脱・超初心者スレ94【脱超】
【モンスト】モンスターストライク脱・超初心者スレ898【脱超】
【モンスト】モンスターストライク超初心者スレ79
【モンスト】モンスターストライク脱・超初心者スレ941
【Rank100↓】グランブルーファンタジー超初心者スレ489
【rank100↓】グランブルーファンタジー超初心者スレ594
【Rank100↓】グランブルーファンタジー超初心者スレ509
【モンスト】モンスターストライク脱・超初心者スレ293【脱超】
【Rank100↓】グランブルーファンタジー超初心者スレ493
【モンスト】モンスターストライク脱・超初心者スレ879【脱超】
【Rank100↓】グランブルーファンタジー超初心者スレ529
【モンスト】モンスターストライク脱・超初心者スレ797【脱超】
【モンスト】モンスターストライク脱・超初心者スレ932【脱超】
【モンスト】モンスターストライク脱・超初心者スレ931【脱超】
【モンスト】モンスターストライク脱・超初心者スレ924【脱超】
【モンスト】モンスターストライク超初心者スレ29
【Rank100↓】グランブルーファンタジー超初心者スレ569
【モンスト】モンスターストライク脱・超初心者スレ942
【モンスト】モンスターストライク超初心者スレ17 ©3ch.net
【Rank100↓】グランブルーファンタジー超初心者スレ490
ストリートファイターV 初心者スレ Part97
【モンスト】モンスターストライク超初心者スレ18 ©3ch.net
【モンスト】モンスターストライク脱・超初心者スレ297【脱超】
【Rank100↓】グランブルーファンタジー超初心者スレ419
【rank100↓】グランブルーファンタジー超初心者スレ593
【モンスト】モンスターストライク脱・超初心者スレ 679
ヤフオク初心者質問スレッド #852
【rank100↓】グランブルーファンタジー超初心者スレ603
16:23:37 up 20 days, 7:45, 0 users, load average: 21.95, 29.43, 36.68

in 0.060754060745239 sec @[email protected] on 111206