Вопрос:
У меня есть эта ошибка, когда я пытаюсь запустить мой скрипт:
Traceback (most recent call last): File «<pyshell#6>», line 1, in <module> converter() File «C:UsersJoanDocumentsSchoolComputingCourseworkA453 — PythonCurrency Converter.py», line 19, in converter exchange(currencyList) File «C:UsersJoanDocumentsSchoolComputingCourseworkA453 — PythonCurrency Converter.py», line 33, in exchange crntItem = currencyList.index[crntCurrency] =+ 1 TypeError: ‘builtin_function_or_method’ object does not support item assignment
Вот мой код, незавершенный конвертер валют:
# Global ist currencyList = [«Pound Sterling», 1, «Euro», 1.22, «US Dollar», 1.67, «Japanese Yen», 169.9480] ################################# # A program to convert currency # # Main function # ################################# def converter(): currencyList = [«Pound Sterling», 1, «Euro», 1.22, «US Dollar», 1.67, «Japanese Yen», 169.9480] print(«1) Enter an amount to be exchanged.») print(«2) Change exchange rates.») choice=0 while choice==0: selected=int(input(«Please select an option: «)) if selected == 1: choice = 1 exchange(currencyList) ################################# # Giving exchanged rate # ################################# def exchange(currencyList): crntAmnt = int(input(«Please enter the amount of money to convert: «)) crntCurrency = («Please enter the current currency: «) newCurrency = («Please enter the currency you would like to convert to: «) listLength = len(currencyList) crntItem = currencyList.index[crntCurrency] =+ 1 print(crntItem) newItem = currencyList.index[newCurrency] =+ 1 print(newItem)
Я попытался настроить главную функцию в качестве меню, а затем вызвать другую подфункцию, чтобы удовлетворить соответствующий выбор. Я бы хотел, чтобы некоторые советы о том, является ли это хорошим и способ закодировать это, поскольку я видел, как мой учитель сделал что-то похожее, я должен просто положить его в заявления “если” и т.д.
Это хороший, правильный способ кодирования?
Лучший ответ:
currencyList.index – это ссылка на метод; чтобы индексировать список, отпустите часть .index:
crntItem = currencyList[crntCurrency] print(crntItem) newItem = currencyList[newCurrency]
Я подозреваю, что вы пытаетесь найти индекс crntCurrency в списке, а затем добавьте 1, чтобы найти значение:
crntItem = currencyList[currencyList.index(crntCurrency) + 1]
а также
newItem = currencyList[currencyList.index(newCurrency) + 1]
но, возможно, вы должны использовать здесь словарь:
currencies = {«Pound Sterling»: 1, «Euro»: 1.22, «US Dollar»: 1.67, «Japanese Yen»: 169.9480}
Это сопоставляет имя валюты с номером, так что теперь вы можете просто искать валюты, не заставляя себя обходиться с помощью индексов:
crntItem = currencies[crntCurrency]
О, и вы забыли принять фактический пользовательский ввод; добавлять вызовы input() при запросе конвертации валюты:
crntCurrency = input(«Please enter the current currency: «) newCurrency = input(«Please enter the currency you would like to convert to: «)