Pythonのお勉強 Part64

■ このスレッドは過去ログ倉庫に格納されています
2020/09/14(月) 07:12:53.70ID:+5bseuUi0
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに増やすこと。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」をNGワード登録推奨

・エラーを解決したいときは、まず
 エラー文(勝手に省略/スクショうp等の横着禁止)と
 おま環(Pythonのバージョン+OS名IDE名と夫々のバージョン)を書け。

★Pythonのソースコードを5ちゃんに直コピペするとインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをimgur等にうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。最近流行中?
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇まとめwiki ttp://python.rdy.jp/

●関連スレ●
くだすれPython(超初心者用) その46【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1577948214/

〇前スレ〇 Pythonのお勉強 Part63
https://mevius.5ch.net/test/read.cgi/tech/1582507911/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなってからだいぶ経っつる)### END of TEMPLATE ###
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2021/01/21(木) 00:30:31.91ID:CxARV0zj0
>>402
rangeが1〜10になってるからiが9の時と10の時に改行が入る
2021/01/21(木) 00:35:57.46ID:gROtzvMY0
print("\n") → print()
2021/01/21(木) 00:45:50.73ID:l9t0hEUO0
あ、そうか
なんで改行文字入れたんだ。。
ありがとうございます
2021/01/21(木) 00:50:09.67ID:6L0dUwJb0
>>402
i判定の前にi表示して実行してみては?
2021/01/21(木) 00:50:30.90ID:6L0dUwJb0
おっと遅かった
2021/01/21(木) 13:43:26.45ID:fFCZ4qms0
>>381
BOOTHにあるモザイク除去の技術書が良かったからオススメ
2021/01/21(木) 14:24:53.65ID:/8Y0ih1k0
>>408
一票
Numpy本もおすすめ
410デフォルトの名無しさん (ワッチョイ 5f79-Zp8o)
垢版 |
2021/01/23(土) 21:23:21.71ID:Hsg7ZCv90
OpenpyxlでExcelいじってるんだけど、列ごとの最終行のセルを調べたい。どうしたらいいの?
411デフォルトの名無しさん (ワッチョイ 5f61-Woof)
垢版 |
2021/01/24(日) 13:03:45.15ID:67l69Ijb0
ダメもとで、pythonのsliceみたくインデックスに-1指定してみるとか?
2021/01/24(日) 14:02:22.24ID:uoAEL1dG0
len(ws['A'])
最終行以降に余計な書式がついてると意図しない数が返ってくるから結局自分でカウントするほうが無難かと
413デフォルトの名無しさん (ワッチョイ 5f79-Zp8o)
垢版 |
2021/01/25(月) 19:04:21.56ID:pG6g+jm20
Openpyxlって読み取り専用のExcelファイルに書き込みってできないですよね?
読み取り専用解除→書き込み→読み取り専用に戻すっていう処理はどうやって書けばいいんですかね?
2021/01/25(月) 19:29:10.56ID:ptYOaHFLM
前の質問は解決したん?
2021/01/25(月) 20:19:05.06ID:P238B9gb0
>>412
['A']
↑これ
顔文字にしかみえないw
416デフォルトの名無しさん (ワッチョイ 5f79-Zp8o)
垢版 |
2021/01/25(月) 22:13:41.43ID:pG6g+jm20
>>414
forとifで書きました。
2021/01/25(月) 22:20:47.25ID:4bD0zgGid
>>413
Read-onlyなファイルのこと?
ならSetFileAttributes。

