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[i],end='')
      i=i-1

猜数字游戏

随机产生一个数字,并判断输入的数字和这个随机数直到猜测成功。

知识点:

  • 使用random.randint()函数生成一个随机数字

  • while()循环,当未满足条件一直执行,满足条件break跳出循环

  • 输入数字eval函数结合input,将字符串类型转换成整数

  • 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

  • 文本居中对齐显示

知识点:

  • 替换函数line.replace(变量名,要替换的值)

  • 居中对齐line.center(宽度)

  • 函数调用,将文本变量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[word]=counts.get(word,0)+1   #对word出现的频率进行统计,当word不在words时,返回值是0,当word在words中时,返回+1,以此进行累计计数

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

 items=list(counts.items())
items.sort(key=lambada x:x[1],reverse=True)

上面的x可以是任意字母,reverse=True倒序排序,默认升序。

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

 for i in range(10)
  word,count=item[i]
  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[word]=counts.get(word,0)+1
    
# 按频率从大到小排序  sort()函数
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
# 按照固定格式输出 ,使用format()函数

for i in range(10):
    word, count=items[i]
    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('"')[1]
      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('"')[1]
            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技术技能,需要领取整套Python学习资料以及教程的小伙伴可以前往公众号【Python编程学习圈】免费领取学习,资料详细清晰,内容丰富,全是干货,回复【学习资料】即可。

总结

上面主要介绍了python的基础功能,建议大家熟练掌握,主要知识点如下:

  • input函数实现输入

  • print结合format()函数对结果进行输出

  • 计算字符串长度len()函数

  • 使用random.randint()函数生成随机数字

  • eval函数结合input,将字符串类型转换成整数

  • if 三分支条件判断,if elif else 格式

  • 替换函数line.replace(变量名,要替换的值)

  • 文本内容统一为小写,使用lower()函数

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

  • 文本进行切割,使用split()函数

  • 从大到小排序 sort()函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值