lower()、upper()方法以小写和大写的形式返回字符串,title()方法也和它们类似,然而该方法返回的是各单词首字母大写的字符串,这意味着字符串中的每个单词的首字母是大写,而其余所有字母都是小写 。将下列代码输入交互式运行环境中 。
>>> 'hello'.title()'Hello'>>> 'HELLO'.title()'Hello'>>> 'extra! extra! man bites shark!'.title()'Extra! Extra! Man Bites Shark!'本章程序会在稍后部分使用title()方法,来为输出的信息格式化 。
10.7.2 startswith()和endswith()方法若字符串以参数指定的字符串开头,则startwith()方法返回True 。将下列代码输入交互式运行环境 。
>>> 'hello'.startswith('h') True >>> 'hello'.startswith('H') False >>> spam = 'Albert' ? >>> spam.startswith('Al') Truestartswith()方法对大小写敏感,同时也可以接收多字符的字符串? 。
endswith()方法用于检查字符串是否以某一个特定字符串结尾 。将下列代码输入交互式运行环境 。
>>> 'Hello world!'.endswith('world!') True? >>> 'Hello world!'.endswith('world') False字符串的匹配必须一字不差,注意,由于?中缺少感叹号,因此endswith()的返回结果为False 。
10.7.3 在程序中使用上述字符串方法之前提到过,程序需要能够接收所有以字母C开头的响应,无论大小写,这意味着不管用户输入的是C、continue、c还是其他以C开头的字符串,程序都需要对文件进行重写 。使用lower()和upper()方法可以使程序在处理用户输入的字符串时更加灵活 。
19.# 如果输出文件已存在,则给用户退出的机会20.if os.path.exists(outputFilename):21.print('This will overwrite the file %s. (C)ontinue or (Q)uit?' %(outputFilename))22.response = input('> ')23.if not response.lower().startswith('c'):24.sys.exit()第23行,取字符串的首字母并使用startswith()方法来检查它是否为C 。由于startswith()方法大小写敏感且检查的是小写的 'c',因此在调用它之前使用lower()方法改变response字符串的首字母,使其保持为小写的 'c' 。如果用户没有输入以C开头的响应,则if的条件语句将得到True(因为其中包含一个not),于是sys.exit()语句被调用,程序终止 。从技术上来说,用户不需要输入q来退出,任何不以C开头的字符串都会导致 sys.exit() 方法的调用,从而使程序退出 。
10.8 读取作为输入的文件【Python密码学编程:文件的加密与解密】第27行,程序开始使用本章开头讨论过的文件对象方法 。
26.# 从输入文件中读取消息27.fileObj = open(inputFilename)28.content = fileObj.read()29.fileObj.close()30.31.print('%sing...' % (myMode.title()))第27~29行打开了与inputFilename同名的文件,读取它的内容并存储到变量 content 中,随后关闭了文件 。读取完文件之后,第31行为用户输出了一行提示信息,告知他们加密或解密已经开始 。由于变量 myMode 中存储着字符串encrypt或decrypt,调用title()字符串方法将它的首字母转换为大写,又在它之后添加了ing字符串,因此最终它显示的内容是 Encrypting...或者Decrypting... 。
10.9 计算加/解密所需的时间对一个文件进行全面的加/解密往往要比仅加/解密一个短短的字符串要耗时多,而用户可能会想要了解加/解密文件的过程具体需要多长时间 。程序可以使用 time 模块计算加/解密过程所需的时间长度 。
10.9.1 time模块和time.time()方法time.time()方法以浮点数的形式返回从1970年1月1日至当前时间的总秒数,这个数字被称为UNIX时间戳 。将下列代码输入交互式运行环境,观察该方法的运行结果 。
>>> import time>>> time.time()1540944000.7197928>>> time.time()1540944003.4817972由于time.time()返回的是一个浮点数,因此它可以精确到毫秒 。当然,time.time()显示的时间由程序员调用它的时间决定,并且要将它转化为正常的时间也有一定难度,比如很难看出 1540944000.7197928 就是2018年的10月30日(星期二)的下午5点左右 。然而time.time()非常适合于比较两次调用time.time()之间相差的秒数,因此程序可以使用它计算运行时间 。
举个例子,如果按照下述代码,把前一段代码中两次调用time.time()的时间相减,就可以得到两次调用中间经过的时间了 。
>>> 1540944003.4817972 - 1540944000.71979282.7620043754577637
推荐阅读
- GUI 什么是Python 的图形界面编程?你了解了吗
- Python之PyCharm永久性激活教程
- 编程小白们,别再去啃谭浩强的C语言了,有人这样学一个月入门
- Python3.8的新增特性
- 带你认识Python中黑客喜欢攻击的10个安全漏洞以及应对方法
- 十一 网络编程懒人入门:一文读懂什么是IPv6
- 教你用Python实现截图和文字识别,就是这么简单
- Python中多线程和多处理的初学者指南
- method 学编程傻傻分不清什么是方法和函数(function)?
- 谁偷偷删了你的微信?用Python分分钟揪出来
