X



Pythonのお勉強 Part64

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 6b01-vvkI)
垢版 |
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
0388デフォルトの名無しさん (ワッチョイ 8240-SZF4)
垢版 |
2021/01/19(火) 08:31:12.54ID:tvisVnjf0
>>387
アプリがおかしいと言われてもmain.pyは以下の通りでMainWindowを呼び出すだけです。
from PyQt5.QtWidgets import QApplication
from mainform import MainWindow
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
Window = MainWindow()
Window.showFullScreen()
sys.exit(app.exec_())
フォルダー表示でmain.pyをクリックすればラズパイのThonnyが起動して、Runさせる分には相対パスでアイコンは現れます。
別のフォルダーに移動しても同様にアイコンは現れます。
AutoStartで起動するとNGです。
AutoStartの“~/.config/lxsession/LXDE-pi/AutoStart”ファイルには
/usr/bin/python3 /home/pi/Desktop/Test/main.py
としています。
このAutoStartファイルの書き方がおかしいのでしょうか?
cd /home/pi/Desktop/Testも入れてみましたが結果変わらずです。
アプリ側でフォームのラベルにカレントディレクトリを表示すると/home/piです。
# 現在のpathを取得する
import os
self.path = os.getcwd()
self.ui.testLabel.setText(self.path)
です。
0392デフォルトの名無しさん (ワッチョイ 8602-ahPi)
垢版 |
2021/01/19(火) 12:29:34.29ID:hDmXWGEK0
Java と TypeScript ( JavaScript ) からは、Win32API 叩いたことあるんだけど、
それらと比べて、Python から Win32API 叩くのってどれくらい楽?難しい?

C++ とか除けば C# が一番ラクなのはとりあえず知ってる。
0396デフォルトの名無しさん (ワッチョイ 82a5-cHx4)
垢版 |
2021/01/19(火) 18:02:46.61ID:3vFYkyri0
256倍本に読み方が載ってる
pythonじゃなくてCのやつな
0400デフォルトの名無しさん (ワッチョイ 8240-SZF4)
垢版 |
2021/01/19(火) 21:44:23.48ID:tvisVnjf0
リソースファイルと言っても.pyファイルでimportで指定するだけ。
直接オブジェクトファイルを指定するとアプリディレクトリとカレントディレクトリが合わないと駄目で、何でimportだと良いのか理解は出来ていません。
0410デフォルトの名無しさん (ワッチョイ 5f79-Zp8o)
垢版 |
2021/01/23(土) 21:23:21.71ID:Hsg7ZCv90
OpenpyxlでExcelいじってるんだけど、列ごとの最終行のセルを調べたい。どうしたらいいの?
0411デフォルトの名無しさん (ワッチョイ 5f61-Woof)
垢版 |
2021/01/24(日) 13:03:45.15ID:67l69Ijb0
ダメもとで、pythonのsliceみたくインデックスに-1指定してみるとか?
0413デフォルトの名無しさん (ワッチョイ 5f79-Zp8o)
垢版 |
2021/01/25(月) 19:04:21.56ID:pG6g+jm20
Openpyxlって読み取り専用のExcelファイルに書き込みってできないですよね?
読み取り専用解除→書き込み→読み取り専用に戻すっていう処理はどうやって書けばいいんですかね?
0416デフォルトの名無しさん (ワッチョイ 5f79-Zp8o)
垢版 |
2021/01/25(月) 22:13:41.43ID:pG6g+jm20
>>414
forとifで書きました。
0418デフォルトの名無しさん (ワッチョイ 5f79-Zp8o)
垢版 |
2021/01/25(月) 22:36:17.55ID:pG6g+jm20
うーん?
0419デフォルトの名無しさん (ワッチョイ 276a-dnk/)
垢版 |
2021/01/26(火) 22:26:22.62ID:07qf8Z/S0
QtCreatorでプログラム作ろうと思ったけど、PytQtのが圧倒的に楽なんで、
今更C++/Qtで書く気になれないよw
0421デフォルトの名無しさん (ワントンキン MM3f-Z7MQ)
垢版 |
2021/01/27(水) 10:28:12.94ID:8VSsYW13M
顔認証はここですか?
0425デフォルトの名無しさん (ワッチョイ 5f6d-j4NR)
垢版 |
2021/01/27(水) 17:30:09.95ID:ZkwFNZKx0
数値が格納された配列に対して
mapを使って16進数文字列に出来るかというところで
色々と考えてます
hex関数だとゼロ埋めができず
format関数を使って試しました
0430デフォルトの名無しさん (ワッチョイ 275f-rvE3)
垢版 |
2021/01/28(木) 10:46:38.55ID:dNWrUHbO0
array = [1, 10, 100, 1000]
list(map(f'%02x', array))
0431デフォルトの名無しさん (ワッチョイ bfda-VlSt)
垢版 |
2021/01/28(木) 22:37:26.68ID:tFNMY2GJ0
>>all
みなさんありがとうございます

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

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

