You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现正确迭代?受害者多社交账号信息收集写入故障排查

解决多受害者多社交账号录入的迭代问题

嘿,我懂你现在的困扰——要实现「录入多名受害者+每个受害者可多次添加社交账号、随时返回菜单」的功能,很容易在嵌套循环和流程控制上绕晕。我给你整理了一套清晰的逻辑,再附上可直接运行的Python示例代码,应该能帮你解决迭代的问题。

核心需求拆解

咱们先把需求拆成明确的步骤,避免逻辑混乱:

  • 先获取受害者的总数量
  • 对每一位受害者:
    1. 录入基础信息:姓名、年龄
    2. 进入社交账号录入循环,支持:
      • 依次添加Instagram账号(自动编号:Instagram 1、Instagram 2...)
      • 依次添加Snapchat账号(自动编号:Snapchat 1、Snapchat 2...)
      • 输入指定指令返回操作选择界面,继续添加其他类型账号或结束当前受害者的录入
    3. 完成当前受害者所有信息录入后,进入下一位受害者的流程
  • 所有信息录入完成后,将数据写入本地文件

示例代码实现

def main():
    # 初始化存储所有受害者信息的列表
    victims = []
    
    # 第一步:获取受害者数量(加入输入校验)
    while True:
        try:
            victim_count = int(input("请输入受害者数量:"))
            if victim_count <= 0:
                print("请输入大于0的数字!")
                continue
            break
        except ValueError:
            print("输入无效,请输入整数!")
    
    # 第二步:逐个录入受害者信息
    for idx in range(victim_count):
        print(f"\n--- 开始录入第 {idx+1} 位受害者信息 ---")
        victim_info = {
            "姓名": input("请输入姓名:"),
            "年龄": input("请输入年龄:"),
            "Instagram账号": [],
            "Snapchat账号": []
        }
        
        # 第三步:社交账号录入循环,支持返回菜单选择
        while True:
            print("\n请选择操作:")
            print("1. 添加Instagram账号")
            print("2. 添加Snapchat账号")
            print("3. 完成当前受害者信息录入")
            choice = input("请输入选择(1/2/3):").strip()
            
            if choice == "1":
                # 自动生成账号编号,不用手动维护计数
                acc_num = len(victim_info["Instagram账号"]) + 1
                acc = input(f"请输入Instagram {acc_num} 账号:").strip()
                if acc:
                    victim_info["Instagram账号"].append(acc)
                    print(f"已添加Instagram {acc_num} 账号!")
            elif choice == "2":
                acc_num = len(victim_info["Snapchat账号"]) + 1
                acc = input(f"请输入Snapchat {acc_num} 账号:").strip()
                if acc:
                    victim_info["Snapchat账号"].append(acc)
                    print(f"已添加Snapchat {acc_num} 账号!")
            elif choice == "3":
                # 将当前受害者信息加入总列表,跳出内层循环
                victims.append(victim_info)
                print(f"已完成第 {idx+1} 位受害者信息录入!")
                break
            else:
                print("输入无效,请选择1/2/3!")
    
    # 第四步:将所有信息写入文件
    with open("受害者信息记录.txt", "w", encoding="utf-8") as f:
        for i, victim in enumerate(victims, 1):
            f.write(f"第{i}位受害者信息:\n")
            f.write(f"姓名:{victim['姓名']}\n")
            f.write(f"年龄:{victim['年龄']}\n")
            if victim['Instagram账号']:
                f.write("Instagram账号:\n")
                for j, acc in enumerate(victim['Instagram账号'], 1):
                    f.write(f"  Instagram {j}:{acc}\n")
            if victim['Snapchat账号']:
                f.write("Snapchat账号:\n")
                for j, acc in enumerate(victim['Snapchat账号'], 1):
                    f.write(f"  Snapchat {j}:{acc}\n")
            f.write("-------------------------\n")
    
    print("\n所有信息已成功写入文件:受害者信息记录.txt")

if __name__ == "__main__":
    main()

关键逻辑说明

  1. 嵌套循环分离:外层循环负责遍历每一位受害者,内层循环处理当前受害者的社交账号录入,通过选择「3」跳出内层循环,自然进入下一位受害者的流程,避免迭代混乱。
  2. 自动编号机制:通过len(账号列表)+1自动生成账号序号,不用手动维护计数变量,从根源避免计数错误。
  3. 数据结构设计:用「列表嵌套字典」的方式存储数据,每个字典对应一位受害者的完整信息,社交账号用列表存储,方便扩展任意数量的账号。
  4. 输入校验:在获取受害者数量时加入整数校验,避免非数字输入导致程序崩溃。

如果你用其他语言实现,核心逻辑也是相通的:用嵌套循环分离「受害者遍历」和「单受害者账号录入」,通过菜单选项控制循环的进入与退出,用数组/列表存储多账号信息即可。

内容的提问来源于stack exchange,提问作者aquatic7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:19:51