как уменьшить код и тд?
Изучаю питон и программирование 3 день, хотелось бы узнать ваше мнение по поводу кода. Может дадите советы, как уменьшить код и тд, буду благдарен
q = 0
print("Типа психологический тест на созависимость")
print("Отвечайте только Да или Нет")
x = input("Вам легко знакомиться с людьми?: ")
if x == "Да":
q += 1
elif x == "Нет":
q += 0
else:
print("Такого варианта ответа нет!")
c = input("Вы бы хотели быть в центре внимания других людей?: ")
if c == "Да":
q += 1
elif c == "Нет":
q += 0
else:
print("Такого варианта ответа нет!")
v = input("Вам трудно принимать решения?: ")
if v == "Да":
q += 1
elif v == "Нет":
q += 0
else:
print("Такого варианта ответа нет!")
b = input("Вы часто тревожитесь?: ")
if b == "Да":
q += 1
elif b == "Нет":
q += 0
else:
print("Такого варианта ответа нет!")
if q == 5:
print("Вы созависимый человек")
elif q == 4:
print("Вы созависимый человек")
elif q == 3:
print("Вы местами созависимы")
elif q == 2:
print("Вам стоит поработать над собой")
elif (q == 1 or q == 0):
print("Вы несозависимы!")
Ответы (4 шт):
Совет на будущее, лучше называть переменные со смыслом, а не просто буквы. Если будет большой проект, то вы просто запутаетесь. Также в конце где вы проверяете балы, я бы использовал switch вместо if, т.к. это удобнее. Ну и в конце, где вы пишете elif(q==1 or q==0) можно поступить двумя вариантами: 1) вместо этого просто написать else: , 2) написать так elif(q<=1)
Например так:
...
...
questions = ("Вам легко знакомиться с людьми?: ",
"Вы бы хотели быть в центре внимания других людей?: ",
"Вам трудно принимать решения?: ",
...)
for question in questions:
answer = input(question)
if answer == "Да":
q += 1
continue
if answer != "Нет":
print("Такого варианта ответа нет!")
...
...
Объяснение:
Ваша программа реагирует на все вопросы одним и тем же образом. Почему не заготовить все вопросы в виде кортежа и обработать их в цикле?
Когда ответ был "Да", увеличиваем значение счетчика, и командой
continueпродолжаем с обработкой следующего ответа (игнорируя оставшиеся команды в цикле для текущего ответа).Когда команда
continueне исполнилась, значит, ответ не был "Да". Ответ "Нет" вообще игнорируем, потому что нет чего делать, только для неправильного ответа выведем сообщение об ошибке.
print('Типа психологический тест на созависимость')
print('Отвечайте только "Да" или "Нет"')
# Создаём список с вопросами, которые необходимо задать
questions = [
'Вам легко знакомиться с людьми?: ',
'Вы бы хотели быть в центре внимания других людей?: ',
'Вам трудно принимать решения?: ',
'Вы часто тревожитесь?: ',
]
points = 0
# С помощью цикла for по очереди задаём вопросы из нашего списка
for question in questions:
x = input(question)
# Такой цикл while проверяет что-бы ответ был только 'да' или 'нет'
while x.lower() not in ('да', 'нет'):
print('Такого варианта ответа нет!')
x = input(question)
if x.lower() == 'да':
points += 1
elif x.lower() == 'нет':
points += 0
if points == 4:
print("Вы созависимый человек")
elif points == 3:
print("Вы местами созависимы")
elif points == 2:
print("Вам стоит поработать над собой")
else:
print("Вы несозависимы!")
Вместо блока команд
if q == 5:
print("Вы созависимый человек")
elif q == 4:
print("Вы созависимый человек")
elif q == 3:
print("Вы местами созависимы")
elif q == 2:
print("Вам стоит поработать над собой")
elif (q == 1 or q == 0):
print("Вы несозависимы!")
вы можете заранее приготовить словарь с ответами и затем применить только один print():
answers = {0: "Вы несозависимы!",
1: "Вы несозависимы!",
2: "Вам стоит поработать над собой",
3: "Вы местами созависимы",
4: "Вы созависимый человек",
5: "Вы созависимый человек",
}
print(answers[q]) # ответ выбирается для ключа q