Pythonのお勉強 Part74at TECH
Pythonのお勉強 Part74 - 暇つぶし2ch2:デフォルトの名無しさん
24/09/21 10:14:21.46 ZHy4g+PL0.net
・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
エラー文(勝手に省略orスクショうp等の横着禁止)と
おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

3:デフォルトの名無しさん
24/09/21 10:14:40.35 ZHy4g+PL0.net
★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
URLリンク(techiedelight.com)  Run Code機能あり。
URLリンク(ideone.com)      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
URLリンク(pastebin.com)     まずまずシンプル。
URLリンク(dpaste.com)      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
◇Pythonオフィシャルサイト URLリンク(www.python.org)
◇Pythonドキュメント URLリンク(docs.python.org)
◇まとめwiki URLリンク(python.rdy.jp)

4:デフォルトの名無しさん
24/09/21 10:15:46.91 ZHy4g+PL0.net
●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その60
スレリンク(tech板)
次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)

5:デフォルトの名無しさん
24/09/21 10:16:58.18 ZHy4g+PL0.net
1がNGなるので分けたよ

6:デフォルトの名無しさん
24/09/22 19:10:31.46 OW9nCJH10.net
PyCon運営がPFN知らないは草

7:デフォルトの名無しさん (ワッチョイ d3ee-4vSm)
24/09/22 20:35:24.55 GWD12XrO0.net
Pythonでデータベース扱うなら、SQLite3が楽そうなんだけど
参考書とか探しても意外とないのね
SQLite学んでも、Pythonからの操作だと色々勝手が違うっぽいし、丁寧に解説してるところないか

8:デフォルトの名無しさん (ワッチョイ 725c-jXms)
24/09/22 20:49:46.22 tU1JSeRu0.net
公式はよ?

9:デフォルトの名無しさん
24/09/22 22:22:02.95 e8rvHKs3a.net
>>7
簡単すぎるから不要なんよ

10:デフォルトの名無しさん
24/09/24 13:39:51.45 ktM6VWDF0.net
>>9
まあSQLを知ってたら、ただ接続するだけだもんな

11:デフォルトの名無しさん
24/09/27 14:57:42.16 lmMFo9JI0.net
ジェネレータのsend()ってどういう時に使うんだろう

12:デフォルトの名無しさん
24/09/29 09:08:42.58 dpItLQ7f0.net
Pythonの勉強始めたばかりで3.12だとjapaniz_matplotlibが使えないらしいどうするPython2年生使っている俺

13:デフォルトの名無しさん
24/09/29 10:53:32.97 IfOUm3IP0.net
>>12
選択肢
1. 3.11へダウングレード
2. pip install setuptools
3. japanize-matplotlibの代わりにmatplotlib_fontjaを使う

14:デフォルトの名無しさん
24/09/29 11:12:31.16 JxQ2ZLrB0.net
いつのまにか更新されなくなっていたのか…
matplotlib_fontjaありがとう

15:デフォルトの名無しさん
24/09/29 12:09:04.14 PTSFLh1b0.net
フォントを設定するだけのことでよくわからんライブラリに依存させるのがいいことなのかと思ってしまうな

16:デフォルトの名無しさん
24/09/29 17:28:15.27 gYCMQfko0.net
seleniumでサイト内の文字を検索して、
文字が存在する場合、存在しない場合に分けて動作させようと思っています
サイトに表示される文字列の一部が変化するため、完全一致では判定ができません
◯◯という文字を含む文字列がある場合
ない場合
というコードはどう書けばよいでしょうか?
よく分からないまま以下を書きましたがもちろん検索は失敗しました
try:
 driver.find_element(By.XPATH, "//*[text=あいうえお]")
 print("ありました")
except:
 print("ありませんでした")

17:デフォルトの名無しさん
24/09/29 19:12:48.23 3XpHNNRd0.net
text in driver.page_source

18:デフォルトの名無しさん
24/09/29 23:10:42.32 y18OCo2k0.net
>>16
XPathに慣れてるのでなければ初心者はCSS Selector一択
element.textがJavaScriptのinnerText相当
text = driver.find_element(By.CSS_SELECTOR, ‘body’).text
if ◯◯ in text:
 print("ありました")
