程序设计基础Python语言习题参考答案周翔 版.docx
《程序设计基础Python语言习题参考答案周翔 版.docx》由会员分享,可在线阅读,更多相关《程序设计基础Python语言习题参考答案周翔 版.docx(14页珍藏版)》请在冰豆网上搜索。
程序设计基础Python语言习题参考答案周翔版
程序设计基础(Python语言)
习题参考答案
习题1
一、选择题
1
2
3
4
5
6
7
8
9
10
C
A
B
A
D
B
A
A
A
B
二、问答题
1.Python语言是吉多·范·罗苏姆开发的,具有特点如下:
(1)解释执行
(2)面向对象
(3)开源性
(4)易用性
(5)可读性强
(6)可扩展性
(7)丰富的基础代码库
(8)成熟的扩展库
2.Python的主要应用领域
(1)Web开发
(2)网络编程
(3)科学计算与数据可视化
(4)数据库应用
(5)多媒体开发
(6)电子游戏应用
三、程序设计题
1.略
2.
>>>print('hello,world')
3.
(1)在IDLE中,“File”-“NewFile”
(2)输入代码
print('请输入您的姓名:
')
name=input()
print(name,’欢迎您开启Python之旅!
’)
(3)“File”-“保存”,输入文件名、选择保存路径,保存文件。
(4)“Run”-“RunModule”,运行程序。
习题2
一、选择题
1
2
3
4
5
6
7
8
9
10
D
C
D
D
A
D
C
A
D
D
二、填空题
1.-7.700000e+01
2.0.0043
3.1.0
三、程序设计题
1.
x=2.3e+3-1.34e-3j
a=x.real
b=x.imag
print('实部为:
',a,'虚部为:
',b)
print('实部为:
{:
.2f},虚部为:
{}'.format(a,b))
2.
a=eval(input("请输入秒数:
"))
h=a//3600
m=(a%3600)//60
s=a%60
print('{:
0>2}:
{:
0>2}:
{:
0>2}'.format(h,m,s))
3.
x=eval(input("请输入一个三位数:
"))
b=x//100
s=(x%100)//10
g=x%10
print('百位数是',b,'十位数是',s,'各位数是',g)
习题3
一、选择题
1
2
3
4
5
6
7
8
9
10
B
B
B
C
C
A
C
B
D
D
二、填空题
1.2
2.【填空1】x+y+z>=240and(x>=90ory>=90orz>=90)
3.【填空1】if,【填空2】:
,【填空3】d=0.8,【填空4】else
4.【填空1】s=1,【填空2】i=2,【填空3】i<=10,【填空4】s*=i,【填空5】i+=1
5.【填空1】range,【填空2】1000,【填空3】//,【填空4】%,【填空5】==
三、程序设计题
1.参考代码如下:
x=int(input("请输入你的成绩:
"))
ifx>=90:
msg="你是学霸的!
"
else:
msg="请继续努力!
"
print(msg)
2.参考代码如下:
importmath
TempStr=input('Pleaseenteranangleorradianwithunits:
')
x=eval(TempStr[0:
-1])
ifTempStr[-1]in['A','a']:
y=x*math.pi/180
print('Afterconvert,theradianis{:
.2f}R'.format(y))
elifTempStr[-1]in['R','r']:
y=180*x/math.pi
print('Afterconvert,theangleis{:
.2f}A'.format(y))
else:
print('Theinputdata\'sformatisincorrect.')
3.参考代码如下:
importrandom
number=random.randint(1,3)
usernum=int(input("请输入剪刀
(1)、石头
(2)、布(3)后面的数字:
"))
print("电脑出的是",number)
x=usernum-number
ifx==0:
msg='平局'
elifxin[-2,1]:
msg='玩家赢'
else:
msg='玩家输'
print(msg)
4.参考代码如下:
s=0
t=1
i=1
whilet>10**(-6):
t=1/(i**2)
s+=t
i+=2
pi=(s*8)**0.5
print('π的近似值为:
',pi)
5.参考代码如下:
forminrange(2,101):
i=2
foriinrange(2,m):
ifm%i==0:
break
ifnot(iprint('{}是素数'.format(m))
6.参考代码如下:
d=1
s=1020
whiles>0:
s=s-(s/2+2)
d=d+1
print('需要{}天卖完。
'.format(d))
7.参考代码如下:
f=eval(input('请输入父亲的生日数:
'))
m=eval(input('请输入母亲的生日数:
'))
c=eval(input('请输入你的生日数:
'))
psword=0
forpsinrange(100000,1000000):
ifps%f==0andps%m==0andps%c==0:
psword=ps
break
print('你的6位数密码是:
',psword)
8.参考代码如下:
n=eval(input('请输入一个正整数:
'))
forainrange(1,n+1):
forbinrange(a+1,n+1):
forcinrange(b+1,n+1):
ifa**2+b**2==c**2:
print(a,b,c,"是一组勾股数。
")
9.参考代码如下:
略
10.参考代码如下:
略
习题4
一、选择题
1
2
3
4
5
6
7
8
9
10
C
C
C
D
C
B
C
C
A
B
二、填空题
1.【填空1】input,【填空2】s,【填空3】upper(),【填空4】m,【填空5】‘*’
2.【填空1】0,【填空2】for,【填空3】in,【填空4】if,【填空5】else
3.【填空1】randint,【填空2】pop,【填空3】0,【填空4】x,【填空5】a
三、程序设计题
1.参考代码如下:
importrandom
li=[]
foriinrange(0,100):
x=random.randint(70,100)
li.append(x)
print(li[i],end="")
if(i+1)%10==0:
print()
x=min(li)
print('最小数是{},位置在{}'.format(x,li.index(x)))
2.参考代码如下:
cj=[]
foriinrange(10):
a=eval(input('请输入一个成绩'))
cj.append(a)
print('这10个学生的成绩为:
',cj)
s=0
forxincj:
s=s+x
ave=s/len(cj)
cha=abs(cj[0]-ave)
mincha=cha
minzhi=cj[0]
forxincj:
cha=abs(x-ave)
ifchaminzhi=x
mincha=cha
print('平均成绩为{}最接近平均成绩的是{}:
'.format(ave,minzhi))
3.参考代码如下:
importmath
a=[33,76,89,21,10,44,57,69,28,71]
s=0
foriinrange(len(a)):
s=s+a[i]
ave=s/len(a)
sdev=0
foriina:
sdev=sdev+(i-ave)**2
jz=math.sqrt(sdev/(len(a)-1))
a.sort()
x=len(a)
ifx%2==0:
med=(a[len(a)//2-1]+a[len(a)//2])/2
else:
med=a[len(a)//2]
print('平均值为{},标准差为{},中位数为{}'.format(ave,jz,med))
4.参考代码如下:
addressdict={'Anna':
'巴音布鲁克','Ray':
'广州','Jack':
'西安'}
print(addressdict)
5.参考代码如下:
cat={'breed':
'Persian','owner':
'Jack'}
dog={'breed':
'Shepherd','owner':
'Ray'}
rabbit={'breed':
'lop','owner':
'Anna'}
pets={'pet1':
cat,'pet2':
dog,'pet3':
rabbit}
print(pets)
习题5
一、选择题
1
2
3
4
5
6
7
8
9
10
B
C
A
A
B
A
B
D
B
C
二、读程序题
1
2
3
4
5
C
A
C
C
D
三、程序设计题
1.参考代码如下:
defjc(n):
s=1
foriinrange(1,n+1):
s=s*i
returns
sum=0
forjinrange(1,11):
sum=sum+1/jc(j)
print(sum)
2.参考代码如下:
defqh(ls,n):
sum=0
forkinrange(0,n):
sum=sum+ls[k]
returnsum
li=[33,76,89,21,10,44,57,69,28,71]
print('前3个元素之和为',qh(li,3))
print('前6个元素之和为',qh(li,6))
print('全部元素之和为',qh(li,len(li)))
3.参考代码如下:
deffunc(a,*b):
foriteminb:
a*=item
returna
m=1
print(func(m,1,1,2,3,5,7,12,21,33))
4.参考代码如下:
defbasic_compute(x,y,operater):
ifoperater=='+':
z=x+y
elifoperater=='-':
z=x-y
elifoperater=='*':
z=x*y
elifoperater=='/':
ify!
=0:
z=x/y
else:
z='Inputerror!
'
else:
z='Inputerror!
'
returnz
try:
a=eval(input('请输入x的数值:
'))
b=eval(input('请输入y的数值:
'))
ot=input('请输入运算符号:
')
print(basic_compute(a,b,ot))
except:
print('Inputerror!
')
5.参考代码如下:
deff(n):
ifn==0orn==1:
a=1
else:
a=f(n-1)+f(n-2)
returna
num=eval(input("请输入一个整数:
"))
print(f(abs(num)))
习题6
一、选择题
1
2
3
4
5
6
7
8
9
10
B
C
D
D
B
B
D
D
D
C
二、程序设计题
1.参考代码如下:
importrandom
s=''
foriinrange(1,100):
x=random.randint(97,122)
ifchr(x)notins:
s+=(chr(x))
iflen(s)==26:
break
withopen('d:
\\examofpy\\wenjian\\char.txt','w')asf:
f.write(s)#写出字符串
2.参考代码如下:
importcsv
li=[]
withopen('d:
\\examofpy\\wenjian\\scores.csv',newline='')asf:
#打开文件
f_csv=csv.reader(f)#创建csv.reader对象
headers=next(f_csv)#标题
forrowinf_csv:
li.append(row)
c=0
m=0
e=0
forkinli:
c=c+int(k[4])
m=m+int(k[5])
e=e+int(k[6])
cave=c/len(li)
mave=m/len(li)
eave=e/len(li)
print(cave,mave,eave)
headers=['语文平均分','数学平均分','英语平均分']
rows=[(str(cave),str(mave),str(eave))]
withopen('d:
\\examofpy\\wenjian\\aver.csv','w')asf:
f_csv=csv.writer(f)#创建csv.writer对象
f_csv.writerow(headers)#写入1行(标题)
f_csv.writerows('\n')
f_csv.writerows(rows)
习题7
1、创建一个Point类,它表示某个点的X和Y坐标的有序数值对。
X和Y的值在实例化是传入到构造器。
如果缺失某个坐标值,则自动设置为0。
重写__str__函数,将X和Y的值以(X,Y)显示出来。
#-*-coding:
utf-8-*-
#习题7.1
classPoint:
"""Point类
"""
def__init__(self,x=0,y=0):
self.x=x
self.y=y
def__str__(self):
return"({},{})".format(self.x,self.y)
2、创建一个堆栈类Stack。
堆栈是--种具有后进先出(last-in-first-out,LIFO)特性的数据结构。
Stack类要实现isempty()方法来判断堆栈是否为空,为空返回True,否则返回False;push()方法来往堆栈压入一个元素;pop()方法来从堆栈中取出一个元素(应该是最后压入堆栈的元素)。
#-*-coding:
utf-8-*-
#习题7.2
classStack():
"""Stack栈
"""
def__init__(self):
self._stack=[]
defisempty(self):
iflen(self._stack)==0:
returnTrue
else:
returnFalse
defpush(self,x):
self._stack.append(x)
defpop(self):
x=self._stack[-1]
delself._stack[-1]
returnx
习题8
1、创建一个0~1,间隔为0.01的数组1和服从正态分布的100个随机数的数组2,并对这两个数组进行加减运算。
arr1=np.arange(0,1,0.01)
arr2=np.random.randn(100)
result1=arr1+arr2
result2=arr1-arr2
2、随机生成两个4×4的矩阵,并计算矩阵的乘积。
arr1=np.random.random((4,4))
arr2=np.random.random((4,4))
result1=arr1*arr2
3、绘制笛卡尔心形线。
笛卡尔心形线是指当一个圆沿着另一个半径相同的圆滚动时,圆上一点的轨迹就是笛卡尔心形线。
使用Numpy和matplolib绘制出笛卡尔心形线。
importmatplotlib.pyplotasplt
importnumpyasnp
"""采用极座标方程式r=a*(1-sin(t))
"""
t=np.linspace(0.0,2*np.pi,1000)
a=6
r=a*(1-np.sin(t))
plt.subplot(polar=True)
plt.plot(t,r,c='r')
plt.show()
习题9
1、读取鸢尾花的csv数据文件,增加一列数据:
SepalRatio,其值为df['Sepal.Width']/df['Sepal.Length']。
将数据按SepalRatio的降序进行排序,并将排好序的数据以Excel文件形式进行保存。
importpandasaspd
df=pd.read_csv("iris.csv",index_col=0)
df['SepalRatio']=df['Sepal.Width']/df['Sepal.Length']
df.sort_values("SepalRatio",ascending=False,inplace=True)
df.to_excel("iris_rt01.xlsx")
2、查看上题数据的ndim,shape,size,memory_usage。
print(df.ndim,df.shape,df.size)
print(df.memory_usage())
3、按鸢尾花的种类进行分组,分别统计其中位数、标准差和方差。
print(df.groupby("Species").median())
print(df.groupby("Species").std())
print(df.groupby("Species").var())