簡體   English   中英

如何在 for 循環運行時更改 python/django 中的 for 循環變量

[英]How to change for loop variables in python/django while for loop is running

我想在循環運行時更改定義 for 循環的變量。 當你看到代碼時它會更有意義,所以它是:

days = form.instance.days

for i in range(0, days + 1):
    days_added = i
    current_end = class_start_date + datetime.timedelta(days=days_added)
    current_end_day = calendar.day_name[datetime.datetime.strptime(str(current_end), '%Y-%m-%d').weekday()]
    if current_end_day == 'Saturday' or current_end_day == 'Sunday':
        days = days + 1

你看,當我運行代碼 days = days days = days + 1時,我希望更新for i in range(0, days + 1):的天數,以便 forloop 的總循環數增加 1每days = days + 1發生時。 days = form.instance.days增加了 1,但是days in for i in range(0, days + 1):沒有更新。 我希望你們能幫忙。 謝謝。

當你寫

for i in <expr>:

該表達式僅被評估一次,因此您無法通過for循環實現您想要的。 您可以改用一段while

i = 0
while i < days + 1:
    days_added = i
    current_end = class_start_date + datetime.timedelta(days=days_added)
    current_end_day = calendar.day_name[datetime.datetime.strptime(str(current_end), '%Y-%m-%d').weekday()]
    if current_end_day == 'Saturday' or current_end_day == 'Sunday':
        days = days + 1
    i += 1

現在i < days + 1條件每次都會被評估,它將使用days的更新值。

while循環可能更適合您的用例。 您需要為它建立一個停止循環的條件,同時避免陷入無限循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM