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

■ このスレッドは過去ログ倉庫に格納されています
2021/03/16(火) 07:19:44.36ID:PfTIXkDh
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがあるのでそっち池。
「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

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

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

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

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

〇前スレ〇 くだすれPython(超初心者用) その52【まず1嫁】
https://mevius.5ch.net/test/read.cgi/tech/1610137345/

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ###
606デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:45:07.28ID:p52W3PYV
もしかして、クラス変数だからdelできない?
2021/05/12(水) 01:37:11.15ID:+hwSdZi+
それオブジェクトじゃないからだよ
608デフォルトの名無しさん
垢版 |
2021/05/12(水) 09:15:37.32ID:HCx7UYF5
削除出来ないんじゃなくて
存在しないものはアクセス出来ないって言われてるだけ
609デフォルトの名無しさん
垢版 |
2021/05/12(水) 09:15:47.20ID:HCx7UYF5
削除出来ないんじゃなくて
存在しないものはアクセス出来ないって言われてるだけ
2021/05/12(水) 11:18:04.73ID:bpb1h3yH
>>606
del Gnuplot.pgp

明示的にdelする必要ないけどね
2021/05/12(水) 12:17:03.99ID:Hk10kKTI
試してないけど、
del self.__class__.pgp
ならいけんじゃね?
2021/05/12(水) 12:28:22.20ID:eYOXfLq+
>>605
importはなるべくファイルの先頭で行うべきでは?
613デフォルトの名無しさん
垢版 |
2021/05/12(水) 21:55:38.61ID:p52W3PYV
>>610, 611
削除できました。ただ、クラス変数をデストラクタで削除してしまうと
次回インスタンス宣言するときに必要なクラス変数が存在しないことに
なってしまってひどいバグの温床になることがわかりました。
確かに明示的に削除する必要はないですね。

>>612
モジュールインポートでグローバルな名前空間が汚れるのが嫌なので
クラスのスコープにいれて初期化子とデストラクタでモジュールのロードと
破壊を自動化しようとしているんです。
別に文頭でモジュールのインポートの宣言をしなければいけないという
わけではないのでは。
2021/05/12(水) 21:56:32.94ID:gj/TogFi
class Gnuplot:
import PyGnuplot as pgp
def __del__(self):
del self.pgp
615デフォルトの名無しさん
垢版 |
2021/05/12(水) 22:18:22.84ID:p52W3PYV
モジュールをクラス変数ではなくインスタンス変数として束縛したいのですが
できません。

--------
#!/usr/bin/env python3

class Gnuplot:
def __init__(self):
import PyGnuplot as pgp
pass

def cmd(self,commands):
self.pgp.c(commands)
pass

if __name__ == "__main__":
agp = Gnuplot()
agp.cmd("plot sin(x)")

を実行すると、
AttributeError: 'Gnuplot' object has no attribute 'pgp'
と出ます。
__init__の中でPyGnuplot をインポートしてインスタンス変数self.pgp
に束縛したつもりなんですが、どうもそれがうまくいかないみたいなんです。
モジュール変数はクラス変数にしか束縛できないんでしょうか。。
2021/05/12(水) 22:38:42.04ID:eYOXfLq+
self.pgp = pgpをするのはダメなんですっけ
617デフォルトの名無しさん
垢版 |
2021/05/12(水) 22:47:49.00ID:p52W3PYV
>>616
なーるほど。盲点でした。
おかげさまでうまくいきました。
618デフォルトの名無しさん
垢版 |
2021/05/13(木) 14:19:15.50ID:gQUYeg5t
reference counter が増えるというオチ
2021/05/14(金) 00:00:09.34ID:kJLP/i/a
pythonのrandomモジュールって安全ですか?秘密鍵を作ろうと思います
2021/05/14(金) 00:18:08.78ID:fpxIiQfD
そんな質問するレベルの人が手を出すもんじゃないと思うが
621デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:29:44.03ID:N2rlLeCr
python 2 の頃に
for line in fp.readLines():
lst = line.rstrip().split('\t')
...
と描いていたコードがあって
python 3 だと
TypeError: a bytes-like object is required, not 'str'
と出たので
lst = line.rstrip().decode('utf-8').split('\t')
と描き治したら動くのですが
これって変じゃないですか?
bytes を .rstrip() すると勝手に str に変更されるんですか?
622デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:30:49.82ID:N2rlLeCr
>>619
>Python は中心となる乱数生成器としてメルセンヌツイスタを使います
623デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:32:50.50ID:N2rlLeCr
>>619
>>622 の補足
あなたの使っている乱数、大丈夫?
http://www.math.sci.hiroshima-u.ac.jp/m-mat/TEACH/ichimura-sho-koen.pdf
https://docs.python.org/ja/3/library/random.html
2021/05/14(金) 10:40:45.89ID:fhATjntu
>>622
(秘密鍵の定義がないので微妙な指摘な気もするけど)暗号論的擬似乱数生成器でなくてよいの?
625デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:45:39.79ID:N2rlLeCr
>>624
リンク先をちゃんと読んでね
2021/05/14(金) 10:48:56.15ID:fhATjntu
>>625
読んだるんだけど

>メルセンヌツイスタは完全に決定論的であるため、全ての目的に合致しているわけではなく、暗号化の目的には全く向いていません。
627デフォルトの名無しさん
垢版 |
2021/05/14(金) 11:05:15.28ID:N2rlLeCr
読み方が足りない
2021/05/14(金) 11:33:52.87ID:DQCJDc0D
めんどうくせえな
スパッと語らんかい

>>619
安全じゃないです
はいおわり
629デフォルトの名無しさん
垢版 |
2021/05/14(金) 12:12:40.48ID:kXWjJhBx
コイントスで生成しよう
2021/05/14(金) 15:48:46.53ID:RGk279mo
>>621
そもそもpython3だとreadlinesの戻りの型がstrのlistだと思う
631デフォルトの名無しさん
垢版 |
2021/05/14(金) 16:51:03.65ID:MEf5zm8X
def tes(i):
_return i+1,i*2

l1 =[]
l2 =[]
for i in range(10):
_l1, l2 ←appendしたい tes()

temp = tes()
l1.append(temp[0])
l2 append(temp[1])
こう書くのが一番いいですか?
もっといい書き方ありますか?
632デフォルトの名無しさん
垢版 |
2021/05/14(金) 17:40:34.28ID:dwsPOlKo
from functools import reduce
a, b = reduce(lambda x, y: (x[0] + [y + 1], x[1] + [y * 2]), range(10), [[], []])
633デフォルトの名無しさん
垢版 |
2021/05/14(金) 17:46:17.42ID:dwsPOlKo
l1, l2 = reduce(lambda x, y: (lambda a, b, c: (a[0] + [b], a[1] + [c]))(x, *tes(y)), range(10), [[], []])
634デフォルトの名無しさん
垢版 |
2021/05/14(金) 18:14:41.94ID:jPY26TL6
でもこんなコード書いてきたらレビュー通さないでしょ
2021/05/14(金) 18:43:05.82ID:mAmkSsiZ
>>631
それでいいと思う
ただ、tesが簡単な処理ならわざわざ関数挟まないかな
2021/05/14(金) 21:40:11.71ID:QMgVBpCt
メルセンヌ・ツイスタは疑似乱数生成器。
Ruby on Rails では、テストで同じ乱数を再現できるので便利

暗号化は、SecureRandom。
Linux のエントロピー、/dev/random, /dev/urandom

RubyのSecureRandomの乱数生成の実装を読んでみた
https://note.com/corocn/n/n84c91872c51c
2021/05/14(金) 22:40:17.62ID:SGxg0iSp
>>631

a,b=tes(i)
L1.append(a)
L2.append(b)

lは識別しにくい小文字しばりならlineとか
2021/05/14(金) 23:07:56.07ID:0kdm8qdh
>>633
>a[0] + [b]

これ入力サイズが大きくなるとreduceのループと合わせてO(n^2)になる
2021/05/14(金) 23:16:18.97ID:0kdm8qdh
>>637
リストの汎用的な名前はxs, ysみたいなのを使うとx, yと対応させやすくて読みやすい
関数型で一般的に使われてる命名方法

xs, ys = [], []
x, y = tes(i)
xs.append(x)
ys.append(y)
2021/05/15(土) 06:38:38.29ID:+N4SlPlF
>>627
お前が何言いたいのか意味不明だったから聞いてやったんだけど、日本語が不自由だったみたいね
2021/05/15(土) 11:13:03.00ID:JEJaRs2J
そこは、Pytorchの自然言語処理が
ここまで進化したか!と驚愕する
場面かも知れないね
2021/05/15(土) 11:32:32.09ID:qr5cWu1T
それは確かにたいしたものだ
2021/05/15(土) 11:59:29.14ID:MlX8dqv4
>>640って>>619なの?なんなの???
2021/05/15(土) 12:00:24.17ID:MlX8dqv4
>>637
先頭大文字ってだめじゃなかったっけっか
645デフォルトの名無しさん
垢版 |
2021/05/15(土) 12:07:21.87ID:skJMcbh+
シンタックス的には無問題
2021/05/15(土) 12:28:58.54ID:6nRGWhyX
>>628 他の方々
ありがとうございます
647デフォルトの名無しさん
垢版 |
2021/05/15(土) 12:32:47.31ID:eYtIld1h
>>628
勿体ぶらずにサンプルコード出せよ
2021/05/15(土) 13:08:58.62ID:bRznzK29
>>644
コード規約的に変数名は小文字+アンダースコアがいい
649デフォルトの名無しさん
垢版 |
2021/05/15(土) 16:39:11.67ID:te8p1bIO
https://ideone.com/SNDfue

