balance = float(input('Enter a starting balance: '))
annualInterestRate = float(input('Enter an annual interest rate: '))
monthlyInterestRate = float(annualInterestRate/12)
balance2 = balance
lower = float(balance/12)
upper = float((balance*(1+monthlyInterestRate)**12)/12)
epsilon = 0.01
guess = float((lower+upper)/2)
def findMin(balance2, guess):
print(lower, upper)
for i in range(12):
balance2 -= guess
balance2 += (balance2*monthlyInterestRate)
if round(balance2, 2):
return guess
elif balance2 > 1:
lower = guess
elif balance2 < 1:
upper = guess
guess = (upper+lower)/2
balance2 = balance
findMin(balance2, guess)
findMin(balance2, guess)
print(guess)
Когда я запускаю код, указанный выше я получаю UnboundLocalError (он говорит, что «ниже» упоминается перед тем назначением). Я действительно смущен, потому что, как вы можете видеть, «нижнему» присваивается значение перед функцией, так почему бы не получить его из-за пределов функции? Любая помощь будет принята с благодарностью! Благодарю.«UnboundLocalError: локальная переменная„ниже“обращаться до присвоения»
'lower' не в области видимости' findMin' –
Используйте 'global' сказать Python использовать глобальную переменную – Li357
Лучше идею: Перепишите программу так, что вам не нужно' global'. – Matthias