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 >>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
になるのは何故なのか >>484
Python じゃなくて数学スレみたくなるけど、
一つの整数を二つの整数の積にするとき、片方が必ず√N以下になるらしい。
例えば32を二つの整数の積であらわすと、約数が6個なので
1,2,4,8,16,32
1X32、2x16、4x8の三通りで片方はかならず√32以下となる。
だから平方根以下を調べればいい。って事らしい。 素数でなければ正の整数を因数分解すると必ず平方根より小さい数が現れるって当然のことと思ってたけど普段平方根なんて全く見ない人にとっては自明じゃないのか
元ネタはループと条件の練習だから無駄な探索を減らすとか考えてないんだろう >>503
偉そうに書いて不正確だ
平方根より小さい数が現れる→平方根以下の数が現れる pythonでseleniumを使ってスクレイピングをやり始めたのだが、
find_element系の話題てこのスレでいいの? お世話になります。
これからPythonでプログラミングを始めようと考えています。
今後プログラミングをするにあたってエディタは何を使えば良いかご意見を頂きたいです。
自分で調べてみて、visual studio codeやjupyter、atom等様々なものを見つけましたが、短期、中期、長期でみてどれが良いのか決めかねています。
・今の状態はAnacondaでインストールし、とりあえず万能そうなvisual studio 2019でhallo worldは出せた状態
・プログラムの経験としてはjavaを大学の授業で3単位分と、Arduino(マイコン)で少し遊んだことがある程度
・短期(実働約1ヶ月)の目標としては、GUI、webアプリの作成(手始めに4桁の数字を入力するとその年にオリンピックが開催されたか判定するアプリを作ってみようかと)
・中期(実働約3ヶ月)の目標としては、スクレイピングやデータ分析、簡単なAIを作成しての業務の半自動化(オリンピック判定アプリの強化、Twitterでフォローされた際にフォローバックするべきか判定するアプリ等)
・長期(実働1年以上)の目標としては、難しいAIを作成しての業務の自動化、データサイエンティストとして通用するレベルの能力(オリンピック判定アプリの最強化、自動ツイートや自動リプライの作成アプリ)
・勉強手段は図書館の書籍やwebページ、掲示板での質問等による独学
・仕事を辞めたので時間はあります、やる気もあります
以上のことを踏まえて以下のことにお答え頂けると嬉しいです。
1,みなさんの開発環境及びその理由
2,短期目標に合ったエディタとその理由、他に検討したもの
3,中期目標に合ったエディタとその理由、他に検討したもの
4,長期目標に合ったエディタとその理由、他に検討したもの
5,おすすめの学習方法、コミュニティ等
6,その他(目標に無理がある、致命的な勘違いがある等)
1〜6のうち1つだけでも良いので回答頂けるととても嬉しいです。
良かったらよろしくおねがいします。 オリンピック判定アプリにAI必要だろうか?という疑問は別にして
オレはSublime Text使ってる。
仕事でちょこっとDNN使うけどそれはJupyterNotebook上で走らすだけ。
SublimeはシフトJIS使えないからその時はNotepad++。 >>508さん
ありがとうございます!
VSCodeは拡張機能が充実していたりLinuxに対応している等が理由でしょうか。
良かったら理由も教えて頂けると嬉しいです!
>>509さん
ありがとうございます!
Sublime Textはハイパフォーマンスな代わりに初学者には難しいかもしれないという紹介を見つけました。
良かったらそのあたりのご意見を頂けるととても助かります! >>507です
>>509さん
すみません、オリンピック判定アプリにAIは必要かという話を忘れてレスしてしまいました。
過去のものを判定する際には不要だと思いますが、未来の開催を判定する際にはニュースサイトの記事や
各国のGDPの推移等から予測するAIが必要かなと考えました。
結構しっかりしたAIじゃないといけないと思うので、長期目標にちょうど良いかなと設定してみました。
途中でもっと良い目標を見つけたら変えるとは思います。
連投失礼しました。 何をそんなに難しく構えるのかわからない
エディタなんてメモ帳で十分 >>507
時間はあるんだし、自分で情報を探すこともできそうなんだから人の意見から最適なものを探そうとするより自分でいろいろ試して自分に合うものを探した方がいいと思うよ MS visual studioじゃダメなの?
昭和のときてあれ有料だったよな。
池袋の菓子ソフト屋で借りてコピーした覚えが。 ■ このスレッドは過去ログ倉庫に格納されています