Найти - Пользователи
Полная версия: Функция, цикл, условие
Начало » Центр помощи » Функция, цикл, условие
1
Rumato
Здравствуйте, мне нужно написать функцию в которой цеклически подбиралось бы число по определённому условию, когда условие выполнено - выход, запись результата. Вот, что сделал сам:
def delit(f,k,n):
res = 1
e = 2091619
while k:
if res % n == 0:
break
d = res/e
else:
res = f * k + 1
k = k+1
return d
подскажите где ошибка, заранее спасибо
strannik747
Rumato
Здравствуйте, мне нужно написать функцию в которой цеклически подбиралось бы число по определённому условию, когда условие выполнено - выход, запись результата. Вот, что сделал сам:
def delit(f,k,n):
res = 1
e = 2091619
while k:
if res % n == 0:
break
d = res/e
else:
res = f * k + 1
k = k+1
return d
подскажите где ошибка, заранее спасибо
Налицо непонимание следующих вещей:
- что такое поток исполнения
- что такое инициализация переменных
- что такое условный оператор (и зачем в нем break)
- что такое цикл (условие продолжения, инкремент)
- что означают отступы в питоне
- что такое функция и зачем она нужна

Посоветовать можно лишь одно: начните изучение с самых основ и простейших примеров.
Затем разберитесь вот с этим:
http://docs.python.org/tutorial/controlflow.html
Rumato
strannik747, я не знаю, сколько Вы потратили на изучение python-а, да и вообще программирования… Но лично я учусь и многое мне не понятно, поэтому создаю такие темы.
strannik747
Rumato
strannik747, я не знаю, сколько Вы потратили на изучение python-а, да и вообще программирования… Но лично я учусь и многое мне не понятно, поэтому создаю такие темы.
На изучение питона я потратил около 1/2 года. Это при учете того, что занимаюсь программированием около 15 лет. Поэтому и даю такие ответы :)
Ed
Для начала break перенесите. У Вас присваивание d = res/e никогда не выполняется из-за этого.
Rumato
вот смотрите:
def delit(f,n):
res = 1
e = 5
k = 1
while k:
res = f * k + 1
if res%n == 1:
d = res/e
return d
break
else:
k = k + 1
программа впринципе-то работает, но параметр res не подбирается, хотя он должен быть найден примерно на 10-й итерации, в чём моя ошибка? (про гугл и умственные спасобности прошу не писать - сам знаю)
zheromo
Вопросы
зачем проверка на к (что он не нулевой) в цикле - он же им никогда не станет
зачем после retun d стоит break он тоже никогда не выполнится
else - лишний

Получаем:
def delit(f, n):
res, e, k = 1, 5, 1
while True:
res = f * k + 1
if res%n == 1:
return res/e
k = k + 1
Да, а вообще, что за алгоритм то?
Rumato
zheromo на ваши вопросы могу ответить просто - я только начинаю, впредь глупые темы обещаю не создавать,) а за пример спасибо, то что нужно, только всеравно не подбирается, видимо формулу неправильно вывел,))
ramainen
Помогите пожалуйста, в чём моя ошибка?
Условие задачи: Напишите функцию, рассчитывающую расстояние между двумя точками
на плоскости (координаты (x1, y1) и (x2, y2) даны). Вывести результат в терминал

код:
import math
def coordinate():
x2 = 1; x1 = 2; y2 = 5; y1 = 3;

def distance(coordinate):

k = ((x2-x1)**2 + (y2-y1)**2); #Формула расстояния между двумя точками
math.sqrt(k)

print distance(coordinate);

Терминал пишет ошибку:
ramainen@ramainen:~/проекты$ python prog1.py
Traceback (most recent call last):
File “prog1.py”, line 14, in <module>
print distance(coordinate)
File “prog1.py”, line 11, in distance
k = ((x2-x1)**2 + (y2-y1)**2)
NameError: global name ‘x2’ is not defined <—- Не понимаю, у меня же есть x2
Андрей Светлов
новый вопрос — новая тема.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB