Сложная задача моего кода
Имеется 6 переменных, которые по ходу выполнения заполняются, но всегда есть переменные которые получают None. И мне нужно вывести сообщение где есть только те переменные. которые не равны None
Ниже ужасный костыльный код которым определяются переменные.
try:
num = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[1]/td[1]/text()')[0]
schedule = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[1]/td[2]/text()')[0]
para = re.findall(r'[А-я]+', schedule)[0]
body = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[1]/td[3]/text()')[0]
cabinet = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[1]/td[4]/text()')[0]
print(num)
if num == "1":
p0 = f"<b>Первая пара</b>: {schedule.lstrip()}\n<b>Корпус</b>: {body.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet}"
if num == "2":
p0 = f"<b>Вторая пара</b>: {schedule.lstrip()}\n<b>Корпус</b>: {body.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet}"
if num == "3":
p0 = f"<b>Третья пара</b>: {schedule.lstrip()}\n<b>Корпус</b>: {body.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet}"
if num == "4":
p0 = f"<b>Четвертая пара</b>: {schedule.lstrip()}\n<b>Корпус</b>: {body.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet}"
if num == "5":
p0 = f"<b>Пятая пара</b>: {schedule.lstrip()}\n<b>Корпус</b>: {body.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet}"
if num == "6":
p0 = f"<b>Шестая пара</b>: {schedule.lstrip()}\n<b>Корпус</b>: {body.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet}"
except:
p0 = None
try:
num1 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[2]/td[1]/text()')[0]
schedule1 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[2]/td[2]/text()')[0]
para1 = re.findall(r'[А-я]+', schedule1)[0]
body1 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[2]/td[3]/text()')[0]
cabinet1 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[2]/td[4]/text()')[0]
print(num1)
if num1 == "2" and num != "2":
p1 = f"<b>Вторая пара</b>: {schedule1.lstrip()}\n<b>Корпус</b>: {body1.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet1}"
if num1 == "3":
p1 = f"<b>Третья пара</b>: {schedule1.lstrip()}\n<b>Корпус</b>: {body1.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet1}"
if num1 == "4":
p1 = f"<b>Четвертая пара</b>: {schedule1.lstrip()}\n<b>Корпус</b>: {body1.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet1}"
if num1 == "5":
p1 = f"<b>Пятая пара</b>: {schedule1.lstrip()}\n<b>Корпус</b>: {body1.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet1}"
if num1 == "6":
p1 = f"<b>Шестая пара</b>: {schedule1.lstrip()}\n<b>Корпус</b>: {body1.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet1}"
except:
p1 = None
try:
num2 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[3]/td[1]/text()')[0]
schedule2 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[3]/td[2]/text()')[0]
para2 = re.findall(r'[А-я]+', schedule2)[0]
body2 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[3]/td[3]/text()')[0]
cabinet2 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[3]/td[4]/text()')[0]
print(num2)
if num2 == "3" and num1 != "3":
p2 = f"<b>Третья пара</b>: {schedule2.lstrip()}\n<b>Корпус</b>: {body2.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet2}"
if num2 == "4":
p2 = f"<b>Четвертая пара</b>: {schedule2.lstrip()}\n<b>Корпус</b>: {body2.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet2}"
if num2 == "5":
p2 = f"<b>Пятая пара</b>: {schedule2.lstrip()}\n<b>Корпус</b>: {body2.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet2}"
if num2 == "6":
p2 = f"<b>Шестая пара</b>: {schedule2.lstrip()}\n<b>Корпус</b>: {body2.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet2}"
except:
p2 = None
try:
num3 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[4]/td[1]/text()')[0]
schedule3 = tree.xpath('///html/body/div[2]/section/table[1]/tbody/tr[3]/td[2]/text()')[0]
para3 = re.findall(r'[А-я]+', schedule3)[0]
body3 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[3]/td[3]/text()')[0]
cabinet3 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[3]/td[4]/text()')[0]
print(num3)
if num3 == "4" and num2 != "4":
p3 = f"<b>Четвертая пара</b>: {schedule3.lstrip()}\n<b>Корпус</b>: {body3.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet3}"
if num3 == "5":
p3 = f"<b>Пятая пара</b>: {schedule3.lstrip()}\n<b>Корпус</b>: {body3.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet3}"
if num3 == "6":
p3 = f"<b>Шестая пара</b>: {schedule3.lstrip()}\n<b>Корпус</b>: {body3.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet3}"
except:
p3 = None
try:
num4 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[5]/td[1]/text()')[0]
schedule4 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[5]/td[2]/text()')[0]
para4 = re.findall(r'[А-я]+', schedule4)[0]
body4 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[5]/td[3]/text()')[0]
cabinet4 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[5]/td[4]/text()')[0]
print(num4)
if num4 == "5":
p4 = f"<b>Пятая пара</b>: {schedule4.lstrip()}\n<b>Корпус</b>: {body4.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet4}"
if num4 == "6":
p4 = f"<b>Шестая пара</b>: {schedule4.lstrip()}\n<b>Корпус</b>: {body4.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet4}"
except:
p4 = None
try:
num5 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[]/td[1]/text()')[0]
schedule5 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[6]/td[2]/text()')[0]
para5 = re.findall(r'[А-я]+', schedule5)[0]
body5 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[6]/td[3]/text()')[0]
cabinet5 = tree.xpath('//html/body/div[2]/section/table[1]/tbody/tr[6]/td[4]/text()')[0]
print(num5)
if num5 == "6":
p5 = f"<b>Шестая пара</b>: {schedule5.lstrip()}\n<b>Корпус</b>: {body5.replace(' / Перевоз', '')}\n<b>Кабинет</b>: {cabinet5}"
else:
p5 = "<b>Шестая пара</b>: Отсутствует"
except:
p5 = None
try:
testcheck = para + para1 + para2 + para3 + para4 + para5
if testcheck == None:
bot.send_message(idtelegram, "В расписании пар не обнаружено!\nВозможно преподаватели ещё не составили список\nПровертье позже")
pass
except:
if p5 == None and p4 == None and p3 == None and p2 == None and p1 == None and p0 == None:
bot.send_message(idtelegram, f"Пары отсутствуют! ", parse_mode='html')
bot.send_message(idtelegram, f"{p0}\n\n{p1}\n\n{p2}\n\n{p3}\n\n{p4}\n\n{p5}", parse_mode='html')
pass
Я не хочу мучаться и перебирать через if переменные какие ровны none а какие нет. Нужно что бы эта часть кода:
bot.send_message(idtelegram, f"{p0}\n\n{p1}\n\n{p2}\n\n{p3}\n\n{p4}\n\n{p5}", parse_mode='html')
Отправляла только те переменные которые не равны none. И я не знаю как это реализовать:( (За код не судите, как могу так и делаю)
Ответы (1 шт):
Автор решения: Бабанер ка
→ Ссылка
заколхозил как мог. Чуть позже сделаю массивом.
if p0 != None:
if p1 != None:
if p2 != None:
if p3 != None:
if p4 != None:
if p5 != None:
bot.send_message(idtelegram, f"{p0}\n\n{p1}\n\n{p2}\n\n{p3}\n\n{p4}\n\n{p5}", parse_mode='html')
else:
bot.send_message(idtelegram, f"{p0}\n\n{p1}\n\n{p2}\n\n{p3}\n\n{p4}", parse_mode='html')
else:
bot.send_message(idtelegram, f"{p0}\n\n{p1}\n\n{p2}\n\n{p3}", parse_mode='html')
else:
bot.send_message(idtelegram, f"{p0}\n\n{p1}\n\n{p2}", parse_mode='html')
else:
bot.send_message(idtelegram, f"{p0}\n\n{p1}", parse_mode='html')
else:
bot.send_message(idtelegram, f"{p0}", parse_mode='html')
else:
bot.send_message(idtelegram, f"Пары отсутствуют!", parse_mode='html')
pass
Не бейте(