質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Q&A

2回答

292閲覧

forからwhile

98ciIx1y7kIKnOI

総合スコア0

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

0グッド

2クリップ

投稿2021/01/04 07:02

前提・実現したいこと

この文をwhile文にして解説していただきたいです。!
ここに質問の内容を詳しく書いてください。

■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

for i in range(9):
mtime=os.path.getmtime('photo/00'+str(i+1)+'.jpg')
dt=datetime.datetime.formtimestamp(mtime)
dpath='photo/'+dt.strftime('%Y%m%d')

if os.path.isdir(dpath)==False: os.mkdir(dpath) shutil.move('photo/00'+ str(i+1) + '.jpg', dpath)
ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

meg_

2021/01/04 10:59

コードは「コードの挿入」で記入してください。
guest

回答2

0

i を0から8まで1づつ増やしながらwhileでループしましょう

投稿2021/01/04 07:05

y_waiwai

総合スコア87800

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

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

98ciIx1y7kIKnOI

2021/01/04 07:10

ありがとうございます。 最初の一つを教えていただきたいです。
y_waiwai

2021/01/04 07:14

i=0 while i<9: なんやかや i=i+1 ってとこで
guest

0

for i in range(9)ということはi+1 = 1, ..., 9の9枚ということで大丈夫でしょうか? (0~9の10枚じゃないのかなと思いました)
もしそうならば、代わりにfor i in range(1, 10, 1)と書けばi = 1, ..., 9となり、ループの中でiをそのまま使うことができます。

もとのコードが

python

1import os 2from datetime import datetime 3import shutil 4 5# import pathlib # テスト用に./photo/00*.jpgを作る 6 7 8for i in range(1, 10, 1): 9 # org_picture = pathlib.Path("./photo/00" + str(i) + ".jpg") # テスト用に./photo/00*.jpgを作る 10 # if not os.path.exists(org_picture): # テスト用に./photo/00*.jpgを作る 11 # org_picture.touch() # テスト用に./photo/00*.jpgを作る 12 mtime = os.path.getmtime("photo/00" + str(i) + ".jpg") 13 dt = datetime.fromtimestamp(mtime) 14 dpath = 'photo/' + dt.strftime('%Y%m%d') 15 if os.path.isdir(dpath) == False: 16 os.mkdir(dpath) 17 shutil.move('photo/00'+ str(i) + '.jpg', dpath)

だったとして、whileを使うと

python

1import os 2from datetime import datetime 3import shutil 4# import pathlib # テスト用に./photo/00*.jpgを作る 5 6 7i = 1 # iの初期値 8while i < 10: # i<10が真、つまりi=1からi=9まで以下を繰り返す(最後にiの値を1つ増やしている) 9 # org_picture = pathlib.Path("./photo/00" + str(i) + ".jpg") # テスト用に./photo/00*.jpgを作る 10 # if not os.path.exists(org_picture): # テスト用に./photo/00*.jpgを作る 11 # org_picture.touch() # テスト用に./photo/00*.jpgを作る 12 mtime = os.path.getmtime("photo/00" + str(i) + ".jpg") # 同じ 13 dt = datetime.fromtimestamp(mtime) # 同じ 14 dpath = 'photo/' + dt.strftime('%Y%m%d') # 同じ 15 if os.path.isdir(dpath) == False: # 同じ 16 os.mkdir(dpath) # 同じ 17 shutil.move('photo/00'+ str(i) + '.jpg', dpath) # 同じ 18 i = i + 1 # iの値を1つ増やす(インクリメントという)

とかけるのかな、と思います。解説すべきこととしては

python

1i = 1 2while i < 10: 3 # ...なにかの処理... 4 i = i + 1

という形になっていて、whileの外に初期値、whileの中でインクリメントしていて、i < 10が満たされている間はずっと...なにかの処理...を行う、ということでしょうか。whileを使う時には無限ループに注意です。

それから、質問をする時にはマークダウンという記法が使われます。使い方は簡単なのでググってみてください。
ソースコードを載せる時には、そのコードを```` が三つ)で囲むといい感じになります。teratailの質問の定型分を無理して使わなくてもいいと思います。

投稿2021/01/04 12:52

BOLTE

総合スコア26

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問