· 5 years ago · Jul 24, 2020, 04:52 PM
1Code:
2
3# Write your code here
4import random
5import luhn
6import sqlite3
7
8random.seed(0)
9
10class Bank:
11 global cursor, connection
12 connection = sqlite3.connect(card.s3db)
13 cursor = connection.cursor()
14
15 cursor.execute("""CREATE TABLE IF NOT EXISTS card(
16 id INTEGER PRIMARY KEY AUTOINCREMENT,
17 number TEXT,
18 pin TEXT,
19 balance INTEGER DEFAULT 0
20 ) WITHOUT ROWID;
21 """)
22
23 connection.commit()
24
25 """def __init__(self):
26 #self.cards = {}"""
27
28
29 def menu(self):
30 print('1. Create an account\n2. Log into account\n0. Exit')
31 choice = input()
32 if choice == '1':
33 self.create()
34 elif choice == '2':
35 self.login()
36 elif choice == '0':
37 print('\nBye!')
38 self.connection.close()
39 quit()
40
41 def account_menu(self, balance):
42 print('1. Balance\n2. Log out\n0. Exit')
43 choice = input()
44 if choice == '1':
45 print(f'Balance = {balance}')
46 elif choice == '2':
47 print('\nYou have successfully logged out!\n')
48 return self.menu()
49 elif choice == '0':
50 print('\nBye!')
51 quit()
52
53 @property
54 def create(self):
55 print()
56 card_temp = '400000' + str.zfill(str(random.randint(000000000, 999999999)), 9)
57 card_number = luhn.append(card_temp)
58 pin = str.zfill(str(random.randint(0000, 9999)), 4)
59 print(f'Your card has been created\nYour card number:\n{card_number}\nYour card PIN:\n{pin}\n')
60 balance = 0
61 account = (card_number, pin, balance)
62 cursor.execute('INSERT INTO card VALUES (?,?,?)', account)
63 connection.commit()
64 return self.menu()
65
66 def login(self):
67 print('\nEnter your card number:')
68 card_number = input()
69 print('Enter your PIN:')
70 input_pin = input()
71 cursor.execute('SELECT number, pin, balance FROM card WHERE number =:number and pin =:pin', {'number': card_number, 'pin': input_pin})
72 output_account = cursor.fetchone()
73
74 if card_number == output_account[0] and input_pin == output_account[1]:
75 print('\nYou have successfully logged in!\n')
76 return self.account_menu(output_account[2])
77 else:
78 print('Wrong card number or Pin!')
79 return self.menu()
80
81if __name__ == '__main__':
82 stage_1 = Bank()
83 while True:
84 stage_1.menu()
85
86
87Exception in test #1
88
89Traceback (most recent call last):
90 File "banking.py", line 8, in <module>
91 class Bank:
92 File "banking.py", line 10, in Bank
93 connection = sqlite3.connect(card.s3db)
94NameError: name 'card' is not defined