【问题标题】:How do I fix this random.choice issue in python?如何在 python 中解决这个 random.choice 问题?
【发布时间】:2019-07-18 14:31:42
【问题描述】:

我正在使用 Python 3.7 开发一个小型非人工智能(直到现在)聊天机器人。现在我想随机从列表中选择一个随机答案。因此,我创建了一个列表,并希望在您键入 Hi、Hello(或其他问候语)时在终端中打印一个随机答案。

如果用户键入 Hi,我创建了一个列表并在该 random.choice(greeting) 下方选择一个随机答案。 当我输入嗨时,它没有给我答案。

所以这是我提到的代码部分:

if input() == "Hi" or "Hello" or "Good Morning" or "Good Afternoon" or "Good Evening" or "Hey":
    greeting = "Hey, how are you today?", "Nice to meet you", "Hello, pleasure to meet you", "Hi human."
    random.choice(greeting)

所以当我运行代码时,我没有收到任何错误,但是当我输入 Hi 时,什么也没有发生。当我输入 Hi、Hello、Good Morning、Good Afternoon、Good Evening 或 Hey 时,它希望它从我的列表中选择一个随机答案(“问候”),然后打印这个随机答案。感谢您的帮助。

【问题讨论】:

    标签: python macos bots


    【解决方案1】:

    你的 if 条件永远不会失败,因为第一个块是

    input()=="Hi" # might be True or False
    input() == "Hi" or "Hello" # is always True no matter what the input is.
    

    试试这个:

    greeting = "Hey, how are you today?", "Nice to meet you", "Hello, pleasure to meet you", "Hi human."
    
    if input() in ['Hi', 'Hello', 'Good Morning']:
        print(random.choice(greeting)) # random.choice does not print, you need to.
    

    【讨论】:

      【解决方案2】:

      random.choice() 从输入列表中选择并返回一个随机项目,要显示该项目,您需要调用print()。此外,您需要检查输入字符串是否为in 问候列表,您还可以考虑在用户输入上调用lower(),这样大写不会影响匹配。

      【讨论】:

        【解决方案3】:

        试试这个:

        import random
        
        if input() in ['Hi', 'Hello', 'Good Morning', "Good Afternoon", "Good Evening", "Hey"]:
          greeting = ["Hey, how are you today?", "Nice to meet you", "Hello, pleasure to meet you", "Hi human."]
          print(random.choice(greeting))
        

        输出

        Hi
        Hi human.
        

        Good Morning
        Hey, how are you today?
        

        【讨论】:

        • 很奇怪。它对我有用。你也可以在这里查看repl.it/repls/TerrificNoxiousFormula
        • 太棒了。乐意效劳。您能否为此打分,以便其他人也可以通过此获得帮助?
        • 这样说:感谢您的反馈!声望低于 15 人的投票将被记录,但不会更改公开显示的帖子得分。但是有件事,我想问你:我已经制作了更多上面的代码(当然改变了变量),但是那些不起作用。你知道为什么吗?
        • 现在工作。谢谢
        【解决方案4】:

        您的平等检查没有按照您的想法进行。

        if input() in ['Hi', 'Hello', 'Good Morning']:

        检查输入是否在列表中将完成您要执行的操作。

        基本上你的其他检查归结为:

        expression1 or expression2 or expression3

        其中expression1input() == 'Hi'expression2'Hello',即使您期望expression2input() == 'Hello'

        例子:

        >>> import random
        >>> if input() in ["Hi", "Hello", "Good Morning", "Good Afternoon", "Good Evening", "Hey"]:
        ...   greetings = ['sup', 'yo', 'i am so alone']
        ...   print(random.choice(greetings))
        ... 
        Hi
        sup
        >>> 
        

        【讨论】:

        • @SummerDrummer 我更新了我的答案以包含在命令行上完成的示例。
        猜你喜欢
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-07
        • 1970-01-01
        相关资源
        最近更新 更多