Я практиковался и пытался определять математические функции и другие вещи, но потом у меня возникла куча ошибок, и в итоге у меня не было ошибки, но результат был неправильным. Это код на момент написания этого:
def factorial(num):
n = 1
for i in range(1, num+1):
n *= i
return n
def series(start, end, expression):
m = 0
for n in range(start, end+1):
m+=eval(expression)
return m
ans1 = input("Do you want to use factorial or a series? ")
if ans1 == "Yes":
ans2 = input("Series or factorial? ")
if ans2 == "Series":
start = int(input("Select the starting value of n. "))
end = int(input("Select the final value of n. "))
expression = input("Type the expression to be run in terms of n. ")
m = series(start, end, expression)
print("The result is: " + str(m))
if ans2 == "Factorial":
factorizing = int(input("Select the number to factorize. "))
n = factorial(factorizing)
print(n)
elif ans1 == "No":
print("Ok!")
Спасибо за помощь, факториал() сейчас работает отлично, но когда я последовательно пробовал series(1, 5, 2*n+1), он дал мне 35, хотя должен был дать 25, кто-нибудь знает, что не так?
Пожалуйста, прочитайте Как спросить.
n и m существуют только как локальные переменные функций. Присвойте возвращаемое значение вызванной функции, например. n = factorial(factorizing) и m = series(start, end, expression).
У вас неправильный отступ, вам следует исправить это прежде всего.
«Я не знаю, как заставить мой код работать правильно» — так можно назвать заголовок половины вопросов о переполнении стека. Название вашего вопроса должно отражать специфику вашего вопроса. Вам также необходимо отредактировать свое тело, чтобы включить полную информацию о том, что происходит не так. Какие входные данные, которые вы используете, приводят к плохим результатам? Каковы эти результаты? Вы получаете какие-либо сообщения об ошибках? «получил кучу ошибок» недостаточно, чтобы помочь вам отладить.






Переменные n и m не определены в области, к которой вы пытаетесь получить к ним доступ. Ваши функции возвращают число, но вы никогда не присваиваете значение переменной. Это легко исправить:
if ans2 == "Series":
start = int(input("Select the starting value of n. "))
end = int(input("Select the final value of n. "))
expression = input("Type the expression to be run in terms of n. ")
m = series(start, end, expression)
print("The result is: " + str(m))
if ans2 == "Factorial":
factorizing = int(input("Select the number to factorize. "))
n = factorial(factorizing)
print(n)
Вам нужно поправить логику. Например, начало и конец:
def factorial(num):
n = 1
for i in range(1, num + 1):
n *= i
return n
def series(start, end, expression):
m = 0
for n in range(start, end + 1):
m += eval(expression)
return m
ans1 = input("Do you want to use factorial or a series? Type `Yes` or `No`. ")
if ans1.lower() == "yes":
ans2 = input("Series or factorial? ")
if ans2.lower() == "series":
start_end = input("Type start and end values, like `3 4`: ")
start, end = start_end.split()
start, end = int(start), int(end)
if start > end:
start, end = end, start
expression = input("Type the expression to be run in terms of n: ")
result = series(start, end, expression)
print("The result is: " + str(result))
elif ans2.lower() == "factorial":
factorizing = int(input("Select the number to factorize: "))
result = factorial(factorizing)
print("The result is: " + str(result))
elif ans1.lower() == "no":
print("Ok!")
Do you want to use factorial or a series? Type `Yes` or `No`. yes
Series or factorial? series
Type start and end values, like `3 4`: 10 5
Type the expression to be run in terms of n: 4
The result is: 24
Для факториала:
Do you want to use factorial or a series? Type `Yes` or `No`. yes
Series or factorial? factorial
Select the number to factorize: 5
The result is: 120
ваша первая строка кода во фрагменте неверна. вам не хватает факториала (число):