python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)

案例一,身体质量指标BMI,对身体质量的刻画

BMI=体重(KG)除以(身高(M)的平方)

python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)_第1张图片
思路方法:
难点在于同时输出国际和国内对应的分类
方法1,分别计算并给出国际和国内BMI分类
方法2,混合计算并给出国际和国内BMI分类
我们这里采用模块化解法,我们分别定义国内和国际的模块,然后在输入时就根据oi数值选择进行国内国际标准的区分

python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)_第2张图片

try:        #添加异常处理
    height,weight,oi=eval(input("(请输入身高米,体重kg,(0为国际版本,1为国内版本)):"))
    bmi=weight/pow(height,2)
    print("BMI数值为:{:.2f}".format(bmi))
#定义国际标准
    def world(number):
        who=""
        if number<18.5:
            who="偏瘦"
        elif 18.5<=number<25:
            who="正常"
        elif 25<=number<30:
            who="偏胖"
        else:
            who="偏胖"
        print("BMI国际指标:{}".format(who))
    def nation(number):
        nat=""
        if number<18.5:
            nat="偏瘦"
        elif 18.5<=number<24:
            nat="正常"
        elif 24<=number<28:
            nat="偏胖"
        else:
            nat="偏胖"
        print("BMI国内指标:{}".format(nat))
    if oi==0:#如果oi为0表示选择国际版本,为1则是国内版本
        world(bmi)
    else:
        nation(bmi)
except :
    print("请输入(身高,体重,国际或国内标准[输入0或者1]")

案例二:圆周率的计算

圆周率大家都很熟悉了,那么根据一些方法来计算圆周率

第一种解法就是利用圆周率的近似计算公式来求解

python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)_第3张图片

python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)_第4张图片

pi=0
N=100  #这里N可以进行输入调整N=eval(input()),
for k in range(N):
    pi=pi+1/pow(16,k)*(4/(8*k+1)-2/(8*k+4)-1/(8*k+5)-1/(8*k+6))
print("圆周率的值是:{}".format(pi))

 第二种是利用蒙特卡洛方法,具体什么是蒙特卡洛可以问问度娘,这里不再展开

python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)_第5张图片

from random import random
from time import perf_counter
DARTS=1000*1000
hits=0.0
start=perf_counter()
for i in range(1,DARTS+1):
    x,y=random(),random()
    dist=pow(x**2+y**2,0.5)
    if dist<=1.0:
        hits=hits+1
pi=4*(hits/DARTS)
print("圆周率是:{}".format(pi))

 案例三:七段数码管绘制时间(绘制当前时间)

基本思路:使用turtle库来进行描绘

1:绘制单个数字对应的数码管

2:获得一串数字,绘制对应的数码管

3:获得当前系统时间,绘制对应的数码管

python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)_第6张图片

 python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)_第7张图片

 python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)_第8张图片

import turtle
import time
def drawLine(draw):#绘制单段数码管
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    turtle.right(90)
def drawDigit(digit):#根据数字绘制七段数码管
    drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup()
    turtle.fd(20)
def drawDate(date):
    for i in date:
        drawDigit(eval(i))
def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    t=time.gmtime()
    now=time.strftime("%Y%m%d",t)  #获取当前时间进行绘制
    drawDate(now)
    turtle.hideturtle()
    turtle.done()
main()

对于time库使用生疏的可以看看我这个大致了解一下:

Python中time库的使用_AIM—洋的博客-CSDN博客

 案例四:汉诺塔递归求解移动次数,并输出移动步骤

递归的标准解法步骤:

1:函数+分支结构

2:递归链条

3:递归基例

python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)_第9张图片

count=0
def hannuo(n,src,dst,mid):
    global count
    if n==1:
        print("方块{}:{}移动到{}".format(1,src,dst))
        count+=1
    else:
        hannuo(n-1,src,mid,dst)
        print("方块{}:{}移动到{}".format(n,src,dst))
        count=count+1
        hannuo(n-1,mid,dst,src)
hannuo(3,"A","C","B")
print(count)

 案例五:斐波那契数列

python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)_第10张图片

 python基础入门20个经典例题(附代码,随心情补充讲解)(第一部分前五题)_第11张图片

number=eval(input())
def f(n):
    if n==1 or n==2:
        return 1
    else:
        return f(n-1)+f(n-2)
f(number)

你可能感兴趣的:(python精通调包之路,python,jupter)