Вот код, который я написал до сих пор:
def Ordinal(check):
data={1:"First", 2:"Second", 3:"Third", 4:"Fourth", 5:"Fifth", 6:"Sixth", 7:"Seventh", 8:"Eighth", 9:"Ninth", 10:"Tenth", 11:"Eleventh", 12:"Twelfth"}
if check in dict.keys:
return dict.get(check)
else:
return""
def main():
Num=input("Enter a number (1-12) to get its ordinal: ")
print ("The ordinal is", Ordinal(Num))
main()
Предполагается, что программа получает число от 1 до 12 от пользователя и затем печатает его порядковый номер. У меня возникают проблемы с использованием ввода и проверкой, является ли это ключ, а затем возвращает его значение в качестве оператора печати в основной функции. Ошибка связана с оператором if.
4 ответа
Ваша проблема с if check in data.keys:
, потому что:
data.keys
это метод: <built-in method keys of dict object at 0x10b989280>
Вы должны вызвать метод data.keys()
, который возвращает [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Или вы можете сделать:
def Ordinal(check):
data={1:"First", 2:"Second", 3:"Third", 4:"Fourth", 5:"Fifth", 6:"Sixth", 7:"Seventh", 8:"Eighth", 9:"Ninth", 10:"Tenth", 11:"Eleventh", 12:"Twelfth"}
if check in data:
return data.get(check)
else:
return""
def main():
Num=input("Enter a number (1-12) to get its ordinal: ")
print ("The ordinal is", Ordinal(Num))
main()
Или, как указал @astrosyam, использование data.get(int(check), "")
- более чистый способ.
Попробуй это ...
def Ordinal(check):
data={1:"First", 2:"Second", 3:"Third", 4:"Fourth", 5:"Fifth", 6:"Sixth", 7:"Seventh", 8:"Eighth", 9:"Ninth", 10:"Tenth", 11:"Eleventh", 12:"Twelfth"}
return data.get(int(check), "")
def main():
Num=input("Enter a number (1-12) to get its ordinal: ")
print ("The ordinal is", Ordinal(Num))
main()
Проверка if не нужна, так как dict.get может вернуть значение по умолчанию.
Может как то так? Не печатайте вывод, если они вводят неверный ключ.
data = {
1: "First", 2: "Second", 3: "Third", 4: "Fourth", 5: "Fifth",
6: "Sixth", 7: "Seventh", 8: "Eighth", 9: "Ninth", 10: "Tenth",
11: "Eleventh", 12: "Twelfth"}
def Ordinal(check):
return data[check]
def main():
Num = input("Enter a number (1-12) to get its ordinal: ")
try:
print ("The ordinal is {}".format(Ordinal(int(Num))))
except ValueError:
print("didnt enter a valid integer")
except KeyError:
print("Not number between 1-12")
main()
Если вы используете Python 2.x, используйте raw_input
вместо input
.
Чтобы добавить ответ Брайана Окли, вы можете сделать следующее:
def Ordinal(check):
data={1:"First", 2:"Second", 3:"Third", 4:"Fourth", 5:"Fifth", 6:"Sixth", 7:"Seventh", 8:"Eighth", 9:"Ninth", 10:"Tenth", 11:"Eleventh", 12:"Twelfth"}
if check in data:
return data.get(check)
else:
return""
def main():
Num=eval(input("Enter a number (1-12) to get its ordinal: ")) #notice eval here!
print ("The ordinal is", Ordinal(Num))
main()
Обратите внимание, что я добавил eval в строке ввода.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.