【问题标题】:Python: List Looping Triggering Valid Input LoopPython:列表循环触发有效输入循环
【发布时间】:2021-07-31 14:03:27
【问题描述】:

简而言之,我正在构建一个 Discord 机器人,它会提示用户输入包含有效图像类型的文件名。我创建了一个有效图像类型列表来检查用户输入。我还实现了一个“valid_input”循环,因此如果没有找到有效的图像类型,则会向用户发送一条错误消息并循环返回以提示输入另一个输入。但是,如果给出了具有有效图像类型的文件名,因为输入是通过列表循环的,所以每次图像类型不匹配时,都会发送错误,但随后它也会找到匹配的类型,并读取为成功。

imgTypeList = ['.jpg', '.png', '.jpeg']
validType = any(imgTypeList)
valid_input = False
while not valid_input:
    await message.channel.send('[prompt to user]')
    msg1 = await client.wait_for("message") 
    for validType in imgTypeList:
        if validType in msg1.content:
            os.rename('[path]\{}'.format(attatchment.filename),'[path]\{}'.format(msg1.content))
            await message.channel.send('[success]')
            valid_input = True
        else:
            await message.channel.send('[error]')

当给出具有有效图像类型的文件名时,对于与文件名中的图像类型不匹配的两种图像类型,将发送两次错误消息,并发送一次成功消息。我曾尝试在没有 any() 参数的情况下完成此操作,但结果相同。

我确信有一个简单的解决方案,但我不仅对编码很陌生,而且现在也很累。任何帮助将不胜感激!

【问题讨论】:

    标签: python list loops input discord.py


    【解决方案1】:

    由于您的for-loop-logic,有效输入也会发生错误。

    试试

    if (any([element in msg1.content for element in imgTypeList])):
        # success
    else:
        # error
    

    而不是你的 for 循环

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 2011-05-13
      • 2011-03-04
      • 2016-08-02
      • 1970-01-01
      • 2012-03-19
      相关资源
      最近更新 更多