X



【まず1嫁】くだすれPython(超初心者用) その59
0001デフォルトの名無しさん
垢版 |
2023/07/13(木) 18:48:41.56ID:INS7SIu4
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

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

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

Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードう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

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

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
0004デフォルトの名無しさん
垢版 |
2023/07/17(月) 18:37:08.11ID:RkwKE2ib
うまいプログラムの構造がさっぱりわかりません…

入門書を終えて早速何か作ってみようと思い、画像を拡張子を変換するソフトを書いています
リーダブルコードにはシンプルであれとか単一責任うんぬんと書いて納得したつもりでしたが、いざ実践しようとするとわからんわからん

「画像を読み込む関数」、「画像を変換する関数」、「画像を保存する関数」
と作成してきましたが、pillowいじくって1、2行なので車輪の再発明どころか傷つけてる感じです
1つの関数にすべて集約してconvertと名付けたら良くないのでしょうか…
0005デフォルトの名無しさん
垢版 |
2023/07/17(月) 20:35:13.91ID:G9UN+W0k
>>4
標準ライブラリを見るとわかると思うけど、1, 2行だけの関数は別に悪いことではないし、珍しい事でもない
その関数のテストを書いたり、メンテしたりしてると実感できる
他の人の書いたコードとか特にそうだと思う

ていうか、色々詰め込んだ関数作ってしまってから、リファクタリングというものを知って悩むことも多いよね
最初から書き直した方が早いんじゃねみたいな
0008デフォルトの名無しさん
垢版 |
2023/07/17(月) 20:52:17.81ID:G9UN+W0k
忘れてたり知らない関数を触ろうとするとき、ドキュメントとかコメントも頼るけど実際たどるのはコードだから一つの関数に盛沢山だったら結構大変
0009デフォルトの名無しさん
垢版 |
2023/07/17(月) 21:52:54.20ID:0bPr8N4/
極端な話、外からの役割がconvertなら内部はどうなっててもいい
最初から良質なコードは書けなくて当然
いつでもリファクタできる体制でいることが大事かな
0010デフォルトの名無しさん
垢版 |
2023/07/18(火) 16:13:32.68ID:fggT64M6
画像処理の勉強してるんなら
pillow(PIL)使ったら負け
0011デフォルトの名無しさん
垢版 |
2023/07/18(火) 20:03:13.98ID:C4fQDhf3
病∞∞∞∞!
漠∞∞∞∞∞!
向∞∞∞∞∞∞!
大∞∞∞∞∞∞∞!
度∞∞∞∞∞∞∞∞!
蔵∞∞∞∞∞∞∞∞∞!
0012デフォルトの名無しさん
垢版 |
2023/07/18(火) 23:01:13.81ID:OPFTyCeA
ご意見ありがとうございます
元画像を消去するかとか保存先はどうするかとか考えてたら複雑になってきたのでクラスを設けました
パスの扱いと画像の操作で2つ役割があるけどもう面倒なのでこのまま突き進みます
未来の修正は未来の自分に託す、ということで…
0013デフォルトの名無しさん
垢版 |
2023/07/18(火) 23:04:24.96ID:/0siiIN2
今の自分が把握できないコードを
記憶が曖昧になった未来の自分がどうにかできると思うのか…
0014デフォルトの名無しさん
垢版 |
2023/07/19(水) 11:43:21.48ID:x9es5cRL
成長した場合「だれだこんなバカなコード描いたのは」

成長してない場合「何描いてたか判んね」
0016デフォルトの名無しさん
垢版 |
2023/07/21(金) 08:51:32.52ID:eg4croCb
pythonは関数が全部外から見られてしまうから
プライベートメソッドにする代わりに関数内関数にして隠すってやり方もある
なお速度は犠牲になる
0017デフォルトの名無しさん
垢版 |
2023/07/21(金) 09:17:50.55ID:K8DDsRHC
見えるからって使うほうがどうかしてる
リフレクション系がお手軽だからこんだけ周辺ツール充実してんだし
0018デフォルトの名無しさん
垢版 |
2023/07/21(金) 09:48:08.75ID:nT1sUe2+
>>16
setter getterでそんなに速度落ちるの……
0019デフォルトの名無しさん
垢版 |
2023/07/21(金) 14:10:39.48ID:73tgjVOL
>>16
class の中の関数というかプライベートは
hoge() #public
_hoge() #protected
__hoge() #private
みたいなイメージ
0021デフォルトの名無しさん
垢版 |
2023/07/23(日) 06:27:28.03ID:AFBOcw0H
>>4
そのconvert関数のアイデアは、ファサードパターンとしてよく知られるデザインパターンのひとつ。
まあファサードはわざわざ勉強しなくてもすぐに気がつく小ネタ程度のパターンだけど、他には知っておくと役に立つものがいっぱいある。
0022デフォルトの名無しさん
垢版 |
2023/07/24(月) 08:59:12.66ID:hxZ6wCW4
f文字列はpython3.6だから7年前の新機能だぞ
もうなんのことわりも無しに使っていいだろ
0023デフォルトの名無しさん
垢版 |
2023/07/24(月) 09:28:19.51ID:b4teMFwb
>古いPythonでは動かないから

