Это потому, что, когда вы вводите номер, нажмите «Ввод», input.nextInt()
потребляет только номер, а не «конец строки». Когда input.nextLine()
выполняется, он потребляет «конец строки» все еще в буфере с первого входа.
Вместо этого используйте input.nextLine()
сразу после input.nextInt()
Чтобы заменить несколько значений:
>>> from sympy import Symbol
>>> x, y = Symbol('x y')
>>> f = x + y
>>> f.subs({x:10, y: 20})
>>> f
30
Команда x = Symbol('x')
сохраняет символ Symbol('x')
Sympy в переменной Python x
. Выражение Sympy f
, которое вы создаете впоследствии, содержит Symbol('x')
, а не переменную Python x
.
Когда вы переназначаете x = 0
, переменная Python x
установлена на ноль и больше не относится к Symbol('x')
. Это не влияет на выражение Sympy, которое все еще содержит Symbol('x')
.
Это лучше всего объяснить на этой странице документации Sympy: http://docs.sympy.org/latest/ gotchas.html # variables
Что вы хотите сделать, это f.subs(x,0)
, как сказано в других ответах.
На самом деле sympy предназначен для того, чтобы не подставлять значения, пока вы действительно не захотите их заменить subs
(см. http://docs.sympy.org/latest/tutorial/basic_operations.html )
Попробуйте
f.subs({x:0})
f.subs(x, 0) # as alternative
вместо
x = 0