lsekfe 发表于 2021-8-24 11:27:49

6个案例教你快速掌握Python基础知识

最近系统学习了一遍python基础知识,学着学着灵光一闪,想到有没有快速掌握知识的方法。一般正常的逻辑是边看基础知识边练习案例,是一个书由厚变薄的过程。   不过现在节奏这么快,尤其是互联网公司,排除周末在家看孩子的时间,几乎没有时间和精力再进行深度学习,所以这篇文章就诞生了。
  本文通过案例入手直接结合python知识点,可以快速掌握python基础知识点。
  案例名称
  ·计算圆形面积
  ·输入字符并倒序输出
  ·猜数字游戏
  ·按照诗句格式输出诗词
  ·统计文本中出现次数最多的10个单词(txt)
  ·web页面元素提取

  计算圆形面积
  知识点:print 结合format()函数实现输出格式。
  固定的公式:
print(<输出字符串模板>.format(<变量1>,<变量2>,<变量3>))实现代码:
r = 25    # 圆的半径是25

area = 3.1415 * r * r#圆的公式

print(area)

print('{:.2f}'.format(area) )# 只输出两位小数新手易错点:
  format前的字符串模板格式‘{:.2f}’ 经常会写错,其中一个{}对应一个format里面的参数。

  输入字符并倒序输出
  核心思想:找到最后一个元素并输出。
  知识点:
  ·输入使用input函数
  ·计算长度使用len()函数
  ·输出函数结尾使用end=’‘,作用在输出的字符后方添加空字符串
#输入文本

s=input('请输入一段文本:')

#计算输入内容的长度并赋值给i

i=len(s)-1

#倒序循环输出

while i>=0:

      print(s,end='')

      i=i-1实现效果:

猜数字游戏
  随机产生一个数字,并判断输入的数字和这个随机数直到猜测成功。
  知识点:
  1.使用random.randint()函数生成一个随机数字
  2.while()循环,当未满足条件一直执行,满足条件break跳出循环
  3.输入数字eval函数结合input,将字符串类型转换成整数
  4.if 三分支条件判断,if elif else 格式
  实现代码:

import random



#生成随机数

a=random.randint(0,1000)

#统计次数

count=0



while True:   

      number=eval(input('请输入0到1000之间的一个数:'))   



count=count+1

#判断比较两个数

if number>a:

      print('输大了')

elif number<a:

      print('输小了')

else:

      print('猜对了')

      break



print('猜了次数是:',count)效果图:

按照诗句格式输出诗词
  原来格式:
  人生得意须尽欢,莫使金樽空对月。
  天生我材必有用,千金散尽还复来。
  输出效果:


设计思路:
  ·将所有标点符号替换为\n
  ·文本居中对齐显示
  知识点:
  1.替换函数line.replace(变量名,要替换的值)
  2.居中对齐line.center(宽度)
  3.函数调用,将文本变量txt传入替换函数linesplit中

txt = '''

人生得意须尽欢,莫使金樽空对月。

天生我材必有用,千金散尽还复来。

'''

#定义一个函数,实现将标点符号替换为\n







def linesplit(line):

    plist = [',', '!', '?', ',', '。', '!', '?']

    for p in plist:

      line=line.replace(p,'\n')




    return line.split('\n')

linewidth = 30# 预定的输出宽度







#定义一个函数,实现居中对齐

def lineprint(line):

    global linewidth

    print(line.center(linewidth))

   

#调用函数




newlines=linesplit(txt)

for newline in newlines:

    lineprint(newline)统计文本中出现次数最多的10个单词
  我们来看看实现效果:


 步骤拆分:
  首先,将文本内容统一为小写,使用lower()函数;
  再次,将文本中特殊字符替换为空格,replace()函数;
  按空格将文本进行切割,使用split()函数;
  统计单词出现的次数;
  按频率从大到小排序 sort()函数;
  按照固定格式输出 ,使用format()函数。
  按照上面的步骤实现代码。
  首先,将文本内容统一为小写,使用lower()函数:

def gettxt():

#读取文件

txt=open('hamlet.txt','r').read()

txt=txt.lower()再次,将文本中特殊字符替换为空格,replace()函数:\
for ch in ''!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':'

    txt=txt.replace('')

return txt按空格将文本进行切割,使用split()函数:
hmlttxt=gettxt()

words=hmlttxt.split()统计单词出现的次数:
counts=0

for word in words:

counts=counts.get(word,0)+1   #对word出现的频率进行统计,当word不在words时,返回值是0,当word在words中时,返回+1,以此进行累计计数按频率从大到小排序 items()sort()排序函数:
items=list(counts.items())

items.sort(key=lambada x:x,reverse=True)上面的x可以是任意字母,reverse=True倒序排序,默认升序。
  按照固定格式输出 ,使用format()函数:

