Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 24, 2020 23:42:45

medusa_01
Зарегистрирован: 2020-11-14
Сообщения: 32
Репутация: +  1  -
Профиль   Отправить e-mail  

Расчет даты

py.user.next
Сделай так, чтобы при вычислении квадратного уравнения оно писало один вывод, а при вычислении линейного уравнения оно писало другой вывод.

Вот, что у меня получилось. Правда не знанием, а методом тыка, пока не выставил print ('x1 = {:.2f}'.format(x1), ‘x2 = {:.2f}’.format(x2)) в правильное положение. Однако не понял почему он должен стоять именно так, а не иначе. В смысле отступа. Если возможно разъясните. Спасибо.

 # ax*x + bx +c = 0
A = int(input('A = '))
B = int(input('B = '))
C = int(input('C = '))
print ('a =', A,'b =', B,'c =', C)
if A != 0:
    # квадратное уравнение
    dis = B**2 - 4*A*C
    if dis > 0:
        x1 = (-B + dis**0.5) / (2*A)
        x2 = (-B - dis**0.5) / (2*A)
        result = 'два корня'
    elif dis == 0:
        x1 = (-B) / (2*A)
        x2 = x1
        result = 'один корень'
    else : # дискриминант меньше нуля
        x1 = 0
        x2 = 0
        result = 'корней нет'
    print ('x1 = {:.2f}'.format(x1), 'x2 = {:.2f}'.format(x2))
elif A == 0: # линейное уравнение
    x = (-C) / B
    result = 'один корень'
    print ('x = {:.2f}'.format(x))
print (result)

Офлайн

#2 Дек. 25, 2020 00:40:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

Расчет даты

medusa_01
Вот, что у меня получилось.
И у тебя получилось что? Что если у квадратного уравнения корней нет действительных, то ты их выводишь и они равны нулю оба. Корней нет и корни равны нулю - это разные вещи, потому что ноль и пустое множество - это разные вещи.

medusa_01
  
print ('x1 = {:.2f}'.format(x1), 'x2 = {:.2f}'.format(x2))
Это можно в одной строке выводить
  
print('x1 = {:.2f}, x2 = {:.2f}'.format(x1, x2))

Так что придётся тебе ещё вывод в квадратном уравнении разделить. Вывод при двух корнях, вывод при одном корне (при двух совпадающих корнях), вывод при отсутствии действительных корней. На каждую ситуацию свой вывод. И при этом надо помнить, что вычисление результатов и вывод вычисленных результатов должны быть разделены.



Отредактировано py.user.next (Дек. 25, 2020 00:41:07)

Офлайн

#3 Дек. 25, 2020 07:14:56

medusa_01
Зарегистрирован: 2020-11-14
Сообщения: 32
Репутация: +  1  -
Профиль   Отправить e-mail  

Расчет даты

py.user.next
И у тебя получилось что? Что если у квадратного уравнения корней нет действительных, то ты их выводишь и они равны нулю оба. Корней нет и корни равны нулю - это разные вещи, потому что ноль и пустое множество - это разные вещи.

Т.е. я не дописал выводы или совсем ничего не дописал? Я начинаю путаться((( Это плохо. Мне ведь приходится и учиться , и работать. А поздно вечером голова плдохо соображает. Я должен сделать вывод результата в этих местах или я не понимаю?
 ...
 # квадратное уравнение
    dis = B**2 - 4*A*C
    if dis > 0:
        x1 = (-B + dis**0.5) / (2*A)
        x2 = (-B - dis**0.5) / (2*A)
        result = 'два корня'
[b]Вывод результата[/b]
    elif dis == 0:
        x1 = (-B) / (2*A)
        x2 = x1
        result = 'один корень'
[b]Вывод результата[/b]
    else : # дискриминант меньше нуля
        x1 = 0
        x2 = 0
        result = 'корней нет'
[b]Вывод результата[/b]
...
Спасибо.

Офлайн

#4 Дек. 25, 2020 08:42:44

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

Расчет даты

medusa_01
Т.е. я не дописал выводы или совсем ничего не дописал?
Сначала проводишь вычисления, потом делаешь один вывод. Но каждый кусок вывода должен выводить свой исход. Если там два корня получилось, то вывод должен вывести два корня. Если там один корень получился (в квадратном уравнении, а это не совсем уж и один корень), то вывод должен вывести этот “один” корень, уточнив, что корней там два и они совпадают. Если там после вычисления оказалось, что нет действительных корней, то вывод должен вывести об этом информацию (то есть он не должен выводить, что там x1 и x2 есть).

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

medusa_01
Я должен сделать вывод результата в этих местах
Не, это идёт смешивание вычислений и вывода.

Должно быть так:
1. Ты сначала что-то ввёл.
2. Потом по этому введённому сделал все вычисления.
3. Потом по результатам завершённых вычислений сделал вывод.

Там не должно быть вычислений во время ввода данных. Там не должно быть вывода во время вычислений над введёнными данными.

Допустим, при D = 0, у тебя ещё правильно записано - корней два и они совпадают. Но два этих корня всё равно выводить не надо. Достаточно вывести первый.
Но при D < 0 у тебя действительных корней нет (там пустота) и их вообще не нужно выводить, нужно просто написать фразу “действительных корней нет”.

Пробуй ещё. Нужно вывести три разных вывода и сделать это уже после вычислений. И всё относится только к квадратному уравнению. У линейного уравнения свой вывод вообще, отдельный.



Отредактировано py.user.next (Дек. 25, 2020 08:44:09)

Офлайн

#5 Дек. 25, 2020 12:14:42

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1309
Репутация: +  113  -
Профиль   Отправить e-mail  

Расчет даты

ввод данных

 A = int(input('A = '))
B = int(input('B = '))
C = int(input('C = '))

обработка данных

 dis = B**2 - 4*A*C
if dis > 0:
    x1 = (-B + dis**0.5) / (2*A)
    x2 = (-B - dis**0.5) / (2*A)
    result = f'два корня x1 = {x1},x2 = {x2}'
elif dis == 0:
    x1 = (-B) / (2*A)
    x2 = x1
    result = f'один корень x = {x1}'
else : # дискриминант меньше нуля
    result = 'корней нет'

вывод данных
 print ('a =', A,'b =', B,'c =', C)
print (result)

смени задачу

Офлайн

#6 Дек. 25, 2020 22:48:24

medusa_01
Зарегистрирован: 2020-11-14
Сообщения: 32
Репутация: +  1  -
Профиль   Отправить e-mail  

Расчет даты

py.user.next
Пробуй ещё.

Понял. Буду пробовать. Спасибо.

Офлайн

#7 Дек. 25, 2020 22:52:00

medusa_01
Зарегистрирован: 2020-11-14
Сообщения: 32
Репутация: +  1  -
Профиль   Отправить e-mail  

Расчет даты

xam1816
смени задачу

Поясните фразу пожалуйста - смени задачу. Я не понял, что вы имеете в виду. Вы имеете в виду переход к линейному уравнению, или я ошибаюсь? Спасибо.

Офлайн

#8 Дек. 26, 2020 00:25:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

Расчет даты

Продолжай вот эту фигню делать дальше. Ты результат получил? Значит, ты можешь его использовать. Ты по нему можешь определить, как тебе выводить.

Вот смотри. Программа работает и выдаёт результат. А зачем нам этот результат? Этот результат нам нужен для того, чтобы его использовать. Программа отработала - она больше не нужна. Нужен результат из неё.

medusa_01
  
    dis = B**2 - 4*A*C
    if dis > 0:
        x1 = (-B + dis**0.5) / (2*A)
        x2 = (-B - dis**0.5) / (2*A)
        result = 'два корня'
    elif dis == 0:
        x1 = (-B) / (2*A)
        x2 = x1
        result = 'один корень'
    else : # дискриминант меньше нуля
        x1 = 0
        x2 = 0
        result = 'корней нет'
Вот этот кусок - это как бы целая программа. Такая программа в программе. И результат работы этой программы - это переменная result. Когда ты результат из программы получил (большая это программа, маленькая это программа или это программа в программе), ты можешь этот результат ис-поль-зо-вать, потому что ты для этого его и получаешь - чтобы его использовать.
Но как его можно использовать? Только ли для вывода его можно использовать? Нет, конечно. Его можно использовать и для вывода, и для чего угодно ещё. Следовательно, ты его можешь использовать для чего? Для проверки “а чо там в нём получилось?” и на основе этого делать вывод на экран. Если получилось это, то выводишь вывод для это. Если получилось другое, то выводишь вывод для другое. Если получилось третье, то выводишь вывод для третье.

Продолжай делать программу.



Отредактировано py.user.next (Дек. 26, 2020 00:29:43)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version