Pythonのお勉強 Part74at TECH
Pythonのお勉強 Part74 - 暇つぶし2ch158:デフォルトの名無しさん
24/10/14 12:55:18.84 +rCJDD4J0.net
>>154
おまえはズレてるのでちょっと会話できないわ すまんね
そもそも>>131は別人だしお前以外は流れでわかってると思うよ

159:デフォルトの名無しさん
24/10/14 12:58:59.46 iqlRL8W80.net
>>158
本人の書き込み
109 デフォルトの名無しさん (ワッチョイ 4f54-O9y3) sage 2024/10/12(土) 01:09:25.66 ID:3/0Ne1V+0
import datetime
td = datetime.timedelta(seconds=1817)
print(td)
これで '0:30:17' が表示される
ただし、'00:30:17' ではない
print(f'{td:%H:%M:%S}')
みたいなことをしてもエラーになる
妙に融通が利かない

160:デフォルトの名無しさん
24/10/14 13:00:47.49 iqlRL8W80.net
1817秒を30分17秒と単純に割り算をして、文字列をくっつければいい簡単な話だぜ。

161:デフォルトの名無しさん
24/10/14 14:04:34.65 2T1ySmhp0.net
54に続いて78が爆誕か
>>143の3行目とかマジでどういう脳ミソしてんだろう

162:デフォルトの名無しさん
24/10/14 14:11:38.27 mb36WxU50.net
>>155
printによる出力フォーマットは出力する値の型(ここではdatetime型やtimedelta型)に依存してるんだぞ

163:デフォルトの名無しさん
24/10/14 14:11:47.79 vJAIv8ZI0.net
最初の質問って「ある」「ない」を聞いてるだけじゃね?
無ければ自分で作るかぁ、みたいな
作り方なんて分かってる上での質問でしょ

164:デフォルトの名無しさん
24/10/14 14:28:50.30 CJVgcXbL0.net
>>162
その理論だとprintにオプションなくてもいいよね

165:デフォルトの名無しさん
24/10/14 15:04:56.69 Nrkl1oO4d.net
判ってると思うけど
1000 で割るより 1000000 で割った方が良い

166:デフォルトの名無しさん
24/10/14 15:56:41.32 iqlRL8W80.net
数値

時刻

文字列
という奇妙なデータ型変換

167:デフォルトの名無しさん
24/10/14 16:00:42.53 cfRK145W0.net
>>166
馬鹿が発狂した

168:デフォルトの名無しさん
24/10/14 16:05:57.37 iqlRL8W80.net
最終的な時刻フォーマットは時、分、秒がわかっていればいいだけなのにな。
1817秒÷60の結果で30分と17秒という分数と秒数が出せる。

169:デフォルトの名無しさん
24/10/14 16:38:57.17 u3iQG5/50.net
def convert_1817(sec):
  if sec == 1817:
    return '00:30:17'
  else:
    raise ValueError('sec must be 1817')
print(convert_1817(1817))

170:デフォルトの名無しさん
24/10/14 17:32:36.62 dK7b/9hZ0.net
20レスもしていて簡単なサンプルコードも書けないという事実

171:デフォルトの名無しさん
24/10/14 17:41:03.15 rj+zMLjj0.net
むしろ誰がコードなんて欲してるの?

172:デフォルトの名無しさん
24/10/14 18:10:36.90 Q0jRvIar0.net
回答としては
質問の要求を満たす何らかの
・関数
・datetimeやtimeなどオプションやメソッド
の掲示、なければ無い
場合によってはノーコードにもならない
ただひとつ確実に言えることは
割る60だの算出方法にひたすら拘っているアスペっぽいやつが的外れだということ

173:デフォルトの名無しさん
24/10/14 18:27:31.94 /mng7eSx0.net
アスペおじさんもだけど君も大概やで
>>131とか>>164とかギャグじゃなければヤバいぞ

174:デフォルトの名無しさん
24/10/14 18:33:31.99 iqlRL8W80.net
>>170
数字とコロンを連結するというところがなぜかprint関数でやるというヘンテコ話になっているからネタかもしれない。

175:デフォルトの名無しさん
24/10/14 19:40:06.63 m36PLLju0.net
経験上、文句を言うだけで理由を言語化できない人の方がヤバい人は多いですね

176:デフォルトの名無しさん
24/10/14 19:42:21.98 dmvKd1h40.net
1f78-oCgEだけは段違いで会話が成立しないレベル
レス数から言ってもわざとやっているとは思えない

177:デフォルトの名無しさん
24/10/14 19:44:03.40 iqlRL8W80.net
printさせるのはいかにも入門書という感じだけどさ、データ型の概念もなければ、データ型を変換するキャストも知らない。
ms = 1817
= f'{num:04}'
ji = = f'{num:(ms // 3600)02
fun = ms // 60
byo = ms % 60
() + (1817 / / 60) + ':' + (1817 % 60)

178:デフォルトの名無しさん
24/10/14 19:44:17.15 iqlRL8W80.net
めんどくせぇな

179:デフォルトの名無しさん
24/10/14 19:46:36.32 iqlRL8W80.net
教えてクレクレ

180:デフォルトの名無しさん
24/10/14 19:49:17.59 iqlRL8W80.net
自分はわからないのでお金を出して他人にやってもらうというのが正解だ
段階を踏まずにいきなり最終形にしたがるのも初心者の特徴

181:デフォルトの名無しさん
24/10/14 20:22:43.99 cfRK145W0.net
ID:iqlRL8W80
基地外確定

182:デフォルトの名無しさん
24/10/14 21:40:22.67 SB1Ci/250.net
関数一つ設計することが出来ないおじさん二人の醜い争い

183:デフォルトの名無しさん
24/10/15 10:06:05.50 vVD3TI360.net
今からPython始めても食ってけない?
gptのせいでコード自動生成されてしまうから

