如何用python编程解释“鸡兔同笼”问题?

如何用python编程解释“鸡兔同笼”问题?,第1张

鸡兔同笼python程序编写要根据原书中的描述的:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”鸡兔同笼python程序具体写法如下:

把原文翻译成现代汉语是:“鸡和兔放在一个笼子里, 笼子里共有35个头,94个爪,那鸡和兔各有多少只?”

1、根据题意,头的总数为35,用变量head来记录头的总数:head =35。而腿的总数为94,用变量foot来记录腿的总数:(foot = 94)。

2、用变量chicken记录鸡的数量。因为头的总数为35,说明鸡和兔共有35只,所以鸡的数量是0-35之间的某一个数,这里用for循环来指挥计算机,自动罗列所有可能出现的情况:(for chicken in range(0, head+1):))。

3、然后,用变量rabbit记录兔子的数量。因为鸡和兔的总数等于头的数量,所以兔的数量rabbit等于头的总数head减去鸡的数量(chicken:rabbit=head一chicken)。

4、鸡有两条腿,兔子有四条腿,所以腿的总数为:(if chicken *2 + rabbit *4 == foot:print('鸡',chicken, '兔',rabbit))执行代码,就完成了。

python程序编写:

Python编程是一种跨平台的计算机程序设计语言,是ABC语言的替代品。Python能提供高效的高级数据结构,还能简单有效地面向对象编程。

是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。

我们将在本节中介绍 Python 语句,缩进以及注释,在本节的最后一部分,还会介绍作为一种特殊类型的 Python 注释Docstring 。

Python 语句是给解释器执行的指令,一条 Python 语句包含类似于如下的表达式,

你可以将 Python 语句堪称解释器解释表达式并将其结果存储在变量中的指令。类似于for , while , print 之类的语句具有特殊的含义,我们将在在后面的章节中讨论。

当你在一句语句结束时按回车键后,该 Python 语句被终止,我们可称之为单行语句。Python 中的多行语句可以通过使用连续字符 来创建,它将 Python 语句扩展为多行语句。

比如下面的例子,

这可以被称作明确的多行接续。

你还可以使用括号() ,方括号 [] 或大括号 {} 来进行隐式的多行接续。

例如,你可以使用括号来连接多行语句,

Python 语句块,例如函数,循环或类的主体,以缩进来开头。对于语句块内的每个语句,应该保持相同的缩进。当缩进不一致时,你将得到什么什么IndentationError 。

一般来说,在

Python 代码样式指南

中建议使用 4 个缩进空格。举例如下,

我们用缩进来增加程序的可读性,比如在下面的程序中,我们用两种方式来完成同一个功能,

你可以在这里看到第一个例子比第二个例子有更好的可读性。

注释用于描述程序的目的或工作工程,注释是在 Python 解释过程中被忽略的行为,它们不会干扰程序的流程。

如果你正在编写数百行代码,肯定需要添加注释,因为其他人在阅读你的代码的时候,没有足够的时间阅读每一行来理解代码的工作。程序的注释增加了可读性,并解释了代码的工作原理。

Python 注释以井号# 开始

Using hash symbol in each line can define a multi-line comment. But there is another way to add a multi-line comment in Python, that is using triple quotation marks. You can use either''' or """ .

三重引号''' 通常可以用来定义多行文档注释 Docstring ,你也可以用它来作为另外一种在 Python 中添加多行注释的方法。

Docstring 是文档字符串,它通常是 Python 函数,类,模块等的第一条语句。函数,方法和类的描述和注释位于文档字符串(文档字符串)内。

举例如下,

一目了然,Docstring 介绍了函数的功能。

你的代码中:

i.get('src')得到的J 标签中'src'的属性值,我刚才看了一下,并不是每个i表示的标签里的src属性值都是可用的,以下是我按你的代码,得到的每个i.get('src')的值:

从图片中可以看到,只有一部分的字符串是图片链接,也就是说并不是每个标签中的src属性的值都是图片链接,所以如果你想要不报错,需要把i.get('src')进行一下判断,如果是真正的图片链接才下载,否则跳过,这样就不会报错了

*.图片要是看不清的话,不要点开大图,然后右键复制图片链接地址,放到地址栏中打开就可看高清图了

下面是我根据你的代码改过的,你可以试一下,有问题追问:

------------------------End------------------------

import requests

from bs4 import BeautifulSoup

import urllib.request

import re

def GetImg():

  response = requests.get('http://desk.zol.com.cn/bizhi/8376_103851_2.html')

  html = response.text

  soup = BeautifulSoup(html, 'html.parser')

  picture = soup.find_all('img')

  list = []

  for i in picture:

     img1 = i.get('src')

     links = re.findall(re.compile('http.*.jpg$'),str(img1))

     if len(links) != 0:

         list.append(img1)

  for i in range(len(list)):

      urllib.request.urlretrieve(list[i],'%d.jpg'%i)

      print("已下载%d/%d张图片"%(i,len(list)))

GetImg()

------------------------End------------------------


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12002977.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存