🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

8468閲覧

指定時間の間のループ文の作り方について

sa-to

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/27 18:11

前提・実現したいこと

下のソースコードのように、20秒であったり秒数を決め、その秒数間をループする文は作成できるのですが、これを指定時間の間行うようなループ文はどのようにして書いたら良いのでしょうか?
例えば、2020/11/1 00:00:00〜2020/11/1 00:10:00 の間 といった感じです。
説明が下手で申し訳ありませんが、よろしくお願いします。

該当のソースコード

t0 = ts.utc(2020, 11, 1, 0, 0, 0) for s in range(20): t1 = ts.utc(t0.utc_datetime() + timedelta(seconds=s))

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/11/27 23:53

上記コードで20秒カウント出来ていますか?
sa-to

2020/11/28 00:39

はい、できています。
fumu7

2020/11/28 01:53

プログラムの最初に「import time」という行を入れて、forループの前と後に、「print(time.time())」という行を入れてから、プログラムを実行してみてください。最初に表示される数字と後で表示される数字の差は20ぐらいになっていますか? (for文の前後で、エポック時間を表示することでforループの実行時間を知ろうとしています)
sa-to

2020/11/28 02:16

エポック時間は現在のリアルタイムの時間になっていて、差はありませんでした。。。
meg_

2020/11/28 03:35

> はい、できています。 であれば「for s in range(20):」の「20」のところを設定したい秒数に変更すれば良いのでは?と思います。「例えば、2020/11/1 00:00:00〜2020/11/1 00:10:00 の間」の秒数を計算して設定すれば良いと思います。 ※掲載されているコードは実行できなかったため当方で検証はしていません。
sa-to

2020/11/28 03:56

わかりました。わざわざありがとうございます。
guest

回答2

0

import time; start = time.time() // forループ開始前のエポック時間を変数startに保存しておく。 duration = int(input("forループを実行する期間(秒数)を入力してください")) // キーボードからループする秒数を取得する。 end = start + duration // forループの開始時間+forループの実行時間 = forループの終了時間 while time.time() <= end: // 今の時刻が、終了時間(開始時間+キーボードから入力された秒数)以下であれば、ループを続ける print(t) // whileループで繰り返し実行する処理のコードをここに書く。Printは、その一例。 t += delta // whileループが実行されるたびに時刻に1秒を加えているが、whileループは1秒毎に実行されるコードにはなっていないので、このコードは無意味。(whileループは、print文と変数tの加算しかしていないので、ごく普通のデスクトップPCでも毎秒10万回以上実行される。こらが、現実の時間経過に則していないことは明らか) // 実行中の時刻は time.time()などでその都度取得すべき。

投稿2020/11/28 13:56

fumu7

総合スコア121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakach

2020/12/01 06:36

start = time.time() と duration = int(input("forループを... の順序を逆にしてはどうでしょう. 「実行する期間」に入力待機時間が含まれるかどうかの差です.
guest

0

whileで書く方が簡単かもしれません。

tsというのが何なのかわからなかったので、
標準のdatetimeを使っていますが、
同様の処理で書けるのではないでしょうか。

python

1import datetime 2 3start = datetime.datetime(2020, 11, 1, 0, 0) 4stop = datetime.datetime(2020, 11, 1, 0, 10) 5delta = datetime.timedelta(seconds=1) 6 7t = start 8while t <= stop: 9 print(t) 10 t += delta

投稿2020/11/28 06:56

bsdfan

総合スコア4794

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問