笨方法学python3 习题41

前言:下面的代码按照书上修改翻译而来,跟书上的执行结果一样!


# 练习中需要的网站链接:https://learncodethehardway.org/words.txtimport random   # 导入一个random库,生成随机数
from urllib.request import urlopen  # 导入urllib库中的模块request中的urlopen网页链接访问函数
import sys    #导入一个sys库
WORD_URL="http://learncodethehardway.org/words.txt"   # 将链接赋给变量WORD_URL
WORDS=[]       # 创建一个空列表  名字叫WORDS# 创建一个字典名字叫PHRASES
PHRASES={#创建一个key)——这个键就是一个类:class%%%(%%%)——创建一个%%%类,继承%%%"class %%%(%%%):":"创建一个名叫:”%%%“的子类,继承父类:“%%%”。",   # 给class%%%(%%%)创建一个value: 把这个类的名字跟继承的对象名字打印出来#创建一个%%%类;类里面创建一个__init__构造函数,形参为***()"class %%% (object):\n\tdef __init__(self,***)": "创建一个名叫:“%%%”的类,类的括号中的对象为object,初始化方法__init__的形参为:“***”",  # 打印出类名%%%,打印出参数***#创建一个%%%类,类里面有一个***的方法,形参为@@@"class %%% (object):\n\tdef ***(self,%%%)":"创建一个类名叫: “%%%”,方法叫: “***” 形参为:”%%%“ 的类。",  # 打印出类名,方法名,参数名"*** = %%%()":"调用对象:“***”中的方法:“%%%”。",#从***(对象)里面调用***(方法)参数为@@@"***.***(%%%)":"调用对象:“***”中的方法:“***”,参数(传入的值)为:“%%%”。",#从***里调用***属性(变量),并将其设置为***"***.*** = '***'":"外部初始化对象:“***”的属性:“***”的值为:“***”。"
}# 使用条件控制语句if else与布尔值or(以真为主)\and(以假为主)\not(非真即假)if len(sys.argv)==2 and sys.argv[1]=="english":  # 如果sys.argv的字符长度等于2 and sys.argv传的第1个参数等于englishPHRASE_FIRST=True   # 上面的条件成立则:PHRASE_FIRST =为真
else:PHRASE_FIRST=False  #否则else:PHRAES_FRIST为Falsefor word in urlopen(WORD_URL).readlines(): # 使用一个request模块里面的函数urlopen打开链接WORD_URL,并使用文件操作函数readlines()读取文件内容,然后分别传给word。WORDS.append(str(word.strip(),encoding='utf-8'))  # 使用strip()以utf-8的编码格式将word切片,并使用str转换成字符串类型,再用append()将切片转换编码类型后的word添加给WORDS#创建一个convert函数形参为snippet(key),phrase(value)    def convert(snippet, phrase):# capitalize() 字符串操作函数:将字符串的第一个字母变成大写,其他字母变成小写class_names=[w.capitalize() for w in# random.sample,库中的随机数函数;count()字符串函数:用来统计字符串里某个字符出现的次数random.sample(WORDS, snippet.count("%%%"))]# 将得出的随机数初始化给变量:other_namesother_names=random.sample(WORDS, snippet.count("***"))   results=[]# 将上面函数定义的形参snippet,phrase分别传给sentencefor sentence in snippet, phrase:  # 将字典的key,value遍历给resultresult=sentence[:] # 这里可以直接result=sentence for word in class_names:  # 将class_names的值遍历给wordresult=result.replace("%%%", word, 1) # 使用word的值替换掉列表result中的%%%,替换次数为一次,防止出现一个值替换多个%%%for word in other_names:           result=result.replace('***', word, 1) results.append(result)  # 将上面的两个for循环的值添加给resultsreturn results #返回results的值,分别给下面的answer, question接收try:Numbering=0while True:snippets=list(PHRASES.keys()) # 获取字典的key,转为列表random.shuffle(snippets)  # 将获取到的列表的元素(key)打乱顺序for snippet in snippets:     # 将获取到的键遍历给snippetphrase=PHRASES[snippet]if snippet in snippets:Numbering+=1answer, question = convert(snippet, phrase)# 接收return返回然后使用question,answer两个变量接收!if PHRASE_FIRST:    # 对应前面的if-esle如果结果是True侧执行下面的代码!否则执行else。question, answer=answer, questionprint("第%s题:请按描述写出相关代码!" %(Numbering))print(input("按下“Enter”开始,按“Ctrl + D退出”"))print(question)input('>')print(f"ANSWER: {answer}\n\n")except EOFError:print("\nBye")

分析总结:

整个代码难点在于四个知识点:1.外部导入的库要理解库中的函数的具体用法;2.编码:这个如果不理解可以去网上查;3.书中前面学过的基础知识;4.Python中的异常处理try——except检测代码是否有异常,结构跟if——else差不多,还可以像if——else一样嵌套。

