如何将合规包裹信息追加至列表并实现指定次数循环运行?
解决方案
嘿,我来帮你搞定这两个问题!咱们一步步调整代码:
1. 实现对应包裹数量的循环结构
首先,咱们要把单个包裹的输入和校验逻辑放到循环里,循环次数就是用户输入的包裹总数。用for _ in range(number)就能轻松实现——这里的_是占位符变量,因为我们不需要用到循环计数,只是需要重复指定次数。我还加了包裹序号提示,让用户更清楚当前输入的是第几个包裹。
2. 追加合规包裹信息到对应列表
当包裹的尺寸和重量都符合规则时,直接用列表的append()方法,把当前包裹的宽、长、高、重量分别添加到对应的列表里就可以了。
另外我还优化了校验逻辑:原来的elif会导致只要第一个不符合项被检测到,后面的规则就不再检查,改成多个if可以一次性把所有不符合的问题都提示给用户(如果想保持原来“只要有一个错就停止检查”的逻辑,改回elif也完全没问题)。
下面是调整后的完整代码:
# 先初始化存储包裹信息的空列表 width_list = [] length_list = [] height_list = [] weight_list = [] # 获取用户要输入的包裹数量 number = int(input("Enter the number of parcels you want to input: ")) # 循环处理每个包裹的输入与校验 for parcel_idx in range(number): print(f"\n--- Input details for parcel {parcel_idx + 1} ---") width = int(input("Enter the width (cm) of the parcel: ")) length = int(input("Enter the length (cm) of the parcel: ")) height = int(input("Enter the height (cm) of the parcel: ")) weight = int(input("Enter the weight (kg) of the parcel: ")) # 标记包裹是否合规 is_valid = True # 逐个校验规则,不符合就提示并标记为无效 if not (1 <= width <= 80): print("Error: Only widths between 1-80 cm are acceptable") is_valid = False if not (1 <= length <= 80): print("Error: Only lengths between 1-80 cm are acceptable") is_valid = False if not (1 <= height <= 80): print("Error: Only heights between 1-80 cm are acceptable") is_valid = False if not (1 <= weight <= 10): print("Error: Only weights between 1-10 kg are allowed") is_valid = False # 如果包裹合规,就把数据追加到对应列表里 if is_valid: print("Parcel is acceptable") width_list.append(width) length_list.append(length) height_list.append(height) weight_list.append(weight) # 可选:打印存储的合规包裹信息,方便验证结果 print("\n--- Valid Parcel Details ---") print(f"Widths of valid parcels: {width_list}") print(f"Lengths of valid parcels: {length_list}") print(f"Heights of valid parcels: {height_list}") print(f"Weights of valid parcels: {weight_list}")
关键改动说明:
- 把列表初始化移到最前面,避免每次循环重新创建空列表导致数据丢失
- 用
for parcel_idx in range(number)实现了对应数量的循环,同时通过parcel_idx + 1给用户展示包裹序号 - 新增
is_valid标志跟踪包裹状态,确保所有规则都被检查到 - 在合规分支里调用
append()方法,把符合要求的包裹数据存入对应列表 - 最后添加了列表打印逻辑,方便你直观验证数据是否正确存储
这样就完美解决了你提到的两个问题啦!
内容的提问来源于stack exchange,提问作者joao leal
相关产品推荐
相关产品推荐

