无标题无名氏No.67347022 返回主串
2025-11-02(日)20:25:22 ID:p9LTzGQ 回应
新世界的船票
无标题无名氏No.67365250
2025-11-05(三)13:42:32 ID: p9LTzGQ (PO主)
import random
import json
import os
def main():
cards = [] # 存储卡片的列表
while True:
print("\n--- 抽卡程序 ---")
print("1. 添加卡片(支持多张)")
print("2. 删除卡片")
print("3. 抽取单张卡片")
print("4. 抽取多张卡片")
print("5. 显示牌堆")
print("6. 保存牌堆到文件")
print("7. 从文件加载牌堆")
print("8. 退出")
choice = input("请选择操作(1-8):")
if choice == '1':
# 添加多张卡片
names_input = input("输入要添加的卡片名称(用逗号、空格或换行分隔多个名称):").strip()
if not names_input:
print("输入不能为空!")
continue
# 替换所有逗号、换行符为空格,并统一处理多个空格
names_str = names_input.replace(',', ' ').replace('\n', ' ')
# 分割并过滤空项
names = [name.strip() for name in names_str.split() if name.strip()]
if names:
cards.extend(names)
print(f"已添加的卡片:{', '.join(names)}")
else:
print("未添加任何卡片,请输入有效的卡片名称。")
elif choice == '2':
# 删除卡片
name = input("输入要删除的卡片名称:").strip()
original_length = len(cards)
cards = [card for card in cards if card != name]
if len(cards) < original_length:
print(f"已删除所有名为 '{name}' 的卡片。")
else:
print(f"牌堆中没有找到名为 '{name}' 的卡片。")
elif choice == '3':
# 抽取单张卡片
if not cards:
print("牌堆为空,无法抽卡!")
else:
index = random.randint(0, len(cards) - 1)
drawn_card = cards.pop(index)
print(f"🎉 抽到的卡片是:{drawn_card}")
elif choice == '4':
# 抽取多张卡片
try:
num_str = input("请输入要抽取的卡片数量:").strip()
num = int(num_str)
if num <= 0:
print("抽取数量必须为正整数!")
continue
except ValueError:
print("请输入有效的数字!")
continue
if len(cards) < num:
print(f"⚠️ 牌堆中只有 {len(cards)} 张卡片,无法抽取 {num} 张。")
continue
drawn_cards = []
for _ in range(num):
index = random.randint(0, len(cards) - 1)
drawn_cards.append(cards.pop(index))
print("🎉 抽到的卡片是:")
for card in drawn_cards:
print(f"- {card}")
elif choice == '5':
# 显示牌堆
if not cards:
print("当前牌堆为空。")
else:
print("当前牌堆内容:")
for i, card in enumerate(cards, 1):
print(f"{i}. {card}")
elif choice == '6':
# 保存牌堆到文件
filename = input("输入保存的文件名(例如:deck.json):").strip()
if not filename:
print("文件名不能为空!")
continue
try:
with open(filename, 'w', encoding='utf-8') as f:
json.dump(cards, f, ensure_ascii=False, indent=2)
print(f"牌堆已保存到文件:{filename}")
except Exception as e:
print(f"保存失败:{e}")
无标题无名氏No.67365256
2025-11-05(三)13:43:15 ID: p9LTzGQ (PO主)
elif choice == '7':
# 从文件加载牌堆
filename = input("输入加载的文件名(例如:deck.json):").strip()
if not filename:
print("文件名不能为空!")
continue
if not os.path.exists(filename):
print("❌ 文件不存在,请确认文件名是否正确。")
continue
try:
with open(filename, 'r', encoding='utf-8') as f:
loaded_cards = json.load(f)
if isinstance(loaded_cards, list):
cards = loaded_cards
print(f"牌堆已从文件 {filename} 加载")
else:
print("❌ 文件内容格式错误,应为字符串列表。")
except json.JSONDecodeError:
print("❌ 文件内容格式错误,无法加载。")
except Exception as e:
print(f"❌ 加载失败:{e}")
elif choice == '8':
# 退出程序
print("正在退出程序...")
break
else:
print("无效输入,请输入 1-8 之间的数字。")
if __name__ == "__main__":
main()
无标题无名氏No.67365292
2025-11-05(三)13:50:28 ID: p9LTzGQ (PO主)
通过百度网盘分享的文件:抽卡程序.doc…
链接:https://pan.baidu.com/s/1qHeyr2uRMgvPxJSPpQC7HA
提取码:nqmf
复制这段内容打开「百度网盘APP 即可获取」