184:デフォルトの名無しさん
24/10/15 12:07:07.85 4n6/+UIx0.net
>>183
その質問もまずはChatGPTに聞くとよい

185:デフォルトの名無しさん
24/10/15 12:20:33.41 vNiVptT20.net
コードを改良するプログラムを生成するように依頼
そのプログラムで自分自身を改良し続けるようにして実行

186:デフォルトの名無しさん
24/10/15 17:12:58.10 ISNWUP6x0.net
プログラマになれないのに諦めない心意気は買うが辛くなるだけだぞ

187:デフォルトの名無しさん
24/10/15 17:22:58.02 p9LvrA/f0.net
Python系YouTuberになるための肩書としてプログラマなるならありかも知れん

188:デフォルトの名無しさん
24/10/15 19:27:15.97 obclbCzJ0.net
今からPythonするならAIを設計する側に回るように頑張るのがいい
もしAIがより高性能なAIを設計できるようになったらそもそも社会が別物になるだろうし

189:デフォルトの名無しさん
24/10/16 17:27:46.34 98gvsp6K0.net
matchってswitch?
なんで変な名前なの?

190:デフォルトの名無しさん
24/10/16 17:35:39.03 qvWniM9xd.net
>>189
馬鹿にはそう見えるのか

191:デフォルトの名無しさん
24/10/16 17:49:43.98 uCgI/8kk0.net
C言語の時点でswitchは特に便利でもなかった
そこだけインデントが変になるし、breakまみれになるし
それでも推奨されたのはコンパイルで高速化できるから
分岐のかたまりではなくテーブルでジャンプするように変換してくれる
だから必然的にpythonにswitchなんか不要

192:デフォルトの名無しさん
24/10/16 18:18:16.18 98gvsp6K0.net
>>191

高速化は事実だが、
テーブルうんぬんは間違い。

193:デフォルトの名無しさん (ワッチョイ 9f5a-G8R7)
24/10/16 20:02:33.53 P8hUv73s0.net
高速化として意味があったのは昔の話だけどね

194:デフォルトの名無しさん
24/10/17 18:14:57.71 lX/5R9Jx0.net
profile指定する以外の方法でseleniumでメルカリにログインする方法が判らん

195:デフォルトの名無しさん
24/10/17 20:37:13.97 rL5MZKqkH.net
>>189
別に変じゃないだろ
マッチ(match)させてその結果により分岐(switch)するという二段階の処理
用語として前を取るか後ろを取るかだけの話だ

196:デフォルトの名無しさん
24/10/17 20:43:44.76 91c0XYHa0.net
パターンマッチのmatch
switchにはパターンマッチの機能はない

197:デフォルトの名無しさん
24/10/17 20:52:52.68 l8JBYm7A0.net
>>195
え?
じゃ、switchでいいでしょ

198:デフォルトの名無しさん
24/10/17 21:15:16.24 lX/5R9Jx0.net
条件に合うか検査して分岐するんだからswitchだよな
英語のswitchってそんな多数分岐のニュアンスあるか? という疑問もある
AからBへswitchみたいな、2分岐がせいぜいなのでは

199:デフォルトの名無しさん
24/10/17 21:31:53.31 rL5MZKqkH.net
>>197
じゃ、て何よ
どっちかなんだからmatchでもいいじゃん

200:デフォルトの名無しさん
24/10/17 21:41:55.68 lX/5R9Jx0.net
switchと似て非なるもの、という意味でmatchにしたんだろうな
-tchが共通してるのは意図的
switchと同じと思われることを避けるというよりは、
switchとは違うのだよswitchとはという積極的な意思表示

201:デフォルトの名無しさん
24/10/17 21:50:15.51 yeHUFxEBa.net
switchに2択という意味は無いぞ

202:デフォルトの名無しさん
24/10/17 21:55:19.50 lX/5R9Jx0.net
longmanを引くと
1. to change from one thing to another, usually suddenly
2. to secretly remove one object and put another similar object in its place
3. to help someone you work with who needs time away from the job by agreeing to work certain hours for them if they do the same for you
4. to change the way a machine operates by using a switch
1.ある物から別の物へ、通常は突然変えること。
2.ある物をこっそり取り除き、別の似たような物をその場所に置くこと。
3. 一緒に働いている人が仕事から離れる時間を必要としている場合、その人が自分と同じことをしてくれるなら、その人のために一定の時間働くことに同意することによって、その人を助けること。
4. スイッチを使って、機械の作動方法を変えること。
何かからanotherへ切り替えの意味なんだよな

203:デフォルトの名無しさん
24/10/17 21:59:22.15 lX/5R9Jx0.net
ああ、2分岐でいいんだ
だからcaseなんだ
この場合はこれに切り替え、この場合は、という2分岐がたくさん書いてあるのか
長年の違和感がやっと解決した

204:デフォルトの名無しさん
24/10/17 22:45:28.58 iAHoYOGo0.net
with open(file_path, "r") as file:
lines = file.readlines()
これだと普通に動くのですが
with open(file_path, "r" , encoding="utf-8") as file:
lines = file.readlines()
こういう風にopen関数に第3引数を指定すると、実行してもなぜかすぐ終了してしまいます
原因わかる形いませんか?

205:デフォルトの名無しさん
24/10/17 22:49:09.06 iAHoYOGo0.net
すみませんencoding="shift-jis"にしたら動きました
質問したらすぐに自己解決する不思議・・・というか何も即終了しなくても

206:デフォルトの名無しさん
24/10/18 01:36:02.01 Ut6mxk750.net
でも
matchって色々機能があるね
使うのめんどくさいな

207:デフォルトの名無しさん
24/10/18 03:44:59.91 5Kk3482aa.net
Zennにもゴミ記事ってあるんだな
URLリンク(zenn.dev)

