当输入有效的成员号时未执行返回语句



大家早上好,

因此,我尝试创建一个带有scan方法的帐户类,该方法采用"虚拟"但是,当我在输入字段中输入一个有效的card_number时,它返回另一个输入字段,但是如果我输入一个无效的card_number,它返回无效ID

这是我的代码,请问我在哪里出错了?

from enum import Enum
from abc import ABC, abstractmethod
import csv
import json
from datetime import datetime, timedelta, date
membersJsonPath = 'members.json'
class BookStatus(Enum):
AVAILABLE, RESERVED, LOANED, LOST = 1, 2, 3, 4
class ReservationStatus(Enum):
WAITING, PENDING, CANCELED, NONE = 1, 2, 3, 4
class AccountStatus(Enum):
ACTIVE, CLOSED, CANCELED, NONE = 1, 2, 3, 4
class Account(ABC):
def __init__(self, status=AccountStatus.ACTIVE):
self.__id = self.scan_id()
self.__status = status

def scan_id(self):
with open(membersJsonPath, 'r') as membersJson:
data = json.load(membersJson)
input_id = input("Please enter your member ID: ")
for member in data['members']:
if member['card_number'] == input_id:
return ("Welcome, " + member['first_name'] + "!") 
else:
return "Invalid ID"
a = Account()
a.scan_id()

这是我从CSV文件中创建的json文件的一部分

{
"members": [
{
"u00efu00bbu00bfid": "1",
"first_name": "Adelaide",
"last_name": "Cunningham",
"gender": "Female",
"email": "a.cunningham@randatmail.com",
"card_number": "13"
},
{
"u00efu00bbu00bfid": "2",
"first_name": "Charlie",
"last_name": "Roberts",
"gender": "Male",
"email": "c.roberts@randatmail.com",
"card_number": "22"
},
{
"u00efu00bbu00bfid": "3",
"first_name": "Eric",
"last_name": "Cooper",
"gender": "Male",
"email": "e.cooper@randatmail.com",
"card_number": "33"
},
{
"u00efu00bbu00bfid": "4",
"first_name": "Cadie",
"last_name": "Hall",
"gender": "Female",
"email": "c.hall@randatmail.com",
"card_number": "43"
}
]
}

问题出在for循环中:

for member in data['members']:
if member['card_number'] == input_id:
return ("Welcome, " + member['first_name'] + "!") 
else:
return "Invalid ID"

这里,如果input_id等于第一个会员的卡号,它返回欢迎信息,否则返回"Invalid ID"。你想扫描所有的卡号,如果没有匹配,只返回"Invalid ID",所以第二个返回语句应该在for循环结束后:


for member in data['members']:
if member['card_number'] == input_id:
return ("Welcome, " + member['first_name'] + "!") 

return "Invalid ID"

最新更新