PYTHON核心编程第二版课后题答案第八章
- 格式:pdf
- 大小:98.05 KB
- 文档页数:5
【02】Python核⼼编程(全)⼀、浅拷贝和深拷贝1.浅拷贝 是对于⼀个对象的顶层拷贝,通俗的理解是:拷贝了引⽤,并没有拷贝内容。
相当于把变量⾥⾯指向的⼀个地址给了另⼀个变量就是浅拷贝,⽽没有创建⼀个新的对象,如a=b。
2.深拷贝 ⾸先要import copy,然后c = copy.deepcopy(a),就表⽰把a的内容深拷贝到c中,如果发现了a中也存在引⽤的内容,则递归拷贝,也就是把当前的这个引⽤的对象继续深拷贝。
3. copy和deepcopy的区别 ①copy:浅拷贝,⾥⾯如果有可变类型,修改这个可变类型(如list),被拷贝的对象也会相应改变,仅仅拷第⼀层,如果是不可变类型,就⼀层都不拷,如果是可变类型就拷⼀层。
②deepcopy:深拷贝,⾥⾯不管是可变类型和不可变类型,被拷贝的对象都不会受到影响,递归拷贝。
4.copy和deepcopy拷贝元组的特点 使⽤copy模块的copy功能的时候,它会根据当前拷贝的数据类型是可变类型还是不可变类型有不同的处理⽅式,如元组是不可变类型,拷贝多份没有⽤,对copy来说,如果是可变类型就拷⼀层,如果是不可变类型,就⼀层都不拷。
⼆、属性property1.属性property-1 ①私有属性添加getter和setter⽅法 ②使⽤property升级getter和setter⽅法num = property(getNum,setNum) 注意: Num到底是调⽤getNum()还是setNum(),要根据实际的场景来判断,值得注意的是⼀定要先填getNum后setNum。
如果是给t.num赋值,那么⼀定调⽤setNum()。
如果是获取t.num的值,那么就⼀定调⽤getNum()。
property的作⽤:相当于把⽅法进⾏了封装,开发者在对属性设置数据的时候更⽅便。
2.属性property-2class Money(object):@property #修饰器def num(self):print("------getter-----")return self.__num@num.setter #修饰器def num(self,new_num):print("------setter------")self.__num = new_numt.num = 20print(t.num)三、迭代器1.迭代器 迭代是访问集合元素的⼀种⽅式。
《Python语言程序设计基础》第二版嵩天第二章程序练习题答案第一题:```python# 1. 编写一个程序,要求用户输入一个整数并输出它的平方值。
num = int(input("请输入一个整数:"))square = num ** 2print("该整数的平方值为:", square)```第二题:```python# 2. 编写一个程序,要求用户输入一个浮点数并输出它的绝对值。
num = float(input("请输入一个浮点数:"))absolute_value = abs(num)print("该浮点数的绝对值为:", absolute_value)```第三题:```python# 3. 编写一个程序,要求用户输入一个1到100之间的整数,并判断该数是奇数还是偶数。
num = int(input("请输入一个1到100之间的整数:"))if num % 2 == 0:print("该整数为偶数。
")else:print("该整数为奇数。
")```第四题:```python# 4. 编写一个程序,要求用户输入一个年份,并判断该年份是否为闰年。
year = int(input("请输入一个年份:"))if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:print("该年份是闰年。
")else:print("该年份不是闰年。
")```第五题:# 5. 编写一个程序,要求用户输入一个三位数,并将其倒序输出。
num = int(input("请输入一个三位数:"))reverse_num = int(str(num)[::-1])print("倒序输出的结果为:", reverse_num)```第六题:```python# 6. 编写一个程序,要求用户输入一个四位数,并将其每一位数倒序输出。
python二级考试题库8答案1. 题目:请写出Python中定义函数的语法。
答案:在Python中定义函数,可以使用`def`关键字,后跟函数名和括号内的参数列表,然后是冒号,最后是函数体,如下所示:```pythondef function_name(parameters):# 函数体```2. 题目:如何使用Python中的列表推导式来创建一个包含0到9的数字列表?答案:列表推导式是一种简洁的构建列表的方法,可以这样使用:```pythonnumbers = [i for i in range(10)]```3. 题目:解释Python中的异常处理机制。
答案:Python中的异常处理机制使用`try`和`except`关键字。
`try`块包含可能会引发异常的代码,`except`块则包含异常发生时执行的代码。
还可以使用`finally`块来执行无论是否发生异常都需要执行的代码。
4. 题目:请写出Python中如何实现继承。
答案:在Python中,子类可以通过在括号内指定父类名来实现继承。
例如:```pythonclass ParentClass:passclass ChildClass(ParentClass):pass```5. 题目:如何在Python中实现多态?答案:多态是指允许不同类的对象对同一消息做出响应的能力。
在Python中,多态可以通过定义具有相同名称的方法来实现,不同的对象可以有不同的方法实现。
6. 题目:解释Python中的垃圾回收机制。
答案:Python使用引用计数和标记-清除机制来管理内存。
引用计数是自动的,当一个对象的引用计数达到零时,它会被垃圾回收器回收。
标记-清除机制用于处理循环引用的情况。
7. 题目:如何在Python中使用装饰器?答案:装饰器是一种设计模式,用于在不修改类定义的情况下增加类的功能。
装饰器本质上是一个函数,它接受一个函数作为参数并返回一个函数。
大学《Python程序设计》试题及答案大学《Python程序设计》试题及答案一、选择题1、在Python中,以下哪个选项可以正确表示小于等于操作符? A) <=B) <* C) .≤ D) 以上都不是答案:A) <=2、下列哪个模块可用于绘制图形? A) math B) plot C) canvas D) none of the above 答案:C) canvas3、在Python中,如何将字符串转换为整数? A) str() B) int() C) float() D) 以上都不是答案:B) int()4、若要打印出所有的素数,以下哪个循环结构可以实现? A) whileB) for C) do-while D) switch-case 答案:B) for5、以下哪个选项可以用于导入模块? A) import math as m B) include math as m C) #include <math.h> D) #import <math.h> 答案:A) import math as m二、填空题1、Python中的注释符号是_____。
答案:#2、在Python中,所有变量都必须具有_____。
答案:类型(types)3、Python中的逻辑运算符用于执行_____运算。
答案:逻辑(logical)4、以下哪个函数可以用于将字符串转换为浮点数? A) str() B) int() C) float() D) none of the above 答案:C) float()5、以下哪个循环结构可以用于打印出所有的偶数? A) for i in range(0, 10): print(i2) B) for i in range(0, 10): if i % 2 == 0: print(i2) C) for i in range(0, 10): if i % 2 != 0: print(i2) D) none of the above 答案:B) for i in range(0, 10): if i % 2 == 0: print(i2)三、编程题编写一个Python程序,打印出所有的水仙花数(Narcissistic Number)。
PYTHON核心编程第二版习题解答及执行结果第二章PY3.4实现第二章习题解答2-4>>>num=input("please input a number:") please input a number:>>>num=int(input("please input a number:")) please input a number:2502-5(a)>>>i=0>>>while i<11:print(i)i+=11...(b)>>>i=0>>>for i in range(11):print(i)i+=11...2-6>>>num=int(input("please input a num:")) please input a num:366>>>if num<0:print('fushu')elif num>0:print('zheshu')else:print('zero')zheshu2-7>>>s=input('enter a string:') >>>for eachchar in s:print(eachchar)Field>>>for i in range(len(s)): print(i,s[i])0F1i2e3l4d>>>for i,x in enumerate(s): print(i,x)0F1i2e3l4d2-8>>>r=0>>>for i in range(5):r+=int(input('enter a num:'))enter a num:44enter a num:48enter a num:5563618enter a num:44662##uses sum()BIF and generator expressions>>>print(sum(int(input('please input a num:'))for i in range(5))) please input a num:2please input a num:2please input a num:2please input a num:2please input a num:210>>>2-10>>>while True:num=int(input("please input a num:(1-100)"))if num in range(101):print('corect')breakelse:print('error,try again!')please input a num:(1-100)122error,try again!please input a num:(1-100)12-15>>>num1=int(input("please input first number:")) please input first number:12>>>num2=int(input("please input2rd number:")) please input2rd number:5>>>num3=int(input("please input3st number:")) please input3st number:55>>>if num1>num2:num1,num2=num2,num1>>>if num1>num3:num1,num3=num3,num1>>>if num1>num3:num1,num3=num3,num1>>>print(num1,num2,num3)51255>>>print(num3,num2,num1)55125>>>makeT extFile.py#!/usr/bin/env/pythonprint('jhjjjjj')print('DONE'),附:第三四章例题执行结果及源码#例3.1#!/usr/bin/env python'makeTextFile.py--create text file'import os#get filenamewhile True:fname=input('Enter file name:')if os.path.exists(fname):#os.path.exists()函数:确认输入的文件名是否存在print("***ERROR:'%s'already exists"%fname)else:break#get file content(text)linesall=[]print("\nEnter lines('.'by itself to quit).\n")#loop until user terminates inputwhile True:entry=input('>')if entry=='.':breakelse:all.append(entry)#write lines to file with NEWLINE line terminatorfobj=open(fname,'w')#打开文件准备进行写操作fobj.write('\n'.join(all))#将内存中内容逐行写入文件fobj.close()#print('DONE!')'''#例3.2#!/usr/bin/env python'readTextFile.py--read and display text file'#get filenamefname=input('Enter file name:')print()#attempt to open file for readingtry:fobj=open(fname,'r')except IOError as e:#py3修改,旧版本为except IOError,e: print("***file open error:",e)else:#display contents to the screenfor eachLine in fobj:print(eachLine),fobj.close()#例4.1def displayNumType(num):print(num,'is',)if isinstance(num,(int,float,complex)):#isinstance()判断对象类型print('a number of type:',type(num).__name__)else:print('not a number at all!!')displayNumType(-69)displayNumType(9999999999999999999999)displayNumType(98.6)displayNumType(-5.2+1.9j)displayNumType('xxx')#v3.0后,确切的讲,int型(依赖运行环境C编译器中long型的精度)消失了,long 型替代int型,成为新的、不依赖运行环境的、无精度限制的(只要内存装得下)int型。
python二级考试题库8答案1. 单选题:以下哪个选项是Python中用于定义类的关键字?A. classB. functionC. defineD. struct答案:A2. 多选题:Python中支持哪些类型的数据结构?A. 列表B. 元组C. 字典D. 集合答案:A, B, C, D3. 判断题:Python中的列表和元组都是可变数据类型。
A. 正确B. 错误答案:B4. 填空题:在Python中,使用____运算符可以连接字符串。
答案:+5. 简答题:解释Python中的GIL(全局解释器锁)是什么,并说明其对多线程程序的影响。
答案:GIL(全局解释器锁)是Python解释器中的一个机制,它确保在任何时刻只有一个线程执行Python字节码。
这意味着即使在多核处理器上,Python程序也不能利用多核并行执行。
因此,在CPU密集型的多线程程序中,GIL限制了程序的性能,因为它阻止了线程同时执行,导致多线程程序可能无法充分利用多核处理器的优势。
6. 编程题:编写一个Python函数,该函数接受一个整数列表作为参数,并返回列表中所有偶数的和。
```pythondef sum_even_numbers(numbers):return sum(num for num in numbers if num % 2 == 0)# 示例print(sum_even_numbers([1, 2, 3, 4, 5, 6])) # 输出应为 2 + 4 + 6 = 12```7. 单选题:以下哪个选项是Python中用于异常处理的关键字?A. tryB. catchC. exceptD. all of the above答案:D8. 多选题:Python中哪些模块可以用来处理日期和时间?A. datetimeB. timeC. calendarD. dateutil答案:A, B, C, D9. 判断题:Python中的装饰器是一种特殊的函数,它可以用来修改其他函数的行为。
python二级考试题库8答案1. 以下哪个选项是Python中的合法变量名?A. 2variableB. variable-nameC. variable$nameD. variable name答案:B2. Python中,以下哪个数据类型是不可变的?A. 列表B. 字典C. 元组D. 字符串答案:C3. 在Python中,如何实现字符串的反转?A. 使用reverse()方法B. 使用split()方法C. 使用join()方法D. 使用切片操作答案:D4. Python中,以下哪个关键字用于定义类?A. classB. functionC. defD. struct答案:A5. 在Python中,以下哪个函数用于计算一个数的平方根?A. sqrt()B. square()C. root()D. power()答案:A6. Python中,以下哪个模块提供了日期和时间的功能?A. datetimeB. timeC. dateD. calendar答案:A7. 在Python中,以下哪个操作符用于成员检查?A. inB. not inC. isD. not答案:A8. Python中,以下哪个函数用于将字符串转换为浮点数?A. int()B. float()C. str()D. bool()答案:B9. 在Python中,以下哪个语句用于循环遍历列表中的每个元素?A. for element in listB. while element in listC. for list in elementD. while list in element答案:A10. Python中,以下哪个关键字用于定义函数?A. defB. functionC. classD. struct答案:A。
9–1. 文件过滤. 显示一个文件的所有行, 忽略以井号( # )开头的行. 这个字符被用做Python , Perl, Tcl, 等大多脚本文件的注释符号.附加题: 处理不是第一个字符开头的注释. 答案:f = open('test1.txt','r')for eachline in f:if eachline[0] == '#':continueelif '#' in eachline:loc = eachline.find('#')print eachline[:loc]else:print eachline,9–2. 文件访问. 提示输入数字N 和文件F, 然后显示文件F 的前N 行.答案:N = int(raw_input('Enter a number: '))f = raw_input('Enter filename :')f1 = open(f,'r')allline = f1.readlines()f1.close()for i in range(N):print allline[i],9–3. 文件信息. 提示输入一个文件名, 然后显示这个文本文件的总行数.答案:f = raw_input('Enter filename :')f1 = open(f,'r')sum = 0for i in f1:sum += 1print sumf = raw_input('Enter filename :')f1 = open(f,'r')sum = 0for i in f1:sum += 1print sum方法二:f = raw_input('Enter filename :')f1 = open(f,'r')allline = f1.readlines()f1.close()print len(allline)9–4. 文件访问. 写一个逐页显示文本文件的程序. 提示输入一个文件名, 每次显示文本文件的25 行, 暂停并向用户提示"按任意键继续.", 按键后继续执行.答案:f = raw_input('Enter filename :')f1 = open(f,'r')allline = f1.readlines()f1.close()sum = 0for i in allline:print i,sum += 1if sum == 25:a = raw_input("press any key to continue:")sum = 0方法二import osF=raw_input('pls input a file name:')n=0f=open(F,'r')for i in f:print i,n+=1if n==25:n=0os.system('pause')f.close()9-5 考试成绩,改进你的考试成绩问题(练习5-3和6-4),要求能从多个文件中读入考试成绩。
9.11 练习9–1. 文件过滤. 显示一个文件的所有行, 忽略以井号( # )开头的行. 这个字符被用做Python , Perl, Tcl, 等大多脚本文件的注释符号.附加题: 处理不是第一个字符开头的注释.9–2. 文件访问. 提示输入数字N 和文件F, 然后显示文件F 的前N 行.9–3. 文件信息. 提示输入一个文件名, 然后显示这个文本文件的总行数.9–4. 文件访问. 写一个逐页显示文本文件的程序. 提示输入一个文件名, 每次显示文本文件的25 行, 暂停并向用户提示"按任意键继续.", 按键后继续执行.9–6. 文件比较. 写一个比较两个文本文件的程序. 如果不同, 给出第一个不同处的行号和列号.9–7. 解析文件. Win32 用户: 创建一个用来解析Windows .ini 文件的程序.这道题我没看懂,如何解析???9–9. Python 文档字符串. 进入Python 标准库所在的目录. 检查每个 .py 文件看是否有__doc__ 字符串, 如果有, 对其格式进行适当的整理归类. 你的程序执行完毕后, 应该会生成一个漂亮的清单. 里边列出哪些模块有文档字符串, 以及文档字符串的内容. 清单最后附上那些没有文档字符串模块的名字.附加题: 提取标准库中各模块内全部类(class)和函数的文档.这道题忽悠了我一个晚上。
第一:根本就不存在__doc__的字符串,当我们运行模块.__doc__的时候,实际上是读取开头的字符串。
所以我们要判断是开头是否存在“”“字符串”“”这样的格式。
程序如下:最近还花了点时间学习wxpython,专门用来对付习题9-10,9-11这种图形界面的设计,但是发现学习的蛋疼,可能我这人不太喜欢用UI这些东西吧。
所以,习题9-10,9-11,9-12就不做了。
9–13. 命令行参数a) 什么是命令行参数, 它们有什么用?b) 写一个程序, 打印出所有的命令行参数.a)跟随着命令写入的参数,主要用于linux下运行程序习题9-14程序输入输出:9–15. 复制文件. 提示输入两个文件名(或者使用命令行参数). 把第一个文件的内容复制到第二个文件中去.9–16. 文本处理. 人们输入的文字常常超过屏幕的最大宽度. 编写一个程序, 在一个文本文件中查找长度大于80 个字符的文本行. 从最接近80 个字符的单词断行, 把剩余文件插入到下一行处.程序执行完毕后, 应该没有超过80 个字符的文本行了.9–17. 文本处理. 创建一个原始的文本文件编辑器. 你的程序应该是菜单驱动的, 有如下这些选项:1) 创建文件(提示输入文件名和任意行的文本输入),2) 显示文件(把文件的内容显示到屏幕),3) 编辑文件(提示输入要修改的行, 然后让用户进行修改),4) 保存文件, 以及5) 退出.9–18. 搜索文件. 提示输入一个字节值(0 - 255)和一个文件名. 显示该字符在文件中出现的次数.9–19. 创建文件. 创建前一个问题的辅助程序. 创建一个随机字节的二进制数据文件, 但某一特定字节会在文件中出现指定的次数. 该程序接受三个参数:1) 一个字节值( 0 - 255 ),2) 该字符在数据文件中出现的次数, 以及3) 数据文件的总字节长度.这道题很难。
10.1 引发异常。
以下的哪个因素会在程序执行时引发异常?注意这里我们问的并不是异常的原因。
a)用户;b)解释器;c)程序;d)以上所有;e)只有b)和c);f)只有a)和c)。
答案:f 10-2.引发异常。
参考上边问题的列表,哪些因素会在执行交互解释器时引发异常?答案:f 10-3.关键字。
用来引发异常的关键字有哪些?答案:raise 10-4.关键字。
try-except 和try-finally 有什么不同?答案:try-except :当try 代码块运行出错,except 代码块才会被执行(匹配到相应异常时),处理完异常后try-except 后的代码会继续往下执行;try-finally :不管try 代码块是否出现异常,最终都会执行finally 里的代码。
如果出现异常,执行完finally 代码块后,异常会继续往上层抛。
10-5.异常。
下面这些交互解释器下的Python 代码段分别会引发什么异常(参阅表10.2给出的内建异常清单):(a)>>>if 3 < 4 then:print '3 is less than 4!' (b)>>>aList = ['Hello','World','Anyone','Home?'] >>>print 'the last string in aList is: ',aList[len(aList)] (c)>>>x (d)>>>x = 4 % 0 (e)>>>import math >>>i = math.sqrt(-1) 答案:(a)SyntaxError: invalid syntax (b)IndexError: list index out of range (c)NameError: name 'x' is not defined (d)ZeroDivisionError: integer division or modulo by zero (e)ValueError: math domain error 10-6.改进的open()。
Python核心编程第二版第十章习题答案第十章的习题涵盖了一系列关于函数的练习,主要目的是巩固和加深对Python函数的理解。
下面是第十章习题的详细答案:1. 编写一个函数,接受用户输入的字符串,然后将字符串中的所有字母大写并输出。
例如:```pythondef uppercase_string():user_input = input("请输入一个字符串:")uppercase = user_input.upper()print(uppercase)uppercase_string()```2. 编写一个函数,计算并输出给定列表中所有数字的平均值。
```pythondef average(numbers_list):total = sum(numbers_list)average = total / len(numbers_list)return averagenumbers = [1, 2, 3, 4, 5]print(average(numbers))```3. 编写一个函数,接受一个列表作为参数,并返回一个新的列表,其中只包含原列表中的偶数。
```pythondef even_numbers(numbers_list):even_numbers = []for number in numbers_list:if number % 2 == 0:even_numbers.append(number)return even_numbersnumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(even_numbers(numbers))```4. 编写一个函数,接受两个列表做为参数,并返回一个新的列表,其中包含两个列表中的共同元素。
```pythondef common_elements(list1, list2):common_elements = []for element in list1:if element in list2:common_elements.append(element)return common_elementslist1 = [1, 2, 3, 4, 5]list2 = [5, 6, 7, 8, 9]print(common_elements(list1, list2))```5. 编写一个函数,接受一个字符串作为参数,然后输出该字符串的反转版本。
python程序设计教程课后答案题目:Python程序设计教程课后答案导言:Python是一种高级的编程语言,许多初学者在学习Python时常常遇到一些问题,需要参考一些解答的答案。
本篇文章旨在提供Python程序设计教程的课后答案,帮助读者更好地理解和掌握Python编程。
1. Python基础知识(Chapter 1-3)1.1 关键字是什么?列出Python的关键字。
答案:关键字是Python中具有特殊意义的保留字。
Python的关键字包括:and、as、assert、break、class、continue、def、del、elif、else、except、False、finally、for、from、global、if、import、in、is、lambda、None、nonlocal、not、or、pass、raise、return、True、try、while、with、yield等。
1.2 什么是标识符?标识符命名规则是什么?答案:标识符是用来标识变量、函数、类、模块等名字的字符串。
Python的标识符命名规则如下:- 标识符由字母、数字和下划线组成。
- 标识符以字母或下划线开头。
- 标识符区分大小写。
- 不要使用Python的关键字作为标识符。
- 一般使用小写字母来命名变量和函数,类名使用首字母大写的驼峰命名法。
2. 数据类型(Chapter 4-6)2.1 什么是列表?如何创建一个列表?答案:列表是一种有序的集合,其中的元素可以是任意类型的。
可以使用方括号[]来创建一个列表,例如:my_list = [1, 2, "hello", True]2.2 如何向列表添加元素?如何访问和修改列表中的元素?答案:可以使用append()方法向列表末尾添加一个元素,例如:my_list.append(3)。
使用索引来访问和修改列表中的元素,索引从0开始计数。
例如:访问第一个元素可以使用my_list[0],修改第一个元素可以使用my_list[0] = "world"。
《Python程序设计》习题与参考答案第1章基础知识1、1 简单说明如何选择正确的Python版本。
答:在选择Python的时候,一定要先考虑清楚自己学习Python的目的就是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,就是Python 2、x还就是Python 3、x,最高支持到Python 2、7、6还就是Python 2、7、9。
这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装与卸载上。
同时还应该注意,当更新的Python版本推出之后,不要急于更新,而就是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。
尽管如此,Python 3毕竟就是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅就是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 3、x系列的最高版本(目前就是Python 3、4、3)。
1、2 为什么说Python采用的就是基于值的内存管理模式?答:Python采用的就是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。
>>> x = 3>>> id(x)>>> y = 3>>> id(y)>>> y = 5>>> id(y)>>> id(x)1、3 在Python中导入模块中的对象有哪几种方式?答:常用的有三种方式,分别为import 模块名[as 别名]●from 模块名import 对象名[ as 别名]●from math import *1、4 使用pip命令安装numpy、scipy模块。
答:在命令提示符环境下执行下面的命令:pip install numpypip install scipy1、5 编写程序,用户输入一个三位以上的整数,输出其百位以上的数字。
第八课青少年软件编程等级考试Python二级(实操试卷)课后练习8试卷编号:867513试卷录入者:机器人包老师(玩得趣科教中心)试卷总分:100出卷时间:2020-2-16 16:15答题时间:40分钟本试卷从考试酷examcoo网站导出,文件格式为mht,请用WORD/WPS打开,并另存为doc/docx格式后再使用0. if not (money < 100): 上边这行代码相当于?1. assert 的作用是什么?2. 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?3. 猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?4. 你听说过成员资格运算符吗?动动手:0. 视频中小甲鱼使用 if elif else 在大多数情况下效率要比全部使用 if 要高,但根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在 70~80 分之间,因此根据统计规律,我们还可以改进下程序以提高效率。
题目备忘:按照100分制,90分以上成绩为A,80到90为B,60到80为C,60以下为D,写一个程序,当用户输入分数,自动转换为ABCD的形式打印。
1. Python 的作者在很长一段时间不肯加入三元操作符就是怕跟C语言一样搞出国际乱码大赛,蛋疼的复杂度让初学者望而生畏,不过,如果你一旦搞清楚了三元操作符的使用技巧,或许一些比较复杂的问题反而迎刃而解。
请将以下代码修改为三元操作符实现:1.x, y, z = 6, 5, 42.if x < y:3. small = x4. if z < small:5. small = z6.elif y < z:7. small = y8.else:9. small = z复制代码2. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!回复您的答案即可查看参考答案!测试题答案:0. if not (money < 100): 这行代码相当于?if money >= 100:1. assert 的作用是什么?assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。
python核心编程答案.pdfpython核心练习(第二章)2-3a=int(input('A='))b=int(input('B='))print('A-B=%d,A+B=%d\nA/B=%d,A**B=%d,A%%B=%d' % (a-b ,a+b ,a/b,a**b,a%b))2-4(a)print(input('Enter a string:'))(b)print(int(input('Enter a value:')))2-5(a)i=0while i<11:print(i)i+=1(b)for i in range(11): print(i) 2-6v=int(input('Enter a number to determine positive or negative:')) if v<0:print('%d is negative' % v)elif v==0:print('you enter zero')else:print('%d is positive' % v)2-7while 循环s=input('Enter a string:') i=0while i<len(s):< p="">print(s[i])i+=1for 循环s=input('Enter a string:') for i in s: print(i)2-8while 循环print('Enter five number') v=[]i=0s=0while i<5 :a=input('n%d=' % (i+1))v.extend([int(a)])s=s+v[i]i+=1print(v)print('sum=%d' % s)print('Enter five number')v=[]s=0for i in range(5):a=input('n%d=' % (i+1))v.extend([int(a)])s=s+v[i]print(v)print('sum=%d' % s)2--9print('Enter five number')v=[]s=0for i in range(5):a=input('n%d=' % (i+1))v.extend([int(a)])s=s+v[i]print('ave=%f' % (float(s)/len(v))) 2-10i=1n=int(input('Enter a number between 1-100:')) if n<=100 and n>=1:print('Done')i=0else:print('Error')2-11while True:s=0c=int(input("'1'sum,'2'ave,'0'exit:\n"))if c==1:for i in range(5):n=int(input('n%d=' % (i+1)))s+=nprint(s)if c==2:for i in range(5):n=int(input('n%d=' % (i+1)))s+=nprint(float(s/5))if c==0:break2-15a=int(input('a='))b=int(input('b='))c=int(input('c='))n=[]a,b=b,aif a>c:a,c=c,aif b>c:b,c=c,bn.extend([a,b,c])print(n)python核心练习(第三章)import osls=os.linesepdef write():while True:fname=input('Enter file name:')if os.path.exists(fname):print('Error %s already exists ' % fname) else: breakall=[]print("\nEnter lines ('.' by itself to quit).\n") while True:entry=input('>')if entry=='.':breakelse:all.append(entry)fobj=open(fname,'w')fobj.writelines(['%s%s' % (x,ls) for x in all]) fobj.close()print('Done')def read():while True:fname=input('Enter filename:')if not os.path.exists(fname):print('sorry,%s is not exists' % fname) else:breaktry:fobj=open(fname,'r')except IOError as e:print("*** file open error" ,e)else:for eachline in fobj:print (eachline),fobj.close()i=0while i!='q':i=input("'r'read,'w',write,'q'quite:")if i=='r':read()elif i=='w':write()python核心练习(第四、五章)4-1python对象的三个属性,身份,类型,值(ID,type,value)除了值之外其他两个都是只读的如果对象支持更新操作,那么他的值就是可改变的,否也是只读的5-2def mul(a,b):m=a*breturn(m)x=int(input('x='))y=int(input('y='))print(mul(x,y))5-3def grade(a):if a>100 or a<0:print("error,please,input your score between 1 to 100") elif a>=90:print("A")elif a>=80:print("B")elif a>=70:print("C")elif a>=60:print("D")else:print("F")while True:x=int(input("Enter your score:"))if x==0:breakelse:grade(x)5-4def ly(y):if (y%100!=0 and y%4==0) or y%400==0: print('%d is leap year' % y)else:print('%d is not leap year' % y)while True:x=int(input('Enter the year:'))if x==0:breakelse:ly(x)5-5def cd(m0):if m0<0 or m0>1:print('Error,请输入0到1之间的金额')else:m=m0*100a=m/25a1=m%25b=a1/10b1=a1%10c=b1/5c1=b1%5d=c1print('%f美元=25美分x%d+10美分x%d+5美分x%d+1美分x%d' % (m0,a,b,c,d))while True:m0=float(input('请输入金额:'))if m0==0:breakelse:cd(m0)5-6while True:s=input('请输入要计算的式子:\n')if s==0:breakelse:if s.find('*')!=-1:ls=s.split('*')print(float(ls[0])*float(ls[1])) elif s.find('+')!=-1:ls=s.split('+')print(float(ls[0])+float(ls[1])) elif s.find("^")!=-1:ls=s.split("^")print(float(ls[0])**float(ls[1])) elif s.find('/')!=-1:ls=s.split('/')print(float(ls[0])/float(ls[1])) elif s.find('%')!=-1:ls=s.split('%')print(float(ls[0])%float(ls[1])) 5-8import mathdef sqcu():a=float(input('输入正方形或立方体的边长:'))print('边长为',a,'的正方形面积是',round(a*a,3))print('边长为',a,'立方体体积是',a**3)def cisp():r=float(input('输入圆或球的半径:'))print('半径为',r,'的圆面积是',round(math.pi*(r**2),3))print('半径为',r,'的球的体积是',round(math.pi*(r**3)*4/3,3)) sqcu()cisp()5-10def FtoC():f=float(input('输入华氏温度:'))c=(f-32)*(5/9)print(f,'华氏度等于',round(c,3),'摄氏温度')FtoC()5-11def evod():e=[]o=[]for i in range(21):if i%2==0:e.append(i)else:o.append(i)print('偶数:',e,'\n奇数:',o)def judiv():a,b=int(input('enter the first number:')),int(input('enter the second number:')) if a%b==0:print(a,'能被',b,'整除')else:print(a,'不能被',b,'整除')evod()judiv()5-13def hmtom():hm=input("输入时间(格式'hh:mm'):")lhm=hm.split(':')m=float(lhm[0])*60+float(lhm[1])print(m)hmtom()5-15def gcd():a,b=int(input('a=')),int(input('b='))t1,t2=a,bwhile b!=0:if a<b:< p="">a,b=b,aelse:a,b=b,a%bprint('最大公约数是%d,最小公倍数是%d' % (a,t1*t2/a)) gcd() 5-16def payment():s=float(input('Enter opening balance:'))p=float(input('Enter monthly payment:'))print("Pymt# Paid Remaining Balance")print("------- ------- -----------")n=0print(n," ",p," ",round(s,2))while s>=p:s=s-pn=n+1print(n," ",p," ",round(s,2))print(n," ",round(s,2)," ",p)while True:payment()5-17import randoml=[]i=0N=random.randint(2,100) while i<="" p="">n=random.randint(0,2**31)l.append(n)i+=1print(l)print('\n')for x in range(len(l)):for y in range(x,len(l)): if l[x]<l[y]:< p="">l[y],l[x]=l[x],l[y] print(l) </l[y]:<></b:<></len(s):<>。
defloop(f,t,i):
'''8-2输入3个数字,从f计数到t,i为步长'''
forninxrange(f,t+1,i):
printn,
defisprime(num):
'''8-4输入数字,返回是否是素数'''
#素数表示只能被1和本身整除的数,所以在count>1的情况下如果都无法除尽,
那么就是素数
#count为什么要num/2呢?
#因为2是最小的偶数,获得的值就是num的最大可能被除的数,
#num不可能被一个比2
更小的整数除,
#因为如果是1,那么就反应不出(素数也可以被1整除),而如果大于2则是无不能
确定,如果是3,而输入是4,无疑效率会变得更低?
#更容易理解的是1
的时候是
不可能被除尽的,这些循环是多余的
count=num/2
whilecount>1:
ifnum%count==0:
returnFalse
count-=1
returnTrue
defgetfactors(num,addself=True):
'''8-5返回数所有的约数,包括1和它本身'''
#addself
表示,约数中是否包含它本身
count=num/2
factors=[]
ifaddself:factors=[num]
whilecount:
ifnotnum%count:
factors.append(count),
count-=1
returnfactors
defprimesplit(num):
'''8-6素因子分解'''
#所谓素因子分解就是将num分解成几个素数相乘
#我们要求的就是哪几个素数乘积为num
,显示这几个素数
#比如num=20返回[2,2,5]
#分析首先,如果输入的num是素数,那么返回的就是1和它本身
#如果不是素数,那么获得他的约数,约数中2肯定是有的,关键是几个2
的问题
咯?
#这里会用到上面的isprime和getfactors函数
re=[]
ifisprime(num):re=[1,num]
else:
#素数一定是从2
开始的
prime=2
count=num/2
#素数一定是小于num/2
的
whileprime
num/=prime
re.append(prime)
continue
prime+=1
returnre
defisperfect(num):
'''8-7全数就是他的约数之和为它本身,比如6的约数是1,2,31+2+3=6'''
ifisprime(num):return0
else:
ifsum(getfactors(num,False))==num:return1
return0
deffactorial(num,step=1):
'''8-8阶乘'''
#阶乘就是返回num!就是1到num所有数的乘积,例如6!1*2*3*4*5*6
#add表示的是阶层的步进,默认是1
#0的阶乘是1
#负数没有阶乘
#
小数没有阶乘
ifnotfloat(num).is_integer():returnFalse
ifnum<0:returnFalse
ifnum==0ornum==1:return1
else:
re=1
foriinxrange(1,num+1,step):
re*=i
returnre
deffibonacci(num):
'''8-9fibonacci数列,给定num返回第num个的值'''
#fibonacci数列形如1,1,2,3,5,8,13,21
#也就是说下一个值是数列前2个和
ifnum<1orint(num)!=num:returnFalse
ifnum==1:return1#第一个其实是没规律的,只返回一个1
,从第二个开始就是
0+1,1+1...
#分析:
#第0个是0
#第1个是1
#第二个是1+01
#第三个是1+12
#第四个是2+13
#第五个是2+355=3+2
#从这样看,其实第2个,应该是第三个,因为第0
个也是一个
#我在这里是这样分析的,既然要求第N个,我们知道N是N-1和N-2的和,那
么我们需要在运行中保存
#N-1和N-2这两个临时变量N-2我设为N1,N-1我设为N2
re=0#第0位是0
foriinxrange(num-1):
ifre==0:N1,N2=0,1
re=N1+N2
N1,N2=N2,re
returnre
defcounteng(string):
'''8-10统计一下一句话中元音,辅音,和单词的个数,忽略元音和辅音等特殊情况'''
#所谓特殊情况就是某些单词用元音开头,但是不发元音,有些单词辅音开头但是
发元音
#如果要处理这些特殊单词,那么需要有特殊单词表或者规律,这个我就不做了,
不难实现
#思路:匹配单词,如果符合特殊规则或者单词表,那么元音[辅音]数量相应减1
或
者加
1
#我这里只要处理a,e,i,o,u的个数即可
#所谓单词数,特别是英文中,比较容易,只要用空格分隔就可
words=len(string.split())
string=string.upper()#换成大写,方便一点
yuans=fus=0
#
统计元音数
foriinstring:
#只处理那啥字母,不处理特殊符号
#大写元音的ord是65,69,73,79,85
#大写字母即ord65-90
n=ord(i)
ifninxrange(65,91):
ifnin[65,69,73,79,85]:
yuans+=1
else:
fus+=1
return[yuans,fus,words]
definname():
'''8-11文本处理,输入英文名格式:LastName,Firstname
如果输入的格式是FirstnameLastName(也就是没有逗号)
那么互换位置,提示错误,记录错误数
输入完毕后,显示名字列表
'''
#分析,书中首先要求用户输入要输入名字的数量,这个不自然,我改成输入q则
退出
print'输入英文名字,格式如名,姓\n输入q则退出'
names=[]
error=0
whileTrue:
name=raw_input('请输入姓名:').strip().split(',')
ifname[0]=='':continue
iflen(name)==1:
ifname[0].lower()=='q':break
error+=1
print'格式错误...正确应该是名,姓\n你已经错了%d次。修复输入...\n'%error
name=name[0].split()
name=name[1]+','+name[0]
else:
name=name[0].strip()+','+name[1].strip()
names.append(name)
foriinnames:
printi
defout():
'''8-12输入整数1,整数2,显示一张表格,包括十进制,二进制,八进制,十六进
制和ASCII'''
#ASCII中0-32127这34
个是控制符,不用输出
#超过127的数字也不用输出,因为没有对应的ASCII
num1=int(raw_input('Enterbeginvalue:').strip())
num2=int(raw_input('Enterendvalue:').strip())
#这里的dl,bl,ol,hl,al表示每一列的宽度
dl,bl,ol,hl,al=\
len(str(num2))+5,len(bin(num2))+3,len(oct(num2))+4,len(hex(num2))+3,5
#输出标题,居中
print
'DEC'.center(dl),'BIN'.center(bl),'OCT'.center(ol),'HEX'.center(hl),'ASCII'.center(al)
#输出横线
print'-'*(sum([dl,bl,ol,hl,al])+5)
ascii=''
foriinxrange(num1,num2+1):
#Ascii只有在这个区间内才显示
if32print
str(i).center(dl),bin(i)[2:].center(bl),oct(i)[1:].center(ol),hex(i)[2:].center(hl),ascii.center(
al)
ascii=''