208:デフォルトの名無しさん
24/10/18 05:05:39.02 YY9Hp1UeH.net
>>206
うん
if~elifで済ませてきたんだから今更だし
確かPythonには一つのことをするのに複数のやり方があるのはご法度って考えがあったはずだし
開発陣の頭がボケてるとしか思えん

209:デフォルトの名無しさん
24/10/18 07:12:42.20 HW2s8lVK0.net
マッチでもスイッチでもいいが、CPU内では比較命令をそのたびにしてプログラムをジャンプすることでロジックをスルーする。

210:デフォルトの名無しさん (アウアウエー Sa3f-mL/d)
24/10/18 11:16:24.04 wVDH4S6Qa.net
choiceでも良いし
selectでも良い

211:デフォルトの名無しさん (ワッチョイ 3b54-I4pY)
24/10/18 11:26:19.64 gGHJI5N60.net
branchかなあ
複数に分岐する意味も最初から持ってる
でもアセンブラ的にはブランチは条件ジャンプと同義、、、

212:デフォルトの名無しさん
24/10/18 13:52:06.91 wVDH4S6Qa.net
case の方を前面に出した言語もあったはずω

213:デフォルトの名無しさん
24/10/18 15:40:13.78 Ut6mxk750.net
>>206
速度は場合によるようだね
ifのほうが早いケースもある

214:デフォルトの名無しさん
24/10/19 09:16:44.68 XsGIQo9N0.net
print(mes, file=(f, sys.stdout))
みたいなことができればいいのに

215:デフォルトの名無しさん (ワッチョイ cf01-sfBM)
24/10/19 10:19:20.60 +tdI/ffv0.net
複数箇所にwrite()するクラスを用意すれば簡単にできるけど
ちゃんとしたアプリケーションならロガーを使うし
簡易的なスクリプトならpythonの出力をteeするので
普通はやらない

216:デフォルトの名無しさん (ワッチョイ 3b54-I4pY)
24/10/19 10:32:03.25 XsGIQo9N0.net
ログではないんだよな
結果をファイルに出力しながら、経過の情報を画面に出力する
所要時間はこれだけでした、みたいな両方に出力したい内容は両方に出す

217:デフォルトの名無しさん
24/10/19 11:05:51.25 Qn7y5thLd.net
>>216
>>215

218:デフォルトの名無しさん
24/10/19 11:15:28.75 +tdI/ffv0.net
>>216
であれば余計に1つのprintで処理する内容じゃないから
違う形の抽象化を考えたほうがいいよ
どういう形の抽象化がいいかは将来的な変更の可能性や
コンフィグ可能にしておく要素によって変わってくる

219:デフォルトの名無しさん
24/10/19 11:24:28.68 XsGIQo9N0.net
いや、同一内容を2箇所に出力できれば片付く問題なんよ

220:デフォルトの名無しさん
24/10/19 11:30:30.87 +tdI/ffv0.net
>>216
経過情報や所要時間はこれだけでしたみたいな出力は一般的にはログって言うんだよ

221:デフォルトの名無しさん
24/10/19 11:32:49.65 +tdI/ffv0.net
>>219
printで2箇所に出力したいなら>>215に書いてるように
簡単にできるんだからそうすればいいんじゃない?
いい設計ではないけどね

222:デフォルトの名無しさん
24/10/19 11:35:48.54 XsGIQo9N0.net
logは記録に残すもので、画面にだけ表示して消えていいものはlogとは言わない
用語の定義はどうでもいいんだよ
こういう機能があると便利という提案に対して、
それはこの機能でカバーできるから不要であると反論するならば、
全てのケースでカバー可能という悪魔の証明に挑むことになる
代替の方法はあまり良くなくて、提案どおりが最適なんだから、
反論の間違いを認めないと何も進まない

223:デフォルトの名無しさん
24/10/19 11:40:20.05 3bJ6rPck0.net
また時刻の頭に0が入っていないとかいう馬鹿と同じ馬鹿か

224:デフォルトの名無しさん
24/10/19 12:10:24.78 3T8uATjna.net
>>219
>>215

225:デフォルトの名無しさん
24/10/19 12:13:44.20 RjXmMaIpd.net
teeは全てのケースでカバー可能

226:デフォルトの名無しさん
24/10/19 13:21:31.18 brAMeERq0.net
あるソフトウェア会社にテスターとして入ったが、
メカ音痴、通信音痴の詐欺人材である。
仕事をやったフリをするのが難しいので、
バグを発見した際はすぐに報告せず、
ストックしておいて小出しに報告するやり方でしのいだ。
なにか問題が発生した際は、
知らない、オレじゃない、アイツがやった、もう済んだこと
を貫徹する現場猫を

227:デフォルトの名無しさん
24/10/19 13:34:16.86 7nKsGerl0.net
オアシス運動w

228:デフォルトの名無しさん
24/10/19 14:24:41.30 5nOU6ym70.net
バカは何やらせてもダメなんだな

229:デフォルトの名無しさん
24/10/19 17:21:49.93 57zOCZIx0.net
だれか教えて。
実行環境はJupyterLab Python3.6.3
今までしっかり動いていたが今朝になって急にPyiCloudがエラーを吐くように。
PyiCloudFailedLoginException: ('Invalid email/password combination.', PyiCloudAPIResponseException('Service Temporarily Unavailable (503)'))
ちなみに同じIDとパスでiPhoneやPCのWebからはログインが出来てる。
これうちだけの環境で起きてるだけかな?

230:デフォルトの名無しさん
24/10/19 20:22:07.21 mCfaJTvfa.net
>>229
>>229

231:デフォルトの名無しさん
24/10/20 02:09:35.96 FYgfn/lt0.net
絵に描いたような老害がおるな

232:デフォルトの名無しさん (ワッチョイ c697-6Oo2)
24/10/20 18:07:25.12 57kWXpit0.net
>>230
>>230
レスの意味がわからん。
一応、昨日の遅くからようやく開発元が認識をしたらしい。
どうもアップル側のセキュリティの方法が変わったとのこと、しばらく対応まちだな。