"{}".format() だってもっと古いPythonだと動かないんじゃね
0026デフォルトの名無しさん
垢版 |
2023/07/26(水) 11:04:30.02ID:62leoIOO
tkinterでウィンドウサイズを取得したいのですがうまくいきません
https://techiedelight.com/compiler/?a1ad

root.geometry("500x300")を実行して、実際に表示されるウィンドウサイズもそのくらいの大きさなのですが
ラベルに表示される内容は"1x1+0+0"となってしまいます
"500x300+<実際の表示位置>"にならないのは何故ですか
0027デフォルトの名無しさん
垢版 |
2023/07/26(水) 13:02:45.63ID://q3wVd7
>>26
それだとroot.mainloop()に入ってからウィンドウが表示されるから
windowSize = root.geometry() の前に root.update() するか何らかのイベント駆動にすればいい
0028デフォルトの名無しさん
垢版 |
2023/07/26(水) 13:29:20.90ID:62leoIOO
>>27
あーそういうことだったんですね!
ありがとうございます!
0029デフォルトの名無しさん
垢版 |
2023/07/29(土) 02:15:32.83ID:hQSx1H1s
>>> p=0xf
>>> y=0x8
>>> t=0x1
>>> print(int(p),int(y),int(t))
15 8 1

0xfは16進数なのになぜ16ではないのでしょうか
ということはこの8や1も機械らしく0から数えたものを指している?
int('0xf') + int('0xf')のようなものに32を期待しているのにこれでは30ではないかと困っています
え、そうだったのかという初心者なりの困惑もあります
困らないものなんでしょうか
0030デフォルトの名無しさん
垢版 |
2023/07/29(土) 02:22:42.13ID:zrA9yudI
>>29
エエエ
そこから?
10進数の一桁の最高値が10でなく9なのを見れば
16進数の1桁の最高値が15なのも納得できるはずだが
0031デフォルトの名無しさん
垢版 |
2023/07/29(土) 02:36:31.67ID:hQSx1H1s
半泣きになりながらどこか承服しかねる気持ち😣
for文のiなどはたしかに0から始まることを意識して扱ったりしますが
こういうのは取り扱いやすく思ったままの値をくれるものだとばかり

>>> u=hex(16)
>>> print(type(u))
<class 'str'>
>>> print(u)
0x10

あっ!😡遁走
0032デフォルトの名無しさん
垢版 |
2023/07/29(土) 02:57:52.60ID:hQSx1H1s
0xf最後の表記なfは16なんだとなぜか思い込んでた
0---9abc----fで桁上がりが16か、まさにそこから?って質問でした失礼しました
0034デフォルトの名無しさん
垢版 |
2023/07/29(土) 11:41:01.32ID:VU0UW7fl
Pythonとは関係ない話だけど
「午前11時45分」
「午後12時45分」
「午後1時45分」
時刻のこれだけは理解に苦しむ
0035デフォルトの名無しさん
垢版 |
2023/07/29(土) 12:03:10.60ID:voLhTcGw
「午後12時45分」は0時45分表記が自然だけど
「午前11時45分」「午後1時45分」は普通じゃね?こんなのが理解に苦しむ理由が分からんw
0036デフォルトの名無しさん
垢版 |
2023/07/29(土) 12:20:49.11ID:d4/f4P3b
まさにその二つに挟まれる違和感を言いたかったのであろう。
分かりにくいけどw
0037デフォルトの名無しさん
垢版 |
2023/07/29(土) 12:25:33.47ID:k4ALHt1m
>>32 >>33
なるほどね、その違和感を補正するには16進数という表記が10進数で書かれてるから対応が分かりづらくなると
じゃあ16進数で書けばいいな
16進数(10進数表現)
⇔ 10進数(16進数表現)

