Pythonのお勉強 Part74

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0b4a-lz98)
垢版 |
2024/09/21(土) 10:14:02.15ID:ZHy4g+PL0
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

※前スレ
Pythonのお勉強 Part73
https://mevius.5ch.net/test/read.cgi/tech/1717631290/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2024/10/01(火) 17:31:02.48ID:sFQyIfLy0
>>39
>もうアクセスしちゃってるから続きでクリックするしかないんだよな
別にそんなことないでしょ
下の各行がそれぞれ別の関数に分かれたところで
同じdriver同じelementに同じ順番でアクセスしてればいいだけ

driver.get(url)
element = driver.find_element(…)
element.click()

逆にそれができないようなら必要な抽象化もできないことになる
例えばログインしちゃってるから続きでクリックするしかないとなったら
login関数という形で抽象化できない
41デフォルトの名無しさん (ワッチョイ 8f9a-Kyt2)
垢版 |
2024/10/01(火) 21:20:21.01ID:w4EeoDoz0
ガチ初心者の俺は
まず最初に何作ったら
勉強になるの?
2024/10/01(火) 23:53:16.60ID:CfRMfbr90
>>40
見つかった場合はclickすべきelementを返す
みたいな関数になるんだろう

不自然すぎる
やってやれないことはないみたいな強弁としか

大半のケースではfor elseの使い所は無いけど、
たまにばっちりはまるケースがある
頻度は低いので、使う時はコメント必須
2024/10/02(水) 12:51:21.76ID:VhOKxDCS0
3.13来週か
2024/10/02(水) 13:17:47.79ID:Y5PwfM4H0
>>13
google claboで3が使えないから日本語は無しで進めたw
ありがとう
2024/10/02(水) 18:09:10.91ID:4jHsmsQb0
re.DOTALLはインラインフラグでは(?s)だけど、sは何の略だろう
2024/10/02(水) 18:20:50.77ID:g2e/T20O0
singleline
2024/10/02(水) 18:32:37.11ID:4jHsmsQb0
なるほど
MULTILINEと対応してないな
perlでも/sと/mは結局どっちがどっちだか覚えられなかった
必ず逆になるんだよな
2024/10/03(木) 16:51:19.28ID:LhmpW7CX0
いまさVScodeでPythonを学んでいるんだけど
Pythonにあったテーマカラーで何かオススメない?
いまOne Dark Proっていうテーマにしてるんだけど、文字列はオレンジの方がいいかなって思ってきた
2024/10/03(木) 17:04:58.12ID:SXCr8u+C0
変更したいと思ったことすらない
50デフォルトの名無しさん (オッペケ Sr47-/XLF)
垢版 |
2024/10/03(木) 18:36:30.78ID:SO+gfZGnr
デフォルトなら文字列オレンジじゃね?
51デフォルトの名無しさん (ワッチョイ 7f90-jPv4)
垢版 |
2024/10/04(金) 00:56:50.57ID:3S+V9Rl60
>>48
VSCodeは融通が利かない
それに色分けは自分のためにならない

色情報はコードと何の関係もないので、色分けに慣れていると色分けをしていないコードが読めなくなる
2024/10/04(金) 01:05:39.06ID:Ls4Fx/rv0
>>51
で、
何がいいって話?
2024/10/04(金) 02:07:40.34ID:fj4w0BBZ0
色分けされてないコードを読む
そんな状況ってあるっけ・・?
白黒プリントアウトされてるとか?
2024/10/04(金) 02:21:36.87ID:7yCtL1J1x
あえて色分けなしにする
って訓練にはならないと思うけどね

もし訓練になるって言うなら
(慣れていない)別の色分けコードに遭遇したときに対しても
同じように読めなくならないと説明がつかないけど
そんなことないし

なので色は何でも良いんじゃない
おれは基本デフォ
ネットで調べるときも容赦なくデフォで表示されるし

初学者にとって
プログラミング向きのタイピング速度(コーディング速度)
これが一番重要だと個人的に思う

命名やコーディングにかかるチリツモ時間が
初心者にとっては妨げになるので
予測変換などもガンガン使っていった方がいい
55デフォルトの名無しさん (ワッチョイ 2384-D2eP)
垢版 |
2024/10/04(金) 09:53:42.06ID:8exysTNA0
シンタックスハイライトの後は自動インデント、自動補完の話が続くんだろ
chatgptにダーク系のおすすめ聞いてきたから好きなの鰓べ
Dracula, Monokai, Solarized Dark, One Dark Pro, Gruvbox Dark, Nord
2024/10/04(金) 12:29:15.26ID:f5VlUYAG0
>ハイパーモダンPython
ってそんなにすごい知識が身につくの?
57デフォルトの名無しさん (ワッチョイ 6f09-/XLF)
垢版 |
2024/10/04(金) 12:47:22.85ID:lUav+mwb0
>>51
寧ろvscodeは個別に配色の設定することも可能だから融通は利く
58デフォルトの名無しさん (アウアウエー Sadf-D2eP)
垢版 |
2024/10/04(金) 13:27:33.15ID:RixEjMnja
>>51
>色情報はコードと何の関係もないので、色分けに慣れていると色分けをしていないコードが読めなくなる

