Pythonのお勉強 Part64
■ このスレッドは過去ログ倉庫に格納されています
!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 >>390
アイコン等のリソースはどっかに配置したraw dataを直接指定ではなく
リソースファイルを通して扱うのが正しい(常識的)なやり方なんだろうな。 リソースファイルと言っても.pyファイルでimportで指定するだけ。
直接オブジェクトファイルを指定するとアプリディレクトリとカレントディレクトリが合わないと駄目で、何でimportだと良いのか理解は出来ていません。 https://dpaste.com/6HUZFQTQQ
九九の表を作るプログラミングを書いているんですが、nの段の終わりに改行したいです
現在のコードだ改行が二回入ってしますのですがなぜでしょうか >>402
rangeが1〜10になってるからiが9の時と10の時に改行が入る あ、そうか
なんで改行文字入れたんだ。。
ありがとうございます >>402
i判定の前にi表示して実行してみては? >>381
BOOTHにあるモザイク除去の技術書が良かったからオススメ OpenpyxlでExcelいじってるんだけど、列ごとの最終行のセルを調べたい。どうしたらいいの? ダメもとで、pythonのsliceみたくインデックスに-1指定してみるとか? len(ws['A'])
最終行以降に余計な書式がついてると意図しない数が返ってくるから結局自分でカウントするほうが無難かと Openpyxlって読み取り専用のExcelファイルに書き込みってできないですよね?
読み取り専用解除→書き込み→読み取り専用に戻すっていう処理はどうやって書けばいいんですかね? >>412
['A']
↑これ
顔文字にしかみえないw >>413
Read-onlyなファイルのこと?
ならSetFileAttributes。
ファイルがロックされてるときは無理。 QtCreatorでプログラム作ろうと思ったけど、PytQtのが圧倒的に楽なんで、
今更C++/Qtで書く気になれないよw >>419
EricでPyQtは?
ラズパイで使っているけど便利だよ。 組み込み関数にpartialを使いたいとき
キーワード引数はどう指定すれば良いですか?
例えばformat関数の第2引数を”02x” にしたいです >>422
format関数の第2引数はキーワード引数じゃなくね?
str.format()は知ってる? 数値が格納された配列に対して
mapを使って16進数文字列に出来るかというところで
色々と考えてます
hex関数だとゼロ埋めができず
format関数を使って試しました よく知らんけどキーワード引数でなくvar-positional引数らしいから無理じゃないかなあ。
関数定義したら
def bind02x(s, *args):
. return s.format(args[0], "02x", *args[1:]) >>425
array = [1, 10, 100, 1000]
myformat = '{:02x}'.format
list(map(myformat, array))
#=> [’01', '0a', '64', '3e8'] formatを使わない方法だとこんな感じか。
>>> print(("00"+hex(254)[2:])[-2:])
fe array = [1, 10, 100, 1000]
list(map(f'%02x', array)) >>all
みなさんありがとうございます
>>425
うまくいきました
print(list(map('{:02x}'.format, a)))
formatメソッドを使うことでformat関数の第二引数を固定するような感じなんですね
勉強になりました
>>426
勉強になります print("%s は %d です" %("値段", 100))
ってやちゃうけど、formatを使った方いいのか?
変わんないよね? >>434
こっちのがC言語のprintf()ぽくって好きなんだよね。 >>433
format文字列の方が自由度高いし柔軟、記述も簡潔 >>435
>print("%s は %d です" %("値段", 100))
a = "値段"
b = 100
print(f"{a:s} は {b:04d} です")
https://note.nkmk.me/python-f-strings/ 変数だけじゃなく{}内では
コードも展開されるよね
ほとんどeval Cはクソじゃない。
プログラマが神であることが前提なだけだ。 >>442
Python3.6.4で動かしてみたら、'str' object is not callable になった
当然だわな
もしかして最新のPythonでは動くのか?
それとも>>430が基地外なのか できる限り、python 3.4(XP最終)との互換性を考えて、
新しい使い方は極力控えるようにしてるな
廃止予定になるものはもちろん使わないけど
たとえば、subprocess.run()が使えないので、古くなったsubprocess.call()を使いたいところだけど、
subprocess.Popen()でなんとかなるので、こちらを使うようにしてる a= open('hoge.txt','r').readlines() ってやったら、どうやって close すればいいの?
勝手にクローズされるの? >>446
いんや>勝手にクローズ
でもってそのレベルはくだすれの方な >>446
クローズされるされない以前に凄げー書き方だなw >>448
すげーかな?
初心者あるあるあーだと思うが まあ、pythonとかperlとかから入った場合にありそうだな。
C言語から入ったらありえない書き方だよw >>446
Path.read_text()を使えばいいよ
Fileをopenして読み取ってcloseするのはめちゃくちゃ頻出パターンなので
便利メソッドが提供されてるほうが親切 >>451
ありがとう。調べてみる。
頻出パターンには関数用意しておいて欲しいな。またライブラリかよ。
あと、関数抜けたらガーベージコレクションしてくれ。 ループの中で使ったりしなければ
プロセス終了したらcloseされるやろ
ワンライナー程度なら問題無い
IDE内で使うとIDE終了までcloseされないことはあるかも >>450
rustやc++から入ったならあり得る書き方 言語としてオブジェクト指向が提供されてる言語を一個でも学んだなら普通
open に繋げるのが微妙なだけで何も凄くないごく普通の書き方
Cしか勉強してない奴には異常に見えるかもしれないが
Cしか勉強してない奴が異常者だと自覚した方がいい FileもDBも、OpenしたらCloseしなさいと教わりました Pythonだって基本はあけたらしめるぞ
基本的には。 >>459
__init__の対が__del__で
コンストラクタデストラクタなんだと
今ぐっぐて知ったわw えっと、そんな小難しい話ではなくて、単にreadlines()が勝手に閉めてくれているだけの話でしょ?
ましてや、デストラクタが勝手に閉めてくれると思っているなら、それこそとんでもない間違いだ。 ごめん。readlinesは閉めなかったわ。
常にwithと一緒に使っていたから、ほとんど意識してなかった。 >>457
知ってる!オープン・クローズ原則ってやつだよね! デストラクタがいつ呼ばれるかは保証されてないんじゃないの?
ほったらかしにすると再度開こうとしたときにすぐに開けなくなるから、ちゃんとcloseするかdelしたほうがいいよ Pythonは参照が切れた時点でGCに回収されるんだったかな
でもバグの原因になるから明示的にcloseすべき >>446の書き方だと、a にはファイルオブジェクトが入らないから
a.close() ってできないよな
滅茶苦茶怖いわ >>461-462 >>466
せやで
「openするならオートフラッシュなwithさん使ってーな」はPythonのきほんテクで インデントでスコープ付けるだけじゃダメだったんだろうかといつも疑問に思う open()なんてエラーが出る頻度が高い関数をエラーチェック無しに使うのが無理がある。 クラスの特殊メソッドをオーバーライドする時にint型との演算を別に定義する方法ってありますか? 特殊メソッドの定義の中で型判別して条件分岐とかになるんですかね? 超クソ初心者
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)だとしっかりできるのかが謎で
一つ一つ根本が知りたい sosuu に1を入れておき
その値が1のままだと素数
sosuu の値が1だと素数
では次の行の担当の方どうぞ @singledispatchが特殊メソッドに対しても直接使えるかどうかわからんけど、
条件分岐の方が結局のところ無難かつスピード的にも利点があるんじゃないかな? 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] >>476
修正
>results.push outer if prime
results.push outer ありがとう、条件分岐で良さそうですね
singledispatch知らなかったから面白そうなの知れて良かった
>>473
たぶんコードが読み解けない根本の勘違い部分だと思うけど一行目rangeが生成してる範囲は1-20
pythonで範囲を与えるときは基本的に左閉右開区間(右側に五条悟が居て辿り着けない)から覚えておくといいよ 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] 例えば、outer が7 の場合、
inner は、2〜6 で、余りouter % inner は、
7 % 2 = 1
7 % 3 = 1
7 % 4 = 3
7 % 5 = 2
7 % 6 = 1
すべてで割り切れないから、素数 実際は自分の数字まで探す必要はないよね。
21が素数かしらべたいなら、2から21/2 この場合だと11まで調べればOKだよね(半分を超えたら割りきれる分けがないんだから)
実際は√21までしらべればいいらしい。本当かはしらんがw >>483
m=abと素因数分解できる場合mの平方根まで調べればaかbのどっちかが見つかる
見つからなければ素数 なるほど。そっちのは知らなかった。
def is_prime(n):
__x = 2
__while x * x <= n: # 判定だけだから、sqrtじゃなくてもいいよね?
____if n % x == 0:
______return False
____x += 1
__return True もっと厳密に言えば、配列に順番に素数を入れていくから、
例えば、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 → 不要 ある値以下の素数を列挙したいならエラトステネスの篩でいいんじゃないの 関数内で呼び出すexecをグローバルコンテキストで
実行させるには第2引数に何を与えれば良いですか?
def func():
exec(“a=1”, ???) >>473
1嫁
+
Python初心者かつ5ch初心者は初心者板へ Numpyのアプデが来たな
iOSの変換だと
ナンピー→Numpy
ナンパイ→numpy
になるのは何故なのか ■ このスレッドは過去ログ倉庫に格納されています