ということで数列(0,1,2,…)をベースに拡張するなら何進数であっても
N進数(10進数表現)
⇔ 10進数(N進数表現)
なのでした
0039デフォルトの名無しさん
垢版 |
2023/07/29(土) 13:03:23.42ID:wiWA5e07
12時はあっても0時はないって事かな
文字盤的に
0041デフォルトの名無しさん
垢版 |
2023/07/29(土) 14:24:22.66ID:QYz+mhHg
1~12の数字のカテゴリ分けと午前午後のカテゴリ分けが
連動してないってことだろ
0042デフォルトの名無しさん
垢版 |
2023/07/29(土) 15:08:58.12ID:D+udayEV
>>38 超抜粋
> 日本における現行法令の上で「午前0時」、「午後12時」という2つの言い方が認められている。
> 「午後0時」という言い方は、日本における現行法令に基づく限り、「定義上は存在しない」ということになる。

午前は、0時から12時の13進数
午後は、1時から12時の12進数
ということか
0043デフォルトの名無しさん
垢版 |
2023/07/29(土) 16:41:06.68ID:zrA9yudI
>>32
ドンマイ
自分は1mが60cmだとずっと思ってて恥をかいたことあり
人間は恥をかいて成長する
0044デフォルトの名無しさん
垢版 |
2023/07/30(日) 09:40:35.26ID:azQXcNDB
>>32
逝ってヨシ
0046デフォルトの名無しさん
垢版 |
2023/07/30(日) 09:45:59.38ID:azQXcNDB
>>42
午前11時59分の1分後は午前12時00分ではなくて午後12時00分だろ
午後11時59分の1分後は午後12時00分ではなくて午前0時00分だろ

午前は、0時から11時の12進数
午後は、12時から11時の12進数
何も間違っていない
0047デフォルトの名無しさん
垢版 |
2023/07/30(日) 10:55:47.99ID:xSgp5A2Q
話はもう>>32で終わってるのでもういいです
0048デフォルトの名無しさん
垢版 |
2023/07/30(日) 12:26:13.13ID:WLopXdVL
>>46
>>38 抜粋
> 子刻(正子)については、午前の欄の最初に「(午前)零時即午後十二字(子刻)」、つまり「午前0時=午後12時」と明記されている。

これだけ混乱させることが出来る日本の時刻表記は最高だぜ
0050デフォルトの名無しさん
垢版 |
2023/08/01(火) 03:09:21.22ID:8wU+ches
あほしかいないねこのしれ
0051デフォルトの名無しさん
垢版 |
2023/08/01(火) 09:39:07.75ID:3Oe4XjgR
for/whileのelseが罠過ぎる
breakせずにループを抜けた時だけ実行されるって誰が使うんよこんなの
でも認定試験に出るから覚えないといけないんだよなー
0052デフォルトの名無しさん
垢版 |
2023/08/01(火) 09:57:49.86ID:NhWjWTcR
if/elseと考え方は同じ気がする
whileの条件がFalseになった一回だけelse内を実行するって事だよね?
0053デフォルトの名無しさん
垢版 |
2023/08/01(火) 09:58:26.84ID:wCGQ0oT2
for else 便利よ
0054デフォルトの名無しさん
垢版 |
2023/08/01(火) 10:20:49.26ID:wCGQ0oT2
具体的に言うとbreakしたのか最後まで回ったのかがすぐ判る
elseが無いと自分で別にフラグ用意するだろ?その手間が省ける
0058デフォルトの名無しさん
垢版 |
2023/08/01(火) 18:33:15.93ID:9KETYfCe
同等でも構造が明示的でないのが悪
シンタックスシュガーの存在をかんがえてみて
0059デフォルトの名無しさん
垢版 |
2023/08/01(火) 21:46:51.73ID:0U4GDggW
for文でイテレーターはnextで次々に呼び出してるのは分かったんだけどlistもindexの最後まで同じような感じで呼び出してるの?
list型の変数をdir()で調べてもそれらしいものが分からなくて気になった。
c言語のfor(i=0;i<100;i++){}みたいなのがないか内部で行われてると思っていい?

