51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3916|回复: 2
打印 上一主题 下一主题

[原创] 6个案例教你快速掌握Python基础知识

[复制链接]
  • TA的每日心情
    擦汗
    4 小时前
  • 签到天数: 1047 天

    连续签到: 5 天

    [LV.10]测试总司令

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

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

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

    3.   print(area)

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

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

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

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

    4.   i=len(s)-1

    5.   #倒序循环输出

    6.   while i>=0:

    7.       print(s[i],end='')

    8.       i=i-1
    复制代码
    实现效果:

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

    1. import random

    2.   

    3.   #生成随机数

    4.   a=random.randint(0,1000)

    5.   #统计次数

    6.   count=0

    7.   

    8.   while True:   

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

    10.   

    11.   count=count+1

    12.   #判断比较两个数

    13.   if number>a:

    14.       print('输大了')

    15.   elif number<a:

    16.       print('输小了')

    17.   else:

    18.       print('猜对了')

    19.       break

    20.   

    21.   print('猜了次数是:',count)
    复制代码
    效果图:

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


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

    1. txt = '''

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

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

    4. '''

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







    6. def linesplit(line):

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

    8.     for p in plist:

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




    10.     return line.split('\n')

    11. linewidth = 30  # 预定的输出宽度







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

    13. def lineprint(line):

    14.     global linewidth

    15.     print(line.center(linewidth))

    16.    

    17. #调用函数




    18. newlines=linesplit(txt)

    19. for newline in newlines:

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


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

    1. def gettxt():

    2.   #读取文件

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

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

    2.     txt=txt.replace('')

    3.   return txt
    复制代码
    按空格将文本进行切割,使用split()函数:
    1. hmlttxt=gettxt()

    2. words=hmlttxt.split()
    复制代码
    统计单词出现的次数:
    1. counts=0

    2. for word in words:

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

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

    1. for i in range(10)

    2.   word,count=item[i]

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

    2. def gettxt():

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

    4.     txt=txt.lower()

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

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

    7.         txt=txt.replace(ch,'')

    8.     return txt

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

    10. hamlettxt=gettxt()

    11. words=hamlettxt.split()

    12. # 统计字数




    13. counts={}

    14. for word in words:

    15.     counts[word]=counts.get(word,0)+1

    16.    

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

    18. items=list(counts.items())

    19. items.sort(key=lambda x:x[1],reverse=True)

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




    21. for i in range(10):

    22.     word, count=items[i]

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


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

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

    1. def gethtmllines(htmlpath):

    2.   #文件打开

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

    4.   #文件读取

    5.   ls=f.readlines()

    6.   #文件关闭

    7.   f.close()

    8.   return ls
    复制代码
    提取图片的url路径
      源码:


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

    2.   urls=[]

    3.   for line in ls:

    4.     if 'img' in line:

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

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

    1. for循环将路径信息输出

    2. def show(urls):

    3.   count=0

    4.   for url in urls:

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

    6.     count+=1   
    复制代码
    将这些路径保存到文件中
      知识点:文件的写入。

    1. def save(filepath,urls):

    2.   f=open(filepate,'w')

    3.   for url in urls:

    4.     f.write(url+'\n')

    5.   f.close()
    复制代码
    main()函数,将上面的函数进行组合
    1. def main():

    2.     inputfile  = 'nationalgeographic.html'

    3.     outputfile = 'nationalgeographic-urls.txt'

    4.     htmlLines = getHTMLlines(inputfile)

    5.     imageUrls = extractImageUrls(htmlLines)

    6.     showResults(imageUrls)

    7.     saveResults(outputfile, imageUrls)
    复制代码
     最终代码:
    1. # Example_8_1.py

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

    3. def getHTMLlines(htmlpath):

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

    5.     ls = f.readlines()

    6.     f.close()

    7.     return ls




    8. #2. 提取http路径

    9. def extractImageUrls(htmllist):

    10.     urls = []

    11.     for line in htmllist:

    12.         if 'img' in line:

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

    14.             print

    15.             if 'http' in url:

    16.                 urls.append(url)

    17.     return urls

    18. #3. 输出链接地址   

    19. def showResults(urls):

    20.     count = 0

    21.     for url in urls:

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

    23.         count += 1

    24. #4. 保存结果到文件

    25. def saveResults(filepath, urls):

    26.     f = open(filepath, "w")

    27.     for url in urls:

    28.         f.write(url+"\n")

    29.     f.close()

    30.    

    31. def main():

    32.     inputfile  = 'nationalgeographic.html'

    33.     outputfile = 'nationalgeographic-urls.txt'

    34.     htmlLines = getHTMLlines(inputfile)

    35.     imageUrls = extractImageUrls(htmlLines)

    36.     showResults(imageUrls)

    37.     saveResults(outputfile, imageUrls)




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

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



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 1801 天

    连续签到: 5 天

    [LV.Master]测试大本营

    2#
    发表于 2021-8-26 16:56:41 | 只看该作者
    感谢分享!学习了!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-9 14:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2021-8-27 09:15:45 | 只看该作者
    这些案例确实不错,但需要一点一点的做出来
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 13:39 , Processed in 0.069774 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表