专栏首页奔跑的键盘侠Python——字符串及函数的设计使用

Python——字符串及函数的设计使用

上期提到的廖雪峰的教程,很快就看过去了,前面一章的协程和异步io,看了三遍还是很懵逼,主要是运行测试时,执行步骤完全看不懂。再往后的实战章节呢,是写一个网站,半个月的时间,感觉压力山大。特别是实操太少,很多章节虽然看懂了,但是没有自己码过、测试过。计划只能稍作调整,一方面先把教材《计算机编程导论——Python程序设计》通读一遍,课后习题码一码,前面几个章节基础内容主要是结构设计、字符串处理、函数等,其实在按键精灵的几轮学习中基本轻车熟路,所以很快看完2/5。而后面的内容:比如文件使用、用户界面设计、网络设计、异常处理、数据库等都是没怎么接触过的,可能要花一点时间了。另外一方面,也先结合网站上的教程,捋一下网站搭建所需的一些大的模块,整理出大概框架再比对教程,如果思路对了再动手也不迟。

然后我发现Python里面的小语法其实很多内容可以写一写,就随便挑个题目来分享一下,顺便,回顾上一期的三角形分类,突然发现有点问题,等腰三角形的条件漏了一种情况,教材上面的写法也是错误的(读书发现错误也是蛮有趣的一件事,可以吐槽一下

不过呢,如果没意识到错误还被误导了,就要呵呵呵呵了)。这里予以纠正一下:

    if list[0]==list[1]!=list[2]:
        result='等腰三角形'

要改成

if list[0]==list[1]!=list[2] or list[1]==list[2]!=list[0]:
    result='等腰三角形'

等腰三角形的腰可能是长边,也可能是短边,由于前面代码对边长进行了排序,所以只需列出这2种可能即可,不需要列第三种。


题目1:将一段英文里单独的字母I,改成i。

给人的第一感觉就是word里面的查找替换,但又是改独立的I,比如
I’m这种的又不能改,那直接查找前后带空格的I,改成带空格的i?可如果两个独立的I前后靠着,只能改第一个,第二个还要再运行一次?后来思考再三,还是这样比较对路:将所有语句拆分开,遍历到独立的I就改i,然后再拼接回去。
#!usr/bin/python3
#coding:utf-8
a='''
    hello,i'm benpaode jianpanxia,
    how are you? I I am
    fine,thank you.andI I you?
    i'm fine,too
    '''
b=a.split(' ')
c=[]
for i in range(len(b)):
    if b[i]=='I':
        b[i]='i'
    c.append(b[i])
print(' '.join(c))

运行完结果:

hello,i'm benpaode jianpanxia,

how are you? i i am

fine,thank you.andI i you?

i'm fine,too

最近习题做了一些,感觉套路就是:要先想好思路,然后再按部就班的写代码;而之前做数学题,通常都是随便写写画画,答案就出来了。这个写代码完全不能写几行看一下再继续写,必须要规划好,一气呵成,不然很容易陷进去最后又得重新写

题目2:统计字符串中大、小写字母、数字及其他字符个数。
其实字符串是可以单个单个遍历的,然后判断单个字符的取值范围,但是觉得判断还是有点繁琐,索性正则表达式顺手拈来,就写成这样了
import re
def count(k):
    b=re.findall(r"[a-z]",k)
    c=re.findall(r'[A-Z]',k)
    d=re.findall(r'[0-9]',k)
    e=re.findall(r'.',k)
    return (len(b),len(c),len(d),len(e)-len(b)-len(c)-len(d))
a='AAAbbbB啊啊啊B 342..%43dsf'
m=count(a)
print('小写字母、大写字母、数字、其他符号的个数分别为:%d,%d,%d,%d'%(count(a)[0],count(a)[1],count(a)[2],count(a)[3]))
另外网上翻了一下,看到这么一段代码,果真是逐个字符遍历,代码贴出来:

# coding: utf-8
import stringfrom collections import namedtuple
def str_count(s):
   '''找出字符串中的中英文、空格、数字、标点符号个数'''
   count_en = count_dg = count_sp = count_zh = count_pu = 0
   s_len = len(s)  
   for c in s:
        if c in string.ascii_letters:
           count_en += 1
       elif c.isdigit():
           count_dg += 1
       elif c.isspace():
           count_sp += 1
       elif c.isalpha():
           count_zh += 1
       else:
           count_pu += 1
   total_chars = count_zh + count_en + count_sp + count_dg + count_pu
   if total_chars == s_len:
         return namedtuple('Count', ['total', 'zh', 'en', 'space', 'digit', 'punc'])(s_len, count_zh, count_en, count_sp, count_dg, count_pu)
    else:
       print('Something is wrong!')
        return None
   return None