233:デフォルトの名無しさん
24/10/20 22:57:52.56 XWbRdnBX0.net
>>229
seleniumのwebdriver-managerもそうだけど、こう言う「間を介する」モジュールって片方のアップデート次第で不都合起きるからめんどくさいよね。

234:デフォルトの名無しさん
24/10/20 23:03:29.57 deI+4SvX0.net
windows = gw.getAllTitles()   ←windowsはlist型と表示されてる
for window in windows: ←windowsはリスト型なのに、windowがAnyになる

これなんでAnyになるのか原因わかる人いますか?もう全然分からない・・・
ただリストの中をwindowで回したいだけなのに・・・

235:デフォルトの名無しさん
24/10/20 23:38:07.71 UoXQ+/wnH.net
>>234
何を悩んでるん?
型を気にしなくていいのがPythonを使う最大の強みじゃん

236:デフォルトの名無しさん
24/10/21 03:31:23.77 1Z2dcRpO0.net
>>234
Listの各要素はなんでも持てる型だからAny
>Any
>制約のない型であることを示す特別な型です
実際にリストに入ってるデータの型名併記
for window in windows:
 print(type(window), window)

237:デフォルトの名無しさん
24/10/21 09:33:53.50 D69IqQRS0.net
>>233
どうもサードパーティらiCloudに接続する方法を根本から変えているっぽくて、かなり大幅な改変が必要とのこと。 正規のライブラリを使っていないアプリケーションでは大規模に影響がでているはず。
とはいえ、もうRuby界隈の方は対応終わってるらしく、方法も公開されているから、Pythonの方も数日の辛抱という感じなのでは?と思っている。

238:デフォルトの名無しさん
24/10/21 11:10:24.41 cZ+nN4qG0.net
Appleが許可してない不正な方法でアクセスしてるんだから何が起きても文句は言えんよね
HTTP 503が返されてるのに'Invalid email/password combination.'扱いにしちゃう雑な作りのほうが気になる

239:デフォルトの名無しさん
24/10/21 14:35:51.14 lFfmrxXT0.net
icloudってiPhoneなくてもログインできないと詰むからガバガバなんだよね
今時あんなガバガバそうそうないぞ

240:デフォルトの名無しさん
24/10/23 14:24:57.07 CetgrrtLa.net
governance不合格

241:デフォルトの名無しさん
24/10/30 00:00:42.89 N5ISBsY60.net
pythonで不思議なのがif文

例えばこんな感じ。

name = input()
print("Hello " + name)

if name == "python":
print("Welcome")
else:
print("Goodbye")

このケースは二つだけのケースだが
三つのケースはelse:を追加
これって例えば誕生日きくときに
ifで1月
elifで2-11月
else12月。
これであってる?
なんかかなり面倒だからなんとかしてほしいw

242:デフォルトの名無しさん
24/10/30 00:03:09.96 N5ISBsY60.net
あ、そっか。
まとめればいいだけだわ。
解決しましたw
2-11をまとめるとスッキリするねw

243:デフォルトの名無しさん
24/10/30 00:27:22.21 N5ISBsY60.net
マッチつかおっとw
list = [1, 2, 3, 4, 5, 6, 8, 10, 11, 13, 15, 17, 19, 20, 22, 23]
list_mult2 = []
list_mult3 = []
list_others = []

for i in list:
match i:
# 2 の倍数を格納
case i % 2 == 0:
list_mult2.append(i)
# 3 の倍数を格納
case i % 3 == 0:
list_mult3.append(i)
# その他
case _:
list_others.append(i)

244:デフォルトの名無しさん
24/10/30 00:28:36.78 N5ISBsY60.net
上記訂正

# 分割する数字
list = [1, 2, 3, 4, 5, 6, 8, 10, 11, 13, 15, 17, 19, 20, 22, 23]
list_mult2 = []
list_mult3 = []
list_others = []

for i in list:
match i:
case i if i % 2 ==0:
list_mult2.append(i)
case i if i % 3 ==0:
list_mult3.append(i)
case _:
list_others.append(i)

#これでよし!w

245:デフォルトの名無しさん
24/10/30 00:31:39.11 N5ISBsY60.net
switch文かなり便利やな。
match beer_style: # Pilsner, IPA, Hazy IPA and others
case "Pilsner":
result = "First drink"
case "IPA":
result = "I like it"
case "Hazy IPA":
result = "Cloudy and cloudy"
case _: # ワイルドカードパターン
result = "I like most beers"
こんなに簡単にできるんだ。
今までif文がばからしいww

246:デフォルトの名無しさん
24/10/30 00:32:21.56 E1mCSTtf0.net
fall-throughしないから6の倍数のやつがダメだろ

247:デフォルトの名無しさん
24/10/30 00:35:14.70 odUE1a8w0.net
if elif elseを置き換えるだけではmatchにする有り難みがない
もっとアクロバットなことができるけど、
そんなことをしたらpythonでなくなる気がする

248:デフォルトの名無しさん
24/10/30 00:35:14.71 N5ISBsY60.net
day = 3

match day:
case 1:
print("今日は月曜日です。")
case 2:
print("今日は火曜日です。")
case 3:
print("今日は水曜日です。")
case 4:
print("今日は木曜日です。")
case 5:
print("今日は金曜日です。")
case 6:
print("今日は土曜日です。")
case 7:
print("今日は日曜日です。")
case _:
print("無効な日です。")

249:デフォルトの名無しさん
24/10/30 00:36:51.27 E1mCSTtf0.net
どれもdictionaryにまとめるパターン

250:デフォルトの名無しさん (ワッチョイ fb16-1Wnr)
24/10/30 00:43:34.90 N5ISBsY60.net
fruit = "apple"