ファイルがロックされてるときは無理。
418デフォルトの名無しさん (ワッチョイ 5f79-Zp8o)
垢版 |
2021/01/25(月) 22:36:17.55ID:pG6g+jm20
うーん?
419デフォルトの名無しさん (ワッチョイ 276a-dnk/)
垢版 |
2021/01/26(火) 22:26:22.62ID:07qf8Z/S0
QtCreatorでプログラム作ろうと思ったけど、PytQtのが圧倒的に楽なんで、
今更C++/Qtで書く気になれないよw
2021/01/27(水) 04:38:46.35ID:CW9cILD40
>>419
EricでPyQtは?
ラズパイで使っているけど便利だよ。
421デフォルトの名無しさん (ワントンキン MM3f-Z7MQ)
垢版 |
2021/01/27(水) 10:28:12.94ID:8VSsYW13M
顔認証はここですか?
2021/01/27(水) 15:42:09.50ID:AQ5IIZi9M
組み込み関数にpartialを使いたいとき
キーワード引数はどう指定すれば良いですか?
例えばformat関数の第2引数を”02x” にしたいです
423デフォルトの名無しさん (ワッチョイ a77c-rvE3)
垢版 |
2021/01/27(水) 17:05:46.69ID:isvLWJ6Q0
>>421
https://www.youtube.com/watch?v=qvjmf_eF_1k
2021/01/27(水) 17:18:58.56ID:lgpuzElo0
>>422
format関数の第2引数はキーワード引数じゃなくね?
str.format()は知ってる?
2021/01/27(水) 17:30:09.95ID:ZkwFNZKx0
数値が格納された配列に対して
mapを使って16進数文字列に出来るかというところで
色々と考えてます
hex関数だとゼロ埋めができず
format関数を使って試しました
2021/01/27(水) 17:37:39.83ID:U9ML+VYwM
よく知らんけどキーワード引数でなくvar-positional引数らしいから無理じゃないかなあ。

関数定義したら
def bind02x(s, *args):
. return s.format(args[0], "02x", *args[1:])
2021/01/27(水) 17:50:49.56ID:lgpuzElo0
>>425
array = [1, 10, 100, 1000]
myformat = '{:02x}'.format
list(map(myformat, array))
#=> [’01', '0a', '64', '3e8']
2021/01/27(水) 18:41:48.09ID:8/5NGoYh0
formatを使わない方法だとこんな感じか。

>>> print(("00"+hex(254)[2:])[-2:])
fe
2021/01/27(水) 18:51:43.68ID:8/5NGoYh0
>>428 間違い。すまん。
430デフォルトの名無しさん (ワッチョイ 275f-rvE3)
垢版 |
2021/01/28(木) 10:46:38.55ID:dNWrUHbO0
array = [1, 10, 100, 1000]
list(map(f'%02x', array))
2021/01/28(木) 22:37:26.68ID:tFNMY2GJ0
>>all
みなさんありがとうございます

>>425
うまくいきました
print(list(map('{:02x}'.format, a)))
formatメソッドを使うことでformat関数の第二引数を固定するような感じなんですね
勉強になりました

>>426
勉強になります
2021/01/29(金) 20:39:09.24ID:P45PUhZ00
ッパイ損って、ほんと、

ぶりっ!
433デフォルトの名無しさん (ワッチョイ 696a-NgWx)
垢版 |
2021/01/29(金) 20:42:36.06ID:Yw54C/6D0
print("%s は %d です" %("値段", 100))

ってやちゃうけど、formatを使った方いいのか?
変わんないよね?
2021/01/29(金) 21:15:02.93ID:W2+xn0TF0
>>433
何そのクソ記法
435デフォルトの名無しさん (ワッチョイ 696a-NgWx)
垢版 |
2021/01/29(金) 21:19:09.51ID:Yw54C/6D0
>>434
こっちのがC言語のprintf()ぽくって好きなんだよね。
2021/01/29(金) 21:54:32.10ID:SEKJJserd
Cのようなクソ言語のことは忘れろ
437デフォルトの名無しさん (オッペケ Srbd-3KRy)
垢版 |
2021/01/29(金) 21:55:28.93ID:vobzFHE+r
>>433
format文字列の方が自由度高いし柔軟、記述も簡潔
2021/01/29(金) 22:09:51.25ID:l5mBGJ/v0
printfのfはformatのf
439デフォルトの名無しさん (ワッチョイ 797c-L6Wt)
垢版 |
2021/01/30(土) 13:06:19.29ID:/Vy2YSUv0
>>435
>print("%s は %d です" %("値段", 100))

