Отдельное соглашение от числа, чтобы я мог запустить формулу, которая будет конвертировать мм в дюймы - PullRequest
0 голосов
/ 27 января 2020

Я учусь python, и мне трудно с тренировочным листом, где я пытаюсь преобразовать миллиметры в дюймы и наоборот. Я строю его по аналогичному сценарию, который конвертирует Фаренгейт в Цельсий (и также наоборот).

Вот скрипт, который конвертирует F <-> C:

temp = input("Input the  temperature you like to convert? (e.g., 45F, 102C etc.) : ")
degree = int(temp[:-1])
i_convention = temp[-1]

if i_convention.upper() == "C":
  result = int(round((9 * degree) / 5 + 32))
  o_convention = "Fahrenheit"
elif i_convention.upper() == "F":
  result = int(round((degree - 32) * 5 / 9))
  o_convention = "Celsius"
else:
  print("Input proper convention.")
  quit()
print("The temperature in", o_convention, "is", result, "degrees.")

Я написал это основано на приведенном выше:

meas = input("Convert mm to in and vice versa, enter a value (e.g. 10mm, 2in): \n")
num = int(meas[:-2])
i_measType = meas[-2]

if i_measType.upper() == "MM":
    result = int((num * (1/25.4)))
    o_measType = "in"
elif i_measType.upper() == "IN":
    result = int((num * 25.4))
    o_measType = "mm"
else:
    print("Input proper convention.")
    quit()
print(meas, " = ", result, o_measType)

Я предполагаю, что проблема в [:-2] и [-2], потому что, исходя из того, что я могу понять, эта часть используется, чтобы, возможно, вывести соглашение из номер? Я подумал, что если кто-то вводит 44 мм, meas[:-2] используется для преобразования этого значения в 44, а meas[-2] означает «мм». Но я явно ошибаюсь ...

Любая помощь и возможные объяснения будут с благодарностью.

Ошибка:

ValueError: invalid literal for int() with base 10:

1 Ответ

0 голосов
/ 27 января 2020

measure [-2] - от 2-го до последнего символа входной строки measure, в вашем случае это может быть 'm' или 'i'. Это один символ.

Вы можете изменить условия if / else на if i_measType.upper () == "M" ...

или изменить i_measType = [-2:] чтобы решить проблему.

...