首页 > 解决方案 > 如何在while循环之外使用变量

问题描述

当我运行脚本时,没有错误,但没有打印或记录任何内容,即使实际上传了模型。

import os
import requests
import sys
from colorama import Fore

os.system('cls')

while True:
    info = requests.get("https://search.roblox.com/catalog/json?CatalogContect=2&Category=6&SortType=3&ResultsPerPage=1").json()


if info[0]['Name'] == "DreamGrim":
        pass
elif info[0]['Name'] == ".gg/Fgj3VRGapz":
        pass
else:
    print(f"[{Fore.LIGHTGREEN_EX}+{Fore.RESET}] Logged model: " + str(info[0]['Name']) + " | " "https://www.roblox.com/library/" + str(info[0]['AssetId']) + "/" + str(info[0]['Name']))
    with open('logs.txt', 'a') as f:
        f.write(f"\n[+] Logged model: " + str(info[0]['Name']) + " | " "https://www.roblox.com/library/" + str(info[0]['AssetId']) + "/" + str(info[0]['Name']))

如何在不循环日志的情况下完成这项工作?

如果我把它放在while True:循环中,日志开始循环并且会发生这样的事情:

[+] Logged model: Hot Chocolate | https://www.roblox.com/library/7881318998/Hot Chocolate
[+] Logged model: Hot Chocolate | https://www.roblox.com/library/7881318998/Hot Chocolate
[+] Logged model: Hot Chocolate | https://www.roblox.com/library/7881318998/Hot Chocolate
[+] Logged model: Hot Chocolate | https://www.roblox.com/library/7881318998/Hot Chocolate
[+] Logged model: Hot Chocolate | https://www.roblox.com/library/7881318998/Hot Chocolate

标签: pythonloopswhile-loop

解决方案


您必须在脚本进行下一步之前终止 while 循环。如果您尝试运行以下代码,您将得到重复的 1 和没有 2:

while True:
    print(1)
print(2)

构建代码的更好方法是先获取信息,然后遍历它:

info = requests.get("https://search.roblox.com/catalog/json?CatalogContect=2&Category=6&SortType=3&ResultsPerPage=1").json()

for result in info:
    if result['Name'] == "DreamGrim":
        pass
        ...

推荐阅读