a = "値段"
b = 100
print(f"{a:s} は {b:04d} です")
https://note.nkmk.me/python-f-strings/
2021/01/30(土) 14:04:20.01ID:uBqkRZZEM
>>430
これマジか
f文字列って関数なのかよ
2021/01/30(土) 14:37:52.85ID:PTwpMb/VM
変数だけじゃなく{}内では
コードも展開されるよね
ほとんどeval
442デフォルトの名無しさん (ワッチョイ 6a61-M8vF)
垢版 |
2021/01/30(土) 19:12:32.88ID:DFENYGCB0
>>440
んなわけない。
2021/01/31(日) 01:18:23.19ID:pTAAkbAE0
Cはクソじゃない。
プログラマが神であることが前提なだけだ。
2021/01/31(日) 04:45:12.13ID:LnuqQuZJM
>>442
Python3.6.4で動かしてみたら、'str' object is not callable になった
当然だわな
もしかして最新のPythonでは動くのか?
それとも>>430が基地外なのか
2021/01/31(日) 06:45:33.91ID:tvoJUBop0
できる限り、python 3.4(XP最終)との互換性を考えて、
新しい使い方は極力控えるようにしてるな
廃止予定になるものはもちろん使わないけど

たとえば、subprocess.run()が使えないので、古くなったsubprocess.call()を使いたいところだけど、
subprocess.Popen()でなんとかなるので、こちらを使うようにしてる
446デフォルトの名無しさん (ワッチョイ 5d73-merL)
垢版 |
2021/01/31(日) 11:58:30.05ID:IyMlWoIo0
a= open('hoge.txt','r').readlines() ってやったら、どうやって close すればいいの?
勝手にクローズされるの?
2021/01/31(日) 12:02:35.09ID:ztsWDMWg0
>>446
いんや>勝手にクローズ
でもってそのレベルはくだすれの方な
448デフォルトの名無しさん (ワッチョイ 696a-NgWx)
垢版 |
2021/01/31(日) 14:18:54.71ID:5J6IAB9V0
>>446
クローズされるされない以前に凄げー書き方だなw
2021/01/31(日) 14:30:10.98ID:ztsWDMWg0
>>448
すげーかな?
初心者あるあるあーだと思うが
450デフォルトの名無しさん (ワッチョイ 696a-NgWx)
垢版 |
2021/01/31(日) 14:36:14.53ID:5J6IAB9V0
まあ、pythonとかperlとかから入った場合にありそうだな。

C言語から入ったらありえない書き方だよw
2021/01/31(日) 14:51:34.61ID:+uTrKl1S0
>>446
Path.read_text()を使えばいいよ

Fileをopenして読み取ってcloseするのはめちゃくちゃ頻出パターンなので
便利メソッドが提供されてるほうが親切
2021/01/31(日) 16:21:13.57ID:A/ejTqXCM
>>451
ありがとう。調べてみる。
頻出パターンには関数用意しておいて欲しいな。またライブラリかよ。
あと、関数抜けたらガーベージコレクションしてくれ。
2021/01/31(日) 16:23:53.89ID:A/ejTqXCM
あ、Pathlib は標準ライブラリか。
454デフォルトの名無しさん (ワッチョイ 797c-qCTK)
垢版 |
2021/01/31(日) 16:41:41.03ID:X7lGC0go0
ループの中で使ったりしなければ
プロセス終了したらcloseされるやろ
ワンライナー程度なら問題無い
IDE内で使うとIDE終了までcloseされないことはあるかも
2021/01/31(日) 18:36:36.62ID:J79WkYNb0
>>450
rustやc++から入ったならあり得る書き方
2021/01/31(日) 18:52:07.55ID:TZ/K0j2Ld
言語としてオブジェクト指向が提供されてる言語を一個でも学んだなら普通
open に繋げるのが微妙なだけで何も凄くないごく普通の書き方