else:
 print("ありませんでした)

19:デフォルトの名無しさん
24/09/30 03:16:20.95 LdpNEqiv0.net
今さらだが、
for elseってあるんだな…
よく使うの?

20:デフォルトの名無しさん
24/09/30 08:26:32.91 CmdH7+bD0.net
結構使う
else: # breakしなかった場合
と毎回コメント付けてるけど
便利なんだけど名前が悪い

21:デフォルトの名無しさん
24/09/30 11:05:06.08 rGpxgfzi0.net
>>19
使わない
URLリンク(itest.5ch.net)
の451~482あたりを見るといい

22:デフォルトの名無しさん
24/09/30 12:04:50.33 CmdH7+bD0.net
elseを使わずに同じことをしようとすると、フラグを追加して、breakする時にフラグをセットすることになる
実際そういうコードもよくある
elseはbreakが複数箇所あった場合の面倒さ、フラグの名前を考える手間を省いてくれる
effective pythonではなんか変な例を持ち出して違う解決方法を示すだけで、
普通にフラグを使うコードもあることを無視している

23:デフォルトの名無しさん (オッペケ Sr47-RzVJ)
24/09/30 12:23:30.25 7i6IqdaJr.net
>>18
ありがとうございます!無事できました!

24:デフォルトの名無しさん
24/09/30 12:54:38.78 6iqOAEp20.net
>>22
for-elseの代わりにフラグ使う必要とかないでしょ
フラグ前提で考える人がfor-elseを使いたがるということなのか

25:デフォルトの名無しさん
24/09/30 13:03:56.81 CmdH7+bD0.net
例えばurlのリストに対してアクセスして、条件に合えばクリックして終了
クリックしなかったらメッセージを表示
フラグもelseも使わない実装は?

26:デフォルトの名無しさん
24/09/30 13:14:13.83 9iSCXpur0.net
初心者が今からPythonでデスクトップアプリ作りたい場合、GUIライブラリは何がいい?

27:デフォルトの名無しさん
24/09/30 13:30:33.16 CmdH7+bD0.net
with (
  open('file1.txt', 'w') as f1,
  open('file2.txt', 'w') as f2,
):
  print('あああ', file=f1)
  print('あああ', file=f2)
こんなことできたんだな
メインの出力とログと2種類要る時とか、仕方ないからネストさせてた

28:デフォルトの名無しさん
24/09/30 15:56:07.94 LdpNEqiv0.net
>>21
だよな
PythonでAIを作ったりしたが、for elseなんて見たことないな…

29:デフォルトの名無しさん
24/09/30 18:03:23.78 Ivu6aBvf0.net
>>26
pysimpleguiが楽に色々作れるかな
商業利用が有料化されてインストールに少し手間がかかるようになったけど、それを許容できるならかなりオススメ
バージョン5以降は年1回無料のライセンスを取得する必要がある
それかライセンス認証が要らない4.70.1を入れる

30:
24/09/30 18:07:32.20 D4YV+jMH0.net
>>26
標準で使えるtkinterじゃあかんの?

31:デフォルトの名無しさん
24/09/30 18:48:50.45 kqBmzRMr0.net
ログハンドリングはforの上でするべきなのだ

32:デフォルトの名無しさん (ワッチョイ b315-p+7u)
24/09/30 20:27:11.71 mKhWOETT0.net
>>26
ファイルD&Dできないのが欠点だけど
fletがなかなかいい

33:デフォルトの名無しさん (ワッチョイ 73ee-eLKd)
24/09/30 20:32:14.10 9iSCXpur0.net
>>29-32
見事に全員違くて草
ぐぐってみた感じでも標準のtkinterか初心者でも使いやすいpysimpleguiがいいっぽいね
この二つで調べながらやってみる!あんがと

34: 警備員[Lv.31]:0.02840106 (ワッチョイ c310-D2eP)
24/09/30 20:37:19.54 D4YV+jMH0.net
なんでもかんでもとりあえずChatGPTに聞いてみるのが一番いいよ。

35:デフォルトの名無しさん (ワッチョイ 7354-KQ/N)
24/09/30 20:37:34.93 CmdH7+bD0.net
結局GUIがやりたいならwebアプリが正解
いろんな人がそれぞれにGUI用の部品一式を提供してるけど、
一番馴染みがあるのがブラウザ
頑張ればゲームだって作れる

36:デフォルトの名無しさん
24/09/30 20:59:26.32 XGioOSpm0.net
for else基本使うことないけど、今までに2,3回これでいいかみたいな事があった気がする
具体的にどういうケースだったか忘れた
>>35
WebUIはゴールデンハンマー云々って言ってる人がいた
一理あるって思ってPyside使い始めてるけど、プログラミングやり始めでこれ使えって言われたら挫折してたかもしれない
GUI難しい

37:デフォルトの名無しさん
24/10/01 10:29:59.58 7ulB1lco0.net
>>25
普通にearly returnやyieldするだけ

38:デフォルトの名無しさん
24/10/01 10:40:45.87 7ulB1lco0.net
for-elseは命名の問題以外に
条件に合致する対象を見つけてくるという探索処理と
探索結果に対する処理とが不必要に密結合するという問題がある
これがなければ命名は我慢して使ってもいいと思えなくもない

39:デフォルトの名無しさん
24/10/01 11:59:53.46 CfRMfbr90.net
>>25の例を対象のurlを返すように関数化して処理を分離しようにも、
もうアクセスしちゃってるから続きでクリックするしかないんだよな
early returnが使いたいから、というだけの理由で粒度やスコープを無視して関数化しちゃうのもちょっと

40:デフォルトの名無しさん
24/10/01 17:31:02.48 sFQyIfLy0.net
>>39
>もうアクセスしちゃってるから続きでクリックするしかないんだよな
別にそんなことないでしょ
下の各行がそれぞれ別の関数に分かれたところで
同じdriver同じelementに同じ順番でアクセスしてればいいだけ
driver.get(url)
element = driver.find_element(…)
element.click()
逆にそれができないようなら必要な抽象化もできないことになる
例えばログインしちゃってるから続きでクリックするしかないとなったら
login関数という形で抽象化できない

41:デフォルトの名無しさん
24/10/01 21:20:21.01 w4EeoDoz0.net
ガチ初心者の俺は
まず最初に何作ったら
勉強になるの?

42:デフォルトの名無しさん
24/10/01 23:53:16.60 CfRMfbr90.net
>>40
見つかった場合はclickすべきelementを返す
みたいな関数になるんだろう
不自然すぎる
やってやれないことはないみたいな強弁としか
大半のケースではfor elseの使い所は無いけど、
たまにばっちりはまるケースがある
頻度は低いので、使う時はコメント必須

43:デフォルトの名無しさん (ワッチョイ 6fcd-fhRs)
24/10/02 12:51:21.76 VhOKxDCS0.net
3.13来週か

44:デフォルトの名無しさん
24/10/02 13:17:47.79 Y5PwfM4H0.net
>>13
google claboで3が使えないから日本語は無しで進めたw
ありがとう

45:デフォルトの名無しさん
24/10/02 18:09:10.91 4jHsmsQb0.net
re.DOTALLはインラインフラグでは(?s)だけど、sは何の略だろう

46:デフォルトの名無しさん
24/10/02 18:20:50.77 g2e/T20O0.net
singleline

47:デフォルトの名無しさん
24/10/02 18:32:37.11 4jHsmsQb0.net
なるほど
MULTILINEと対応してないな
perlでも/sと/mは結局どっちがどっちだか覚えられなかった
必ず逆になるんだよな

48:デフォルトの名無しさん
24/10/03 16:51:19.28 LhmpW7CX0.net
いまさVScodeでPythonを学んでいるんだけど
Pythonにあったテーマカラーで何かオススメない?
いまOne Dark Proっていうテーマにしてるんだけど、文字列はオレンジの方がいいかなって思ってきた

49:デフォルトの名無しさん
24/10/03 17:04:58.12 SXCr8u+C0.net
変更したいと思ったことすらない

50:デフォルトの名無しさん
24/10/03 18:36:30.78 SO+gfZGnr.net
デフォルトなら文字列オレンジじゃね?

51:デフォルトの名無しさん
24/10/04 00:56:50.57 3S+V9Rl60.net
>>48
VSCodeは融通が利かない
それに色分けは自分のためにならない
色情報はコードと何の関係もないので、色分けに慣れていると色分けをしていないコードが読めなくなる

52:デフォルトの名無しさん
24/10/04 01:05:39.06 Ls4Fx/rv0.net
>>51
で、
何がいいって話?

53:デフォルトの名無しさん
24/10/04 02:07:40.34 fj4w0BBZ0.net
色分けされてないコードを読む
そんな状況ってあるっけ・・?
白黒プリントアウトされてるとか?

54:デフォルトの名無しさん
24/10/04 02:21:36.87 7yCtL1J1x.net
あえて色分けなしにする
って訓練にはならないと思うけどね
もし訓練になるって言うなら
(慣れていない)別の色分けコードに遭遇したときに対しても
同じように読めなくならないと説明がつかないけど
そんなことないし
なので色は何でも良いんじゃない
おれは基本デフォ
ネットで調べるときも容赦なくデフォで表示されるし
初学者にとって
プログラミング向きのタイピング速度(コーディング速度)
これが一番重要だと個人的に思う
命名やコーディングにかかるチリツモ時間が
初心者にとっては妨げになるので
予測変換などもガンガン使っていった方がいい

55:デフォルトの名無しさん
24/10/04 09:53:42.06 8exysTNA0.net
シンタックスハイライトの後は自動インデント、自動補完の話が続くんだろ
chatgptにダーク系のおすすめ聞いてきたから好きなの鰓べ
Dracula, Monokai, Solarized Dark, One Dark Pro, Gruvbox Dark, Nord

56:デフォルトの名無しさん
24/10/04 12:29:15.26 f5VlUYAG0.net
>ハイパーモダンPython
ってそんなにすごい知識が身につくの?

57:デフォルトの名無しさん
24/10/04 12:47:22.85 lUav+mwb0.net
>>51
寧ろvscodeは個別に配色の設定することも可能だから融通は利く

58:デフォルトの名無しさん
24/10/04 13:27:33.15 RixEjMnja.net
>>51
>色情報はコードと何の関係もないので、色分けに慣れていると色分けをしていないコードが読めなくなる
これめっちゃ判る
特に初心者ほどやめた方が良い

59:デフォルトの名無しさん
24/10/04 13:45:12.37 2V3z57MG0.net
色分けされてる方が読みやすい
という単純な事実なのでは
初心者でも慣れてても同じ
道具に頼ると素手でできなくなるからと道具使わない人みたいな感じ

60:デフォルトの名無しさん
24/10/04 13:48:53.62 RqFpLHKv0.net
逆に初心者の方が誤りを判別する手助けにもなるので、
色分けされていたほうが便利だと思う

61:デフォルトの名無しさん
24/10/04 14:16:07.08 3xmlzivUa.net
>色分けをしていないコード
ってどういうことなんだろ
わかる言ってるやついるけど
おれは全然わかんないわ笑
色無いなら自分で色分けすればよくね?
色アリ無しどちらではじめようが慣れたら結局
・色分け無しで慣れる→色分けアリでも読める
・色分けアリで慣れる→色分け無しでも読める
なんだから、最初から色分けアリの方が学習コスト低いよな

62:デフォルトの名無しさん
24/10/04 14:22:18.26 i5vhWVds0.net
まぁ(初心者)色分けやめた方がいいって言ってるやつも
色分けした方が読みやすいって言ってんのが答えだわなw

63:デフォルトの名無しさん
24/10/04 14:30:37.03 vJhSgpGOa.net
道具に頼って素手よりパフォーマンス上がればそりゃ道具使うわな
土方ですら水平器もインパクトドライバーも使ってるわ

64:デフォルトの名無しさん
24/10/04 14:32:10.85 IDs1O+210.net
勉強にならんからIDE使うな的な

65:デフォルトの名無しさん
24/10/04 14:49:16.95 Af8duaqZ0.net
コーディングから実行までちんたらする時間がマジで無駄
スペルミスに勘づくスキルは上昇しづらくなるだろうがエラーメッセージに頼ればいいしエラーメッセージと勝負して先回りする意味はない
まず善い手本参考に自分で書いたコードが成功か失敗か確かめる数こなした方が上達する
言語学習でも同じ
インプットアウトプットの回数多い方が文法も語彙力も上がる
文脈把握できればエラーに気づく能力も上がる
色分け無し縛り云々は逆張り愉快犯以外に利点はない

66:デフォルトの名無しさん (ワッチョイ 6f09-/XLF)
24/10/04 15:58:46.91 lUav+mwb0.net
>>58
この論理ほど馬鹿なものもない
便利機能はどんどん使えばいい
災害を想定して普段から水電気ガスが満足に使えない生活をしているやつは殆どいないだろう

67:デフォルトの名無しさん (JP 0H87-PHWo)
24/10/04 16:18:08.42 lDeI5PGjH.net
androidアプリ作ろうと思ってkivyで書いて
コンパイルをgoogle colaboratoryでbuildozerでやったら
上手くapk作成できてandroid端末でもインストール動作確認できたけど
コンパイルの時間めっちゃかかったなにこれ…たぶん20分くらい
こういうもんなの

68:デフォルトの名無しさん
24/10/04 17:21:46.00 2V3z57MG0.net
if elif elif else
みたいにインデントを深くせずにtryを書けないかな

69:デフォルトの名無しさん
24/10/04 18:37:26.59 x2l03NKV0.net
>>68
日本語でOK

70:デフォルトの名無しさん (ワッチョイ 6f09-/XLF)
24/10/04 18:47:11.58 lUav+mwb0.net
execで無理やり書け

71:デフォルトの名無しさん
24/10/04 19:21:49.26 Z9HGqIB60.net
色分けに慣れたらコード読めなくなるってマジ?
でもキータとか見ても色分けして表示されてるところが多いしなあ
とりあえずVScodeデフォルトでしばらく使ってみるわ!ありがと

72:デフォルトの名無しさん
24/10/04 19:29:54.92 lUav+mwb0.net
エディタの便利機能使わないならメモ帳でやっとけって話になるわな

73:デフォルトの名無しさん
24/10/04 19:31:01.13 2V3z57MG0.net
URLリンク(i.imgur.com)
evalでできた

74:デフォルトの名無しさん
24/10/04 19:35:22.61 2V3z57MG0.net
数値部分eval だけでいいな

75:デフォルトの名無しさん
24/10/04 19:58:19.41 upmSrzby0.net
for convert in (int, float, complex):
でいい

76:デフォルトの名無しさん
24/10/04 20:17:43.91 oFau5fAJ0.net
chromeでseleniumを動かしているのですが、実行した直後にコマンドプロンプトが落ちてしまうので、何のエラーなのかが一切分かりません
どうやったら落ちなくできますか?

77:デフォルトの名無しさん
24/10/04 20:33:28.99 JKo0fS4W0.net
>>76
そういうときは出来る限り最小構成
↓で試して落ちるならseleniumのインストール時点で何かしら問題あるかも
import time
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
#chrome_options.add_argument('--no-sandbox')
#chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=chrome_options)
print("driver.get")
driver.get("URLリンク(www.google.co.jp"))
print(driver.title)
time.sleep(1)
driver.quit()
print("正常終了。")

