Python: недопустимый буквенный индекс для базы данных Int () 10
Я пишу код для проекта, чтобы определить действительность кредитных карт, и я ударил стену, кажется, что все, что я пробовал до сих пор, не работает.
Это дает мне ошибку для функции sumofodds, где j = int (card [i])
Ошибка: «Недопустимый литерал для Int () с базой 10
Есть ли кто-нибудь, кто может мне помочь?
def sumofdoubles(): card=input() x=len(card) summ=0 for i in range(x-2,-1,-2): j=int(card[i]) u=j+j if u>9: h=u/2 summ=summ+h return(summ) def sumofevens(): card=input() x=len(card) summ=0 for i in range(x-2,-1,-2): j=int(card[i]) u=j+j if u<9: summ=summ+u return(summ) def sumofodds(): summ=0 card=input() x=len(card) for i in range(x-1,-1,-2): j=int(card[i]) summ=summ+j return(summ) def main(): card=input() length=len(card) summ=0 while(card!="#####"): if (card[0]=='4' or card[0]=='5' or card[0]=='6' or (card[0]=='3' and card[1]=='1')): dbls=sumofdoubles() evens=sumofevens() odds=sumofodds() if((dbls+evens+odds)%10==0): print("Valid") main()
Это полная трассировка для тех, кто интересуется
python test.py<s.input File "test.py", line 52 in <module> main() File "test.py", line 48, in main odds=sumofodds() File "test.py", line 33, in sumofodds j=int(card[i]) ValueError: invalid literal for int() with base 10: '#'
- Удаление частичных данных в mongoDB
- Монго связи / ссылки: наиболее эффективный способ? Примеры?
- MongoDB Оптимизация FindAndModify или Найти + Сортировать
- MongoDB: Почему update () возвращает значение null даже в случае успеха?
- Django / SQL: отслеживание того, кто читает что на форуме
Ну, что бы вы ни делали, вы набрали то, что на самом деле не является базовым номером 10. Это включает в себя все, что не является числом символов или пробелов. Так что не вводите это. 🙂
Примеры:
>>> int('04.9') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '04.9' >>> int('4-') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '4-' >>> int("Jack") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'Jack'
Обновление: Да, вы набрали «#». Это не действительный номер.
Вы вызываете input
каждый раз, когда вы отправляетесь в sumofodds
, sumofevens
или sumofdoubles
, поэтому каждый из них будет работать над отдельным номером кредитной карты. Вероятно, вы хотите только вводить input
в main
и должны передавать card
в качестве аргумента для каждой из этих других функций.
Тогда ваши функции могут выглядеть примерно так:
def sum_of_odds(card): x = len(card) # ... # ... def main(): while True: card = input() if card == '#####': break odds = sum_of_odds(card) # ...
- MongoDB: встроенные пользователи в комментарии
- Почему при запуске / создании экземпляров фабрики называет фабричные мальчики именования переменных RelatedFactory?
- Могу ли я использовать ту же базу данных MongoDB из Python и NodeJS
- Как бы вы смоделировали эту связь с базой данных?
- SQLAlchemy – самореляционное отношение Many-to-many с дополнительным столбцом
- Обновление Pymongo: возможно ли вставить поле с '$ currentDate' только один раз?
- Как сделать больше или меньше, чем использовать MongoDB?
- Структура данных для базы данных текстовых материалов
- Это занимает много времени … как ускорить этот словарь? (Python)
- Как сопоставить один класс с несколькими таблицами с SQLAlchemy?
- Что вызывает «неспособность подключиться к источнику данных» для pyodbc?