Не могу разобраться

hector1998

Новичок
Пользователь
Авг 7, 2021
7
0
1
Здравствуйте.
Изучаю Питон 4 дня и решил поэкспериментировать.
Написал код для вычисления дискриминанта:

print("Программа для вычисления дискриминанта по формуле b^2 - 4ac")
a = float(input("Введите значение a :"))
b = float(input("Введите значение b :"))
c = float(input("Введите значение c :"))

def d():
return b**2 - 4 * a * c

print("Ваш результат = " + str(d()))



Но потом захотел усложнить свою задачу и сделать так, чтобы можно было выбирать формулу и получать решение.
Но столкнулся с проблемой.
Знающие помогите


print("Программа для вычисления, по формуле\n1: b^2 - 4ac\n2: b^2 - 2ac / 5 + b")
dec = input("Выберите вариант ")
if dec == 1:
def dis():
return b**2 - 4 *a*c
print ("Ваш результат = " + str (dis()))
elif dec == 2:
def are():
return b**2 - 2 * a * c / 5 + b
print ("Ваш результат = " + str (are()))

a = float (input ("Введите значение a :"))
b = float (input ("Введите значение b :"))
c = float (input ("Введите значение c :"))



Ссылка на проблемный код
 
Последнее редактирование:

Dzenn

Новичок
Пользователь
Апр 5, 2021
4
1
3
Python:
print("Программа для вычисления, по формуле\n1: b^2 - 4ac\n2: b^2 - 2ac / 5 + b")
dec = int(input("Выберите вариант ")) # у тебя тип переменной dec был строкой, а проверка if'ов на число (тип int)
# тут либо обернуть в int(), либо проверять строки (if == "1"; elif == "2")
# я сделал int()

a = float(input ("Введите значение a :")) # эти переменные нужно объявлять перед тем как их в функции юзаешь
b = float(input ("Введите значение b :"))
c = float(input ("Введите значение c :"))

if dec == 1:
    def dis():
        return b**2 - 4 *a*c
       
    print ("Ваш результат = " + str(dis())) # этот принт был в функции, которая не вызывалась(+ после return)
   
elif dec == 2:
    def are():
        return b**2 - 2 * a * c / 5 + b
       
    print ("Ваш результат = " + str(are())) # этот принт был в функции, которая не вызывалась(+ после return)

a = float (input ("Введите значение a :"))
b = float (input ("Введите значение b :"))
c = float (input ("Введите значение c :"))
Пробел между float и скобками не нужен, тоже самое тут
print ("Ваш результат = " + str (dis())); print ("Ваш результат = " + str (are()))
(print и str)
 
Последнее редактирование:
  • Мне нравится
Реакции: hector1998

hector1998

Новичок
Пользователь
Авг 7, 2021
7
0
1
О Боже. Как же я был слеп)
Спасибо дружище за новые знания
 

Dzenn

Новичок
Пользователь
Апр 5, 2021
4
1
3
Эта строка
global a, b, c
зачем?
Не нужна, работает и без этого. Просто проверял

global нужен для того, чтобы использовать в функции глобальные переменные, но тут работает и без него
 

Dzenn

Новичок
Пользователь
Апр 5, 2021
4
1
3
О Боже. Как же я был слеп)
Спасибо дружище за новые знания
Ага)
 

hector1998

Новичок
Пользователь
Авг 7, 2021
7
0
1
 

hector1998

Новичок
Пользователь
Авг 7, 2021
7
0
1
Python:
print("Программа для вычисления, по формуле\n1: b^2 - 4ac\n2: b^2 - 2ac / 5 + b")
dec = int(input("Выберите вариант ")) # у тебя тип переменной dec был строкой, а проверка if'ов на число (тип int)
# тут либо обернуть в int(), либо проверять строки (if == "1"; elif == "2")
# я сделал int()

a = float(input ("Введите значение a :")) # эти переменные нужно объявлять перед тем как их в функции юзаешь
b = float(input ("Введите значение b :"))
c = float(input ("Введите значение c :"))

if dec == 1:
    def dis():
        return b**2 - 4 *a*c
      
    print ("Ваш результат = " + str(dis())) # этот принт был в функции, которая не вызывалась(+ после return)
  
elif dec == 2:
    def are():
        return b**2 - 2 * a * c / 5 + b
      
    print ("Ваш результат = " + str(are())) # этот принт был в функции, которая не вызывалась(+ после return)


Пробел между float и скобками не нужен, тоже самое тут
(print и str)

спасибо тебе
написал шедевр ахаха
 

Форум IT Специалистов