如何在for循环运行时更改python/django中的for循环变量

时间:2021-04-08 16:10:34

标签: python django date datetime for-loop

我想在循环运行时更改定义 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 + 1时,我想要更新days的{​​{1}},这样forloop的总循环次数会增加1每当 for i in range(0, days + 1): 发生时。 days = days + 1 增加 1,但 days = form.instance.days 中的 days 未更新。我希望你们能帮上忙。谢谢。

2 个答案:

答案 0 :(得分:2)

写作时

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 的更新值。

答案 1 :(得分:1)

$.ajax({ url: "/getSpecificPass", type: "POST", contentType: "application/json", data: JSON.stringify(val.casename), dataType: "JSON", success: function(response) { //response =response.result; $.each(response.result,function(key,val){ var html="<tr>"; html+="<td>"+localStorage.getItem('case_name')+"</td><td>"+val.password+"</td><td>"+val.hash+"</td>" html+="</tr>" $(html).appendTo($("#database tbody")); }); $('#database').dataTable(); 循环可能更适合您的用例。你需要建立一个条件让它停止循环,同时避免陷入无限循环。