このボタン押したときに、frameのwidth固定のままheightだけ変わるようにしたい
何か良いアイデアありませんか
650デフォルトの名無しさん
垢版 |
2021/05/15(土) 16:45:41.28ID:te8p1bIO
あ、すいません
packじゃなくてgridです
動的生成でbtn.grid(row=i, col=0)のやつです
フレームと固定ボタンもgridで、フレームがsticky=ewnsです
651デフォルトの名無しさん
垢版 |
2021/05/15(土) 17:30:51.73ID:CXOESfdA
root.geometry('適当にset')
2021/05/15(土) 17:40:08.98ID:CXOESfdA
make() の中

for の前
q = re.compile('([\d]+)', re.I | re.M | re.S)
w, h, x, y = map(int, q.findall(root.geometry()))

for の後
root.geometry(f'{w}x{h+125}+{x}+{y}')
653デフォルトの名無しさん
垢版 |
2021/05/15(土) 19:12:50.31ID:te8p1bIO
あーなるほど
https://ideone.com/e8gAfE

>>652
h+125の125って何の数値ですか?
654デフォルトの名無しさん
垢版 |
2021/05/16(日) 18:10:42.39ID:LkZOTUXR
色々調べたんだけど良くわからなくって

pythonでいうメソッドって、クラス内関数のことですか?
655デフォルトの名無しさん
垢版 |
2021/05/16(日) 23:10:57.25ID:B1RP4BtA
>>654
インスタンス変数に束縛されていて、かつインスタンス変数を共有している関数
656デフォルトの名無しさん
垢版 |
2021/05/17(月) 11:53:08.81ID:GHG/4QhJ
pathlibでpathがCドライブなどのドライブルート?を指してるかかどうかの判定って
bool(p.stem)でいいんですかね
誤判定あり得る?
2021/05/17(月) 12:48:07.77ID:zuvtZKHx
>>656
driveかanchorを使えばいいと思うがUNCを除外する処理が必要かも
https://docs.python.org/3/library/pathlib.html#methods-and-properties
2021/05/17(月) 12:49:35.05ID:LvfGIkWi
何言ってるか分からん
それだと以下もTrueだろ
bool(Path('a'))
2021/05/17(月) 12:50:56.21ID:LvfGIkWi
アンカー消えた
>>656
bool(Path('a').stem)
660デフォルトの名無しさん
垢版 |
2021/05/17(月) 13:35:14.68ID:9/Dbs2kw
クラス内にある関数をメソッドと認識してないオブジェクト指向がどっかにあるのか?
661デフォルトの名無しさん
垢版 |
2021/05/17(月) 16:26:06.67ID:GHG/4QhJ
ああすいません。もうしわけない
target = tkinter.filedialog.askdirectory()
p = pathlib.Path(target)
でダイアログでドライブ自体を指定したときを弾きたいのです
2021/05/17(月) 17:34:58.64ID:zuvtZKHx
弾きたい理由がよく分からないが
os.path.ismount(path)でチェックするほうがいいんじゃないかな
pathlibのis_mountはWindows非対応らしい
2021/05/17(月) 17:55:47.00ID:kNQLQ75E
p.parts
('c:\\', 'sub', 'child')
なので
if len(p.parts)<2:
664デフォルトの名無しさん
垢版 |
2021/05/17(月) 18:22:09.97ID:GHG/4QhJ
>>662
ほーマウントポイントというんですね
勉強になりました。ありがとうございます
2021/05/17(月) 19:20:08.36ID:sx6aVY5c
glob.globの再帰って、日本語ディレクトリ名だとうまく動作しませんか?
2021/05/17(月) 19:39:35.66ID:HZ1L0Oav
mountはlinuxの概念だから
returnされるものが欲しい物とは
限らない
667デフォルトの名無しさん
垢版 |
2021/05/17(月) 19:41:12.60ID:3TA+gznA
クソチョンw
2021/05/17(月) 20:23:09.84ID:XyOBSw0a
>>665
(略)うまくどうさするですか?
or
(略)動作しないのが仕様ですか?
DO (●´ー`〇)CCHIともとれる
わるいプログラマになれる日本語w
2021/05/17(月) 21:06:43.69ID:zuvtZKHx
>>665
日本語ディレクトリでも特に問題なく動作する

Windowsならencodingの問題だったりしない?
670665
垢版 |
2021/05/17(月) 22:24:02.73ID:sNN9NhGA
>>669
レスありがとうございます。
リストを確認してみたところ、変なディレクトリと組み合わせの要素が余計に2つ入っていて、いずれも~$で文字化けしていました。
若干気持ち悪いですが、一度存在確認をして無ければパスして対応しようと思います。
671665
垢版 |
2021/05/17(月) 23:51:49.03ID:sNN9NhGA
度々すんません
Excel使用中のダミーファイルの残骸を拾っていたというオチでした
672デフォルトの名無しさん
垢版 |
2021/05/19(水) 08:18:07.60ID:iYEuEqYY
rows = [[col1, col2], [col1, col2]]

for i, cols in enumerate(rows):
__if i == foo:
____cols[1] = hoge
__else:
____cols[1] = fuga

みたいな処理って

[cols[1]=hoge if i==foo else
_cols[1]=fuga for i,cols in enumerate(rows)]

て書けるけど,python的にはそっちのがいいのですか? 可読性アレなのでやめた方がいい?
というかこういう処理ってmapみたいな何かでスマートにできんのでしょうか.
673デフォルトの名無しさん
垢版 |
2021/05/19(水) 09:12:35.07ID:+3U9Nmga
リスト作成以外の内包表記はやめとこ って風潮
2021/05/19(水) 09:14:39.75ID:0J40Gx1f
もったいない
2021/05/19(水) 10:06:03.29ID:4ScJfzOE
>>672

rows0 = [[col1, col2], [col1, col2]]

rows = [[hoge if i==foo else fuga, col2] for i,cols in enumerate(rows0)]

って感じかな
2021/05/19(水) 10:08:58.05ID:4ScJfzOE
>>675
間違えた、2行目のcol2はcols[1]の間違い
677デフォルトの名無しさん
垢版 |
2021/05/19(水) 10:35:13.73ID:iYEuEqYY
>>675
なるほど
678デフォルトの名無しさん
垢版 |
2021/05/19(水) 11:37:56.44ID:psqzmlBB
>672
[cols[1]=(hoge if i==foo else fuga) for i,cols in enumerate(rows)]
679デフォルトの名無しさん
垢版 |
2021/05/19(水) 11:57:00.88ID:eHf0e2Vm
>>678
そんな書き方できたっけと思ったが
通らんやん
通る古いバージョンのpyがあったのかな
2021/05/19(水) 12:00:58.28ID:u9Tr9lyP
内包表記の中は式じゃないといけないので↓こういう代入文は使えない

cols[1]=hoge
cols[1]=(hoge if i==foo else fuga)
681デフォルトの名無しさん
垢版 |
2021/05/20(木) 08:54:47.33ID:xj7p5kce
PyAutoGUI をインポートしようとすると以下のエラーがでます。

 import pyautogui
  ↓
 ModuleNotFoundError: No module named 'pyautogui'

・pip install pyautogui 実行しました。
・pip show pyautogui でインストール先も確認しています。
・環境はWindows10、Python 3.9、Jupyter notebookを使っています。

どなたかお力添えをお願いします。
2021/05/20(木) 09:55:24.34ID:RA9rZAD1
>>681
コマンドラインでpython起動して、
import sys
print(sys.path)
同様のことをjupyterでやってみる
全然結果が違ったら、pyautoguiはjupyterを動かしてるpython環境には入れられてない

一番確実なのは、jupyter内で、
!pip installしちゃうこと
2021/05/20(木) 11:22:11.41ID:xj7p5kce
>>682
ありがとうございます!
jupyter内でpip installできることを初めて知りました。助かりました。
684デフォルトの名無しさん
垢版 |
2021/05/20(木) 12:53:43.39ID:bQ5/ppWH
>>678-680
>>672
>[cols[1]=hoge if i==foo else cols[1]=fuga for i,cols in enumerate(rows)]
>て書けるけど

えっ
685デフォルトの名無しさん
垢版 |
2021/05/21(金) 22:17:13.18ID:CTO13KrW
ステートマシンやってみたいんですが
なにかいいネタってないですか?
何も思い浮かばなくて…
686デフォルトの名無しさん
垢版 |
2021/05/22(土) 00:24:57.95ID:k07/NFUV
複数のカ所からオンオフ出来る電球装置。
2021/05/22(土) 08:08:35.87ID:T+ogjR97
自販機なんかもステートマシンかね。

余談だが、コンビニのマルチコピー機とか、めっちゃ使いづらくてイライラするが、お金扱う部分とコピー機部分が別会社が作ってるとなると仕方ないんだろうな。スキャン結果をお金払ってUSBメモリに書き込む段階で2連続でエラーになったときには腹が立った。金返せと。
688デフォルトの名無しさん
垢版 |
2021/05/22(土) 08:16:32.16ID:8p7z75uz
現金が消えればもっとシンプルになれる
2021/05/22(土) 10:20:40.50ID:J1CN/eMv
Pythonって入門用言語という位置づけだったんですね。。。。
scratchと同じ位置づけだと学ぶのやめようかな。。。
https://b.hatena.ne.jp/entry/4702950277146083554/comment/nakamura-kenichi
2021/05/22(土) 10:24:51.50ID:fvqwCaVy
権威主義的だがGoogleは社内プログラミング言語としてC,C++,Java,JavaScript,Pythonを採用してる訳だし、Pythonを学ぶ意味は入門用言語であること以外にもあるとは思うよ
691デフォルトの名無しさん
垢版 |
2021/05/22(土) 10:26:26.92ID:zUe7A7la
昔はTAKERUのようなモンが情報端末になると思ったがマルチコピー機の方が生き残るとは予想しなかった
692デフォルトの名無しさん
垢版 |
2021/05/22(土) 11:50:28.78ID:vbX2nPFn
C や C++ も入門に最適ですよ
693デフォルトの名無しさん
垢版 |
2021/05/22(土) 11:51:38.54ID:vbX2nPFn
>>691
Loppi とかは端末分かれてる
2021/05/22(土) 12:26:36.70ID:jQojk9An
書きやすくてちゃんと動けばいいだろぐらいの感覚でpython使ってたんだけどみんな色々考えてたんだな⋯
俺の意識が低すぎるんだろうか
2021/05/22(土) 12:40:15.93ID:T+ogjR97
流石にscratchと同じ位置付けはない。
まあ、情報だけ仕入れてなかなか手を動かせない人はプログラマー適性ないから、そういう意味ではプログラミング入門をやめといた方がいいってのは事実だけど。
Pythonは書くのが簡単だから、とりあえずPythonで書いてみてアルゴリズムの妥当性なんかを検証してみて、
性能が出なかったりどうしてもPythonでできないことがあればそこだけC/C++で書く、みたいな言語だよ。3DCGにだって深層機械学習にだって使われてるんだから。応用先は広い。
2021/05/23(日) 09:54:19.88ID:hDiYjgJs
pyhtonは日本語で例えるなら標準語
「仕組みが標準的である」という意味ではなく
「どんな方言を話す人でも標準語だけは理解できるようになっている」という意味でな
可読性というのは大事
697デフォルトの名無しさん
垢版 |
2021/05/23(日) 12:08:29.63ID:MJ9lD3tL
selfの嵐
2021/05/23(日) 12:10:31.49ID:UsHeCFxs
最近気づいたんだがオブシコやるにはpythonってちょっと厳しいよな
699デフォルトの名無しさん
垢版 |
2021/05/23(日) 13:51:03.68ID:Ki6GpCCw
クソチョンw
2021/05/23(日) 23:40:09.59ID:lPsOREZe
seleniumでChromeを操作中、get_screenshot_as_file等でスクリーンショットを撮ると
タスクバーのアイコンが点灯して煩わしいのですが抑制する方法はなにか無いでしょうか
2021/05/24(月) 00:11:00.85ID:Wk9HMUeS
def graph(x,y):
plt.plot(x, y)
plt.show()

def main()
graph(1,1)
graph(2,2)

graph(n,n)

みたいな感じで任意のn個のグラフを表示しようと思ったんですが、
1つのウインドウ上にグラフがどんどん重ねて表示されてしまいます。

plt.show()のたびに毎回別ウィンドを開いてグラフ表示する方法はないでしょうか?
2021/05/24(月) 10:56:47.03ID:qQRUQj1u
最近のPythonについていけない
2021/05/24(月) 12:09:28.90ID:oesZEK70
んだ
704デフォルトの名無しさん
垢版 |
2021/05/24(月) 14:00:40.00ID:lt23bAAY
>>701
figure
2021/05/24(月) 15:07:36.68ID:oesZEK70
>>701
たぶんmatplotlibのことだとエスパーして>704が回答してるんだとおもうが
他ライブラリのことだったら
シラネ(゚听)ーヨだとおもうぞ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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