как уменьшить код и тд?

Изучаю питон и программирование 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 шт):

Автор решения: Reims

Совет на будущее, лучше называть переменные со смыслом, а не просто буквы. Если будет большой проект, то вы просто запутаетесь. Также в конце где вы проверяете балы, я бы использовал switch вместо if, т.к. это удобнее. Ну и в конце, где вы пишете elif(q==1 or q==0) можно поступить двумя вариантами: 1) вместо этого просто написать else: , 2) написать так elif(q<=1)

→ Ссылка
Автор решения: MarianD

Например так:

...
...
questions = ("Вам легко знакомиться с людьми?: ",
             "Вы бы хотели быть в центре внимания других людей?: ",
             "Вам трудно принимать решения?: ",
             ...)

for question in questions:
    answer = input(question)
    if answer == "Да":
        q += 1
        continue
    if answer != "Нет":
        print("Такого варианта ответа нет!")
    
...
...

Объяснение:

  1. Ваша программа реагирует на все вопросы одним и тем же образом. Почему не заготовить все вопросы в виде кортежа и обработать их в цикле?

  2. Когда ответ был "Да", увеличиваем значение счетчика, и командой continue продолжаем с обработкой следующего ответа (игнорируя оставшиеся команды в цикле для текущего ответа).

  3. Когда команда continue не исполнилась, значит, ответ не был "Да". Ответ "Нет" вообще игнорируем, потому что нет чего делать, только для неправильного ответа выведем сообщение об ошибке.

→ Ссылка
Автор решения: Максим Kaschenko
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("Вы несозависимы!")
→ Ссылка
Автор решения: MarianD

Вместо блока команд

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
→ Ссылка