【まず1嫁】くだすれPython(超初心者用) その59

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
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 ###
2023/07/13(木) 19:23:06.59ID:WmHCeekq
>>1
まず1乙
2023/07/14(金) 12:11:43.42ID:8YyBZiGG
>>1
O2
2023/07/17(月) 18:37:08.11ID:RkwKE2ib
うまいプログラムの構造がさっぱりわかりません…

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

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

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

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

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

root.geometry("500x300")を実行して、実際に表示されるウィンドウサイズもそのくらいの大きさなのですが
ラベルに表示される内容は"1x1+0+0"となってしまいます
"500x300+<実際の表示位置>"にならないのは何故ですか
2023/07/26(水) 13:02:45.63ID://q3wVd7
>>26
それだとroot.mainloop()に入ってからウィンドウが表示されるから
windowSize = root.geometry() の前に root.update() するか何らかのイベント駆動にすればいい
28デフォルトの名無しさん
垢版 |
2023/07/26(水) 13:29:20.90ID:62leoIOO
>>27
あーそういうことだったんですね!
ありがとうございます!
29デフォルトの名無しさん
垢版 |
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ではないかと困っています
え、そうだったのかという初心者なりの困惑もあります
困らないものなんでしょうか
2023/07/29(土) 02:22:42.13ID:zrA9yudI
>>29
エエエ
そこから?
10進数の一桁の最高値が10でなく9なのを見れば
16進数の1桁の最高値が15なのも納得できるはずだが
31デフォルトの名無しさん
垢版 |
2023/07/29(土) 02:36:31.67ID:hQSx1H1s
半泣きになりながらどこか承服しかねる気持ち😣
for文のiなどはたしかに0から始まることを意識して扱ったりしますが
こういうのは取り扱いやすく思ったままの値をくれるものだとばかり

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

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

ということで数列(0,1,2,…)をベースに拡張するなら何進数であっても
N進数(10進数表現)
⇔ 10進数(N進数表現)
なのでした
38デフォルトの名無しさん
垢版 |
2023/07/29(土) 12:59:40.05ID:TDos2+q3
>>34-35
0時表記を用いるのは日本だけらしいよ。
調べてみると結構面白い。
https://ja.wikipedia.org/wiki/%E5%8D%88%E5%89%8D%E3%81%A8%E5%8D%88%E5%BE%8C#%E6%99%82%E5%88%BB%E8%A1%A8%E7%8F%BE
39デフォルトの名無しさん
垢版 |
2023/07/29(土) 13:03:23.42ID:wiWA5e07
12時はあっても0時はないって事かな
文字盤的に
2023/07/29(土) 13:29:30.21ID:oiIFGOV1
https://i.imgur.com/ZfBFIAn.png
Googleカレンダー
2023/07/29(土) 14:24:22.66ID:QYz+mhHg
1~12の数字のカテゴリ分けと午前午後のカテゴリ分けが
連動してないってことだろ
2023/07/29(土) 15:08:58.12ID:D+udayEV
>>38 超抜粋
> 日本における現行法令の上で「午前0時」、「午後12時」という2つの言い方が認められている。
> 「午後0時」という言い方は、日本における現行法令に基づく限り、「定義上は存在しない」ということになる。

午前は、0時から12時の13進数
午後は、1時から12時の12進数
ということか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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