161

Re: Потрібна допомога

Хто розуміє в c++ - http://replace.org.ua/post/119683/#p119683

162 Востаннє редагувалося ping (25.09.2018 22:21:03)

Re: Потрібна допомога

без мапів та конвертації в стрінги:

def get_sum(number):
    summ = 0
    while number:
        number, r = divmod(number,10)
        summ += r
    return summ

inp, outp = int(input()), 0
while inp > 0:
    inp -= get_sum(inp)
    outp += 1    
    
print(outp)

але  while - повільна штука, тому це не поможе

163

Re: Потрібна допомога

ну ще так, щоб без while або if

inp, outp = int(input()), 0
try:
    for i in iter(int, 1):
        inp -= sum(map(int, list(str(inp))))
        outp += 1    
        1 / (inp + abs(inp))  
except Exception:
    pass

print(outp)

164

Re: Потрібна допомога

Виключні ситуації повільніші за if.

165 Востаннє редагувалося koala (26.09.2018 07:07:49)

Re: Потрібна допомога

Гм. Заміряв.

код
from timeit import timeit
print('abs:',timeit("a=5;abs(a)",number=10000000))
print('if:',timeit("a=5;a if a>0 else -a",number=10000000))
def while_if():
    n = 0
    while True:
        n+=1
        if n==100:
            break
def for_try():
    try:
        for i in iter(int,1):
            n+=1
            1/(n-100)
    except:
        pass

print('while:',timeit("import __main__;__main__.while_if()",number=100000))
print('for:',timeit("import __main__;__main__.for_try()",number=100000))
abs: 0.773834206276664
if: 0.5225441876465348
while: 0.9680562693382568
for: 0.18680880409061373

abs повільніший за if; але for значно швидший за while, навіть із діленням. Чому?

166

Re: Потрібна допомога

print('map:',timeit("x=list(map(str.upper,['abc','def','ghi']))"))
print('comprehension:',timeit("x=[i.upper() for i in ['abc','def','ghi']]"))
map: 1.1276082100809166
comprehension: 0.7004999132774059

А от map, якщо потрібно перетворювати на список, повільніший за генератор.

167 Востаннє редагувалося koala (26.09.2018 07:08:11)

Re: Потрібна допомога

А, все добре.

def for_try():
    try:
        n=0 #забув ))
        for i in iter(int,1):
            n+=1
            1/(n-1000)
    except:
        pass
def for_if():
    n=0
    for i in iter(int,1):
        n+=1
        if n==1000:
            break
print('for:',timeit("import __main__;__main__.for_try()",number=10000))
print('for-if:',timeit("import __main__;__main__.for_if()",number=10000))
for: 2.5015092296244386
for-if: 1.8872978169310075

for повільніший за while, try повільніший за if.

Подякували: ping1

168

Re: Потрібна допомога

Доброго вечора
Виникла проблема... При запуску цього коду вибиває помилку:

from tkinter import *
colorchooser.askcolor()

Ця помилка:

Traceback (most recent call last):
  File "D:/d/illya/practice/lesson_2.py", line 2, in <module>
    colorchooser.askcolor()
NameError: name 'colorchooser' is not defined

Я так зрозумів, що в мене, напевно, десь пошкоджена частина модуля tkinter, чи в чому проблема? Як її виправити?

169

Re: Потрібна допомога

tkinter.colorchooser - це модуль.
Відповідно

import tkinter.colorchooser
tkinter.colorchooser.askcolor()
Подякували: leofun01, Eff1c2