Вывод значений функций по определенному порядку
задача состояла в том, чтобы проанализировать анкеты (applications), где надо - убрать пробел и понять, какие анкеты невалидные, если, например, нет данных. Программа работает, пишет False, если в анкете отсутствует значение. Но! Она должна выводить имя, телефон и город по порядку, как это изначально записано в анкете, а она выводит сначала все имена, потом телефоны, потом город из-за range. Как сделать так, чтобы значения выводились по порядку?
def check_name(applications):
for i in range(0, 5):
tmp = applications[i]
tmp1 = tmp.split(",")
if " " in tmp1[0]:
tmp.replace(" ", "")
print(tmp1[0].lower())
elif len(tmp1[0]) <= 5:
print(tmp1[0].lower(), "-", not tmp1[0])
else:
print(tmp1[0].lower())
return 0
def check_phone(applications):
for i in range(0, 5):
tmp = applications[i]
tmp1 = tmp.split(",")
tmp2 = tmp1[1]
if len(tmp1[1]) == 16:
print(tmp1[1])
elif " " in tmp1[1] and len(tmp1[1]) > 16:
tmp1[1].replace(" ", "")
print(tmp1[1])
elif len(tmp1[1]) < 16 or tmp2[7] != 7 or tmp2[7] != 8:
print(tmp1[1], "-", not tmp1[1])
return 0
def check_city(applications):
for i in range(0, 5):
tmp = applications[i]
tmp1 = tmp.split(",")
if " " in tmp1[2] or len(tmp1[2]) > 5:
tmp1[2].replace(" ", "")
print(tmp1[2].lower())
elif len(tmp1[2]) <= 5:
print(tmp1[2].lower(), "-", not tmp1[2])
return 0
def main():
applications = ["name=Аня,phone=8800234 ,city=москва", "name=КОЛЯ,phone=8800900871 ,city=МОСКВА", "name=Валентина,phone=7950900871 ,city=волгоград", "name=,phone=8999901871,city=москва", "name=Иван,phone=7999901871,city=москва", "name=Инга,phone=,city=москва"]
print(check_name(applications), check_phone(applications), check_city(applications))
return 0
if 5 > 0:
main()
Ответы (2 шт):
Структура программы должна быть другой:
for app in applications:
name, phone, city = split_fields(app)
print(check_name(name), check_phone(phone), check_city(city))
Функции, соответственно, не должны ничего перебирать, они должны работать только с одним конкретным значением поля.
А если идти дальше, то хорошо бы вообще класс сделать, который принимает на вход запись с анкетой и дальше внутри себя уже вызывает свои методы для работы с этой анкетой.
for app in applications:
application = Application(app)
print(application.check_fields())
Не в этом месте нужно было цикл делать!
def check_name(applications):
tmp1 = applications.split(",")
if " " in tmp1[0]:
tmp1.replace(" ", "")
print(tmp1[0].lower(), ",", end=" ")
elif len(tmp1[0]) <= 5:
print(tmp1[0].lower(), "-", not tmp1[0], ",", end=" ")
else:
print(tmp1[0].lower(), ",", end=" ")
return 0
def check_phone(applications):
tmp1 = applications.split(",")
tmp2 = tmp1[1]
if len(tmp1[1]) == 16:
print(tmp1[1], ",", end=" ")
elif " " in tmp1[1] and len(tmp1[1]) > 16:
tmp1[1].replace(" ", "")
print(tmp1[1], ",", end=" ")
elif len(tmp1[1]) < 16 or tmp2[7] != 7 or tmp2[7] != 8:
print(tmp1[1], "-", not tmp1[1], ",", end=" ")
return 0
def check_city(applications):
tmp1 = applications.split(",")
if " " in tmp1[2] or len(tmp1[2]) > 5:
tmp1[2].replace(" ", "")
print(tmp1[2].lower())
elif len(tmp1[2]) <= 5:
print(tmp1[2].lower(), "-", not tmp1[2])
return 0
def main():
applications1 = ["name=Аня,phone=8800234 ,city=москва", "name=КОЛЯ,phone=8800900871 ,city=МОСКВА", "name=Валентина,phone=7950900871 ,city=волгоград", "name=,phone=8999901871,city=москва", "name=Иван,phone=7999901871,city=москва", "name=Инга,phone=,city=москва"]
for i in range(len(applications1)):
applications = applications1[i]
print(check_name(applications), check_phone(applications), check_city(applications))
if __name__ == "__main__":
main()