78:デフォルトの名無しさん
24/10/04 22:19:24.82 JAupTFkx0.net
>>76
.pyファイルをダブルクリックするとかしてpy.exe(Python Launcher)経由でプログラムを実行してると推測する
VSCodeとか入れてるならVSCodeからプログラムを実行すれば出力も確認できる
入れてないならプログラムの最後にinput()と書いてプログラム終了前にユーザー入力を待つようにするか.pyファイルをダブルクリックするのではなくコマンドプロンプトを先に開いてそこからpython hello.pyの形でプログラムを実行すれば出力内容を確認できる

79:デフォルトの名無しさん
24/10/05 16:10:10.09 kis0iOlf0.net
>>77
>>78
ありがとうございます!
これまではbatファイルにpyファイルのパスを書いて、batファイルをダブルクリックで実行していましたが、
教えていただいたとおりコマンドプロンプトを開いて手動で打ち込んで実行すれば落ちずエラーを確認できました

80:デフォルトの名無しさん
24/10/06 16:50:59.12 kvSgTVMcM.net
質問です。ある書籍で
price = 100
print(price * 1.10)
print(int(price * 1.10))
の結果が
110.00000000000001 ←浮動小数点で表示
110 ←int関数を使って整数で表示
と書いてあるのですが、何故110.00000000000001になるのかが浮動小数点について調べましたが、私の知識では理解出来ません。
どなたか解説をお願いいたします。よろしくお願いします。