match fruit:
case "apple" | "banana" | "cherry":
print("これは一般的な果物です。")
case "kiwi" | "mango":
print("これはトロピカルフルーツです。")
case _:
print("これは知らない果物です。")

複数のマッチ。

251:デフォルトの名無しさん (JP 0Heb-k86b)
24/10/30 00:46:48.67 3XYQLByjH.net
アホだ
他言語ではswitchはバグの元って忌み嫌われてるのに
今になってわざわざ導入したPython陣営の愚かさよ

252:デフォルトの名無しさん (ワッチョイ fb16-1Wnr)
24/10/30 00:49:17.11 N5ISBsY60.net
>>251
match 文はどう?
使い勝手がよいんだがw

253:デフォルトの名無しさん
24/10/30 00:54:05.39 E1mCSTtf0.net
>>250
キウイはトロピカルフルーツではないです
バナナはトロピカルフルーツです

254:デフォルトの名無しさん
24/10/30 01:03:26.08 3XYQLByjH.net
>>252
breakを書かないのが気持ち悪い
やはり条件分岐はifに勝るものなし

255:デフォルトの名無しさん
24/10/30 01:07:30.76 odUE1a8w0.net
switchにbreakがあるのが自然な感覚なら、if文もbreak要るやろ
アセンブラと一対一対応なただのジャンプ命令を高級言語にしただけなんだから

256:デフォルトの名無しさん
24/10/30 01:23:42.78 bt1w6ELFH.net
>>255
多分に感覚的なものだけどね
ifはelseというキーワードにより分岐から分岐に処理が流れることはないとはっきりわかるからbreakは不要
switchはそれがわからないからbreakがないと気持ち悪い

>>250で言えば、2個めのcaseからはelse caseとする設計なら安心できる

257:デフォルトの名無しさん
24/10/30 07:50:49.92 GeZTCF7U0.net
この場合は、と書いてるのに、それ以外の場合に処理が突っ込んでいくのが異常
自然言語として読んでそんな解釈する奴は皆無
C言語のswitchは実質goto文で、忌避すべき悪しき構造

258:デフォルトの名無しさん
24/10/30 08:34:25.79 bt1w6ELFH.net
>>257
C、Java、JacaScriptという錚々たるメンバーでbreakが要るんだからしょうがないじゃない

あとChatGPTに聞いてみたら、下記の記述があったけどこんなのが一般的とか言われて俺もまだまだだなと思った
-----
Pythonには switch 文はありませんが、代わりに辞書を使った条件分岐が一般的です。この場合、各条件が明示的に処理されるため、break は不要です。

switch_dict = {
1: lambda: print("処理1"),
2: lambda: print("処理2"),
}
switch_dict.get(value, lambda: print("デフォルト処理"))()

259:デフォルトの名無しさん
24/10/30 13:37:25.39 N5ISBsY60.net
100さんへ
ALL PYTHONDでもよくね?

260:デフォルトの名無しさん
24/10/30 13:40:41.42 N5ISBsY60.net
PHPでPYTHONやると語尾が気持ち悪くなるW
だっていつもコロンだか、セミコロンつかうじゃん?phpって
だから最初わしも慣れるのに苦労したW

261:デフォルトの名無しさん
24/10/30 13:56:31.26 DhwGc29Ga.net
HDLだとcaseで充分なんだよな

262:デフォルトの名無しさん
24/10/30 14:02:40.72 DhwGc29Ga.net
>>258
アホはこれみてpythonは関数型言語(キリっ)とか言い出しそう

263:デフォルトの名無しさん
24/11/02 13:35:04.63 cytI8wNj0.net
同じ階層のlib.pyにdef func()があって、main.pyから
import lib
だけでfunc()使えなかったっけ

lib.func() なら使えるし、
from lib import func でも使えるけど、
import lib だけでも使えてるケースがあるのに違いが判らん

264:デフォルトの名無しさん
24/11/02 13:56:04.51 QT6/c5p90.net
使えるわけねーだろドキュメントくらい読め

265:デフォルトの名無しさん
24/11/02 14:01:43.84 cytI8wNj0.net
サンプルを書いてみると使えないんだけど、
実際に動いてるコードでは使えてるとしか思えないんだよな

266:デフォルトの名無しさん
24/11/02 15:09:33.21 +GKIPsT4a.net
from lib import *

267:デフォルトの名無しさん
24/11/02 15:24:56.26 +GKIPsT4a.net
lib.py の最後に
__builtins__['func'] = func
でいけるかな

268:デフォルトの名無しさん
24/11/02 15:25:32.30 +GKIPsT4a.net
lib.py の最後に
__builtins__['func'] = func
でいけるかな

269:デフォルトの名無しさん
24/11/02 16:45:29.14 TIz0sdCnd.net
黒魔術禁止

270:デフォルトの名無しさん (ワッチョイ 71b8-jwtj)
24/11/03 05:30:42.12 3rcZcbik0.net
>>265
じゃあそのコード出してみればいいのに

271:デフォルトの名無しさん
24/11/03 09:54:14.13 3P3Nu4GE0.net
結局、動いてはいなかった
ImportError: cannot import name 'func' from 'lib'
というエラーにはならずに、とりあえず走り始める

で、funcを呼んだタイミングでエラーになるけど、
concurrent.futures.ThreadPoolExecutor.submit の先にあるので、
エラー表示は出ないし処理も止まらないだけだった
何なら、import lib すらなくても同じ動作になる

272:デフォルトの名無しさん
24/11/03 14:00:30.85 3P3Nu4GE0.net
エラー出ない問題は
future = concurrent.futures.ThreadPoolExecutor.submit(func)
future.result()
こんな風にすると解決する
concurrent.futures.ThreadPoolExecutor.submit(func).result()
でもok

273:デフォルトの名無しさん
24/11/03 16:59:41.21 oTBqZLJpM.net
なんなのこの日記