Cしか勉強してない奴には異常に見えるかもしれないが
Cしか勉強してない奴が異常者だと自覚した方がいい
2021/01/31(日) 18:57:31.61ID:I2JY0LLZ0
FileもDBも、OpenしたらCloseしなさいと教わりました
2021/01/31(日) 19:01:18.73ID:ztsWDMWg0
Pythonだって基本はあけたらしめるぞ
基本的には。
2021/01/31(日) 19:36:56.91ID:ukHS72vv0
デストラクタって知らんか
2021/01/31(日) 19:58:37.33ID:ztsWDMWg0
>>459
__init__の対が__del__で
コンストラクタデストラクタなんだと
今ぐっぐて知ったわw
461デフォルトの名無しさん (ワッチョイ 6a61-M8vF)
垢版 |
2021/01/31(日) 22:24:30.07ID:kBSAcrG10
えっと、そんな小難しい話ではなくて、単にreadlines()が勝手に閉めてくれているだけの話でしょ?
ましてや、デストラクタが勝手に閉めてくれると思っているなら、それこそとんでもない間違いだ。
462デフォルトの名無しさん (ワッチョイ 6a61-M8vF)
垢版 |
2021/01/31(日) 22:31:01.38ID:kBSAcrG10
ごめん。readlinesは閉めなかったわ。
常にwithと一緒に使っていたから、ほとんど意識してなかった。
2021/01/31(日) 23:26:03.78ID:xZnCOk61M
>>457
知ってる!オープン・クローズ原則ってやつだよね!
2021/02/01(月) 00:56:54.84ID:5yr9aQzL0
デストラクタがいつ呼ばれるかは保証されてないんじゃないの?
ほったらかしにすると再度開こうとしたときにすぐに開けなくなるから、ちゃんとcloseするかdelしたほうがいいよ
2021/02/01(月) 01:01:18.54ID:nyoV78kKd
Pythonは参照が切れた時点でGCに回収されるんだったかな
でもバグの原因になるから明示的にcloseすべき
2021/02/01(月) 02:17:59.14ID:raodPEZBM
>>446の書き方だと、a にはファイルオブジェクトが入らないから
a.close() ってできないよな
滅茶苦茶怖いわ
2021/02/01(月) 07:11:31.01ID:zru6Wjni0
>>461-462 >>466
せやで
「openするならオートフラッシュなwithさん使ってーな」はPythonのきほんテクで
468デフォルトの名無しさん (ワッチョイ 6aa5-eHoJ)
垢版 |
2021/02/01(月) 07:42:03.45ID:iI5pUuOE0
インデントでスコープ付けるだけじゃダメだったんだろうかといつも疑問に思う
469デフォルトの名無しさん (ワッチョイ 696a-NgWx)
垢版 |
2021/02/01(月) 09:01:53.08ID:bfRVZ7+J0
open()なんてエラーが出る頻度が高い関数をエラーチェック無しに使うのが無理がある。
2021/02/01(月) 09:45:54.13ID:w5ozLfsxM
try exception すればいいんやで。
471デフォルトの名無しさん (ワッチョイ e505-gNuC)
垢版 |
2021/02/01(月) 11:07:46.57ID:1Fk5nxUL0
クラスの特殊メソッドをオーバーライドする時にint型との演算を別に定義する方法ってありますか?
472デフォルトの名無しさん (ワッチョイ e505-gNuC)
垢版 |
2021/02/01(月) 11:12:28.52ID:1Fk5nxUL0
特殊メソッドの定義の中で型判別して条件分岐とかになるんですかね?
473デフォルトの名無しさん (ワッチョイ a606-yYpS)
垢版 |
2021/02/01(月) 11:32:20.94ID:6c5mrI3q0
超クソ初心者

for a in range(2,21):
sosuu=1
for j in range(2,a):
if a % j ==0:
sosuu=0
if sosuu ==1:
print(a,'(素数)')
else:
print(a)