ちなみにpythonもcも初心者です。
0061デフォルトの名無しさん
垢版 |
2023/08/01(火) 23:30:53.11ID:QWA4KSJy
>>59
pythonのリストは
ja.wikipedia.org/wiki/連結リスト
の片方向リスト
[12,99,37]の内部表現は

[12| ]→[99| ]→[37| ]→[×]

のようになる
リストイテレータが最初にそのリストをを参照してた場合
nextを呼ぶと最初の要素12を返しイテレータ自身はリンクを一つたどって

[99| ]→[37| ]→[×]

を参照するように変わる
次にnextを呼ぶと99を返して[37| ]→[×]を参照するように変わる
イテレータが[×]を参照しているときにnextを呼ぶとStopIteration例外になる
0064デフォルトの名無しさん
垢版 |
2023/08/02(水) 09:06:22.08ID:4pI1Wfnv
>>59
Py_OBJECT でぐぐれ
0065デフォルトの名無しさん
垢版 |
2023/08/02(水) 22:10:41.51ID:sw1byEhk
>>59
質問した者です。
みなさん、ありがとうございます。
0067デフォルトの名無しさん
垢版 |
2023/08/06(日) 00:24:31.88ID:A4BaWyM2
tkinterのText()を扱うクラスを作ろうとしたんですが次がわかりません
def __init__(self)内でtext = Text()とすると、別のメンバ関数でtextが見えずエラー
なので、クラス変数(?)として宣言したいのですが・・・どうすれば?
0069デフォルトの名無しさん
垢版 |
2023/08/06(日) 03:46:54.50ID:GdBlafvI
初めてリンター入れてみたらこれでもかってくらい指摘入って面食らいました
「そこまで言う意味ある?」って気持ちは湧きつつも、自分は文句言うほどレベル高くないし大人しく従ってますが
ググるとPEP8に従わないやつは糞だとか原理主義なこと言う輩が多いのが気になりました
こういう輩は無視してOKですかね?
0070デフォルトの名無しさん
垢版 |
2023/08/06(日) 09:00:08.26ID:3Gfiav7J
>>69
村のルールに従わない住人が村八分にされるのと同じで
PyhtonはPEPを信条に運営されているから
PEPに従わないヤツを排除する動きがあるのは当然
それを踏まえてどう行動するかは君次第
0072デフォルトの名無しさん
垢版 |
2023/08/06(日) 09:28:21.16ID:ES7Kp55N
>>67
まずクラス変数とインスタンス変数とローカル変数とグローバル変数の
スコープの区別ついてないんじゃないか?
0074デフォルトの名無しさん
垢版 |
2023/08/06(日) 10:22:46.43ID:Z6X8w1Qb
ルールがないと混沌化するしイザコザが発生するから
たしかに原理主義的だけど公式で推すのが平和的でスマート
0075デフォルトの名無しさん
垢版 |
2023/08/06(日) 12:09:14.32ID:FBMr5AjE
>>73
Rustは自由だよ
例えばある企業があるいはあるプロジェクトが各々の独自のスタイルガイドを定めて用いてもよいとなっている

一方でスタイルガイドについて定めのない一般的な場合はRust公式のrustfmtの整形出力フォーマットに従う
標準のスタイルガイドが定まっているプログラミング言語は無用な論争や混乱もなく優れているよ
0077デフォルトの名無しさん
垢版 |
2023/08/06(日) 14:22:46.13ID:Aw/BJwB+
自由とかギークを何よりも重視する従来のOSS的価値観から見れば異端
プログラミングそのものが好きなのか、プログラミングはただの道具なのか
価値観の違い
0080デフォルトの名無しさん
垢版 |
2023/08/08(火) 22:18:44.51ID:7qf12Zez
pythonの仮想環境って何で仮想環境って名前にしたの?
単にパス通したりして工夫してるだけで既存システムはそのまま使ってるだけなのに
仮想化って大げさだと思うけど
このネーミングに反対する意見って出なかったの?
0081デフォルトの名無しさん
垢版 |
2023/08/09(水) 08:07:56.12ID:aG7casYO
>>80
それは、virtualなんちゃらの歴史を知らなすぎかなあ。
hardware virtualizationだけがvirtualなんちゃらを名乗っていいわけじゃないから。
0082デフォルトの名無しさん
垢版 |
2023/08/09(水) 09:22:03.38ID:GQHrrnYT
>>80
一つのマシンで複数の環境を切り替えて使える場合、各々の環境は仮想的であると言える
何もおかしなところはない
0083デフォルトの名無しさん
垢版 |
2023/08/09(水) 11:48:11.84ID:msOTygD8
単に実環境を切り替えてるだけなら仮想的ではないわな
一部は共有してるけどあたかも独立した環境であるかのように扱える仕組みでも有れば仮想的と言える(Python自体は共有してるけど独立した環境であるかのようには扱えない)