ってやちゃうけど、formatを使った方いいのか?
変わんないよね?
0435デフォルトの名無しさん (ワッチョイ 696a-NgWx)
垢版 |
2021/01/29(金) 21:19:09.51ID:Yw54C/6D0
>>434
こっちのがC言語のprintf()ぽくって好きなんだよね。
0437デフォルトの名無しさん (オッペケ Srbd-3KRy)
垢版 |
2021/01/29(金) 21:55:28.93ID:vobzFHE+r
>>433
format文字列の方が自由度高いし柔軟、記述も簡潔
0439デフォルトの名無しさん (ワッチョイ 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/
0442デフォルトの名無しさん (ワッチョイ 6a61-M8vF)
垢版 |
2021/01/30(土) 19:12:32.88ID:DFENYGCB0
>>440
んなわけない。
0445デフォルトの名無しさん (ワッチョイ 1163-unxX)
垢版 |
2021/01/31(日) 06:45:33.91ID:tvoJUBop0
できる限り、python 3.4(XP最終)との互換性を考えて、
新しい使い方は極力控えるようにしてるな
廃止予定になるものはもちろん使わないけど

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

C言語から入ったらありえない書き方だよw
0454デフォルトの名無しさん (ワッチョイ 797c-qCTK)
垢版 |
2021/01/31(日) 16:41:41.03ID:X7lGC0go0
ループの中で使ったりしなければ
プロセス終了したらcloseされるやろ
ワンライナー程度なら問題無い
IDE内で使うとIDE終了までcloseされないことはあるかも
0456デフォルトの名無しさん (スプッッ Sdea-RNyz)
垢版 |
2021/01/31(日) 18:52:07.55ID:TZ/K0j2Ld
言語としてオブジェクト指向が提供されてる言語を一個でも学んだなら普通
open に繋げるのが微妙なだけで何も凄くないごく普通の書き方

Cしか勉強してない奴には異常に見えるかもしれないが
Cしか勉強してない奴が異常者だと自覚した方がいい
0461デフォルトの名無しさん (ワッチョイ 6a61-M8vF)
垢版 |
2021/01/31(日) 22:24:30.07ID:kBSAcrG10
えっと、そんな小難しい話ではなくて、単にreadlines()が勝手に閉めてくれているだけの話でしょ?
ましてや、デストラクタが勝手に閉めてくれると思っているなら、それこそとんでもない間違いだ。
0462デフォルトの名無しさん (ワッチョイ 6a61-M8vF)
垢版 |
2021/01/31(日) 22:31:01.38ID:kBSAcrG10
ごめん。readlinesは閉めなかったわ。
常にwithと一緒に使っていたから、ほとんど意識してなかった。
0464デフォルトの名無しさん (ワッチョイ 8d7f-LESd)
垢版 |
2021/02/01(月) 00:56:54.84ID:5yr9aQzL0
デストラクタがいつ呼ばれるかは保証されてないんじゃないの?
ほったらかしにすると再度開こうとしたときにすぐに開けなくなるから、ちゃんとcloseするかdelしたほうがいいよ
0468デフォルトの名無しさん (ワッチョイ 6aa5-eHoJ)
垢版 |
2021/02/01(月) 07:42:03.45ID:iI5pUuOE0
インデントでスコープ付けるだけじゃダメだったんだろうかといつも疑問に思う
0469デフォルトの名無しさん (ワッチョイ 696a-NgWx)
垢版 |
2021/02/01(月) 09:01:53.08ID:bfRVZ7+J0
open()なんてエラーが出る頻度が高い関数をエラーチェック無しに使うのが無理がある。
0471デフォルトの名無しさん (ワッチョイ e505-gNuC)
垢版 |
2021/02/01(月) 11:07:46.57ID:1Fk5nxUL0
クラスの特殊メソッドをオーバーライドする時にint型との演算を別に定義する方法ってありますか?
0472デフォルトの名無しさん (ワッチョイ e505-gNuC)
垢版 |
2021/02/01(月) 11:12:28.52ID:1Fk5nxUL0
特殊メソッドの定義の中で型判別して条件分岐とかになるんですかね?
0473デフォルトの名無しさん (ワッチョイ 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)だとしっかりできるのかが謎で
一つ一つ根本が知りたい
0475デフォルトの名無しさん (ワッチョイ 6a61-M8vF)
垢版 |
2021/02/01(月) 11:48:29.39ID:Lp1uHNUM0
@singledispatchが特殊メソッドに対しても直接使えるかどうかわからんけど、
条件分岐の方が結局のところ無難かつスピード的にも利点があるんじゃないかな?
0476デフォルトの名無しさん (ワッチョイ 662c-IZeX)
垢版 |
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]
0479デフォルトの名無しさん (ワッチョイ e505-gNuC)
垢版 |
2021/02/01(月) 12:19:24.97ID:1Fk5nxUL0
ありがとう、条件分岐で良さそうですね
singledispatch知らなかったから面白そうなの知れて良かった

>>473
たぶんコードが読み解けない根本の勘違い部分だと思うけど一行目rangeが生成してる範囲は1-20
pythonで範囲を与えるときは基本的に左閉右開区間(右側に五条悟が居て辿り着けない)から覚えておくといいよ
0480デフォルトの名無しさん (ワッチョイ e505-gNuC)
垢版 |
2021/02/01(月) 12:22:14.71ID:1Fk5nxUL0
2-20だった
混乱させたらごめんよ
0481476 (ワッチョイ 662c-IZeX)
垢版 |
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]
0482476 (ワッチョイ 662c-IZeX)
垢版 |
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

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

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

実際は√21までしらべればいいらしい。本当かはしらんがw
0485デフォルトの名無しさん (ワッチョイ 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
0486476 (ワッチョイ 662c-IZeX)
垢版 |
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 → 不要
0487デフォルトの名無しさん (ワッチョイ e505-gNuC)
垢版 |
2021/02/01(月) 14:55:10.84ID:1Fk5nxUL0
ある値以下の素数を列挙したいならエラトステネスの篩でいいんじゃないの
■ このスレッドは過去ログ倉庫に格納されています

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