Найти - Пользователи
Полная версия: Можно ли как то отимизировать?
Начало » Python для новичков » Можно ли как то отимизировать?
1
Be@r_Not_beer
Здрастье! Вот от нечего делать начал изучать языки програмирования. Вот тут я перевожу код. Как знатоки поделитесь опытом и скажите можно ли сократить это код-кот-коте.
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()
Singularity
Be@r_Not_beer
В нем ничего не понятно. Для чего он ?
Be@r_Not_beer
ну это кусок, она не закончена. Пользователь вводит данные например мощность лампы, а код должен отделить цифры из строки и превращает его в числовую переменную. А строка… строка это размеренность. код должен понять в Кило или Мега или просто так…
lorien
Я бы как-то так сделал:
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        
o7412369815963
Вместо polzovatel_data, можно что-то типа:
>>> import re
>>> re.search(r'(\d+)\s*(\w+)', '500кВт').groups()
('500', 'кВт')
>>> re.search(r'(\d+)\s*(\w+)', '500 кВт').groups()
('500', 'кВт')
terabayt
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))
Вы попросили сократить!))
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