まぁ文句言っても仕方ないのでよくあるPython独特の用語の一つだと思って受け入れるしかない
0084デフォルトの名無しさん
垢版 |
2023/08/09(水) 16:19:24.60ID:coMLMuQp
>>80
jail とか vm とか色々なアプローチがあるな
0085デフォルトの名無しさん
垢版 |
2023/08/09(水) 17:38:23.32ID:ZMLVZrF/
環境変数によって環境を変えて動作を変えることは
単なる環境であって仮想環境たる要素が何もない話と同じかな
0086デフォルトの名無しさん
垢版 |
2023/08/09(水) 18:33:59.91ID:3n0Peewm
詭弁に近いけどPythonのみの隔離環境とみると
venvもchrootもDockerも同種にみえん?
元になったvirtualenvのサイトには
virtualenv is a tool to create isolated Python environments.
と書いてるし軽いノリで付けた言葉が残ってるだけにもみえる
0087デフォルトの名無しさん
垢版 |
2023/08/09(水) 23:14:32.90ID:aG7casYO
仮想メモリとかだって一種の隔離環境なわけだしね。具体的にどんな要件を満たしてたら仮想で、満たしてなかったら仮想じゃないってものじゃない気がするけどな。
他の言語だって仮想環境って言ったりするでしょ。
0088デフォルトの名無しさん
垢版 |
2023/08/09(水) 23:34:07.10ID:ZMLVZrF/
例えば
実メモリアドレスに対して仮想メモリアドレス
実ディレクトリパスに対して仮想ディレクトリパス

そういう実と仮想がないならば
今回の場合は仮想環境ではなく単なる環境切り替えが正解かも
0089デフォルトの名無しさん
垢版 |
2023/08/09(水) 23:38:38.24ID:hnMBPj/l
単に「気分はバーチャル」だっただけみたいだな
0093デフォルトの名無しさん
垢版 |
2023/08/10(木) 04:01:48.37ID:GpbD/XFE
context switching
0094デフォルトの名無しさん
垢版 |
2023/08/10(木) 07:30:05.04ID:laGIFgwC
virtualイコール仮想的って不十分なんだよね
実質的にはみたいな意味もあって、公式には離婚してないけど実質離婚状態みたいな場合でもvirtual使ったり
他には実質的には内紛みたいな場合だと、virtual civil warみたいに表現するし、virtual civil war訳すときに仮想的な紛争とか訳したら誤訳になる

tPythonのvenvは実行環境ぐらいに捉えてる
0095デフォルトの名無しさん
垢版 |
2023/08/10(木) 07:31:31.17ID:laGIFgwC
tは無視して
topコマンドのvirtの話入れようとした痕跡
0098デフォルトの名無しさん
垢版 |
2023/08/11(金) 16:29:22.45ID:RdYRFZwQ
>>94
>tPythonのvenvは実行環境ぐらいに捉えてる
「実質的には」はどこに行ったの?
名目的にもvenvはただの実行環境だからvirtualはそぐわないよね?
0100デフォルトの名無しさん
垢版 |
2023/08/12(土) 03:53:49.69ID:k0rCrKbL
まずvenvが対象にしているのはライブラリ依存関係の環境(==pip)である。
何がvirtualでないenvかを考えるとシステムにインストールしたPythonに紐づくpipかな。
様々な用途の開発で同じグローバルなpipを使うのは問題があるし、Linuxの場合はOSが使ってるから不用意にシステムPythonのpipを使わないほうが良かったりする。

プロジェクトごとに分離した依存関係管理ができるツールの1つとしてvenvがある

独立環境とか分離環境とかがより適切な命名だったのかもしれないけど、業界の慣習的な命名に後からとやかく言ってもしょうがないかもね
レスを投稿する


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