81:デフォルトの名無しさん
24/10/06 17:09:34.73 UFSeVUgGH.net
浮動小数点と丸めの話は定番の話でググって出てくる説明で分からんかったらここでも多分無理だぞ

82:デフォルトの名無しさん
24/10/06 19:11:14.13 6RIEhc9V0.net
print(100 * 1.08 == int(100 * 1.08)) # true
print(100 * 1.1 == int(100 * 1.1)) # false
1.08だったら正確に108.0だったのにな

83:デフォルトの名無しさん
24/10/06 19:18:39.74 6RIEhc9V0.net
a = 100*1.08
b = int(a)
print(a is b) # False
print(a == b) # True
print(hash(a) == hash(b)) # True
d = {}
d[a] = 1
print(d[b]) # 1
1.1だとエラー

84:デフォルトの名無しさん
24/10/06 21:53:44.52 D+tHfaDh0.net
結局二進数表記で無限桁になる場合は誤差が出るってことにつきる

85:デフォルトの名無しさん
24/10/06 22:18:43.84 6RIEhc9V0.net
from fractions import Fraction
rate = Fraction(110, 100)
print(100*rate == int(100*rate)) # True

86:デフォルトの名無しさん
24/10/06 23:29:37.04 AAf4wbtz0.net
ハイパーモダンpythonって何だそれ?って立ち読みしたらただのツールチェインの解説だった
原書見るとhypermodern python toolingだった
日本のオライリーは完全に終わった

87:デフォルトの名無しさん
24/10/07 22:15:19.09 QvvyKpnV0.net
質問です。こちらの職業は勇者、戦士、空手家
勇者から柔道家までの5人の攻撃回数が異なります。
まず勇者は2回攻撃、戦士は3回攻撃、空手は3回攻撃
(勇者の1回分の攻撃は100~200、20%の確率でクリティカルヒットの攻撃になることがある。
(戦士の攻撃は200~300、20%の確率で攻撃がクリティカルヒット1回になることがある。
(空手家)空手家の攻撃は350~500、ただし20%の確率で攻撃がクリティカルヒットとなるときがある。勇者は5%の確率でロトの剣が手に入る。
クリティカルヒットは攻撃力X2です。さてプログラムをやっていくか。
まずギルガメッシュっていう名前のenemy
ラスボスの名前はenemyとする。ボスのHPは5万。
ボスは基本的に何もしません、できません。これやるとさすがに面倒なのでw
基本的にボスは攻撃しません。(面倒だからw)
一方的になかまあつめてボコすw
さて、次の問題はキャラクターが何人いるか。
イフ文1でまず攻撃は勇者~勇者=yu 戦士=sen 空手家=karate
*ロトの剣で攻撃したら攻撃力が1.5倍あがります。*
**癒しの穂。食べたら防御力と賢さがあがります**
ロトの剣の出現条件は3並びで一つ食べることができます。
例えば111攻撃とか222攻撃とか333攻撃とか~999まで。
次の発言からコードを書いていく。

88:デフォルトの名無しさん
24/10/07 22:52:41.61 stL6GaPr0.net
発達障害風の生成AI?

89:デフォルトの名無しさん
24/10/07 22:54:11.40 nsk0Xk2O0.net
>>88
そんなものサンプルがないからこれは本物

90:デフォルトの名無しさん
24/10/08 23:32:02.99 2RqDvWQU0.net
>>88さん
みんなで考えよう!
print("ゾーマが現れた")
zoma == HP10000
print("勇者が笛を吹いた")#笛を吹くと仲間が一定数増える。
print("笛のおかげで戦士が仲間になった")
print("zomaは何も攻撃してこない)#攻撃したらもっとプログラムの量が増えるから割愛w
yusya kougeki =40
print("40のダメージを与えた")
senshi = 100
if zomaの体力が0になった
print("zomaは死んだ"
elif:
yusya=yusyakougeki
だめだ
あたまがいたくなってきたw

91:デフォルトの名無しさん
24/10/08 23:41:03.98 2RqDvWQU0.net
もっとシンプルにいこう!
if文でいいはずw
number = int(input())
print(number)
if number == 10:
print(str(number) + "のダメージは10に等しい")
elif number > 10:
print(str(number) + "のダメージは10より大きい")
else:
print(str(number) + "のダメージは10未満")
ここまでできたw

92:デフォルトの名無しさん
24/10/08 23:58:45.01 2RqDvWQU0.net
yousya=you
senshi=sen
karateka=kara
あぶねー初期化忘れてたわw
you,sen,kara=0
これでよしw
次は割合に入るから気合いれなw
number = int(input())
print(number)
#その前にランダム要素を入れるの忘れてたw
import random
random.random()
random.randint(1回攻撃、二回攻撃)
if numberyou == 153:
print(str(number) + "は153に等しい")
elif number > 200:#勇者は二回攻撃なので、153と200の攻撃=攻撃となる。
print(str(number) + "senはyouより大きい")
else:
print(str(number) + "の攻撃力はsenとyou")
まだまだだなーw誰か一緒にとかないかい?w

93:デフォルトの名無しさん
24/10/09 00:28:36.20 4B3K5XUV0.net
そっか、フローチャートにしたほうがみやすいかw
'''スタートです。ラスボスは1匹。ゾーマです。ゾーマの攻撃は3回連続です。
こっちのキャラクターは勇者、戦士、魔法使い、僧侶、賢者、遊び人、魔法剣士、武道家の8人
また敵のスピードは8人より遅いのでいつも最後にゾーマのターンになります。
呪文が一切効かない。そのため、勇者、戦士、魔法剣士、武道家の攻撃のみで倒さないといけません。あと変数は勇者はyou、戦士はsen,魔法剣士はmaho ,武道家はbu。僧侶、賢者、遊び人は体力が減ったら回復呪文を唱えます。''
勇者以外全員体力が999です。
勇者は体力が500です。
100 スタート  
200 変数を初期化する  
ゾーマが生きている場合
you,sen,bu,mahoが攻撃をする
それ以外は体力が減ったら回復につとめる
ゾーマのHPは5万。
youの攻撃は3回連続して足した値
senの攻撃も3回連続
mahoも3回連続
buも3回
設定で自由かできる。
a=ガンガンいこうぜ!
print("ガンガンいこうぜ!)
b=体力回復を最優先にしようぜ!
print("体力の回復を優先しよう!)
c=攻守のバランスがいい
print("攻守のバランスがいい)
続く。。。w

94:デフォルトの名無しさん
24/10/09 02:09:25.11 4B3K5XUV0.net
これでいいやw面倒だしw
# RPGの攻撃状況を再現
# モンスターと戦っている。
# 1から10のサイコロをふって、
# 6未満の場合、サイコロの目だけダメージを与えたと表示。
# 6以上の場合、クリティカルヒットとして、100のダメージを与えたと表示。
# 0の場合、防御されたとして、0ダメージを表示。
import random
hit = random.randint(0,10)
if 1 <= hit < 6:
print("スライムに、" + str(hit) + "のダメージを与えた!")
elif hit >= 6:
print("クリティカルヒットダメージ100を与えた")
else:
print("ダメージは、" + str(hit) + "防御された")

95:デフォルトの名無しさん
24/10/09 08:32:08.43 URDCdGxSa.net
スレチうんこはBAN汁

96:デフォルトの名無しさん
24/10/09 09:42:13.95 1k3A/F0A0.net
福祉系か

97:デフォルトの名無しさん
24/10/09 09:43:01.06 1k3A/F0A0.net
>>88
福祉案件

98:デフォルトの名無しさん
24/10/09 10:51:29.69 MfPA4Dhe0.net
match文使え

99:デフォルトの名無しさん
24/10/09 12:30:53.22 L0RwG3mX0.net
使ったことない

100:デフォルトの名無しさん
24/10/09 15:51:29.02 wjyYHYx1M.net
html → javascript浅 → php → javascript深 → python
と来てついにc++に手出すことにしたわ
専業でもないしpythonだけで自分のやりたいことほぼなんでもできるし見向きすらしなかった
$ sudo apt install tree build-essential cmake pkg-config
これだけで開発環境整うとは知らなかった
pythonスクリプトと連携して簡単に開発できるか検討中

101:デフォルトの名無しさん
24/10/09 15:56:04.77 L0RwG3mX0.net
自分が高速化しなければ
という余地が残ってればいいけど
電子工作とかと同じで、一通りできるようになったけど作るものが何もない状態になる

102:デフォルトの名無しさん
24/10/09 17:59:18.01 1k3A/F0A0.net
>>100
llvm使ってgplから逃げろ

103:デフォルトの名無しさん (ワッチョイ cafa-lt6P)
24/10/11 03:18:27.10 bCU/2bPQ0.net
URLリンク(imonar.com)

104:デフォルトの名無しさん
24/10/11 16:07:56.09 tTImpqsq0.net
python+opencvすげえ!
たった10行くらいでwebカメラの動画表示された!ものの1,2分のコーディングじゃん
皆pythonに移行するわけだなこんな便利なライブラリあったら他のやってられねえわ

105:デフォルトの名無しさん
24/10/11 19:42:25.28 fZZZF+Af0.net
大事なのは表示されてからだぞ
どういうアプリを提供するのか?
これだけライブラリが進化してるのにそれを使って大したアプリが出てないことを考えると
簡単かどうかは関係がない

106:デフォルトの名無しさん
24/10/11 23:05:48.34 V8K6PYDOd.net
PythonはPoC止まり言語というイメージあるよね
「やってみた」ともいう

107:デフォルトの名無しさん
24/10/11 23:05:48.34 V8K6PYDOd.net
PythonはPoC止まり言語というイメージあるよね
「やってみた」ともいう

108:デフォルトの名無しさん
24/10/12 00:58:43.18 3/0Ne1V+0.net
1817を渡すと'00:30:17'に変換してくれる関数ってある?

109:デフォルトの名無しさん
24/10/12 01:09:25.66 3/0Ne1V+0.net
import datetime
td = datetime.timedelta(seconds=1817)
print(td)
これで '0:30:17' が表示される
ただし、'00:30:17' ではない
print(f'{td:%H:%M:%S}')
みたいなことをしてもエラーになる
妙に融通が利かない

110:デフォルトの名無しさん
24/10/12 07:14:47.22 5rKKsk01d.net
本物の馬鹿っているんだな

111:デフォルトの名無しさん
24/10/12 08:38:00.65 g42aTpjG0.net
import datetime
dt = datetime.datetime(year=2001, month=1, day=1)
td = datetime.timedelta(seconds=1817)
print(f'{dt+td:%H:%M:%S}')
こうやると'00:30:17' を得ることができる
せめてyearとかが省略可能だったら

112:デフォルトの名無しさん
24/10/12 11:17:40.09 xwLOOV9/0.net
pip install モジュール名==
でモジュールのバージョン一覧が出る機能っていつのまにか無くなってんだな
便利だったのになんでだろ

113:デフォルトの名無しさん
24/10/13 10:02:03.52 UZT3uuKDa.net
>>104
入り口が広い(初心者向け)っていうのは重要だけど
込み入ったことしようとすると速度とか色々気になって来る
まあ気になったら乗り換えればいいんだけど

114:デフォルトの名無しさん
24/10/13 10:03:05.15 UZT3uuKDa.net
>>105
そうほんとそれ
みんなサンプル動かして満足して終わり

115:デフォルトの名無しさん
24/10/13 10:17:48.38 UZT3uuKDa.net
>>111
>>> import time
>>> print(time.strftime('%H:%M:%S', time.gmtime(1817)))
00:30:17

116:デフォルトの名無しさん
24/10/13 10:26:22.93 5hnynBwd0.net
print(f'{time.gmtime(1817):%H:%M:%S}')
こうは書けないんだよな
書けても誰も困らないだろうに、もう更新の止まった古いモジュール

117:デフォルトの名無しさん
24/10/13 11:57:56.51 HElLI/1G0.net
pythonむずい

118:デフォルトの名無しさん
24/10/13 12:19:27.14 UZT3uuKDa.net
>>116
これもだめっぽ?
import time
tt = time.gmtime(1817)
print(f'{tt:%H:%M:%S}')

119:デフォルトの名無しさん
24/10/13 12:24:50.27 5hnynBwd0.net
試したら判るがな
TypeError: unsupported format string passed to time.struct_time.__format__
formatをサポートしていない
サポートしていないものを新たにサポートさせても、既存のコードには何の影響もない
だから、python 3.4で追加しましたとかなってても不思議ではないけど、
もうtimeモジュールは捨てられている

120:デフォルトの名無しさん
24/10/13 14:44:15.99 UZT3uuKDa.net
自分で追加したらええんやで

121:デフォルトの名無しさん
24/10/13 14:54:11.13 5hnynBwd0.net
電池が自作できます

122:デフォルトの名無しさん
24/10/13 15:56:29.59 Lfw+7lSHd.net
勉強になったわthx
URLリンク(paiza.io)

123:デフォルトの名無しさん
24/10/13 17:39:27.08 5hnynBwd0.net
import datetime
class My_timedelta(datetime.timedelta):
  def __init__(self, seconds):
    self.dt = datetime.datetime(year=2001, month=1, day=1) + datetime.timedelta(seconds=seconds)
  def __format__(self, format):
    return self.dt.strftime(format)
td = My_timedelta(seconds=1817)
print(f'{td:%H:%M:%S}')
print(f'{datetime.datetime.now()+td:%H:%M:%S}')
これは継承の練習問題でしょう
既存のtimedeltaに__format__を追加する

124:デフォルトの名無しさん
24/10/13 20:18:44.93 XBbSNdN/0.net
timedeltaをdatetime用の書式で表現したら
間違いが起こりそうで怖いのは気のせいか

125:デフォルトの名無しさん
24/10/13 21:05:07.54 5hnynBwd0.net
マイナスを渡すと23:29:43とかになる
多分欲しいのは、-00:30:17

126:デフォルトの名無しさん
24/10/13 21:18:08.75 TikvsAQNM.net
>>125
時刻と時間は別物だし、文字列として持っていればいい話。

127:デフォルトの名無しさん
24/10/13 21:20:20.02 4MeCS0kR0.net
td = datetime.timedelta(seconds=1809)
print(str(td).zfill(8))
これはだめ?

128:デフォルトの名無しさん
24/10/13 22:02:19.97 5hnynBwd0.net
さすがに小手先すぎる
マイナスにも対応できない
そして秒は小数点以下1桁も表示することという仕様変更により、
3600で割ったりして全部自前で作ることになった

129:デフォルトの名無しさん
24/10/13 23:12:53.64 0McD6feo0.net
マイナスの日時という発想がわからない

130:デフォルトの名無しさん
24/10/13 23:36:18.34 cfTcGRh7a.net
仕様後出し過去悪い

131:デフォルトの名無しさん
24/10/14 00:55:34.21 hhbIrBZG0.net
import datetime
s = -1816.123
g = (s>0)-1
td = str(datetime.timedelta(seconds=abs(s))).split(".")
print(f'{str(g)[0]}{td[0].zfill(7-g)}.{td[1][:1]}')#-00:30:16.1

132:デフォルトの名無しさん
24/10/14 00:58:07.55 63V1I12+0.net
1日超えたら駄目だったわ >>131

133:デフォルトの名無しさん
24/10/14 01:01:58.25 Na+e0b340.net
0で折り返すのは、abs()で処理して<0だったら'-'付ける、だろうなあ
流用できる処理が無い

134:デフォルトの名無しさん
24/10/14 02:27:55.47 iqlRL8W80.net
秒数を時分に変えるのは60で割ればいい話だろうにw

135:デフォルトの名無しさん
24/10/14 03:26:42.21 iqlRL8W80.net
>>131
0.123が何を指しているのかわかる方がおかしい

136:デフォルトの名無しさん
24/10/14 03:29:11.20 iqlRL8W80.net
>>133
四則計算と文字列を任意の日時フォーマットにするだけだぜ?
日時データ型をいじるというのはコンピューターが最も苦手な計算。

137:デフォルトの名無しさん
24/10/14 06:09:53.67 cfRK145W0.net
>日時データ型をいじるというのはコンピューターが最も苦手な計算。
馬鹿なのか

138:デフォルトの名無しさん
24/10/14 06:26:06.92 iqlRL8W80.net
>>137
64ビットだぜ?

139:デフォルトの名無しさん
24/10/14 06:28:17.12 iqlRL8W80.net
しかもまだ過渡期だから、実際は32ビットで計算している。
2036年問題だってすべてが対策済みというわけでもない。

140:デフォルトの名無しさん
24/10/14 06:29:49.49 iqlRL8W80.net
60で割って1000で割るとか、64ビットだけではできない。

141:デフォルトの名無しさん
24/10/14 08:54:29.92 B2/CkVb50.net
小数の誤差の話をしてる?
日時や時刻を扱う上で問題になるような誤差が出ることはなくない?
どんなに厳しい分野でも必要なのはナノ秒の数値までだろうし

142:デフォルトの名無しさん
24/10/14 08:56:37.40 9n6nFJIZa.net
>>136
おまいが計算苦手なだけだろ

143:デフォルトの名無しさん
24/10/14 10:43:52.07 iqlRL8W80.net
>>141
64ビットCPUは64ビットのレジスタと外部とのやりとりが64ビットだ。
彼は1/1000秒まで正確に求めたいらしいが、2進数は10進数の表現ができない。
例えば10進数の1000は2進数だと1024になってしまう。
コンピューターは10進数の計算が苦手、時分秒なんてコンピューターには概念すらない。

144:デフォルトの名無しさん
24/10/14 10:44:50.51 iqlRL8W80.net
>>141
質問しているやつは秒を分にする方法を知らない。
60で割るということもわからない。

145:デフォルトの名無しさん
24/10/14 11:01:11.87 XiI9iPvI0.net
そもそも質問ってなんなの
>>108 からの >>111、派生で>>116
後出しで
・マイナス
・小数点以下
にも対応
ようは、ほんとはdatetimeかtimeで
一発で書きたい
もしくは、
出来る限り自作関数など無しで書きたい
だと思うけど

146:デフォルトの名無しさん
24/10/14 11:01:57.59 iqlRL8W80.net
初心者は数値は数値型、文字列は文字列型とか意味もわからずにデータ型を決めたがるよな。
hh:mm:ssは日時型という内部表現と画面に表示されている見た目を混同するあたりも意味がわからない。

147:デフォルトの名無しさん
24/10/14 11:04:17.72 iqlRL8W80.net
>>145
秒数を60で割る、ミリ秒は1000で割るという秒と分の換算がわからないというPython以前の問題児

148:デフォルトの名無しさん
24/10/14 11:52:49.48 H9fWIyl80.net
>>145
一発で書く方法はないので自作関数必須
いずれにしろ入力フォーマット、入力値の範囲、必要精度、出力フォーマットの仕様が必要
この程度は標準で用意しといてくれよという気持ちはよく分かる

149:デフォルトの名無しさん
24/10/14 12:36:08.87 iqlRL8W80.net
>>148
それだとあなたが存在する必要がない

150:デフォルトの名無しさん
24/10/14 12:38:01.47 upEjQ6n10.net
>>143
>彼は1/1000秒まで正確に求めたいらしい
どこを見てそんな解釈したんだ?

151:デフォルトの名無しさん
24/10/14 12:44:19.92 iqlRL8W80.net
>>150
131 デフォルトの名無しさん (ワッチョイ eb61-lE/J) sage 2024/10/14(月) 00:55:34.21 ID:hhbIrBZG0
import datetime
s = -1816.123
g = (s>0)-1
td = str(datetime.timedelta(seconds=abs(s))).split(".")
print(f'{str(g)[0]}{td[0].zfill(7-g)}.{td[1][:1]}')#-00:30:16.1

152:デフォルトの名無しさん
24/10/14 12:45:05.98 iqlRL8W80.net
1816.123秒という例を本人が書いている

153:デフォルトの名無しさん
24/10/14 12:48:52.68 o4N23i0F0.net
60で割って云々はちょっとズレているというかアスペ感があるのでひとまずその問題は置いといて
ストップウォッチ風な表記をdatetimeかtimeで一発で出せたらいいのに、ってことなら
そもそもストップウォッチって
0’00’’00
だったような
なら0:00:00でよくて
別に2桁縛りの0埋めじゃなくてもよくね
ミリ秒部分は知らないけど

154:デフォルトの名無しさん
24/10/14 12:52:58.55 iqlRL8W80.net
>>153
彼はフォーマットのことも言っているが、1816秒を分に変換する方法がわからない。
1分は60秒だ。1000ミリ秒は1秒。

155:デフォルトの名無しさん
24/10/14 12:53:22.00 NoA08L9i0.net
0:00:00
10:00:00
これが揃ってないのがむずむずする
みたいな問題だとしたら
日付関数というよりprintなど出力フォーマット側の仕様にした方が個人的にはしっくりくる

156:デフォルトの名無しさん
24/10/14 12:53:51.85 upEjQ6n10.net
>>151
-1816.123という秒の単位で期間を表現した数値を
HH:MM:SS.0やHH:MM:SS.000形式の文字列にフォーマットしたいというのと
1/1000秒まで正確に求めたいというのは全然別の話じゃん
しかもそれ本人じゃないだろ

157:デフォルトの名無しさん
24/10/14 12:54:47.77 iqlRL8W80.net
本当に60秒が1分だと知らないのかもしれない。
datetimeライブラリなんか使う必要もない。

158:デフォルトの名無しさん
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