Неожиданная возвращенная переменная в Python

Я работаю с Python и почти написал код как часть необходимого задания.

#------Unit converter------#
#-------Challenge 5-------#
#-------Definitions-------#
def currencyConvert():
    print("C")

def tempConvert():
    print("T")

def massConvert():
    print("M")

def volConvert():
    print("V")

#-------Executions--------#
print("Welcome to my unit converter.\nIn this software, you can convert between the following things:")
print(" - Currency: United States Dollar (USD), Pound Sterling (GBP) and Serbian Dinar (RDS).")
print(" - Temperature: Fahrenheit (F) and Celsius (C)")
print(" - Mass: Pounds (lbs) and grams (mg/g/kg)")
print(" - Volume: Fluid ounces (fl oz) and litres (ml/cl/l")

def phaseOne():
    global unitType
    print("--------------------")
    unitType = input("What kind of conversion would you like to make? Currency (C), temperature (T), mass (M) or volume (V)?\n>>>")
    if unitType == "C" or "c":
        currencyConvert()
    elif unitType == "T" or "t":
        tempConvert()
    elif unitType == "M" or "m":
        massConvert()
    elif unitType == "V" or "v":
        volConvert()
    else:
        print("That is not a valid input. Please try again.")
        phaseOne()        

phaseOne()

Моя проблема в том, что когда я запускаю программу и ввожу «V», я ожидаю, что будет вызвана функция volConvert () (следовательно, вывести «V»), но вместо этого она вернет «C». Чем это вызвано?

У меня еще нет навыков работы с Python, но я работаю над этим, и мне нужна небольшая помощь.

Спасибо!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
6
0
60
1

Ответы 1

Условия, которые у вас есть, работают как (unitType == "C") or "c", и это не то, что вам нужно. Вместо этого вам нужен unittype in ("C", "c").

Используйте кортеж вместо списка. Экономит память, и я считаю, что это быстрее.

N Chauhan 06.09.2018 22:27

@NChauhan: Я не измерял, но слышал похожие вещи. Я обновил свой ответ.

Martin Ueding 07.09.2018 15:32

Другие вопросы по теме