2016-09-17 5 views
-1

Я хотел вычислить сумму (1 + 1 + 1 + ... + 1)^2 с циклом for, но с переменной n в качестве верхней границы, так что что сумма приводит к функции f (n) = n^2. С неотрицательным числом х в качестве входа, то цикл может быть легко кодируются какПеременная n как верхняя граница цикла for

p==0 
def f(x): 
    global p 
    for i in range(0,x): 
     p=p+1 
    return p**2 

Я хотел кормить строковый п к такому роду петля. Является ли это выполнимым (с изменением или без)? Должен ли я выполнять преобразование строк в hijinks a la SymPy?

Редактировать: wow Я сформулировал эту проблему действительно плохо. думаю, сон важен после того, как все

Пусть у меня есть функция Р (х), где

f(1) = 1 
f(2) = f(1+1) = (1+1)^2 = 4 
f(3) = f(1+2*1) = (1+2)^2 = 9 

Тогда, ф (п) будет

f(n) = f(1+(n-1)*1) = (1+(n-1))^2 = n^2 

Если бы я вычислить результат с циклом for выше (что является беспорядком из-за лишения сна), я бы ввел f (1), f (2), f (3), ... в цикл for выше. Я спрашиваю, могу ли я ввести n в цикл for выше, с модификацией или без нее, и получить n^2.

(Отношение между f (1), f (2), ... здесь не то же самое, что проблема, которую я имею прямо сейчас - мне просто интересно, возможна ли эта идея или нет, и если . так, как я бы ничего не узнать, если я задам вопрос напрямую, будет I)

edit2: пример ввода/вывода с алгоритмом выше:

(Integer вход)

f(1) = 1^2 
f(2) = 2^2 
f(423) = 423^2 

(Поплавковый ввод)

f(0.5) = (0.5)^2 
f(1.5) = (1.5)^2 
f(234.23) = (234.23)^2 
(вход String - без присвоения значений целочисленной/с плавающей точкой для этих строк первых)

f(a) = a^2 
f(df) = (df)^2 
f(the_speed_of_an_unladen_swallow) = (the_speed_of_an_unladen_swallow)^2 

Что я и добиваюсь это модификация для цикла выше, так что я могу это сделать, для е (а) где f - это функция выше:

def g(a): 
    return f(a) 

или его эквивалент.

Я просто собираюсь оставить это здесь, так как я выгляжу менее похоже на ученика uni, лишенного сна, и больше похож на лишенного сна отсталого студента.

+1

что бы вы передали? возможно, пример? –

+1

Какая строка? Можете ли вы привести пример такого ввода? NB: почему глобальный 'p'? Почему цикл по диапазону, когда вы эффективно возвращаете 'x ** 2'? – trincot

+0

Добавлена ​​более подробная информация о проблеме на исходном посте. – sync

ответ

0

Вы хотите сделать что-то наподобие def('123')?

Если да, то бросить строку INT, прежде чем использовать его в range, как таковой:

for i in range(0,int(x)): 
+0

- это действительно требуемый цикл. P должен просто обновляться как p + = x, предполагая, что x будет преобразован в int – armak

0

Вы писали:

(String input - without assigning integer/float values to these strings first)

f(a) = a^2 
f(df) = (df)^2 
f(the_speed_of_an_unladen_swallow) = (the_speed_of_an_unladen_swallow)^2 

Таким образом, у вас есть переменные (a, df, the_speed_of_an_unladen_swallow) , которые еще не содержат (хорошего) значения во время звонка f.Позже они будут иметь числовое значение, и вы хотите, чтобы цикл был много раз в вашей функции.

Поскольку переменные с примитивным типом данных передаются по значению, вместо этого вам нужно будет передать имя переменной, чтобы сделать что-то подобное.

Возможно, вы это искали?

def f(x): 
    def localF(): 
     return globals()[x]**2 # loop could be here, but this is the essence 
    return localF 

# n does not have its value yet 
n = None 

# call f: it should not produce the result yet, as n is not correctly set yet 
g = f('n') 

# set n to its intended value 
n = 5; 

# Call the function we got from f: 
print (g()); 

# output is 25. 
+0

Спасибо, но я боюсь, что это не то, что я ищу. Я ищу модификацию цикла для функции f (x), которая не дает мне ошибку 'NameError: name 'n' не определен', что происходит, когда вы пытаетесь поместить строку непосредственно в функцию , когда я пытаюсь положить f (n). В любом случае проблема аналитически разрешима, поэтому я думаю, что я просто сделаю f (x) = (аналитическое решение) как своего рода ответ. Спасибо, в любом случае! – sync

+0

Было бы полезно, если бы вы добавили пример вызова вашей функции и желаемое возвращаемое значение для него. Я понятия не имею, что вы имеете ввиду *, когда я пытаюсь поставить f (n) *, а также то, что вы имеете в виду с аналитическим решением. Можете ли вы привести конкретный пример ввода/вывода? – trincot

+0

Добавленные примеры и другое (надеюсь, лучшее) объяснение того, к чему я стремлюсь. (Когда я сказал «аналитическое решение», я имел в виду, что f (x), который я нашел с традиционным подходом пера и бумаги.) – sync

Смежные вопросы