s = '上面是引用了官网的介绍,意思就是说 TensorBoard 就是一个方便你理解、调试、优化 TensorFlow 程序的可视化工具,你可以可视化你的 TensorFlow graph、学习参数以及其他数据比如图像。'
count = str_count(s)
print(s, end='\n\n')
print('该字符串共有 {} 个字符,其中有 {} 个汉字,{} 个英文,{} 个空格,{} 个数字,{} 个标点符号。'.format(count.total, count.zh, count.en, count.space, count.digit, count.punc))

原来python自带判断字符大小写、字母、标点、汉字的方法,可以直接调用 然后,通过代码一看就知道作者是个老司机,代码习惯值得我们学习,里面的异常提示语句,我几乎没这个意识。后面有个章节就是专门针对异常还有调试的,还需不断进步。不过还是觉得自己的代码更简洁一些

好了,本期就更新到这里。大家如果有感兴趣的章节或者问题,可以跟我互动,知无不言、言无不尽,虽然可能我也不会,但是可以学呀。下一期Python的更新,如果跟网站有关,估计要个把月之后了,敬请期待。


另,代写办公脚本代码,ERP、excel文档处理皆可,价格优惠。
按键精灵课程系列

初级教程

001按键精灵简介

002如何使用网络上免费的脚本资源

003鼠标连点器

004如何制作按键小精灵

005神盾的应用

006按键精灵会员介绍

中级教程

001如何录制自己的脚本

002如何让鼠标指哪点哪

003找色、找图、找字命令

004标记与子程序

005-1游戏自动补血补蓝 | 005-2判断与循环|

006二D网游跑图|

007网页版按键精灵

008关于office软件的操控

009鼠标形状的识别应用|

高级教程

001句柄的获取与使用|

002-1后台命令脚本|002-2游戏后台自动喊话|

003自动打怪实战脚本(3D网游篇)|

004-1自动打怪(网游)上|004-2 自动打怪 (网游) 下|

005-1自动打怪(2D)上|005-2自动打怪(2D)下|

006-1自动打怪实战脚本(横版网游篇)上|006-2自动打怪实战脚本(横版网游篇)下

007-1跑镖任务实战脚本(上)|007-2跑镖任务实战脚本(下)

008-1自定义变量:制作可设置选项的脚本|008-2 OCX自定义界面制作

009按键精灵插件的介绍

010-1如何识别屏幕上的数字|010-2验证码的识别

011-1按键精灵脚本界面-QUI介绍

本文分享自微信公众号 - 奔跑的键盘侠(runningkeyboardhero),作者:@以德服人c

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python——量化分析介绍(十)

    这节要写的是从网站爬取财务报表信息,然后写入自己的数据集中。财务信息有了,接着就可以自己算各个股票的PE市盈率了。

    Ed_Frey
  • Python——量化分析介绍(六)

    写着写着,突然发现之前的标题“常用命令介绍”已经跟内容有点脱轨了,写的已经不只是命令了……

    Ed_Frey
  • 你好,我是鸿蒙OS

    “鸿蒙OS联接了万物,打开了万亿级的巨大市场,选择鸿蒙就是选择未来”,华为消费者业务CEO余承东说,“华为长期致力于包括芯片和OS在内的底层技术创新,把复杂留给...

    Ed_Frey
  • count(1) 比 count(*) 效率高么?

    MySQL count(1) 真的比 count(*) 快么? 反正同事们都是这么说的,我也姑且觉得对吧,那么没有自己研究一下究竟?如果我告诉你他们一样,你信么...

    JAVA葵花宝典
  • 案例解析:count(1)、count(*) 与 count(列名) 的执行区别

    很多人认为count(1)执行的效率会比count()高,原因是count()会存在全表扫描,而count(1)可以针对一个字段进行查询。其实不然,count(...

    搜云库技术团队
  • 测试开发进阶(三十九)

    zx钟
  • 好问题:count(1)、count(*)、count(列)有什么区别?

    当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!

    Java技术栈
  • count(1)、count(*) 与 count (列名) 的执行区别

    当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!

    程序员小强
  • 你还在认为 count(1) 比 count(*) 效率高?

    当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!

    良月柒
  • count(1)、count(*) 与 count(列名) 的执行区别

    当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!

    范蠡

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动