python перевод массы в кратные и дольные единицы
нужно написать программу перевода введенной массы в граммы, килограммы, тонны. Приставки, которые будет использовать программа: g – граммы, kg – килограммы, t – тонны.
Пример ввода:
12kg
Вывод:
12000g
0.012t
вот как получилось у меня, но это не правильно. как сделать так чтобы в вводимых данных с клавиатуры отделить число от граммов и т.д.?
a = input()
if "kg" in a:
print(a/1000 + "t")
print(a*1000 + "g")
elif "g" in a:
print(a/1000 + "kg")
print(a/00000 + "t")
elif "t" in a:
print(a*1000 + "kg")
print(a/1000000 + "g")
Ответы (2 шт):
По умолчанию input() возвращает строковый тип str.
Поэтому, даже если вы введете число, вы все равно не сможете проводить с ним математические операции, так как переменная будет являться текстом.
Допустим, мы вводим 12
Переменная a будет иметь тип str и содержать значение '12'
Чтобы привести его к числовому типу int достаточно применить к input() встроенную функцию int()
a = int(input())
Теперь a имеет тип int и значение 12
Однако вы вводите также единицы измерения, так что строку '12kg', содержащую буквы привести к числу не получится.
Для отделения 'kg' можно воспользоваться стандартным методом replace(), который первым аргументом принимает строку, которую нужно заменить, а вторым - строку, на которую нужно заменить.
'12kg'.replace('kg', '')
Даная строка примет значение '12', которое уже можно привести к числу и выполнять операции.
Решение:
a = input()
value = int(a.replace('kg', '').replace('g', '').replace('t', ''))
if "kg" in a:
print(str(value / 1000) + "t")
print(str(value * 1000) + "g")
elif "g" in a:
print(str(value / 1000) + "kg")
print(str(value / 100000) + "t")
elif "t" in a:
print(str(value * 1000) + "kg")
print(str(value / 1000000) + "g")
import re
weights = {
't': 1e-6,
'kg': 1e-3,
'g': 1
}
if match := re.search(r'([\d.]+)\s*?(t|k?g)', input()):
value, unit = match.groups()
grams = float(value) / weights.pop(unit)
for u, v in weights.items():
print(f'{grams * v}{u}')