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. 自制Amiibo 踩坑/填坑 指南

    去年买了台老版NS,后来得知有Amiibo这种东西的存在,但是学校附近都买不到. 再后来网上看见有人在X宝卖自制卡片,就寻思着是否能自己 DIY一套,于是掉坑里. 要想使用自制Amiibo,一共要做两 ...

  2. 如何使用Processing获取图片中每一个像素的坐标

    剛好碰到有同學問如何在Processing中進行像素級的圖片處理, =============================================================此時需要一 ...

  3. access us

    Ubuntu下设置 chrome的SwitchyOmega Wiki (简体中文)wiki Linux安装配置客户端及开机自动启动 运维 安装 配置 搭建服务以及配置多用户 安装和配置 一键搭建 服务 ...

  4. KVM系统镜像制作

    使用virt-install创建虚拟机并安装GuestOS virt-install是一个命令行工具,它能够为KVM.Xen或其它支持libvirt API的hypervisor创建虚拟机并完成Gue ...

  5. oracle 使用count()函数进行分组计数时所踩的坑!

      1.情景展示 需要对id_card字段按字符长度进行分组统计并进行计数. 2.错误方式 第一步:统计出id_card字段共存在几种情况. 第一种方式:distinct 第二种方式:group by ...

  6. 微信小程序之上传图片(含前后端代码例子)

    此代码示例,能够让你成功将图片上传至后端,后端做相应的处理,然后返回成功码. 前端小程序代码 index.wxml: <view class='content'> <view cla ...

  7. kafka安装运行(docker)

    zookeeper参照https://www.cnblogs.com/wintersoft/p/11128484.html mkdir /opt/kafka -pvim /opt/kafka/Dock ...

  8. How To Wake Up at 5 A.M. Every Day

    How To Wake Up at 5 A.M. Every Day For the past 3 months, I’ve successfully transitioned into being ...

  9. Cesium中的几种坐标和相互转换【转】

    几个重要的坐标对象:1.世界坐标 Cartesian3:笛卡尔空间直角坐标系 new Cesium.Cartesian3(x, y, z) 可以看作,以椭球中心为原点的空间直角坐标系中的一个点的坐标. ...

  10. dubbo源码分析之过滤器Filter-12

    https://blog.csdn.net/luoyang_java/article/details/86682668 Dubbo 是阿里巴巴开源的一个高性能优秀的服务框架,使得应用可通过高性能的 R ...