Уведомления

Группа в Telegram: @pythonsu

#1 Март 9, 2014 12:30:13

Be@r_Not_beer
Зарегистрирован: 2014-03-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Можно ли как то отимизировать?

Здрастье! Вот от нечего делать начал изучать языки програмирования. Вот тут я перевожу код. Как знатоки поделитесь опытом и скажите можно ли сократить это код-кот-коте.

def polzovatel_data():
    chislo = ""
    stroka = ""
    w = str(input("Введите мощность прибора в кВт, вт, или Мега ваттах)"))
    for n in w.lower():
        if n in "0123456789":
            chislo = chislo + n
        else:
            stroka = stroka + n
            stroka_f = ''
            for n in stroka:
                if n == " ":
                    pass
                else:
                    stroka_f = stroka_f + n
    return int(chislo), stroka_f
def core():
    w, r = polzovatel_data()
    r_sop = ""
    sop = 0
    for n in r:
        if r is "ватwat":
            r_sop = r_sop + r
        sop = sop + 1
    if sop >= 3:
        print(w / 1000, "кВат")
core()

Отредактировано Be@r_Not_beer (Март 17, 2014 03:44:39)

Офлайн

#2 Март 9, 2014 12:35:08

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Можно ли как то отимизировать?

Be@r_Not_beer
В нем ничего не понятно. Для чего он ?

Офлайн

#3 Март 9, 2014 12:45:41

Be@r_Not_beer
Зарегистрирован: 2014-03-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Можно ли как то отимизировать?

ну это кусок, она не закончена. Пользователь вводит данные например мощность лампы, а код должен отделить цифры из строки и превращает его в числовую переменную. А строка… строка это размеренность. код должен понять в Кило или Мега или просто так…

Офлайн

#4 Март 9, 2014 14:06:06

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Можно ли как то отимизировать?

Я бы как-то так сделал:

metrics = {
    'вт': 1,
    'квт': 1000,
    'мвт': 1000 * 1000,
}
def parse_input(user_input):
    for metric, factor in metrics.items():
        num, tail = user_input.split(metric)
        num = num.strip()
        if num.isdigit():
             return num * factor
     return None
res = parse_input('some user input')
if res is None:
    print 'WTF?'
else:
    print res        

Офлайн

#5 Март 9, 2014 20:58:01

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Можно ли как то отимизировать?

Вместо polzovatel_data, можно что-то типа:

>>> import re
>>> re.search(r'(\d+)\s*(\w+)', '500кВт').groups()
('500', 'кВт')
>>> re.search(r'(\d+)\s*(\w+)', '500 кВт').groups()
('500', 'кВт')

Офлайн

#6 Март 10, 2014 11:05:16

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Можно ли как то отимизировать?

import re
a = {'вт': 1, 'квт':1000, 'мвт': 1000000}
w, r = re.search(r'(\d+)\s*(\w+)', input("Введите мощность прибора в Вт, кВт или мВт - ").lower()).groups()
if r in a: print("%s %s = %s Вт = %s кВт = %s МВт" % (w, r, int(w)*a[r], int(w)*a[r]/1000, int(w)*a[r]/1000000))
Вы попросили сократить!))



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Март 10, 2014 20:54:30)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version