第一章习题
1.1 Python语言有哪些特点和缺点?
Python支持命令式编程、函数式编程,完全支持面向对象程序设计,语法简洁清晰,并且拥有大量的几乎支持所有领域应用开发的成熟扩展库。 Python为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容。用Python开发,许多功能不必从零编写,直接使用现成的即可。除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。 Python同时也支持伪编译将Python源程序转换为字节码来优化程序和提高运行速度,可以在没有安装Python解释器和相关依赖包的平台上运行。 任何编程语言都有缺点,Python缺点主要有: (1)运行速度慢。 (2)代码不能加密。 (3)用缩进来区分语句关系的方式还是给很多初学者带来了困惑。最常见的情况是tab和空格的混用会导致错误。
1.2 Python基本输入输出函数是什么?
用Python进行程序设计,输入是通过input( )函数来实现的, input( )的一般格式为:x=input(‘提示:’) 该函数返回输入的对象。可输入数字、字符串和其它任意类型对象。 Python 3.7中使用print()函数进行输出。
1.3 如何在IDLE中运行和调试Python程序?
在“Python Shell”窗口中单击“Debug”菜单中的“Debugger”菜单项,就可以启动IDLE的交互式调试器。这时,IDLE会打开的“Debug Control”窗口,并在“Python Shell”窗口中输出“[DEBUG ON]”并后跟一个“>>>”提示符。这样,我们就能像平时那样使用这个“Python Shell”窗口了,只不过现在输入的任何命令都是允许在调试器下。 我们可以在“Debug Control”窗口查看局部变量和全局变量等有关内容。
1.4 为什么要在程序中加入注释?怎么在程序中加入注释?
一个好的、可读性强的程序一般包含20%以上的注释 方法一:以#开始,表示本行#之后的内容为注释。 #循环输出0到9数字 for i in range(10): print (i, end=’ ‘) 方法二:包含在一对三引号’‘’…‘’'或"“”…“”"之间且不属于任何语句的内容将被解释器认为是注释。
第二章习题
2.1 Python数据类型有哪些?分别什么用途?
Python 数值类型用于存储数值。整型(int) :通常被称为是整型或整数,是正或负整数,不带小数点。长整型(long) :无限大小的整数,整数最后是一个大写或小写的L。在Python3里,只有一种整数类型 int,没有Python2 中的 Long。浮点型(float):浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.78e2就是2.78 x 102 = 278)复数(complex):复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的虚部以字母j或J结尾。如:2+3j。
2.2 把下列数学表达式转换成等价的Python表达式。
(1)
import math a,b,c=1,3,1 expression=(-b+math.sqrt(bb-4ac))/2a print(expression)
(2)
x,y,a=1,2,3 expression2 = (xx+yy)/(2aa) print(expression2)
(3)
x,y,z=1,2,3 expression3=(x+y+z)/math.sqrt(x3+y3+z**3) print(expression3)
(4)
a,c,d=1,2,3 expression4=(3+a)**2/(2c+4d) print(expression4)
(5)
x,y=1,2 expression5=2*math.sin((x+y)/2)*math.cos((x-y)/2) print(expression5)
2.3 数学上 3小于x小于10 表示成正确的Python表达式为?
(x>3)and(x<10)
2.4 计算下列表达式的值(可在上机时验证),设a=7,b=-2,c=4。
(1)3 * 4 ** 5 / 2:1536_ (2)a * 3 % 2:1_ (3)a%3 +bb- c//5:5_ (4)b**2-4a*c:_-108__
2.5 求列表s=[9,7,8,3,2,1,55,6]中的元素个数,最大数,最小数?如何在列表s中添加一个元素10?如何从列表s中删除一个元素55?
(1)元素个数:print(len(s)) (2)最大数:print(max(s)) (3)最小数:print(min(s)) (4)添加元素:s.append(10) (5)删除指定元素:s.remove(55)
2.6 元组与列表主要区别?s=(9,7,8,3,2,1,55,6)能添加元素吗?
元祖不能添加元素,列表可以添加元素。元组元素不能修改,但元组可以连接另一个元组,组成一个新元组。
2.7 已知有列表lst=[54,36,75,28,50],请完成以下操作?
(1)列表尾部插入元素52: lst.append(52) (2)在元素28前面插入66:lst.insert(3,66) (3)删除并输出28:print(lst.pop(3)) (4)将列表按降序排序:lst.sort(reverse=True) (5)清空整个列表:lst.clear()
2.8 三个集合,python={…………},java={…………},C={…………},求:
(1)只会python不会C的人:(Python-C) (2)3种语言都会的人:(python&Java&C) (3)差并交:-,|,&
第三章习题
3.1 输入一个整数n,判断其能否同时被5和7整除,如能则输出“xx能同时被5和7 整除”,否则输出“xx不能同时被5和7 整除”。要求“xx”为输入的具体数据。
a=int(input(“请输入整数:”)) if a%5 == 0 and a%7 == 0: print(a,“能被5,7同时整除”) else:print(a,“不能被5,7同时整除”)
3.2 输入一个百分制的成绩,经判断后输出该成绩的对应等级。其中,90分以上为“A”,80~ 89分为“B”,70~ 79分为“C”,60~69分为“D”,60分以下为“E”。
a=int(input(“请输入整数:”)) if a>=90: print(‘A’) elif a>79 and a<90: print(‘B’) elif a > 69 and a < 80: print(‘C’) elif a > 59 and a < 70: print(‘D’) else:print(‘E’)
3.3 某百货公司为了促销,采用购物打折的办法。1000元以上者,按九五折优惠;2000元以上者,按九折优惠;3000元以上者,按八五折优惠;5000元以上者,按八折优惠。编写程序,输入购物款数,计算并输出优惠价。
a=input(“”) a=int(a) if a>=5000: print(“优惠价为:”,a0.8) elif a>=3000: print(“优惠价为:”,a0.85) elif a>=2000: print(“优惠价为:”,a0.9) elif a>=1000: print(“优惠价为:”,a0.95) else: print(“没有优惠哦! 价格为:”,a)
3.4 编写一个求整数n阶乘(n!)的程序。
n=int(input(“请输入整数n:”)) s,i=1,1 while i<=n: s=s*i i=i+1 print(s)
3.5利用while循环创建一个包含10个奇数的列表,然后计算该列表的和与平均值。
lst=[]
for i in range(20):
if i%2 !=0:
lst.append(i)
sum1=sum(lst)
sumAve=sum1/10
print(lst,sum1,sumAve)
3.6 编写程序,求1!+3!+5!+7!+9!。
i,s,ss = 1,1,0 for n in range(10): if n%2!=0: while i<=n: s=s*i i=i+1 ss=ss+s print(ss)
3.7 计算公式s的值,s =1 + (1 + 2) + (1 + 2 + 3) + … + (1 + 2 + 3 + … + n)
编写程序,计算下列公式中s的值(n是运行程序时输入的一个正整数)。 s =1 + (1 + 2) + (1 + 2 + 3) + … + (1 + 2 + 3 + … + n)
s,m,ss=0,1,0 n=int(input(“请输入一个正整数:”)) while m<=n: s=s+m m=m+1 ss=s+ss print(ss)
3.8 枚举法:“百马百瓦问题”
有100匹马驮100块瓦,大马驮3块,小马驮2块,两个马驹驮1块。问大马、小马、马驹各有多少匹?
思路:用嵌套循环来做,要注意前后两个条件的关系,以及两个马驹托一个瓦的条件。 for i in range(34): for j in range(51): k=100-i-j if 3i+2j+k/2100 and k%20 : print(“大马有:”,i,“小马有:”,j,“马驹有:”,k)
3.9 斐波那契函数问题
有一个数列,其前三项分别为1、2、3,从第四项开始,每项均为其相邻的前三项之和的1/2,问:该数列从第几项开始,其数值超过1200。
lst=[1,2,3] for i in range(100):#建立一个i到100的for循环 if i>2: #到第三项时候 推出第四项 x=(lst[i-1]+lst[i-2]+lst[i-3])/2 lst.append(x)#将第四项添加到列表末尾 if x>1200:#内部判断那一项大于1200的时候跳出循环 print(i) break
4.10 找出1与100之间的全部“同构数”。
“同构数”是这样一种数,它出现在它的平方数的右端。例如,5的平方是25,5是25中右端的数,5就是同构数,25也是一个同构数,它的平方是625。
**解:**只要是和100取余,则会剩下个位和十位 for i in range(1,101): x=i*i if i<10: if x%10i: print(i) elif i<100: if x%100i: print(i)
4.11 猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半再加一个。到第10天早上想再吃时,发现只剩下一个桃子了。求第一天共摘了多少个桃子。
采用逆向思维:从后往前推。 x2 = 1 for i in range(9,0,-1): x1=(x2+1)*2 x2=x1 print(x1)
4.12 输入一个字符串,然后依次显示该字符串的每个字符以及该字符的Ascii码。
str=input("请输入一个字符串……")
lst=[0]*len(str)
i = 0
for x in str:
lst[i]=ord(x)
i=i+1
print(lst)
4.13 开发猜数字小游戏,计算机随机生成100以内的数字,玩家猜大或猜小都给出提示,直至猜中,同时统计猜测次数。
import random
i=0
secret = random.randint(1, 101)
while 1:
guess=int(input("请输入100以内的数字:"))
if guess>secret:
print("猜大了……")
i=i+1;
elif guess<secret:
print("猜小了……")
i=i+1;
elif guess==secret:
print("猜对了……")
i=i+1;
print("你共猜了",i,"次")
break
3.14 枚举法:已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。
for a in range(1,10):
for b in range(1,10):
for c in range(1,10):
if (a*100+b*10+c+c*100+b*10+a)==1333:
print(a,b,c)
4.1 将华氏温度转换为摄氏温度
编写一个函数,将华氏温度转换为摄氏温度。公式为C=(F-32)×5/9。
def revert(f):
c=(f-32)*5/9
return c
print(revert(99))
4.2 编写一个函数判断一个数是否为素数,并通过调用该函数求出所有三位数的素数。
def sushu(a,b):
for i in range(a,b):
n=True
for j in range(2,i):
if i%j==0:
n=False
break
if n==True:
print(i)
sushu(1,1000)
|