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と全く同じヘッダーつけてもダメだった。
わかる方いるかしら?