これめっちゃ判る
特に初心者ほどやめた方が良い
2024/10/04(金) 13:45:12.37ID:2V3z57MG0
色分けされてる方が読みやすい
という単純な事実なのでは

初心者でも慣れてても同じ
道具に頼ると素手でできなくなるからと道具使わない人みたいな感じ
2024/10/04(金) 13:48:53.62ID:RqFpLHKv0
逆に初心者の方が誤りを判別する手助けにもなるので、
色分けされていたほうが便利だと思う
2024/10/04(金) 14:16:07.08ID:3xmlzivUa
>色分けをしていないコード
ってどういうことなんだろ
わかる言ってるやついるけど
おれは全然わかんないわ笑
色無いなら自分で色分けすればよくね?

色アリ無しどちらではじめようが慣れたら結局
・色分け無しで慣れる→色分けアリでも読める
・色分けアリで慣れる→色分け無しでも読める
なんだから、最初から色分けアリの方が学習コスト低いよな
2024/10/04(金) 14:22:18.26ID:i5vhWVds0
まぁ(初心者)色分けやめた方がいいって言ってるやつも
色分けした方が読みやすいって言ってんのが答えだわなw
2024/10/04(金) 14:30:37.03ID:vJhSgpGOa
道具に頼って素手よりパフォーマンス上がればそりゃ道具使うわな
土方ですら水平器もインパクトドライバーも使ってるわ
2024/10/04(金) 14:32:10.85ID:IDs1O+210
勉強にならんからIDE使うな的な
2024/10/04(金) 14:49:16.95ID:Af8duaqZ0
コーディングから実行までちんたらする時間がマジで無駄
スペルミスに勘づくスキルは上昇しづらくなるだろうがエラーメッセージに頼ればいいしエラーメッセージと勝負して先回りする意味はない
まず善い手本参考に自分で書いたコードが成功か失敗か確かめる数こなした方が上達する
言語学習でも同じ
インプットアウトプットの回数多い方が文法も語彙力も上がる
文脈把握できればエラーに気づく能力も上がる
色分け無し縛り云々は逆張り愉快犯以外に利点はない
66デフォルトの名無しさん (ワッチョイ 6f09-/XLF)
垢版 |
2024/10/04(金) 15:58:46.91ID:lUav+mwb0
>>58
この論理ほど馬鹿なものもない
便利機能はどんどん使えばいい
災害を想定して普段から水電気ガスが満足に使えない生活をしているやつは殆どいないだろう
2024/10/04(金) 16:18:08.42ID:lDeI5PGjH
androidアプリ作ろうと思ってkivyで書いて
コンパイルをgoogle colaboratoryでbuildozerでやったら
上手くapk作成できてandroid端末でもインストール動作確認できたけど
コンパイルの時間めっちゃかかったなにこれ…たぶん20分くらい
こういうもんなの
2024/10/04(金) 17:21:46.00ID:2V3z57MG0
if elif elif else
みたいにインデントを深くせずにtryを書けないかな
2024/10/04(金) 18:37:26.59ID:x2l03NKV0
>>68
日本語でOK
70デフォルトの名無しさん (ワッチョイ 6f09-/XLF)
垢版 |
2024/10/04(金) 18:47:11.58ID:lUav+mwb0
execで無理やり書け
2024/10/04(金) 19:21:49.26ID:Z9HGqIB60
色分けに慣れたらコード読めなくなるってマジ?
でもキータとか見ても色分けして表示されてるところが多いしなあ

