@Iqv

Что не так в коде (Python3)?

Есть задача:
Вводится строка в формате
ax + b = 0
или
ax - b = 0
где вместо a — целое число, вместо b — целое неотрицательное число. Числа по модулю не превосходят 1000. Число a может быть пропущено, если оно равно 1. b всегда присутствует, x также всегда присутствует, даже если а = 0.
Выведите корни уравнения, если их конечное число; 'NO', если корней нет и 'INF', если корней бесконечно много.
Моё решение:
s = input()
a = s[:s.index("x")]
if s.find('+') != -1:
    b = -int(s[s.index("+")+1:s.index("=")])
else:
    b = int(s[s.index("-")+1:s.index("=")])
if a == "0" and b == 0:
    print("INF")
elif a == "0" and b != 0:
    print("NO")
elif a == "":
    print(b)
else:
    print(b/int(a))

Partial Solution. Your score is = 9, 9/10
Что не так с кодом?
  • Вопрос задан
  • 431 просмотр
Решения вопроса 1
Sly_tom_cat
@Sly_tom_cat
.
Используйте лучше регулярные выражения:
s = input()
res = re.findall(r'(-?\d?)x([+-]\d)=0', s)[0]
a = (-1 if res[0] == '-' else
     1 if not res[0] else
     int(res[0]))
b = int(res[1]) 
print(('INF' if b == 0 else 'NO') if a == 0 else -b/a)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Sayonji
У вас не учитываются отрицательные а: не пройдёт тест -5x-5=0, например.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы