Форум сайта python.su
0
Здрастье! Вот от нечего делать начал изучать языки програмирования. Вот тут я перевожу код. Как знатоки поделитесь опытом и скажите можно ли сократить это код-кот-коте.
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)
Офлайн
75
Be@r_Not_beer
В нем ничего не понятно. Для чего он ?
Офлайн
0
ну это кусок, она не закончена. Пользователь вводит данные например мощность лампы, а код должен отделить цифры из строки и превращает его в числовую переменную. А строка… строка это размеренность. код должен понять в Кило или Мега или просто так…
Офлайн
Я бы как-то так сделал:
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
Офлайн
32
Вместо polzovatel_data, можно что-то типа:
>>> import re >>> re.search(r'(\d+)\s*(\w+)', '500кВт').groups() ('500', 'кВт') >>> re.search(r'(\d+)\s*(\w+)', '500 кВт').groups() ('500', 'кВт')
Офлайн
103
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))
Отредактировано terabayt (Март 10, 2014 20:54:30)
Офлайн