とりあえずVScodeデフォルトでしばらく使ってみるわ!ありがと
72デフォルトの名無しさん (ワッチョイ 6f09-/XLF)
垢版 |
2024/10/04(金) 19:29:54.92ID:lUav+mwb0
エディタの便利機能使わないならメモ帳でやっとけって話になるわな
2024/10/04(金) 19:31:01.13ID:2V3z57MG0
https://i.imgur.com/ZRZqENW.png
evalでできた
2024/10/04(金) 19:35:22.61ID:2V3z57MG0
数値部分eval だけでいいな
2024/10/04(金) 19:58:19.41ID:upmSrzby0
for convert in (int, float, complex):
でいい
2024/10/04(金) 20:17:43.91ID:oFau5fAJ0
chromeでseleniumを動かしているのですが、実行した直後にコマンドプロンプトが落ちてしまうので、何のエラーなのかが一切分かりません
どうやったら落ちなくできますか?
2024/10/04(金) 20:33:28.99ID:JKo0fS4W0
>>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("https://www.google.co.jp";)
print(driver.title)
time.sleep(1)
driver.quit()
print("正常終了。")
2024/10/04(金) 22:19:24.82ID:JAupTFkx0
>>76
.pyファイルをダブルクリックするとかしてpy.exe(Python Launcher)経由でプログラムを実行してると推測する

VSCodeとか入れてるならVSCodeからプログラムを実行すれば出力も確認できる
入れてないならプログラムの最後にinput()と書いてプログラム終了前にユーザー入力を待つようにするか.pyファイルをダブルクリックするのではなくコマンドプロンプトを先に開いてそこからpython hello.pyの形でプログラムを実行すれば出力内容を確認できる
2024/10/05(土) 16:10:10.09ID:kis0iOlf0
>>77
>>78
ありがとうございます!
これまではbatファイルにpyファイルのパスを書いて、batファイルをダブルクリックで実行していましたが、
教えていただいたとおりコマンドプロンプトを開いて手動で打ち込んで実行すれば落ちずエラーを確認できました
2024/10/06(日) 16:50:59.12ID:kvSgTVMcM
質問です。ある書籍で
price = 100
print(price * 1.10)
print(int(price * 1.10))
の結果が
110.00000000000001 ←浮動小数点で表示
110 ←int関数を使って整数で表示
と書いてあるのですが、何故110.00000000000001になるのかが浮動小数点について調べましたが、私の知識では理解出来ません。
どなたか解説をお願いいたします。よろしくお願いします。
81デフォルトの名無しさん (JP 0H03-dA/z)
垢版 |
2024/10/06(日) 17:09:34.73ID:UFSeVUgGH
浮動小数点と丸めの話は定番の話でググって出てくる説明で分からんかったらここでも多分無理だぞ
2024/10/06(日) 19:11:14.13ID:6RIEhc9V0
print(100 * 1.08 == int(100 * 1.08)) # true
print(100 * 1.1 == int(100 * 1.1)) # false

1.08だったら正確に108.0だったのにな
2024/10/06(日) 19:18:39.74ID:6RIEhc9V0
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デフォルトの名無しさん (ワッチョイ 0621-dA/z)
垢版 |
2024/10/06(日) 21:53:44.52ID:D+tHfaDh0
結局二進数表記で無限桁になる場合は誤差が出るってことにつきる
2024/10/06(日) 22:18:43.84ID:6RIEhc9V0
from fractions import Fraction
rate = Fraction(110, 100)
print(100*rate == int(100*rate)) # True
2024/10/06(日) 23:29:37.04ID:AAf4wbtz0
ハイパーモダンpythonって何だそれ?って立ち読みしたらただのツールチェインの解説だった
原書見るとhypermodern python toolingだった
日本のオライリーは完全に終わった
87デフォルトの名無しさん (ワッチョイ 46ad-b23o)
垢版 |
2024/10/07(月) 22:15:19.09ID:QvvyKpnV0
質問です。こちらの職業は勇者、戦士、空手家
勇者から柔道家までの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まで。
次の発言からコードを書いていく。
2024/10/07(月) 22:52:41.61ID:stL6GaPr0
発達障害風の生成AI?
2024/10/07(月) 22:54:11.40ID:nsk0Xk2O0
>>88
そんなものサンプルがないからこれは本物
90デフォルトの名無しさん (ワッチョイ 46ad-b23o)
垢版 |
2024/10/08(火) 23:32:02.99ID:2RqDvWQU0
>>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デフォルトの名無しさん (ワッチョイ 46ad-b23o)
垢版 |
2024/10/08(火) 23:41:03.98ID:2RqDvWQU0
もっとシンプルにいこう!
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デフォルトの名無しさん (ワッチョイ 46ad-b23o)
垢版 |
2024/10/08(火) 23:58:45.01ID:2RqDvWQU0
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デフォルトの名無しさん (ワッチョイ 46ad-b23o)
垢版 |
2024/10/09(水) 00:28:36.20ID:4B3K5XUV0
そっか、フローチャートにしたほうがみやすいか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デフォルトの名無しさん (ワッチョイ 46ad-b23o)
垢版 |
2024/10/09(水) 02:09:25.11ID:4B3K5XUV0
これでいいや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) + "防御された")
2024/10/09(水) 08:32:08.43ID:URDCdGxSa
スレチうんこはBAN汁
96デフォルトの名無しさん (ワッチョイ 4e03-oLgd)
垢版 |
2024/10/09(水) 09:42:13.95ID:1k3A/F0A0
福祉系か
97デフォルトの名無しさん (ワッチョイ 4e03-oLgd)
垢版 |
2024/10/09(水) 09:43:01.06ID:1k3A/F0A0
>>88
福祉案件
98デフォルトの名無しさん (ワッチョイ 066c-dA/z)
垢版 |
2024/10/09(水) 10:51:29.69ID:MfPA4Dhe0
match文使え
2024/10/09(水) 12:30:53.22ID:L0RwG3mX0
使ったことない
2024/10/09(水) 15:51:29.02ID:wjyYHYx1M
html → javascript浅 → php → javascript深 → python