これって一行一行どういうことが起こってるのが教えてほしい
『最初の一行「for a in range(2,21):」でaは2-21までの範囲を指してる』
的な感じの説明で。
2行目のsosuu=1とか3行目で何故(2.21)はダメで(2.a)だとしっかりできるのかが謎で
一つ一つ根本が知りたい
2021/02/01(月) 11:45:16.24ID:Q1Zk9Q1A0
sosuu に1を入れておき
その値が1のままだと素数
sosuu の値が1だと素数

では次の行の担当の方どうぞ
475デフォルトの名無しさん (ワッチョイ 6a61-M8vF)
垢版 |
2021/02/01(月) 11:48:29.39ID:Lp1uHNUM0
@singledispatchが特殊メソッドに対しても直接使えるかどうかわからんけど、
条件分岐の方が結局のところ無難かつスピード的にも利点があるんじゃないかな?
2021/02/01(月) 12:12:27.93ID:KcF6/QTu0
Ruby では、

results = [ 2 ]

( 2..12 ).each do |outer|
prime = true

( 2..outer ).each do |inner|
# 割り切れたら、素数ではない
prime = false if outer % inner == 0

if prime
results.push outer if prime
break
end
end
end

p results #=> [2, 3, 5, 7, 9, 11]
2021/02/01(月) 12:15:24.54ID:KcF6/QTu0
>>476
修正

>results.push outer if prime
results.push outer
2021/02/01(月) 12:18:51.67ID:KcF6/QTu0
>>476
間違っている

単なる奇数になってるw
479デフォルトの名無しさん (ワッチョイ e505-gNuC)
垢版 |
2021/02/01(月) 12:19:24.97ID:1Fk5nxUL0
ありがとう、条件分岐で良さそうですね
singledispatch知らなかったから面白そうなの知れて良かった

>>473
たぶんコードが読み解けない根本の勘違い部分だと思うけど一行目rangeが生成してる範囲は1-20
pythonで範囲を与えるときは基本的に左閉右開区間(右側に五条悟が居て辿り着けない)から覚えておくといいよ
480デフォルトの名無しさん (ワッチョイ e505-gNuC)
垢版 |
2021/02/01(月) 12:22:14.71ID:1Fk5nxUL0
2-20だった
混乱させたらごめんよ
2021/02/01(月) 12:41:17.52ID:KcF6/QTu0
Ruby では範囲で、.. は終点を含む、... は終点を含まないから、
内側のループで、( 2...outer ) として、outer を含んじゃいけない

含むと例えば、7 % 7 = 0 と割り切れてしまう。
含めない場合は、7 % 2 から、7 % 6 まで、すべてで割り切れないから素数となる

results = [ ]

( 2..12 ).each do |outer|
prime = true

( 2...outer ).each do |inner|
# 割り切れたら、素数ではない
prime = false if outer % inner == 0
end

results.push outer if prime
end

p results #=> [2, 3, 5, 7, 11]
2021/02/01(月) 12:46:33.50ID:KcF6/QTu0
例えば、outer が7 の場合、
inner は、2〜6 で、余りouter % inner は、

7 % 2 = 1
7 % 3 = 1
7 % 4 = 3
7 % 5 = 2
7 % 6 = 1

すべてで割り切れないから、素数
483デフォルトの名無しさん (ワッチョイ 696a-NgWx)
垢版 |
2021/02/01(月) 13:17:18.19ID:bfRVZ7+J0
実際は自分の数字まで探す必要はないよね。

21が素数かしらべたいなら、2から21/2 この場合だと11まで調べればOKだよね(半分を超えたら割りきれる分けがないんだから)

実際は√21までしらべればいいらしい。本当かはしらんがw
2021/02/01(月) 13:29:16.59ID:MwS2r1BVr
>>483
m=abと素因数分解できる場合mの平方根まで調べればaかbのどっちかが見つかる

見つからなければ素数
485デフォルトの名無しさん (ワッチョイ 6a61-M8vF)
垢版 |
2021/02/01(月) 14:38:09.60ID:Nlbj3k+a0
なるほど。そっちのは知らなかった。
def is_prime(n):
__x = 2
__while x * x <= n: # 判定だけだから、sqrtじゃなくてもいいよね?
____if n % x == 0:
______return False
____x += 1
__return True
2021/02/01(月) 14:42:52.30ID:KcF6/QTu0
もっと厳密に言えば、配列に順番に素数を入れていくから、

例えば、outer が7 の場合、既に[2, 3, 5]が入っていて、
inner は、2,3,5 だけ調べれば良い。
4,6 は調べる必要がない

つまり、それまでの素数で割り切れなければ、素数

5以上の素数は、6n + 1, 6n + 5 だけ。
6n + 3 は、3で割り切れる

7 % 2 = 1
7 % 3 = 1
7 % 4 = 3 → 不要
7 % 5 = 2
7 % 6 = 1 → 不要
487デフォルトの名無しさん (ワッチョイ e505-gNuC)
垢版 |
2021/02/01(月) 14:55:10.84ID:1Fk5nxUL0
ある値以下の素数を列挙したいならエラトステネスの篩でいいんじゃないの
2021/02/01(月) 18:15:30.30ID:iFiWp8sSM
関数内で呼び出すexecをグローバルコンテキストで
実行させるには第2引数に何を与えれば良いですか?
def func():
exec(“a=1”, ???)
2021/02/01(月) 18:39:40.42ID:zru6Wjni0
>>473
1嫁

Python初心者かつ5ch初心者は初心者板へ
2021/02/01(月) 20:00:44.02ID:zru6Wjni0
>>488マルチポストいってよし
https://mevius.5ch.net/test/read.cgi/tech/1610137345/259
2021/02/01(月) 20:23:34.86ID:zru6Wjni0
>>473マルチポストクソやろうチネ!!!(・∀・)
https://mevius.5ch.net/test/read.cgi/tech/1610137345/264
自称初心者どうこう以前の問題
492デフォルトの名無しさん (オッペケ Srbd-2WwA)
垢版 |
2021/02/01(月) 20:35:03.79ID:dLYyxM+Vr
マルチポスト警察だ!!!
2021/02/01(月) 20:45:22.01ID:zru6Wjni0
>>492
くっやしいわろらされたwww
2021/02/01(月) 21:06:46.60ID:pf4bKJUwa
マッチポンプとか正確悪ぃーな
2021/02/01(月) 22:35:28.59ID:y6HQlT0y0
マッチはいらんかね
2021/02/02(火) 07:19:50.09ID:yxeR01+C0
>>494は不正確なやつだなw
497デフォルトの名無しさん (ワッチョイ 5d01-6q/4)
垢版 |
2021/02/02(火) 07:28:47.85ID:6zQI8Heo0
ワロタ
2021/02/02(火) 09:31:45.46ID:VDC2/rXs0
Numpyのアプデが来たな
iOSの変換だと
ナンピー→Numpy
ナンパイ→numpy
になるのは何故なのか
499デフォルトの名無しさん (ワッチョイ a532-NgWx)
垢版 |
2021/02/02(火) 14:50:00.64ID:mHChSSLg0
>>484
Python じゃなくて数学スレみたくなるけど、
一つの整数を二つの整数の積にするとき、片方が必ず√N以下になるらしい。

例えば32を二つの整数の積であらわすと、約数が6個なので

1,2,4,8,16,32

1X32、2x16、4x8の三通りで片方はかならず√32以下となる。

だから平方根以下を調べればいい。って事らしい。
500デフォルトの名無しさん (エムゾネ FF0a-qCTK)
垢版 |
2021/02/02(火) 15:26:31.76ID:eTRsUHIhF
>らしい

小学生か文系か池沼かどっち
501デフォルトの名無しさん (ワッチョイ a532-NgWx)
垢版 |
2021/02/02(火) 15:51:40.29ID:mHChSSLg0
>>500
3択でどっちつかうなよw
2021/02/02(火) 18:18:25.52ID:ozkAVgNFM
文系で池沼の小学生かも知れん。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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