for i in range(10)

word,count=item

print('{0:<10}{1:>5}'.format(word,count))完整代码:
# 首先,将文本内容统一为小写,使用lower()函数

def gettxt():

    txt=open('hamlet.txt','r').read()

    txt=txt.lower()

# 将文本中特殊字符替换为空格,replace()函数

    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':

      txt=txt.replace(ch,'')

    return txt

# 按空格将文本进行切割,使用split()函数

hamlettxt=gettxt()

words=hamlettxt.split()

# 统计字数




counts={}

for word in words:

    counts=counts.get(word,0)+1

   

# 按频率从大到小排序sort()函数

items=list(counts.items())

items.sort(key=lambda x:x,reverse=True)

# 按照固定格式输出 ,使用format()函数




for i in range(10):

    word, count=items

    print("{0:<10},{1:>5}".format(word,count))web页面元素提取图片url路径信息
  这个功能目的主要是替换函数 及 自顶向下的设计思想。
  实现的效果:


对整个功能拆分为如下过程:
  首先,提取页面所有元素;
  其次,提取图片的url路径;
  然后,将路径信息输出显示;
  最后,将这些路径保存到文件中。
  我们把上面几个步骤,每个步骤封装成一个函数,最后main()函数进行调用,其中提取图片的url路径为核心。

  提取页面所有元素
  涉及到知识点:文件打开、读取及关闭。

def gethtmllines(htmlpath):

#文件打开

f=open(r,'htmlpath',encoding='utf-8')

#文件读取

ls=f.readlines()

#文件关闭

f.close()

return ls 提取图片的url路径
  源码:


 知识点:列表形式存放截取后的地址;列表的切割,split()函数。
def geturl(ls):

urls=[]

for line in ls:

    if 'img' in line:

      url=line.split('src=')[-1].split('"')

      urls.append(url) 将路径信息输出显示
  知识点:for循环将路径信息输出。

for循环将路径信息输出

def show(urls):

count=0

for url in urls:

    print('第{:2}个url{}'.format(count,url))

    count+=1    将这些路径保存到文件中
  知识点:文件的写入。

def save(filepath,urls):

f=open(filepate,'w')

for url in urls:

    f.write(url+'\n')

f.close()main()函数,将上面的函数进行组合
def main():

    inputfile= 'nationalgeographic.html'

    outputfile = 'nationalgeographic-urls.txt'

    htmlLines = getHTMLlines(inputfile)

    imageUrls = extractImageUrls(htmlLines)

    showResults(imageUrls)

    saveResults(outputfile, imageUrls) 最终代码:
# Example_8_1.py

#1. 按行读取页面所有内容

def getHTMLlines(htmlpath):

    f = open(htmlpath, "r", encoding='utf-8')

    ls = f.readlines()

    f.close()

    return ls




#2. 提取http路径

def extractImageUrls(htmllist):

    urls = []

    for line in htmllist:

      if 'img' in line:

            url = line.split('src=')[-1].split('"')

            print

            if 'http' in url:

                urls.append(url)

    return urls

#3. 输出链接地址   

def showResults(urls):

    count = 0

    for url in urls:

      print('第{:2}个URL:{}'.format(count, url))

      count += 1

#4. 保存结果到文件

def saveResults(filepath, urls):

    f = open(filepath, "w")

    for url in urls:

      f.write(url+"\n")

    f.close()

   

def main():

    inputfile= 'nationalgeographic.html'

    outputfile = 'nationalgeographic-urls.txt'

    htmlLines = getHTMLlines(inputfile)

    imageUrls = extractImageUrls(htmlLines)

    showResults(imageUrls)

    saveResults(outputfile, imageUrls)




main()一句话总结:这个小案例可熟练掌握文件的读、写操作,可以体会函数的思想以及split()函数的拆分。

  总结
  上面主要介绍了python的基础功能,建议大家熟练掌握,主要知识点如下:
  ·input函数实现输入
  ·print结合format()函数对结果进行输出
  ·计算字符串长度len()函数
  ·使用random.randint()函数生成随机数字
  ·eval函数结合input,将字符串类型转换成整数
  ·if 三分支条件判断,if elif else 格式
  ·替换函数line.replace(变量名,要替换的值)
  ·文本内容统一为小写,使用lower()函数
  ·文本中特殊字符替换为空格,replace()函数
  ·文本进行切割,使用split()函数
  ·从大到小排序 sort()函数



海海豚 发表于 2021-8-26 16:56:41

感谢分享!学习了!

千里 发表于 2021-8-27 09:15:45

这些案例确实不错,但需要一点一点的做出来
页: [1]
查看完整版本: 6个案例教你快速掌握Python基础知识