Найти - Пользователи
Полная версия: Вопрос по циклам
Начало » Центр помощи » Вопрос по циклам
1
Ewgensky
Приветствую! Прошу подсказать грызущему гранит новичку)
Стоит задача посредством функции получить целое число, но таким способом, что оно будет получено через n минут или секунд.
Получилось реализовать задачу посредством цикла while, типа:
i = 0,5
while i < 100:
print(i)
i = i + i * 0,001

Однако компилятор, во-первых, выдает столбец возрастающих чисел, тогда как требуется, чтобы компилировалось одно возрастающее до нужной величины число, но не огромный столбец чисел, а во-вторых, необходимо контролировать время генерации такого числа. Как быть?
py.user.next
Опиши задачу точно.

Ewgensky
Стоит задача посредством функции получить целое число, но таким способом, что оно будет получено через n минут или секунд.
Ewgensky
Однако компилятор, во-первых, выдает столбец возрастающих чисел, тогда как требуется, чтобы компилировалось одно возрастающее до нужной величины число
Набор общих слов, под который подходит сотня разных кодов.

Приведи пример в виде конкретных чисел.
marvellik
 i = 0.5
while i < 100:
      i += i * 0.001
print(int(i))
а вообще то чтоб получить через несколько минут есть time.sleep()
Ewgensky
py.user.next
Опиши задачу точно.

Итак, представим функцию, принимающую аргумент (число). Это число в самой функции умножается на условный коэффициент до тем пор, пока не будет посредством умножения на него последнего полученного числа получено нужное число. И функция должна вернуть это нужное число.
Например, аргумент на входе равен 0.002, коэффициент в функции 0.05. И далее умножение этих чисел в виде : 0.002 * 0.05, далее результат этого умножения еще на 0.05 и т.д. , пока не будет получено скажем 100.
Компилироваться должно одно число ( то есть физически : не столбец (поток) чисел в компиляторе, а одна строка с одним возрастающим числом), возрастающее от 0.0001 до 100 соответственно.

def example(x):
while x < 100:
print(x)
x = x + x * 0.005

example(0.0002)

Конкретно в этом коде компилятор выдает столбец (поток) чисел, тогда как нужно одно возрастающее число. И его требуется получить таким способом скажем за 1 минуту.

Модуль time позволяет получить это число через промежуток времени, но надо компилировать умножение во времени и выводить его результат одним возрастающим числом.
py.user.next
Ewgensky
Конкретно в этом коде компилятор выдает столбец (поток) чисел, тогда как нужно одно возрастающее число.
  
import time
 
def progress(callback, *args):
    LOW, HIGH = 0, 20
    STRLEN = 3
    for i in range(LOW, HIGH + 1):
        print(' ' * STRLEN + '\r', end='')
        print('{:02}%'.format(i), end='')
        time.sleep(1)
        callback(*args)
    print()
 
def f(lst):
    lst.append('x')
 
lst = []
progress(f, lst)
lst

  
>>> import time
>>> 
>>> def progress(callback, *args):
...     LOW, HIGH = 0, 20
...     STRLEN = 3
...     for i in range(LOW, HIGH + 1):
...         print(' ' * STRLEN + '\r', end='')
...         print('{:02}%'.format(i), end='')
...         time.sleep(1)
...         callback(*args)
...     print()
... 
>>> def f(lst):
...     lst.append('x')
... 
>>> lst = []
>>> progress(f, lst)
20%   
>>> lst
['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x']
>>>
Ewgensky
py.user.next
Благодарю, за наглядные варианты. Будет интересно их разобрать. Жму руку!
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