重在于思路!!喜欢的可以自己修改录入更多的知识点,无聊的时候可以自己练习一下。

笨方法学python3 习题41相关推荐

  1. 笨方法学python3习题21_【图片】笨方法学python3习题41,这是什么问题?【pyhton吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码如下: import random from urllib.request import urlopen import sys WORD_URL = ...

  2. 笨方法学Python3 习题2

    开始总是困难的,但你所为之付出的一切努力在未来都会带给你收获 日拱一卒无有尽,功不唐捐终入海 习题2 1. 巩固练习 1."#"注释符,英文名octothorpe或者pound c ...

  3. 笨方法学python习题4

    变量和命名 #笨方法学python_习题4#定义变量 cars = 100 space_in_a_car = 4.0 drivers = 30 passengers = 90#计算 cars_not_ ...

  4. 笨方法学python 习题37

    还是在笨方法学python中... 本节的习题是看一下作者列出的python中的各种运算符,尝试来理解这些符号. 在这里,我只列出了一些自己不会的,通过查百度得到得答案,这里来列举一下. (另外有不怎 ...

  5. 《笨方法学python3》习题46.2 创建骨架项目目录

    本方法只适用不熟练适用cmd命令的小白 资深程序员请绕道(话说资深程序员也应该不会看我这篇帖子) 折腾完不断报错不断查询 总算用pip装好了2个模块以后来到了创建 骨架目录这步 一看代码 就这?怎么几 ...

  6. 笨方法学 python3进阶篇_笨办法学Python 3 进阶篇

    部分准备知识1 如果不喜欢作者的个人流程怎么办2 如果发现自己太糟糕怎么办2 习题0准备工作3 程序员用的编辑器3 Python3.63 工作终端4 pip和virtualenv的配置4 实验笔记4 ...

  7. 笨方法学python 习题8

    习题8 *python:3.9 * 请忽略黄色字体,那是我饿的音乐,这就是按书中代码所打的结果 加分习题 1.自己检查结果,记录你犯过的错误,并且在下个练习中尽量不犯同样的错误. 以上就是我犯的错,有 ...

  8. 笨办法学Python3 习题16

    基于Python3.6 习题16 from sys import argvscript, filename = argvprint("We're going to erase %r.&quo ...

  9. python手记(游戏) 笨方法学python习题36【持续更新中】

    如有意见或其他问题可在下方写下评论或加QQ:1693121186 欢迎一起讨论技术问题! 代码如下: 解说:这是笨方法的习题36,让做一个游戏.我会持续更新,如果想复制玩玩的同学,请别将主线线人以下的 ...

  10. 笨方法学Python 习题 42: 对象、类、以及从属关系

    有一个重要的概念你需要弄明白,那就是"类(class)"和"对象(object)"的区别.问题在于,class 和 object 并没有真正的不同.它们其实是同 ...

最新文章

  1. pytorch mseloss bceloss 对比
  2. 【BZOJ2768】[JLOI2010]冠军调查/【BZOJ1934】[Shoi2007]Vote 善意的投票 最小割
  3. 3. Nest Provider
  4. 怎么更换锁定计算机的图片,Win10系统下怎样对锁定界面的背景图片进行更换
  5. Jmeter-基础篇
  6. asp.net Viewstate 优化
  7. 孤读Paper——《Deep Snake for Real-Time Instance Segmentation》
  8. Fedora 11的新特征和简易安置教程
  9. LimeSDR实验教程(5) WiFi解调
  10. 如何对谷歌地图的火星坐标进行纠偏校正
  11. 3.3.2 WTL应用向导安装和项目建立
  12. 启动VMware时遇到“vmx86版本不匹配问题”处理方法
  13. 哈罗单车再获10亿融资,摩拜、ofo难合并!
  14. matlab单双极性眼图程序,求通信大神讲讲这个matlab程序每一段的意思
  15. java解析与生成json数据的四种方式,比如将json字符串转为json对象或json对象转为json字符串
  16. 攻防世界逆向高手题之dmd-50
  17. 村田Murata电容学习笔记
  18. 安卓手机如何永久关闭快应用?
  19. Intel网卡升级iPXE固件
  20. GM后台加密码脚本 密码长度无限制

热门文章

  1. 苹方字体 android,iOS 9“苹方”字体像安卓被吐槽
  2. 怎么把PDF文档中的重要信息改成红色字体
  3. 用python文本挖掘分析_文本挖掘和文本分析的九大应用场景
  4. NRC词典应用实例——英文文本情感分析
  5. 怎么把HTML转换成swf用迅雷,什么工具能把MP4格式转换成SWF并不降低画质
  6. 《IT播吧.-.大灰狼老师出品的零基础汇编视频课程》学习笔记
  7. stm32 控制 lcd12864
  8. 海康威视监控使用html播放
  9. VHDL实验三:一位全加器、四选一多路选择器
  10. 全国DNS服务器IP地址【电信、网通、铁通】