简体   繁体   中英

Python: Bank ATM program

In my Python program I have created one class userdetails - (although I have some other classes I want to add later). I have created 2 objects from that class but I cannot call all of them? this is my issue. I want to link seperate pin_no's to seperate objects and call them individually with their details.


from Details import userdetails


pin_no = (1111, 2222)

while True:

    pin_no = input("Input the no : ")

    if pin_no == '1111' or pin_no == '2222':
        
        
        print ("\n Hello and welcome to my program.  Please choose from one of the following options:")
        
        break
    
    else:
    
        print ("please try again ")
            
            
            
newuserdetails = userdetails ('Tom', '23 Bishop St ', 'cv3_f45', 2347477472)

newuserdetails1 = userdetails ('Bill', '81 Oliver St ', 'CV6 7FR', 574747477)   
  
  
user =  input("\n\n 1. Userdetails \n 2. Address \n 3. Post Code \n 4. Tel No " '\n')

a = '1'
b = '2'
c = '3'
d = '4'


if user == a:

    print (newuserdetails.name) or (newuserdetails1.name) 
    
elif user == b:
    
    print (newuserdetails.address)
     
elif user == c:
    
    print (newuserdetails.post_code)
    
elif user == d:
    
    print (newuserdetails.tel_no)

I believe what are looking for is a dictionary.

newuserdetails = userdetails ('Tom', '23 Bishop St ', 'cv3_f45', 2347477472)
newuserdetails1 = userdetails ('Bill', '81 Oliver St ', 'CV6 7FR', 574747477)
newuserdetails2 = userdetails ('John', '35 Main St ', 'CRF 250R', 435247477)


# create the dictionary right after you create the class, so they can be in the same scope
# whenever you would reference newuserdetails, you can now reference the dictionary object

dict = { # if you know all the users when you create the dictionary
  '1111': newuserdetails,
  '2222': newuserdetails1,
}

# to add a user after the dictionary has been created
dict['3333'] = newuserdetails2

Then you can get the user details instance by the pin, using this:

dict['1111'] # returns newuserdetails

# instead of using:
newuserdetails.name # returns 'Tom'

# you can now use:
dict['1111'].name # returns 'Tom'

# Or you could assign it to a temp variable if that makes more sense
currentuserdetails = dict['1111']
currentuserdetails.name # still returns 'Tom'

I warn against using a pin as a way to get the user, however.

If two users choose the same pin, by chance, then there will be errors and your code will break. You would be better suited to use Ids to get the userdetails

Edit:

Here is what I'm using and it works as expected on python 3.8

class userdetails:
    def __init__(self, name, addr, num, number):
        self.name = name
        self.address = addr
        self.post_code = num
        self.tel_no = number


pin_no = (1111, 2222)

while True:
    pin_no = input("Input the no : ")
    if pin_no == '1111' or pin_no == '2222':
        print ("\n Hello and welcome to my program.  Please choose from one of the following options:")     
        break
    
    else:
        print ("please try again ")
            
               
newuserdetails = userdetails ('Tom', '23 Bishop St ', 'cv3_f45', 2347477472)
newuserdetails1 = userdetails ('Bill', '81 Oliver St ', 'CV6 7FR', 574747477)   
dict = {
  '1111': newuserdetails,
  '2222': newuserdetails1
}

user =  input("\n\n 1. Userdetails \n 2. Address \n 3. Post Code \n 4. Tel No " '\n')

a = '1'
b = '2'
c = '3'
d = '4'


if user == a:
    print (dict[pin_no].name)
elif user == b:
    print (dict[pin_no].address)
elif user == c:
    print (dict[pin_no].post_code)
elif user == d:
    print (dict[pin_no].tel_no)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM