Базовый календарь,ошибка
|
|
#1
Есть довольно таки простой код: label days: if day_of_weak == 1 and day_of_weak <=5: "working" $day_of_weak +=1 jump days if day_of_weak ==6 and day_of_weak <=7: "Yeeah" $day_of_weak +=1 jump days НО,при запуске он тупо пропускает Jump и идет дальше,вопрос почему? Ну ок,подумал я,тупой ты ренпай.Буду тебя насильно перепрыгивать в нужное место Дописал еще один лейбл для распрыжки: label start: $day_of_weak = 1 "ok" jump days
label nextd: "ok made it" jump days
label days: if day_of_weak == 1 and day_of_weak <=5: "working" $day_of_weak +=1 jump nextd if day_of_weak ==6 and day_of_weak <=7: "Yeeah" $day_of_weak +=1 jump nextd Непомоголо втупую пропускает лейбл days,как будто его нет.
Прописал для каждого дня отдельную проверку : label start: $day_of_weak = 1 "ok" jump days
label days:
if day_of_weak == 1: "Monday" $day_of_weak +=1 jump nextd if day_of_weak == 2: "Tuesday" $day_of_weak +=1 jump nextd if day_of_weak == 3: "Wednesday" $day_of_weak +=1 jump nextd if day_of_weak == 4: "Thursday" $day_of_weak +=1 jump nextd if day_of_weak == 5: "Friday" $day_of_weak +=1 jump nextd if day_of_weak == 6: "Saturday" $day_of_weak +=1 jump nextd if day_of_weak ==7: "Sunday" $day_of_weak -=6 jump nextd
label nextd: "ok made it" jump days Только так заработало ,но сильно дохера текста и работы,хотелось бы код покомпактней,кто че может посоветовать?
Сообщение отредактировал partizein - Вторник, 26/Июн/2018, 11:58
Пользуйтесь ребята
|
#2
И первый вариант, и второй, с распрыжкой, технически рабочие, проблема не в конструкции, а в условии в if:
Код if day_of_weak == 1 and day_of_weak <=5: читается как "если Х равен 1 и одновременно с этим Х меньше либо равен 5", т.е. единственное значение переменной, которое удовлетворяет такому условию - это 1. В первом куске кода оно не выполняется никогда, т.к. переменную вы до вхождения в него не объявили, и значения у нее нет, во втором, с распрыжкой, выполняется только раз, потому что переменная была объявлена ($day_of_weak = 1). Если исправить на:
Код if day_of_weak >= 1 and day_of_weak <=5: - все заработает. Аналогично со вторым условием:
Код if day_of_weak >=6 and day_of_weak <=7: Можно свернуть их в if/else, но нужно ли это, зависит от конкретной задачи, пока что такой код будет просто циклить нас в метке days, пока дней не станет 8 а потом выпадать на следующую по тексту в файле метку:
Код label days: if day_of_weak >= 1 and day_of_weak <=5: "working"
$day_of_weak +=1 jump days
elif day_of_weak >=6 and day_of_weak <=7: "Yeeah"
$day_of_weak +=1 jump days
|
#3
Спасибо всем 
Пользуйтесь ребята
|
#4
Tester, запустил твой код 3.2: init: ----$ dayer = ["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"] label days: ----if ((day_of_weak >= 1) and (day_of_weak <=7)): --------"[dayer[day_of_weak - 1]]" --------if ((day_of_weak == 6) or (day_of_weak == 7)): ------------"Выходной :(" --------else: ------------"Рабочий!" ----else: --------$ day_of_weak = 0 ----$ day_of_weak +=1 ----if (day_of_weak > 7): --------$ day_of_weak = 1 ----jump days Ошибка:
While running game code: File "game/script.rpy", line 38, in script "[dayer[day_of_weak -= 1]]" TypeError: list indices must be integers, not unicode
вообще нихера не понял,к чему здесь юникод?
Сообщение отредактировал partizein - Вторник, 26/Июн/2018, 17:58
Пользуйтесь ребята
|
#5
Вообщем,насчет [dayer[day_of_weak - 1]] Тут вся проблема была в day_of_weak - 1 питон тупо не разрешает вставлять сюда что либо,кроме цифр,а зря было бы намного удобнее. Долго мучился как бы сделать код покомпактнее д еще и со списком($ dayer = ["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"]) Долго думал. Забил,помиксовал с официальным уроком
Получился такой код:
Пользуйтесь ребята 
Сообщение отредактировал partizein - Вторник, 26/Июн/2018, 22:19
Пользуйтесь ребята
|