274:デフォルトの名無しさん
24/11/03 17:08:44.45 3P3Nu4GE0.net
但し、result()を評価すると完了を待つので同期処理になってしまう
多重処理で高速化できないので、デバッグが終わったら外す

275:デフォルトの名無しさん
24/11/03 17:09:12.43 L07G869G0.net
言っても無駄だから「集団無視」するのがいい

276:デフォルトの名無しさん
24/11/03 17:43:09.87 lgsiIHy30.net
>>273

この福祉系キチガイのせいでしょ>>87

277:デフォルトの名無しさん
24/11/03 18:43:10.23 aWrgo6rr0.net
五十四の日記

278:デフォルトの名無しさん
24/11/03 19:21:34.34 4g0SxEOpd.net
過疎ってるね

279:デフォルトの名無しさん
24/11/03 20:18:30.62 rroxZfopd.net
seleniumやりたくてpython始めたけど
エラーばっかしで嫌になってきた
ラジオボタン選択したいだけなのにうまくいかなくて調べてったらこんな事になった


element = driver.find_element(By.ID, "spAccKbn2")
action = webdriver.common.action_chains.ActionChains( driver ) action.move_to_element_with_offset( element , 1 , -1 )
action.click()
action.perform()

280:デフォルトの名無しさん
24/11/03 22:36:57.37 m0ql+Kks0.net
続 五十四の日記

281:デフォルトの名無しさん (ワッチョイ 8554-u42f)
24/11/03 23:08:48.69 3P3Nu4GE0.net
過疎るのは別に問題じゃないけど、課題はS/N比だな
何故内容のないことを書き込みたがるのか

282:デフォルトの名無しさん (ワッチョイ 9e83-aO9f)
24/11/03 23:24:53.04 upFikudE0.net
おまいう

283:デフォルトの名無しさん
24/11/03 23:42:27.04 Hsbf+jvP0.net
福祉施設からきた知的障害者が荒らしてるよな>>87

284:デフォルトの名無しさん
24/11/03 23:43:00.68 Hsbf+jvP0.net
>>279
失せろ知的障害朝鮮人

285:デフォルトの名無しさん
24/11/07 22:30:21.43 0vDQcGjY0.net
pythonってなんで語尾に;がないの?
この語尾が気持ち悪いw
あとif文やelifが:だけ:があるのが慣れないなw

286:デフォルトの名無しさん
24/11/08 00:05:39.08 te03q3B3d.net
>>285
お前みたいな馬鹿がいるこの世の中が気持ち悪い
お前みたいな馬鹿が生きていられることになれないなw

287:デフォルトの名無しさん
24/11/08 12:27:31.09 F9yTI1pla.net
pythonは文末に;憑いてても動く

288:デフォルトの名無しさん
24/11/08 18:53:48.94 y8v+DuF60.net
>>285
改行コードを終わりと見做すプログラミング言語だから

289:デフォルトの名無しさん
24/11/08 19:07:12.95 cLnY3Hqj0.net
改行に意味があるというよりは、ブロック構造をインデント任せにしてるからだけど

{と}でブロックが明示されてたらエディタの機能でブロックの先頭と末尾を行き来できるけど、
python専用エディタだとそんなことできたりする?
インデント深いと読めなさすぎて、あの手この手で浅くする

290:デフォルトの名無しさん
24/11/08 19:09:12.46 y8v+DuF60.net
>>289
初心者にそんな説明をするのは悪手

291:デフォルトの名無しさん
24/11/08 19:38:39.84 BBiCQq+eH.net
>>289
できないと思うけど
そもそもブロック単位の移動という操作が開発で必要とは思えない

292:デフォルトの名無しさん
24/11/08 19:41:06.28 G9PsHqcG0.net
>>285
別に付けてもいいぞ
何なら一行に複数の文も書ける

293:デフォルトの名無しさん
24/11/08 19:56:04.57 y8v+DuF60.net
>>292
Pythonの原作者の悪趣味を勧めるなw

294:デフォルトの名無しさん
24/11/08 19:58:22.87 y8v+DuF60.net
>>292
意味なく付けていると可読性が下がる

295:デフォルトの名無しさん
24/11/08 20:28:10.47 c7CpRr710.net
>>288
なんかメインフレーム臭さが漂ってんだよなあ

296:デフォルトの名無しさん (ワッチョイ 75cf-kuJi)
24/11/08 22:56:15.48 U1OZc4Nd0.net
>>289
vimはできるよ

Pythonでパッと見てネスト構造が分からないようなコードは問題がある気がするがブロック単位と移動や編集が便利なのは間違いない

297:デフォルトの名無しさん
24/11/09 01:03:02.37 6W4F7+P40.net
>>295
セミコロンを付けない言語もそれなりにあるし、Pythonだけがそうというわけではない
最近流行りのだとGoもそう

298:デフォルトの名無しさん
24/11/09 11:11:55.78 6RYR080/0.net
>>289
改行を文デリミタにするのとブロックの表し方は全然関係ないだろ。
シェルスクリプトとか見てみ。

299:デフォルトの名無しさん (ワッチョイ 926b-4b4N)
24/11/09 11:58:53.83 wO7HvhhQ0.net
luaも無視してくれるね;

300:デフォルトの名無しさん
24/11/09 14:29:53.24 B62lCCpIa.net
xxxxxxxxxxxx

301:デフォルトの名無しさん
24/11/09 15:56:26.85 uvbykfPp0.net
JavaScriptみたいに自明な場合はセミコロンを挿入するって風にすればいいのにな
そうすればワンライナーとの相性もよい

302:デフォルトの名無しさん
24/11/09 16:57:23.68 5wGLeQz90.net
そうするとめちゃくちゃなインデントするやつが絶対でてくるからな

303:デフォルトの名無しさん
24/11/09 17:24:04.02 LlsVFZwkd.net
vs codeで書いてるけど
インデントしてんのにインデントおかしいぞ!って怒ってくる

304:デフォルトの名無しさん
24/11/09 19:42:57.03 b5zF/lUM0.net
Pythonを使うには
空白文字が判別できるグリフになってるフォントが必要

305:デフォルトの名無しさん
24/11/09 21:20:12.17 SkJltVwKd.net
>>304
このスレってこういう馬鹿ばっかだな

306:デフォルトの名無しさん
24/11/09 22:08:58.33 sXoCSO6d0.net
>>305
お前みたいなのがこのスレを破壊したって
自覚持ってくれ

307:デフォルトの名無しさん
24/11/10 00:52:09.53 H/zpgg/Vd.net
>>306
お前みたいに嘘を撒き散らす馬鹿がいるからだろ

308:デフォルトの名無しさん
24/11/10 02:54:10.37 NcxfIIMm0.net
>>303
タブと半角スペースが混じっているだけじゃないのか?

309:デフォルトの名無しさん
24/11/10 07:47:13.73 dkv1a77w0.net
フォントでなくエディター側でも解決できる
VS Codeだとタブ文字やスペースを見やすくする設定があるはず
全角スペースはフォント側で可視化されてるものを使うと便利

310:デフォルトの名無しさん
24/11/10 09:41:38.14 Mocr1U5E0.net
全角スペースをstrip()が削除するんだから、それがスペースだということは知ってるんだよな
なんでインデントに使ったらいけないのか謎

311:デフォルトの名無しさん (ワッチョイ 0530-yjVJ)
24/11/10 10:07:01.33 3craHbO10.net
個数で判定するか幅(それも1:2か3:5かそれ以外か)でか、で自転車置き場の屋根より長い議論になることが見えてるから

312:デフォルトの名無しさん (ワッチョイ ad54-CU01)
24/11/10 10:30:19.57 Mocr1U5E0.net
個数でも幅でもなく、組み合わせ
TABとスペースを混ぜた時と同じ挙動

313:デフォルトの名無しさん
24/11/11 06:06:38.40 mTrGHtv9a.net
全角SPはTABでも半角SPでもない

314:デフォルトの名無しさん
24/11/11 08:13:32.49 XjDPgffN0.net
C言語のブロック記号{}に全角空白もアリにしてと言ってるようなもんだな
日本語の全角空白含めても日本人の一部にしかメリット無いです

315:デフォルトの名無しさん
24/11/11 14:38:02.82 tRsIxhTt0.net
インデントはタブのみ許可
タブはインデントのみ許可
みたいにガチガチにしてしまえばいいのに
そこだけは非常に残念

316:デフォルトの名無しさん
24/11/11 16:41:38.17 RisB9sc6d.net
タブの存在しない処理系とかあるんじゃないの
知らんけど

317:デフォルトの名無しさん (ワッチョイ 759b-NX7e)
24/11/11 16:45:22.89 XlNa4SSE0.net
URLリンク(www.openwork.jp)

318:デフォルトの名無しさん
24/11/11 17:04:38.11 7xH2ULqH0.net
TAB使うなって言うからスペースでインデントしてるけど、
エディタがデデントに対応してなくて無駄に大変

319:デフォルトの名無しさん
24/11/12 09:00:04.47 MVEhN2a60.net
なぜ対応のエディタを使わないのか
VSコードでいいだろ

320:デフォルトの名無しさん
24/11/12 20:00:16.97 v7TGFNyn0.net
>>313
スペースのことを「SP」と書いている人を初めて見たわ

321:デフォルトの名無しさん (ワッチョイ e38e-R46Z)
24/11/12 20:07:54.86 v7TGFNyn0.net
Pythonが誕生したころは、まだ1バイト使うか4バイトも使うか記憶装置の容量では悩むレベルだったから、タブを使うか半角スペースを複数個使うかで

322:デフォルトの名無しさん (ワッチョイ e38e-R46Z)
24/11/12 20:08:36.68 v7TGFNyn0.net
人によって意見がわれていた

323:デフォルトの名無しさん (ワッチョイ 4b8e-DV/N)
24/11/12 20:25:38.59 J1Sn69yS0.net
>>320
お前が何も知らない馬鹿なだけかと

324:デフォルトの名無しさん
24/11/12 21:12:33.59 ZcEeG3hE0.net
半角SPw

325:デフォルトの名無しさん
24/11/12 21:16:46.59 nvqj0JfO0.net
日本人の一部にしかメリットなくても、残りの誰にもデメリット無いなら、
それはメリットしか無いのでは

326:デフォルトの名無しさん
24/11/13 02:13:50.19 lxEAsUm8a.net
デメリットだらけ

327:デフォルトの名無しさん
24/11/14 19:11:38.32 g26vUJe4F.net
ここで質問しているやつはPythonの資格対策本でも買って勉強しろ

328:デフォルトの名無しさん
24/11/15 10:25:38.19 G6HDJDaQ0.net
uvはactivate必要なのか
pyenvとpoetryでいいわ

329:デフォルトの名無しさん
24/11/15 17:45:24.05 Jz1yaJFv0.net
>>328
プロアクティブが必要

330:デフォルトの名無しさん
24/11/16 19:00:54.48 ILOr4dg40.net
既存のファイルを'w'でopenする時に、他のプロセスがアクセスしているとOSErrorになることがある
ならないこともある
ファイルが大きいとなるっぽい

なんとか強引に開けないものか

331:デフォルトの名無しさん (ワッチョイ 1b5c-Bg8t)
24/11/16 21:38:03.01 JvbcygrM0.net
width同じでheightバラバラのjpg画像が大量にあるんだがこれをpdfに上下に敷き詰めるにはどうしたらいいの?

