Я бьюсь головой об стену:
Я протестировал следующий раздел кода с помощью оператора print
, он выводит все итерации, как и ожидалось.Однако, когда я использую return
в реальной программе (взаимодействуя с flask для публикации на веб-странице), она выводит только первую итерацию.
This:
# Setting up cursor so we can parse results.
cur = db.cursor()
cur.execute("SELECT user from users")
user_table = cur.fetchall()
for u in user_table:
cur.execute("SELECT date from mood WHERE user='{}'".format(u[0]))
user_dates = cur.fetchall()
n = (len(user_dates) - 1) # Using this to call indexes later so need to throw away last number
u_streak = 1
dte_list = [ ]
t = timedelta(days=1)
u_streak = 1
streak_list = [ ]
streak_dict = {}
sm_list = [ ]
for dte in user_dates:
dte_list.append(dte[0])
dte_list = sorted(dte_list)
for i in range(n):
if (dte_list[i] + t) == dte_list[(i + 1)]:
u_streak += 1
else:
streak_list.append(u_streak)
u_streak = 1
print u[0], streak_list
вывод:
codestardust [1, 1, 3]
pippen [2, 2, 5, 4]
samwise [4, 1, 1, 1]
В то время как это:
@app.route('/mood',methods=['GET', 'POST'])
def mood():
if request.method == 'POST':
user = session['username']
mymood = request.form['mymood']
d = datetime.today().strftime('%Y-%m-%d')
# Confirm user is logged in
if user and mymood:
cur.execute("INSERT INTO mood SET mood ='{}', date = '{}', user='{}'"\
.format(mymood,d,user) )
# Begin streak calculation
t = timedelta(days=1)
cur.execute("SELECT user from users")
user_table = cur.fetchall()
for u in user_table:
cur.execute("SELECT date from mood WHERE user='{}'".format(u[0]))
user_dates = cur.fetchall()
n = (len(user_dates) - 1) # Using this to call indexes later so need to throw away last number
u_streak = 1
dte_list = [ ]
u_streak = 1
streak_list = [ ]
streak_dict = {}
sm_list = [ ]
for dte in user_dates:
dte_list.append(dte[0])
dte_list = sorted(dte_list)
for i in range(n):
if (dte_list[i] + t) == dte_list[(i + 1)]:
u_streak += 1
else:
streak_list.append(u_streak)
u_streak = 1
return jsonify([u[0], streak_list])
выводит это:
["codestardust", [1, 1, 3, 4]]
Я включил всю функцию из фактической программы, чтобы обеспечитьконтекст вложенности, в случае, если это ошибка с моим пониманием if
утверждений.Извините, если это слишком многословно.
Я вижу кучу голосов с отрицательным результатом, таких как , этот и тщательно проверил на ошибки отступа и тому подобное.Я также провел обширное исследование for
и if
утверждений, таких как здесь и здесь .
Насколько я понимаю, начиная с return
оператор вложен в for u in user_table:
, он должен проходить через все итерации пользователей.Я был на этом весь день и не вижу, что мне не хватает.Любая помощь высоко ценится!(Также я знаю, что пишется "pippen" неправильно lol)