python - 输入有效会员号时不执行返回语句
问题描述
大家早,
因此,我尝试使用扫描方法创建一个帐户类,该方法对会员卡进行“虚构”扫描,但是,当我在输入字段中输入有效的 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": [
{
"\u00ef\u00bb\u00bfid": "1",
"first_name": "Adelaide",
"last_name": "Cunningham",
"gender": "Female",
"email": "a.cunningham@randatmail.com",
"card_number": "13"
},
{
"\u00ef\u00bb\u00bfid": "2",
"first_name": "Charlie",
"last_name": "Roberts",
"gender": "Male",
"email": "c.roberts@randatmail.com",
"card_number": "22"
},
{
"\u00ef\u00bb\u00bfid": "3",
"first_name": "Eric",
"last_name": "Cooper",
"gender": "Male",
"email": "e.cooper@randatmail.com",
"card_number": "33"
},
{
"\u00ef\u00bb\u00bfid": "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"
推荐阅读
- typescript - 类型定义:至少包含 2 个元素的特定类型的数组
- vba - 使用 VBA 识别和更改 PowerPoint 中的子弹类型
- html - 如何用 div 创建树
- pyspark - 获取最小值关联国家
- android - 如何将车载摄像头连接到移动应用程序
- bash - 无法让 cp 命令通过 CGI 脚本工作
- android - 如何在 Android 中使用视图绑定
- angular - 如何修复 AccessDenied 错误 CloudFront Angular 部署的应用程序?
- reactjs - React Hooks Auth0-js 上下文挂钩未更新
- c# - 通过数据绑定 WPF/MVVM 从从数据库填充的组合框中获取所选值,以进行比较