Подбор значений аргумента в линейной функции

Имеется стандартная функция y=a*x+b. Имеются фиксированные значения коэффициентов a и b, изменяться должно только значение аргумента x+=1. В моем понимании для начала нужно установить функцию, определить значения аргументов и с помощью цикла while начать перебирать значение x, увеличивая его на +1.

def y():
    global x
    x=1
    a=2
    b=4 
    return a*x+b
while y()<=100:
    print("значение аргумента x = ", x,"значение функции y = ", y())
    x+=1 

Результат выглядит следующим образом:

значение аргумента x =  1 значение функции y =  6
значение аргумента x =  1 значение функции y =  6
Process finished with exit code -1

В чем заключается ошибка? как изменить бесконечный цикл так чтобы значения x всё таки перебирались, пока y не достигнет 100


Ответы (1 шт):

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

Быстрая правка — используйте x как параметр функции:

def y(x):
    a = 2
    b = 4 
    return a * x + b

x = 1
while y(x) <= 100:
    print("значение аргумента x = ", x,"значение функции y = ", y(x))
    x += 1 

Лучшее решение (изменение только второй части):

def y(x):
    a = 2
    b = 4 
    return a * x + b

for x in range(1, 101):
    print(f"значение аргумента x = {x:3}, значение функции y = {y(x):3}")

Число 3 за двоеточием в последней команде выделяет число позиций для выведенного числа, в рамках которых оно будет выровнено вправо (для красивого вывода):

значение аргумента x =   1, значение функции y =   6
значение аргумента x =   2, значение функции y =   8
значение аргумента x =   3, значение функции y =  10
                 ................
                 ................
значение аргумента x =  98, значение функции y = 200
значение аргумента x =  99, значение функции y = 202
значение аргумента x = 100, значение функции y = 204
→ Ссылка