📜  使用Python查找用户提供的主题的笑话

📅  最后修改于: 2022-05-13 01:54:35.759000             🧑  作者: Mango

使用Python查找用户提供的主题的笑话

先决条件:

  • Http 请求方法Python请求
  • pyfiglet

Python请求模块帮助我们向指定的 URL 发出 Http 请求。在本文中,我们将向以下网址发出 json 请求:https://icanhazdadjoke.com/ 并开发一个项目,其中用户输入任何单词,输出将是与该单词相关的笑话。

我们将使用 API(库请求)使用用户输入的关键字搜索笑话,如果我们在输入的关键字上获得多个结果,那么将随机显示其中一个笑话。

使用的模块

  • requests模块允许我们使用Python发送 Https 请求
  • pyfiglet模块将 ASCII 文本转换为 ASCII 艺术字体
  • termcolor模块帮助我们在输出终端中格式化颜色
  • random模块在Python中生成随机数

方法

  • 导入模块
  • 添加header,在for中指定,是要存储的数据,默认是html文本(这里我们获取的是JSON格式的数据)
  • 询问用户输入
  • 将输入作为搜索元素传递以从 URL 检索数据
  • 打印检索到的数据。

程序:

Python3
import requests
import pyfiglet
import termcolor
from random import choice
  
header = pyfiglet.figlet_format("Find a joke!")
header = termcolor.colored(header, color="white")
print(header)
  
term = input("Let me tell you a joke! Give me a topic: ")
  
response_json = requests.get("https://icanhazdadjoke.com/search",
                             headers={"Accept": "application/json"}, params={"term": term}).json()
  
results = response_json["results"]
  
total_jokes = response_json["total_jokes"]
print(total_jokes)
  
if total_jokes > 1:
    print(f"I've got {total_jokes} jokes about {term}. Here's one:\n", choice(
        results)['joke'])
  
elif total_jokes == 1:
    print(f"I've got one joke about {term}. Here it is:\n", results[0]['joke'])
  
else:
    print(f"Sorry, I don't have any jokes about {term}! Please try again.")


输出

关键字passes是banana,显示相关笑话之一