10-10 常见单词:访问项目Gutenberg(http://gutenberg.org/),并找一些你想分析的图书。下载这些作品的文本文件或将浏览器中的原始文本复制到文本文件中。

  可以使用count()来确定特定的单词或短语在字符串中出现的次数。例如,下面的代码计算‘row’在一个字符串中出现了多少次:


line = "Row, row, row your boat"

line.count('row')

line.lower().count('row')


  通过使用lower()将字符串转换为小写,可捕获要查找的单词出现的所有次数,而不管大小写格式如何。

  编写一个程序,它读取在项目Dutenberg中获取的文件,并计算单词’the‘在每个文件中分别出现了多少次。

filename = 'A-Case-of-Sunburn.txt'
with open(filename) as f_obj:
string = f_obj.read() num = string.lower().count('the')
print(filename + ' include ' + str(num) + " \'the\'.")

10-11 喜欢的数字:编写一个程序,提示用户输入他喜欢的数字,并使用json.dump()将这个数字存储到文件中。再编写一个程序,从文件中读取这个值,并打印消息”I know your favorite number! It's____.“。

import json

favorite_num = input("Enter your favorite number: ")

filename = 'favorite number.json'
with open(filename, 'w') as f_obj:
json.dump(favorite_num, f_obj) with open(filename) as f_obj:
number = json.load(f_obj) print("I know your favorite number! It's " + number + ".")

10-12 记住喜欢的数字:将10-11中的两部分合二为一。如果存储了用户喜欢的数字,就显示它,否则提示用户输入喜欢的数字并将其存储到文件中。运行该程序两次,看是否像预期的那样工作。

import json

filename = 'favorite number.json'
try:
with open(filename) as f_obj:
number = json.load(f_obj)
print("I know your favorite number! It's " + number + ".")
except FileNotFoundError:
favorite_num = input("Enter your favorite number: ")
with open(filename, 'w') as f_obj:
json.dump(favorite_num, f_obj)

10-13 验证用户:最后一个remember_me.py版本,假设用户要么已经输入其用户名,要么是首次运行该程序。应修改这个程序,以应对这样的情形:当前和最后一次运行该程序的用户并非同一个人。

  为此,在greet_user()中打印欢迎用户回来的消息,先询问他用户名是否是对的。如果不对,就调用get_new_username()让户输入正确的用户名。

import json

def get_stored_username():
"""如果存储了用户名,就获取它"""
filename = 'username.json'
try:
with open(filename) as f_obj:
username = json.load(f_obj)
except FileNotFoundError:
return None
else:
return username def get_new_username():
"""提示用户输入用户名"""
username = input('What is your name? ')
filename = "username.json"
with open(filename, 'w') as f_obj:
json.dump(username, f_obj)
return username def greet_user():
"""判断当前用户是否对,问候用户或存储新用户"""
username = get_stored_username()
message = "Does the " + username + " is your username? Enter yes or no: "
yes_or_no = input(message)
if yes_or_no == 'yes':
print("Welcome back, " + username + "!")
else:
username = get_new_username()
print("We'll remember you when you come back, " + username + "!") greet_user()

文件和异常的练习3——python编程从入门到实践的更多相关文章

  1. 《Python编程从入门到实践》_第十章_文件和异常

    读取整个文件 文件pi_digits.txt #文件pi_digits.txt 3.1415926535 8979323846 2643383279 下面的程序打开并读取整个文件,再将其内容显示到屏幕 ...

  2. Python编程从入门到实践笔记——异常和存储数据

    Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...

  3. Python编程从入门到实践笔记——文件

    Python编程从入门到实践笔记——文件 #coding=gbk #Python编程从入门到实践笔记——文件 #10.1从文件中读取数据 #1.读取整个文件 file_name = 'pi_digit ...

  4. Python编程从入门到实践

    Python编程从入门到实践1 起步2 变量和简单数据类型3 列表简介4 操作列表5 if语句6 字典7 用户输入和while循环8 函数9 类10 文件和异常11 测试代码12 武装飞船13 外星人 ...

  5. 《Python编程:从入门到实践》分享下载

    书籍信息 书名:<Python编程:从入门到实践> 原作名:Python Crash Course 作者: [美] 埃里克·马瑟斯 豆瓣评分:9.1分(2534人评价) 内容简介 本书是一 ...

  6. 《python编程从入门到实践》读书实践笔记(一)

    本文是<python编程从入门到实践>读书实践笔记1~10章的内容,主要包含安装.基础类型.函数.类.文件读写及异常的内容. 1 起步 1.1 搭建环境 1.1.1 Python 版本选择 ...

  7. Python编程从入门到实践笔记——类

    Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...

  8. Python编程从入门到实践笔记——函数

    Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...

  9. 《python编程从入门到实践》读书实践笔记(二)

    本文是<python编程从入门到实践>读书实践笔记11章的内容,主要包含测试,为体现测试的重要性,独立成文. 11 测试代码 写在前面的话,以下是我这些年开发中和测试相关的血泪史. 对于一 ...

随机推荐

  1. 洛谷P2293 高精开根

    锣鼓2293 写完了放代码 应该没什么思维难度 ———————————————————————————————————————————————————————— python真香 m=input() ...

  2. js读取sqlserver数据库,输出至html

    代码: <!DOCTYPE html> <html> <head>   <meta charset="utf-8">   <m ...

  3. bash: ip: command not found

    Centos安装 # yum install iproute2 iproute2-doc Ubuntu安装 # apt-get install iproute2 iproute2-doc

  4. https与http的区别?

    https要比http更加安全一些,也就是说http协议是由ssl+http协议构建的可进行加密传输.身份验证的网络协议要比http协议安全 现在大多数的网站都逐渐用https://,因为安全问题太重 ...

  5. Struts2工作原理和核心文件

    一.Struts2工作原理 如下图: 二.Struts2配置文件 1.web.xml 任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置了web.xml文件的Servl ...

  6. Composer教程

    介绍   PHP程序的包管理器   负责, 配置需要的项目, 项目需要的项目. 解决, 项目的依赖问题.   当前的PHP项目, 当作一个软件包去看待.   思路: 将软件集中在统一的软件源中. 安装 ...

  7. 关于uboot中的属性"u-boot,dm-pre-reloc”的意义

    "u-boot,dm-pre-reloc”属性:当设置了这个属性时,则表示这个设备在重定向之前就需要使用. 当dm_init_and_scan的参数为true时,只会对带有“u-boot,d ...

  8. WebRTC搭建前端视频聊天室——数据通道篇

    本文翻译自WebRTC data channels 在两个浏览器中,为聊天.游戏.或是文件传输等需求发送信息是十分复杂的.通常情况下,我们需要建立一台服务器来转发数据,当然规模比较大的情况下,会扩展成 ...

  9. ES6 - 数组扩展(扩展运算符)

    扩展运算符 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算(函数),将一个数组转为用逗号分隔的参数序列. rest: 变量将多余的参数放入数组中. spread(扩展): ...

  10. Django入门3 简单留言板项目案例及mysql驱动的安装配置

    新建jangostart项目 使用manager.py新建app即单独的应用 创建一个message应用 manage.py@djangostart > startapp message 如果a ...