Skip to content

输入/输出-聊天机器人

欢迎回到我们的 Python 冒险之旅!在第 1 部分中,我们学习了变量就像存钱罐。现在,在第 2 部分中,我们将探索 Python 程序如何使用输入和输出来与用户交谈。我们将构建一个非常简单的聊天机器人,它可以提出问题并根据您的回答进行响应。到最后,您将了解如何将信息输入到您的程序中(输入)以及如何将信息输出(输出)。

让我们深入了解 Python 中的输入和输出。把它想象成进行一次对话。您的程序需要一种方式来向用户提问或获取信息——这就是输入。它还需要一种方式来向用户显示消息、结果或响应——这就是输出

在 Python 中,我们通常使用 input() 函数来从用户那里获取输入,并使用 print() 函数来显示输出。

  • input():此函数会暂停您的程序并等待用户输入内容并按 Enter 键。用户输入的任何内容都将作为字符串(文本)返回。您可以在括号内包含一条消息来提示用户,例如 input("你叫什么名字? ")
  • print():此函数将值、文本或变量内容显示到控制台。您可以打印简单的消息,例如 print("你好!"),或者像我们在第 1 部分中所做的那样组合文本和变量。

这是一个简单的聊天机器人示例,它会询问您的姓名和喜欢的颜色:

python
# 询问用户的名字
user_name = input("嗨!你叫什么名字? ")

# 按名字问候用户
print("很高兴认识你,", user_name + "!")

# 询问用户喜欢的颜色
fav_color = input("你最喜欢的颜色是什么? ")

# 回应关于颜色的信息
print(fav_color + " 是个很棒的颜色!")

# 简单的告别
print("感谢聊天!")

此代码将产生如下交互(用户输入显示在问题之后):

嗨!你叫什么名字? Alex
很高兴认识你,Alex!
你最喜欢的颜色是什么? Blue
Blue 是个很棒的颜色!
感谢聊天!

让我们分解一下代码:

  • 首先,我们使用 input() 来询问用户的姓名并将响应存储在 user_name 变量中。
  • 然后,我们使用 print() 来问候用户,将文本“很高兴认识你,”与存储在 user_name 中的值结合起来。注意这里的 + 号用于连接字符串。
  • 接下来,我们再次使用 input() 来询问喜欢的颜色并将其存储在 fav_color 中。
  • 然后我们使用 print() 来评论颜色,再次将变量 fav_color 与其他文本连接起来。
  • 最后,一个简单的 print() 语句说再见。

现在,让我们制作一个交互性稍强的问答机器人。这个机器人会问一个简单的问题,并根据答案给出不同的响应。

python
# 问一个简单的问题
answer = input("法国的首都是哪里? ")

# 检查答案(不区分大小写)
if answer.lower() == "paris":
    print("正确!做得好。")
else:
    print("不太对。答案是巴黎!")

# 问另一个问题
food_answer = input("你喜欢披萨吗? (yes/no) ")

# 根据食物答案回应
if food_answer.lower() == "yes":
    print("我也是!披萨太棒了。")
elif food_answer.lower() == "no":
    print("哦,好吧。那我就多吃点披萨了!")
else:
    print("那不是一个明确的 yes 或 no,但感谢分享!")

print("聊天结束!")

此代码将:

  • 使用 input() 询问法国的首都。
  • 使用 if/else 语句来检查答案。我们使用 .lower() 将用户的输入转换为小写,所以他们输入 "Paris"、"paris" 还是 "PARIS" 都没关系。
  • 如果答案正确,则打印一条消息,如果错误,则打印另一条消息。
  • 问第二个关于披萨的问题。
  • 使用 if/elif/else 结构对 "yes"、"no" 或任何其他输入做出不同的响应。

示例交互:

法国的首都是哪里? paris
正确!做得好。
你喜欢披萨吗? (yes/no) YES
我也是!披萨太棒了。
聊天结束!

奖励: 修改聊天机器人程序。添加更多问题!你能让它询问用户的年龄,并根据他们是否小于或大于某个特定年龄而做出不同的回应吗?请记住,您可能需要像我们在第 1 部分处理 pocket_money 那样,使用 int() 将输入的年龄(这是一个字符串)转换为数字。

祝您编码愉快!