と来てついにc++に手出すことにしたわ
専業でもないしpythonだけで自分のやりたいことほぼなんでもできるし見向きすらしなかった

$ sudo apt install tree build-essential cmake pkg-config
これだけで開発環境整うとは知らなかった
pythonスクリプトと連携して簡単に開発できるか検討中
2024/10/09(水) 15:56:04.77ID:L0RwG3mX0
自分が高速化しなければ
という余地が残ってればいいけど

電子工作とかと同じで、一通りできるようになったけど作るものが何もない状態になる
102デフォルトの名無しさん (ワッチョイ 4eb3-oLgd)
垢版 |
2024/10/09(水) 17:59:18.01ID:1k3A/F0A0
>>100
llvm使ってgplから逃げろ
2024/10/11(金) 03:18:27.10ID:bCU/2bPQ0
https://imonar.com/PKQJotV.jpg
2024/10/11(金) 16:07:56.09ID:tTImpqsq0
python+opencvすげえ!
たった10行くらいでwebカメラの動画表示された!ものの1,2分のコーディングじゃん
皆pythonに移行するわけだなこんな便利なライブラリあったら他のやってられねえわ
2024/10/11(金) 19:42:25.28ID:fZZZF+Af0
大事なのは表示されてからだぞ
どういうアプリを提供するのか?
これだけライブラリが進化してるのにそれを使って大したアプリが出てないことを考えると
簡単かどうかは関係がない
2024/10/11(金) 23:05:48.34ID:V8K6PYDOd
PythonはPoC止まり言語というイメージあるよね
「やってみた」ともいう
2024/10/11(金) 23:05:48.34ID:V8K6PYDOd
PythonはPoC止まり言語というイメージあるよね
「やってみた」ともいう
2024/10/12(土) 00:58:43.18ID:3/0Ne1V+0
1817を渡すと'00:30:17'に変換してくれる関数ってある?
2024/10/12(土) 01:09:25.66ID:3/0Ne1V+0
import datetime
td = datetime.timedelta(seconds=1817)
print(td)

これで '0:30:17' が表示される
ただし、'00:30:17' ではない

print(f'{td:%H:%M:%S}')
みたいなことをしてもエラーになる
妙に融通が利かない
110デフォルトの名無しさん (スッップ Sdea-gWHf)
垢版 |
2024/10/12(土) 07:14:47.22ID:5rKKsk01d
本物の馬鹿っているんだな
2024/10/12(土) 08:38:00.65ID:g42aTpjG0
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とかが省略可能だったら
2024/10/12(土) 11:17:40.09ID:xwLOOV9/0
pip install モジュール名==
でモジュールのバージョン一覧が出る機能っていつのまにか無くなってんだな
便利だったのになんでだろ
113デフォルトの名無しさん (アウアウエー Sa3f-mL/d)
垢版 |
2024/10/13(日) 10:02:03.52ID:UZT3uuKDa
>>104
入り口が広い(初心者向け)っていうのは重要だけど
込み入ったことしようとすると速度とか色々気になって来る
まあ気になったら乗り換えればいいんだけど
114デフォルトの名無しさん (アウアウエー Sa3f-mL/d)
垢版 |
2024/10/13(日) 10:03:05.15ID:UZT3uuKDa
>>105
そうほんとそれ
みんなサンプル動かして満足して終わり
2024/10/13(日) 10:17:48.38ID:UZT3uuKDa
>>111
>>> import time
>>> print(time.strftime('%H:%M:%S', time.gmtime(1817)))
00:30:17
2024/10/13(日) 10:26:22.93ID:5hnynBwd0
print(f'{time.gmtime(1817):%H:%M:%S}')
こうは書けないんだよな
書けても誰も困らないだろうに、もう更新の止まった古いモジュール
117デフォルトの名無しさん (ワッチョイ 8b01-GQwk)
垢版 |
2024/10/13(日) 11:57:56.51ID:HElLI/1G0
pythonむずい
118デフォルトの名無しさん (アウアウエー Sa3f-mL/d)
垢版 |
2024/10/13(日) 12:19:27.14ID:UZT3uuKDa
>>116
これもだめっぽ?
import time
tt = time.gmtime(1817)
print(f'{tt:%H:%M:%S}')
2024/10/13(日) 12:24:50.27ID:5hnynBwd0
試したら判るがな
TypeError: unsupported format string passed to time.struct_time.__format__