332:デフォルトの名無しさん
24/11/16 23:24:04.57 3kqPnMcZ0.net
>>330
windowsならWin32 APIでsharing modeを指定

>>331
bin packing problemでググれ

333:デフォルトの名無しさん
24/11/17 11:06:04.94 tn0ahmRja.net
print(np.arange(np.datetime64('2024-11-01'), np.datetime64('2025-05-01'), np.timedelta64(30, 'D')))

['2024-11-01' '2024-12-01' '2024-12-31' '2025-01-30' '2025-03-01' '2025-03-31' '2025-04-30']

print(np.arange(np.datetime64('2024-11-01'), np.datetime64('2025-05-01'), np.timedelta64(31, 'D')))

['2024-11-01' '2024-12-02' '2025-01-02' '2025-02-02' '2025-03-05' '2025-04-05']
なんだが

['2024-11' '2024-12' '2025-01' '2025-02' '2025-03' '2025-04']
が欲しい

334:デフォルトの名無しさん
24/11/17 12:17:30.72 EcgVWlk90.net
>>333
月ベースで計算したいのになぜ日ベースで計算しようとするのか

In : np.arange(np.datetime64('2024-11'), np.datetime64('2025-05'))
Out: array(['2024-11', '2024-12', '2025-01', '2025-02', '2025-03', '2025-04'], dtype='datetime64[M]')

335:デフォルトの名無しさん
24/11/17 12:24:22.30 33eX3D3e0.net
関係ないけど、excelで日毎のデータが何年分もあって、
グラフの横軸を年月で表示しようとしても微妙にうまく行かない

336:デフォルトの名無しさん
24/11/17 13:42:46.70 tn0ahmRja.net
>>334
ありがとう
print(np.arange(np.datetime64('2024-11-01'), np.datetime64('2025-05-01'), np.timedelta64(1, 'M')))
でエラーだったからどうしたもんかと

337:デフォルトの名無しさん
24/11/17 14:01:43.54 tn0ahmRja.net
print(np.arange(np.datetime64('2024-11-01'), np.datetime64('2025-05-01'), dtype='datetime64[M]'))
これでもうまくいったわ

338:デフォルトの名無しさん
24/11/17 14:12:53.82 ENY5bRjq0.net
>>332
回答ありがたいんだが番号振られてあるから順番に上から下に敷き詰めたいんだが

339:
24/11/17 17:22:39.74 z11Q5dQO0.net
下記の内容で Microsoft Copilot に聞いてみた で教えてくれる
------
pythonでwidth同じでheightバラバラのjpg画像が大量にあるんだがこれをpdfに上下に敷き詰めるにはどうしたらいいの?
番号振られてあるから順番に上から下に敷き詰めたいんだが

340:デフォルトの名無しさん
24/11/17 17:33:31.08 33eX3D3e0.net
pdfの高さが決まってて、そこに入るだけ順番に入れてくだけの話?

if トータル高さ > pdfの高さ:
 次のページに

というだけのアルゴリズムでいけるのでは

341:
24/11/17 17:40:21.98 z11Q5dQO0.net
聞いてみた結果
--from PIL import Image
from reportlab.lib.pagesizes import portrait
from reportlab.pdfgen import canvas
import os
# 画像が保存されているディレクトリのパス
image_dir = 'my_folder'
output_pdf = 'output.pdf'
# 画像ファイルのリストを取得し、ファイル名順にソート
image_files = sorted([f for f in os.listdir(image_dir) if f.endswith('.jpg')])
# 画像の幅を取得(すべての画像が同じ幅である前提)
first_image = Image.open(os.path.join(image_dir, image_files[0]))
width, _ = first_image.size
# PDFキャンバスの作成
c = canvas.Canvas(output_pdf)
# 画像をPDFに追加
for image_file in image_files:
image_path = os.path.join(image_dir, image_file)
img = Image.open(image_path)
img_width, img_height = img.size
if img_width != width:
raise ValueError(f"Image {image_file} has a different width: {img_width}")
# ページサイズを画像の縦サイズに設定し、新しいページを追加
c.setPageSize((width, img_height))
c.showPage()
# 画像をPDFに描画
c.drawImage(image_path, 0, 0, width=width, height=img_height)
# PDFの保存
c.save()

342:
24/11/17 17:51:48.14 z11Q5dQO0.net
--tabがわからん
# 画像をPDFに追加
for image_file in image_files:
  image_path = os.path.join(image_dir, image_file)
  img = Image.open(image_path)
  img_width, img_height = img.size
  if img_width != width:
    raise ValueError(f"Image {image_file} has a different width: {img_width}")
  # ページサイズを画像の縦サイズに設定し、新しいページを追加
  c.setPageSize((width, img_height))
  c.showPage()
  # 画像をPDFに描画
  c.drawImage(image_path, 0, 0, width=width, height=img_height)
# PDFの保存
c.save()

343:デフォルトの名無しさん
24/11/17 17:56:32.18 33eX3D3e0.net
datにはインデントのスペースも書かれてるんだけどな
表示のレンダリングで落としちゃうだけなので、
ブラウザに先頭のスペースを無視しないモードがあれば済むのに

344:デフォルトの名無しさん
24/11/18 07:06:37.63 INV+aJIp0.net
【ナゾロジー】サイコパスは「痛みを伴う失敗」から学習できない! [すらいむ★]
URLリンク(itest.5ch.net)

345:デフォルトの名無しさん
24/11/18 12:58:55.73 0TuJxtFYa.net
>>343
専ブラ

346:デフォルトの名無しさん
24/11/22 01:57:46.65 icDgwF6r0.net
某キャリア回線アプリのON、OFFをAPI送信で叩きたいけど
POSTMANでは正常に叩けてアプリに反映されれるけど
python経由だとレスポンスが正常だけどなぜかアプリ側に反映されない。
POSTMANと全く同じヘッダーつけてもダメだった。
わかる方いるかしら?


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch