我想在循环运行时更改定义 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
未更新。我希望你们能帮上忙。谢谢。
答案 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();
循环可能更适合您的用例。你需要建立一个条件让它停止循环,同时避免陷入无限循环。