formatをサポートしていない
サポートしていないものを新たにサポートさせても、既存のコードには何の影響もない
だから、python 3.4で追加しましたとかなってても不思議ではないけど、
もうtimeモジュールは捨てられている
120デフォルトの名無しさん (アウアウエー Sa3f-mL/d)
垢版 |
2024/10/13(日) 14:44:15.99ID:UZT3uuKDa
自分で追加したらええんやで
2024/10/13(日) 14:54:11.13ID:5hnynBwd0
電池が自作できます
2024/10/13(日) 15:56:29.59ID:Lfw+7lSHd
勉強になったわthx
https://paiza.io/projects/fWmiW0ZJcfGIiFRKkL1YTw
2024/10/13(日) 17:39:27.08ID:5hnynBwd0
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__を追加する
2024/10/13(日) 20:18:44.93ID:XBbSNdN/0
timedeltaをdatetime用の書式で表現したら
間違いが起こりそうで怖いのは気のせいか
2024/10/13(日) 21:05:07.54ID:5hnynBwd0
マイナスを渡すと23:29:43とかになる
多分欲しいのは、-00:30:17
126デフォルトの名無しさん (ブーイモ MM8f-oCgE)
垢版 |
2024/10/13(日) 21:18:08.75ID:TikvsAQNM
>>125
時刻と時間は別物だし、文字列として持っていればいい話。
2024/10/13(日) 21:20:20.02ID:4MeCS0kR0
td = datetime.timedelta(seconds=1809)
print(str(td).zfill(8))

これはだめ?
2024/10/13(日) 22:02:19.97ID:5hnynBwd0
さすがに小手先すぎる
マイナスにも対応できない

そして秒は小数点以下1桁も表示することという仕様変更により、
3600で割ったりして全部自前で作ることになった
129デフォルトの名無しさん (ワッチョイ 1f78-oCgE)
垢版 |
2024/10/13(日) 23:12:53.64ID:0McD6feo0
マイナスの日時という発想がわからない
130デフォルトの名無しさん (アウアウエー Sa3f-mL/d)
垢版 |
2024/10/13(日) 23:36:18.34ID:cfTcGRh7a
仕様後出し過去悪い
2024/10/14(月) 00:55:34.21ID: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
2024/10/14(月) 00:58:07.55ID:63V1I12+0
1日超えたら駄目だったわ >>131
2024/10/14(月) 01:01:58.25ID:Na+e0b340
0で折り返すのは、abs()で処理して<0だったら'-'付ける、だろうなあ
流用できる処理が無い
134デフォルトの名無しさん (ワッチョイ 1f78-oCgE)
垢版 |
2024/10/14(月) 02:27:55.47ID:iqlRL8W80
秒数を時分に変えるのは60で割ればいい話だろうにw
135デフォルトの名無しさん (ワッチョイ 1f78-oCgE)
垢版 |
2024/10/14(月) 03:26:42.21ID:iqlRL8W80
>>131
0.123が何を指しているのかわかる方がおかしい
136デフォルトの名無しさん (ワッチョイ 1f78-oCgE)
垢版 |
2024/10/14(月) 03:29:11.20ID:iqlRL8W80
>>133
四則計算と文字列を任意の日時フォーマットにするだけだぜ?

日時データ型をいじるというのはコンピューターが最も苦手な計算。
2024/10/14(月) 06:09:53.67ID:cfRK145W0
>日時データ型をいじるというのはコンピューターが最も苦手な計算。

馬鹿なのか
138デフォルトの名無しさん (ワッチョイ 1f78-oCgE)
垢版 |
2024/10/14(月) 06:26:06.92ID:iqlRL8W80
>>137
64ビットだぜ?
139デフォルトの名無しさん (ワッチョイ 1f78-oCgE)
垢版 |
2024/10/14(月) 06:28:17.12ID:iqlRL8W80
しかもまだ過渡期だから、実際は32ビットで計算している。

2036年問題だってすべてが対策済みというわけでもない。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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