下列哪些是合法的变量名
A、6a2b、aBc、abc-123、ab_123、_ _、hello world
合法:A、aBc、ab_123
思考题:#TempConvert_1.py
让用户输入摄氏度C,输入对应的华氏度F
公示:F = C *1.8 + 32
样例:
请输入摄氏度:25
25对应的华摄度为:77.0
C = eval(input("请输入摄氏度:"))
F = C * 1.8 + 32
print(C,"对应的华摄度为:",F)
程序结果:
请输入摄氏度:25
25 对应的华摄度为: 77.0
1.语句a=(3/4)+3%2
;运行后,a的值为( )。a=0.75+1=1.75
2.若x=3.5;z=8
则x+z%3/4
的值为( ). 3.5+(8%3)/4=3.5+8%3/4=3.5+2/4=3.5+0.5=4.0
3.设f=g=2.0,使f为4.0的表达式是( ). D
A. f/=g*10
# f=f/(g*10)=2/20=0.1
B. f-=g+2
# f=f-g-2=-2
C. f*=g-6
# f=f*(g-6)=2 *(2-6)=-8
D. f+=g
# f= f+g=4
x=1,x*=3+5**2
的值为( ) x*=x*(3+25)=1*28=28思考与练习
请将下面数学表达式用Python写出来,并运算结果。
1. x = ( 2 4 + 7 − 3 × 4 ) 5 x=\frac{(2^4+7-3\times4)}{5} x=5(24+7−3×4)
2. x = ( 1 + 3 2 ) × ( 16 m o d 7 ) / 7 x=(1+3^2)\times(16 mod 7)/7 x=(1+32)×(16mod7)/7
>>> x=(2**4+7-3*4)/5
>>> x
2.2
>>> x=(1+3**2)*(16%7)/7
>>> x
2.857142857142857
思考
1.让用户输入一个值赋值给x,判断x是否为’男‘
2.让用户输入一个值赋值给x,判断x是否在[0,100]间
>>> x=input("")
>? 男
>>> x == "男"
True
>>> x=int(input())
>? 45
>>> 0<=x<=100
True
1.若希望当a的值为奇数时,表达式的值为“真”,a的值为偶数时,表达式的值为“假”。则不能满足要求的表达式是( ) C
A. a%2 ==1
B. not a%2 == 0
C. not a%2 # not 8%2 = True not 9%2 =False
D. a%2
2.判断t是否为闰年。闰年的条件:年份t能被400整除,或者能被4整除但不能被100整除。
t = eval(input("请输入年份:"))
if t%400==0 or t%4==0 and t%100!=0:
print(str(t)+"年是闰年")
else:
print(str(t)+"年不是闰年")
思考
Exer1:用户输入一个三位自然数,计算并输出其百位、十位和个位上的数字。
x = int(input("请输入一个三位自然数:"))
a = x//100
b = (x-a*100)//10
c = x-a*100-b*10
print("百位数字为:"+str(a),"十位数字为:"+str(b),"个位数字为:"+str(c))
程序结果:
请输入一个三位自然数:324
百位数字为:3 十位数字为:2 个位数字为:4
x=int(input()) # 324
a=x//100 # 3
b=x//10%10 # 324//10 = 32 32%10=2
c=x%10 # 324%10=4
print(a,b,c)
i=input("请输入一个三位自然数:")
print("百位数字为"+i[0])
print("十位数字为"+i[1])
print("个位数字为"+i[2])
x=int(input('请输入一个三位数:'))
a,b=divmod(x,100)
b,c=divmod(b,10)
print(a,b,c)
x=input("请输入一个三位数:")
a,b,c=map(int,x)
print(a,b,c)
思考1:A=“5”+“8” A的值是多少? ’ 58’
思考2:name=”志存高远、脚踏实地“;name[5:]、name[0:-1]、name[:5]、name[0:-5]的值分别是多少?
>>> name="志存高远、脚踏实地"
>>> name[5:]
'脚踏实地'
>>> name[0:-1]
'志存高远、脚踏实'
>>> name[:5]
'志存高远、'
>>> name[0:-5]
'志存高远'
思考题:
下列代码的结果为:
>>>x='aaa bb c d e fff '
>>>b=','.join(x.split()) # x.split=['aaa','bb','c','d','e','fff']
>>>b
?
>>>b.replace("c",'cc').upper() # replace=> 'aaa,bb,cc,d,e,fff'=>upper
结果:
'aaa,bb,c,d,e,fff'
'AAA,BB,CC,D,E,FFF'
测试题:
复数 z,_________________________________可获得它的实数部分。 z.real
下面类型中,Python不支持的数据类型有( ) A.double
A.double B.int C.float D.list
A.变量不必事先声明
B.变量无须先创建和赋值而直接使用
C.变量无须指定类型
D.可以使用del释放资源
4.下列表达式的值为True的是( ) C
A.5<3>1 B.3>2>2 C.5%2 D.‟abc‟ > “xyz‟
5.下列表达式的值为True的是( ) C
A.(2**=3)<(2*=3)
# 2**=3
2=2^3 x 正常写应该为 a**=2
a=a^2
;
B.3>2 and 5<2
C.1==1 and 2!=1
D.not(1==1 and 0!=1) #括号里头为True但加上 not则为False
6.a=3*4**2/8%5,a的值是 1 a=3 * 4 * * 2/8%5=3 * 4^2/8%5=3 * 16/8 %5=6 % 5 =1
7.判断t是否为润年。润年的条件:年份t能被400整除,或者能被4整除但不能被100整除
(t%400==0) or (t%4==0 and t%100 !=0)
8.x=3;y=4;z=5下面选项中哪个值为True( ) B
A. x and y B.x<=y C. z or x D.not x A.4 ;B.True; C.5;D.False
( and 取后面的数无论大小 or 取前面的数无论大小)
9.请将下面数学表达式用Python写出来,并运算结果x=(2^4+7-3×4)/5
x=(2^4+7-3*4)/5=(16+7-12)/5=(23-12)/5=1111/5=2.2
10.请将下面数学表达式用Python写出来x=(1+3^2)×(16 mod 7)/7
x=(1+3^2)*(16%7)/7=(1+9)*(2)/7=(10)*2/7=20/7=2.857142
思考eg4_1:从键盘输入圆的半径,如果半径大于等于0,则计算并输出圆的面积和周长。
import math
r=eval(input("请输入圆的半径:"))
if r>=0:
p=math.pi
s=p*pow(r,2)
l=2*p*r
print("面积为:"+str(s))
print("周长为:"+str(l))
else:
print("输入的圆半径有误!")
思考4-2:从键盘输入年份t,如果年份t能被400整除,或者能被4整除但不能被100整除,则输出”t年是闰年“,否则输出”t年不是闰年“,t用输入的年份代替。
t=eval(input("请输入年份t:"))
if t%400==0 or (t%4==0 and t%100!=0):
print(t,"年是闰年")
else:
print(t,"年不是闰年")
t = eval(input("请输入年份t:"))
print("{}闰年!".format("是"if t%400==0 or (t%4==0 and t%100!=0) else "不是"))
思考:sikao3.py
按照100分制,90分以上成绩为A,80~90为B,70 ~80为C, 60~70为D,60以下为E。当输入值大于100或是小于0的打印“输入错误!”。编写一个程序,当用户输入分数,自动转换为A、B、C、D、D形式打印。
x = eval(input("请输入成绩:"))
if x>100 or x<0:
print("输入错误!")
elif x>=90:
print("A")
elif x>=80:
print("B")
elif x>=70:
print("C")
elif x>=60:
print("D")
else:
print("E")
思考:
打印出1~100之间能被7整除,但不能同时被5整除的所有整数。
s=[]
for x in range(101):
if x%7==0 and x%5!=0:
s.append(x)
print(s)
程序结果:
[7, 14, 21, 28, 42, 49, 56, 63, 77, 84, 91, 98]
法二:
a=1
while a<=100:
if a%7==0 and a%5!=0:
print(a)
a+=1
程序结果
7
14
21
28
42
49
56
63
77
84
91
98
思考:下面代码的执行结果是什么
#si4_4.py
for letter in 'helloworld':
if letter == 'l':
break
print('当前字母:',letter)
结果:
当前字母:h
当前字母:e
思考hw1.py:阿姆斯特朗数,该数为n位,每其各位数字的n次方和等于该数本身。如1634、54748、548834
# hw1.py
x=str(input("请输入一个数:"))
n=len(x)
s=0
for i in x:
I=int(i)
s=I**n+s
print(s)
x=str(input("请输入一个数:"))
n=len(x)
s=0
t=0
while t<=2:
for i in x:
I=int(i)
s=I**n+s
print(s)
s=0
t+=1
if t==3:
break
x=str(input("请输入一个数:"))
n=len(x)
结果:
请输入一个数:1634
1634
请输入一个数:54748
54748
请输入一个数:548834
548834
思考hw2.py:判断一个数是否为素数。
素数:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
# hw2.py
x=int(input("请输入一个数:"))
n=x-1
while n>1:
if x%n==0:
print(x,"不是素数")
break
n-=1
else:
print(x,"是素数")
结果:
请输入一个数:4
4 不是素数
x=int(input("Input a integer:"))
if x<=1:
print("请输入大于1的整数:")
else:
m=x//2
for i in range(2,m):
if x%i==0:
print(x,"不是素数")
break
else:
print(x,"是素数")
p.s else
和什么对齐
x=int(input("Input a integer:"))
if x==2:
print(x,"是素数")
else:
for i in range(2,x):
if x%i==0:
print(x,"不是素数")
break
if x==i+1:
print(x,"是素数")
x=int(input("请输入一个数:"))
n=2
while n<=(x/2):
if x%n==0:
print(x,"不是素数")
break
n+=1
else:
print(x,"是素数")
思考与练习
思考hw3.py:编写程序,生成一个字符串,该字符串由随机生成10个不重复的小写字母组成。输出该字符串。
import random
n=0
s=[]
while n<=10:
s.append(random.randint(65,90))
n=n+1
print(s)
h=[]
for i in s:
a=chr(i).lower()
h.append(a)
print(h)
结果:
[88, 68, 72, 65, 66, 78, 80, 78, 80, 87, 87]
['x', 'd', 'h', 'a', 'b', 'n', 'p', 'n', 'p', 'w', 'w']
import random
z=""
for i in range(0,26):
z += chr(ord("a")+i)
print(''.join(random.sample(z,10)))
结果:
xnkfrscvuq
import random
list1="";i=0
while i<10:
c=chr(random.randint(ord('a'),ord('z')))
if c not in list1:
i += 1
list1=list1+c
print(list1)
思考#si4_5.py: 当输入4、'ab’执行结果分别是什么?
try:
num = eval(input("请输入一个整数:"))
print(num**2)
except NameError:
print("输入错误,请输入一个整数!")
程序结果:
请输入一个整数:4
16
请输入一个整数:ab
输入错误,请输入一个整数!
思考#si4_6.py: 若在执行print(8/0)语句时,要捕捉ZeroDivisionError异常,并输出系统报错的原因
如何实现代码
try:
print(8/0)
except ZeroDivisionError as t:
print(t)
结果:
division by zero
A.random.sample(range(0,100),1) # [82]
B.random.randint(0,100) # 94
C.random.getrandbits(100) # 618015465451243308573761656840 生成一个k比特长度的随机整数
D.random.randrange(0,101,1) # 55
2.下面代码哪个能随机选取0到100间的奇数( ) A
A.random.randrange(1,101,2) # 1到100 间的奇数
B.random.randint (0,100) # 0到99任意整数
C.int(random.uniform(0,100)) # 0到99任意小数
D.random.choice(range(1,100)) # 1到99
3.下面哪个代码能从字符串’abcdefghij’中随机选取4个字符 A
A.random.sample(“abcdefghij”,4)
B.random.choice(“abcdefghij”,4) # 错误
C.random.uniform(“abcdefghij”,4) # 错误
D.random.random(“abcdefghij”,4) # 错误
4.下面哪个代码不能随机选取列表a=[‘apple’, ‘pear’, ‘peach’, ‘orange’]中的1个字符串 B
A. random.choice(a)
B. random.shuffle(a) # 将序列类型中的元素随机排列,返回打乱后的序列
C. random.sample(a,1)
D. t=random.randint(0,3) a[t]
5.下面哪个代码能随机生成[2 , 6]之间的一个小数 C
A.random.random()*4+2 # 1之间 * 4 = 4之间的小数 + 2 6取不到
B.random.randint(2.6)
C.random.uniform(2,6)
D.random.randrange(2,6)
【输入输出样例1】
输入 | 输出 |
---|---|
35 | No |
【输入输出样例2】
输入 | 输出 |
---|---|
21 | Yes |
解:
x = input("输入一个整数:")
if x%3==0 and x%7==0:
print("Yes")
else:
print("No")
优 | 90≤score≤100 |
---|---|
良 | 80 |
中 | 70 |
及格 | 60 |
不及格 | 0 |
请输入正确分数 | score<0或是score>100 |
【输入输出样例1】
输入 | 输出 |
---|---|
45 | 不及格 |
【输入输出样例2】
输入 | 输出 |
---|---|
103 | 请输入正确分数 |
解:
s=input("学生成绩:")
if s<0 or s>100:
print("请输入正确分数")
elif s<=60:
print("不及格")
elif s <=70:
print("及格")
elif s <=80:
print("中")
elif s<=90:
print("良")
else:
print("优")
【输入输出样例1】
输入 | 输出 |
---|---|
4 4 5 | 等腰三角形 |
【输入输出样例2】
输入 | 输出 |
---|---|
3 4 5 | 一般三角形 |
解:
a=int(input("输入线段1长度:"))
b=int(input("输入线段2长度:"))
c=int(input("输入线段3长度:"))
if a+b<c or a+c<b or b+c<a:
print("不能构成三角形")
else:
if a==b and a==c and b==c:
print("等边三角形")
elif a!=b and a!=c and b!=c:
print("一般三角形")
else:
print("等腰三角形")
输入2个正整数m和n,输出[m,n]区间内所有素数,文件保存为:学号_1.py。
【输入输出样例1】
输入 | 输出 |
---|---|
2 15 | 2 3 5 7 11 13 |
解:
n=int(input("请输入一个正整数:"))
m=int(input("请再输入一个正整数:"))
num=[]
for i in range(n,m+1):
for j in range(2,i):
if i % j == 0:
break
else:
num.append(i)
print(num)
输出如下所示的倒金字塔型图案,图案的高度(即打印*号的行数)由键盘输入。文件保存为:学号_2.py。
*********
*******
*****
***
*
【输入输出样例】
输入4:
输出:
*******
*****
***
*
解:
x = int(input("请输入高度"))
for i in range(0,x):
print(" "*abs(-i)+"*"*(2*(x-i)-1))
法二:
n=int(input("请输入金字塔层数:"))
for i in range(-n,0):
str='*'*(2*abs(i)-1)
print(str.center(10))
已知表达式sum=1!+2!+3!+…+n!。输入正整数n,求解表达式sum的值并输出。文件保存为:学号_3.py。
【输入输出样例】
输入 | 输出 |
---|---|
12 | 522956313 |
解:
import math
x=int(input("请输入正整数n"))
s=0
for i in range(1,x+1):
s=math.factorial(i)+s
print(s)
完全数是指它所有的真因子(即除了自身以外的正因子)的和恰好等于它本身。输入一个正整数n,判断该整数是否为完全数。如果是完全数,则输出“Yes”,否则输出“No”。文件保存为:学号_4.py。
【输入输出样例】
输入 | 输出 |
---|---|
6 | Yes |
n=eval(input())
s=1
for i in range(2,n//2+1):
if n%i==0:
s=s+i
if s==n and s!=1:
print("Yes")
else:
print('No')
思考5_1:
def circle(r):
if r<=0:
print("要求输入正数!")
return
area=3.14*r*r
perimeter=2*3.14*r
return area,perimeter
r=-3
re=circle(r)
if re!=None:
print("半径为",r,"的面积为:",re[0])
print("半径为",r,"的圆周长为:",re[1])
运行结果为:
要求输入正数!
思考5-2(课堂):
编写一个函数sum_all,参数可以接收任意个的数字,返回值为这些参数的和。
#coding=utf-8
# 法一
def sum_all(a,*b):
for i in b:
a = a+i # 也可写成 a += i
return a
print(sum_all(1,2,3))
print(sum_all(1,2,3,4,5,6))
# 法2
def sum_all(*a):
n=0
for i in a:
n=n+i
return n
print(sum_all(1,2,3))
print(sum_all(1,2,3,4,5,6))
结果:
6
21
A) def B) define C) function D) defunc
A)没有返回值 B)返回值为None C)返回值为Nun D)返回值为Null
判断题:函数在调用前不需要定义,直接拿来用就行 x
x = [‘train’, ‘bus’, ‘car’, ‘ship’] 下面哪个选项的值是’car’ A.
(A)x[-2] (B) x[3] ©x[2:3] (D)x[-1]
(A)x[:4] (B) x[:] ©x[1:] (D)x
(A)x[-2:-1] (B) x[-2:0] ©x[-2:] (D)x[2:3] A=[‘car’] B=[] 步长错误 D=[‘car’]
(A)x[-1][-2]
(B) x[1][0]
©x[-1][0]
(D)x[-1][1]
(A)x[1][0][0:2]
(B) x[1][0][:2:1]
©x[1][0][:-5:1]
(D)x[1][0][:2:-1]
编写函数Gcd( ),该函数用于求整数x和y的最大公约数,并返回最大公约数。设置两个参数的默认值都为1。打开文件shiyan4_1.py完成程序的编写。文件另存为:学号_1.py。
【输入输出样例】
输入 | 输出 |
---|---|
15 25 | 15 和 25 的最小公倍数是 75 |
解:
########完成函数Gcd,实现x,y最大公约数
def Gcd(x=1,y=1): # 设置两个参数的默认值为1
r=x%y
while r!=0:
x=y
y=r
r=x%y
return y
#################
#下面代码不能改动
Gcd()
a=eval(input("请输入一个数:"))
b=eval(input("请输入一个数:"))
print(a,'和',b,'的最小公倍数是',a*b//Gcd(a,b))
编写函数find(*a),注意a前面有个星号。该函数可以接受多个数据,找出这些数据中与所有元素的平均值绝对偏差最大的元素,并返回该元素值。
打开shiyan4_2.p文件,完成程序的编写。文件另保存为:学号_2.py。
【输入输出样例】
输入 | 输出 |
---|---|
98 89 |
解:
import math
def find(*a):
############################
#代码请写在这个位置,其他地方的代码请不要修改
temp=sorted(a) # 对列表a进行排序
s=sum(a)/len(a) # 均值
if math.fabs(temp[0]-s)>=math.fabs(temp[-1]-s):
return temp[0]
else:
return temp[-1]
#############################
print(find(23,21,5,98,89,12,86,80,8,61))
print(find(23,21,5,78,19,12,6,10,8,66,89,67,58,34,56,32,67,87,45,32))
import math
def find(*a):
############################
#代码请写在这个位置,其他地方的代码请不要修改
s=sum(a)/len(a) # 均值
temp=0
tmax=a[0]
for i in a:
if math.fabs(i-s)>temp: # math.fabs 为绝对值
temp=math.fabs(i-s)
tmax=i
return tmax
#############################
print(find(23,21,5,98,89,12,86,80,8,61))
print(find(23,21,5,78,19,12,6,10,8,66,89,67,58,34,56,32,67,87,45,32))
编写函数encry(s),可以将传递的多个字符串进行加密,将字符串里的字母变成其后的第4个字母,如字母A变成字母E,a变成e,Z变成D;其他字符不变。最终形成一个字符串作为返回值。主程序让用户输入多个字符串,当用户输入-1,结束输入。
打开shiyan4_3.p文件,完成程序的编写。文件另保存为:学号_3.py。
【输入输出样例】
输入 | 输出 |
---|---|
AZ 2ab -1 | [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h4L9J59R-1593709114714)(file:////Users/eve/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image001.jpg)] |
解:
def encry(s):
############################
#代码请写在这个位置,其他地方的代码请不要修改
mystr=""
for i in s:
if 'a'<=i<="z":
temp=chr((ord(i)+4-ord("a"))%26+ord("a")) # 防止最后几个字母z 超出范围
mystr=mystr+temp
elif 'A'<=i<='Z':
temp=chr((ord(i)+4-ord("A"))%26+ord("A"))
mystr=mystr+temp
else:
mystr=mystr+i
return mystr
#############################
s=''
a=input("请输入:")
while(a!="-1"):
s=s+a
a=input()
print('加密前的明文是:', s)
print('加密后的密文是:',encry(s))
思考:si6_4:
编写程序,输入两个分别包含若干整数的列表list1和list2。用list1元素作为键,用list2作为值,产生一个字典。该字典的元素个数为list1和list2元素较少的那个列表长度,输出该字典。
请输入list1:3,5,6,2,7,346
请输入list2:4,6,345,65,54,5,2,7
{3:4,5:6,6:345,2:65,7:54,346:5}
解:
list1=eval(input("请输入list1:"))
list2=eval(input("请输入list2:"))
c=dict(zip(list1,list2))
print(c)
思考si6_5.py
文件里dict1变量保存的是学生健康打卡信息,请在##==之间输入代码。
dict1={'张三三':[{'日期':'4月30日','省份':'福建','城市':'福州','是否健康':'是','是否接触过疑似病例':'否'},\
{'日期':'5月1日','省份':'福建','城市':'福州','是否健康':'是','是否接触过疑似病例':'否'}], \
'李四四':[{'日期':'4月30日','省份':'福建','城市':'三明','是否健康':'是','是否接触过疑似病例':'否'},\
{'日期':'5月1日','省份':'福建','城市':'三明','是否健康':'是','是否接触过疑似病例':'否'}],
'王五五':[{'日期':'4月30日','省份':'福建','城市':'泉州','是否健康':'是','是否接触过疑似病例':'否'},\
{'日期':'5月1日','省份':'福建','城市':'泉州','是否健康':'是','是否接触过疑似病例':'否'}], \
}
name=input('请输入姓名:')
date=input('请输入日期:')
tempdata=dict1.get(name,'不存在') # 键name存在则返回相应值,否则返回'不存在'
if tempdata=='不存在':
print(name+'不存在')
else:
for i in tempdata: # i 为键
if i['日期']==date:
print(i)
break
else:
print("今日未打卡")
从键盘输入一个字符串s,删除其中所有的小写字符后形成一个新字符串,然后输出。文件保存为:学号_1.py。
【输入输出样例】
输入 | 输出 |
---|---|
www.163.com | .163. |
解:
a=str(input("输入一个字串符:"))
s=""
for i in a:
if not i.islower():
s=s+i
print(s)
生成一个列表,该列表含有20个不相同的随机整数,并且每个元素在[1,100]间,打印该列表,并输出偶数的个数。文件保存为:学号_2.py。
【输入输出样例】
输入 | 输出 |
---|---|
[83, 78, 55, 73, 64, 6, 52, 72, 44, 2, 63, 37, 14, 66, 77, 36, 67, 22, 76, 98] 13 |
解:
import random
s=[]
for i in range(20):
s.append(random.randint(0,100))
print(s)
a=[]
for i in s:
if i%2==0:
a.append(i)
print(len(a))
健康打卡。dict1字典保存了个人健康打卡信息,请根据题目要求输入信息。若输入的姓名不在字典中,则字典dict1添加一个新元素;若该人已经存在,则在这人的信息末尾添加一条记录。打开文件shiyan3_3.py文件,在###间补充代码,其他的代码不得修改。运行后将文件另保存为:学号_3.py。
【输入输出样例】
输入 | 输出 |
---|---|
请输入姓名:王五五 请输入日期:5月3日 请输入省份:福建 请输入城市:泉州 是否健康:否 家庭成员是否健康:是 | (‘张三三’, [{‘日期’: ‘4月30日’, ‘省份’: ‘福建’, ‘城市’: ‘福州’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}, {‘日期’: ‘5月1日’, ‘省份’: ‘福建’, ‘城市’: ‘福州’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}]) (‘李四四’, [{‘日期’: ‘4月30日’, ‘省份’: ‘福建’, ‘城市’: ‘三明’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}, {‘日期’: ‘5月1日’, ‘省份’: ‘福建’, ‘城市’: ‘三明’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}]) (‘王五五’, [{‘日期’: ‘4月30日’, ‘省份’: ‘福建’, ‘城市’: ‘泉州’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}, {‘日期’: ‘5月1日’, ‘省份’: ‘福建’, ‘城市’: ‘泉州’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}, {‘日期’: ‘5月3日’, ‘省份’: ‘福建’, ‘城市’: ‘泉州’, ‘是否健康’: ‘否’, ‘家庭成员是否健康’: ‘是’}]) |
【输入输出样例】
输入 | 输出 |
---|---|
请输入姓名:万芳 请输入日期:5月2日 请输入省份:江西 请输入城市:上饶 是否健康:否 家庭成员是否健康:是 | (‘张三三’, [{‘日期’: ‘4月30日’, ‘省份’: ‘福建’, ‘城市’: ‘福州’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}, {‘日期’: ‘5月1日’, ‘省份’: ‘福建’, ‘城市’: ‘福州’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}]) (‘李四四’, [{‘日期’: ‘4月30日’, ‘省份’: ‘福建’, ‘城市’: ‘三明’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}, {‘日期’: ‘5月1日’, ‘省份’: ‘福建’, ‘城市’: ‘三明’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}]) (‘王五五’, [{‘日期’: ‘4月30日’, ‘省份’: ‘福建’, ‘城市’: ‘泉州’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}, {‘日期’: ‘5月1日’, ‘省份’: ‘福建’, ‘城市’: ‘泉州’, ‘是否健康’: ‘是’, ‘家庭成员是否健康’: ‘是’}]) (‘万芳’, [{‘日期’: ‘5月2日’, ‘省份’: ‘江西’, ‘城市’: ‘上饶’, ‘是否健康’: ‘否’, ‘家庭成员是否健康’: ‘是’}]) |
解:
dict1={'张三三':[{'日期':'4月30日','省份':'福建','城市':'福州','是否健康':'是','家庭成员是否健康':'是'},\
{'日期':'5月1日','省份':'福建','城市':'福州','是否健康':'是','家庭成员是否健康':'是'}], \
'李四四':[{'日期':'4月30日','省份':'福建','城市':'三明','是否健康':'是','家庭成员是否健康':'是'},\
{'日期':'5月1日','省份':'福建','城市':'三明','是否健康':'是','家庭成员是否健康':'是'}],
'王五五':[{'日期':'4月30日','省份':'福建','城市':'泉州','是否健康':'是','家庭成员是否健康':'是'},\
{'日期':'5月1日','省份':'福建','城市':'泉州','是否健康':'是','家庭成员是否健康':'是'}] \
}
name=input('请输入姓名:')
date=input('请输入日期:')
province=input('请输入省份:')
city=input('请输入城市:')
health=input('是否健康:')
family=input('家庭成员是否健康:')
##==========根据输入的信息往字典dict1添加记录;
##==========若没有这个人,则字典dict1添加一个新元素;若该人已经存在,则这人的信息添加一条记录
a=dict1.get(name,-1) # 键存在则返回相应值,否则返回默认值
if a==-1:
dict1[name]=[{"日期":date,'省份':province,'城市':city,'是否健康':health,'家庭成员是否健康':family}]
else:
dict1[name].append({"日期":date,'省份':province,'城市':city,'是否健康':health,'家庭成员是否健康':family})
##===========
for i in dict1.items():
print(i)
思考7_1:下面的代码
f = open("text.txt",'wb+') # 打开text.txt文件以覆盖写模式,二进制文件模式以及在此基础上同时增加读写功能
f.write(b"python") # 二进制的python写入
f.seek(2,0) # 光标为文件方向的第2个字节,光标在文件开头
print(f.read(3)) # 读取光标位置向后数3个字节 光标移动到第5个字节
f.seek(-3,1) # 光标移到方向头为开头3个字节,光标在当前位置 从第5个字节移到第2个字节
print(f.read(1)) # 读取文件光标位置向后数1个字节
f.close()
结果为:
b'tho'
b't'
思考7_2:复制1.txt文件,生成一个名为1_1.txt新的文本文件
答:
f1 = open("1.txt","r",encoding='utf-8')
f2 = open("1_1.txt","w")
a = f1.read()
f2.write(a)
f1.close()
f2.close()
或:
f1 = open("1.txt","r",encoding='utf-8')
f2 = open("1_1.txt","w")
for i in f1:
f2.write(i)
f1.close()
f2.close()
==思考7_3:==生成1至122之间的随机整数数,转成对应的字符,然后将满足以下条件(大写字母、小写字母、数字和一些特殊符号’*‘,’&‘,’^‘,’$‘)的字符逐一输入写入文本test.txt中,当光标位置达到101时停止写入。
判断是否小写字母的方法:字符串.islower()
判断是否大写字母的方法:字符串.isupper()
判断是否数字的方法:字符串.isdigit()
答:
产生随机整数 randint()
转成对应的字符 chr()
chr() in [’*‘,’&‘,’^‘,’$‘]
达到101个字节 f.tell()
import random
f1=open("test.txt",'w+')
while f1.tell() <= 101:
a=chr(random.randint(1,122))
if a.islower() or a.isupper() or a.isdigit() or a in['*','&','^','$']:
f1.write(a)
f1.close()
输出结果:
打开text.txt文件
ln7KSuL5qRzQ7LJRmH5O6FOiyrKHCL$^mHwlYoVJo*DmP8MPKQKpH4uun*L*ZE91lEEs&tdtEKTSrMqxI9BwHb63fefiapy9J^VY1t
思考7_4:
逐个字节读取:'fy.txt’文件,输出该文件前10个字节字符和后10个字节字符
fy = open("fy.txt",'rb') # 注意要使用rb方式打开,下面才可进行读写 不然会报错.UnsupportedOperation: can't do nonzero end-relative seeks
fy.seek(0)
print(fy.read(10))
fy.seek(-10,2)
print(fy.read(10))
fy.close()
程序结果:
b'1.The Chin'
b'nto orbit.'
思考7_5:
统计‘fy.txt’文件中大写字母、小写字母和数字的个数。可以利用字符串的isupper()、islower()和isdigit()方法。
输入如下所示:
大写有6个,小写有205个,数字有4个
答:
f=open("fy.txt","r")
a=f.read() # ps 注意
s=0
y=0
c=0
for i in a:
if i.isupper():
s=s+1
elif i.islower():
y=y+1
elif i.isdigit():
c=c+1
else:
pass
f.close()
print("大写有"+str(s)+"个, "+"小写有"+str(y)+"个, 数字有"+str(c)+"个")
程序结果:
大写有6个, 小写有205个, 数字有4个
代码简化
f = open("fy.txt").read() # 字符串
s,y,c=0,0,0
while 1:
if f.isupper():
s+=1
elif f.islower():
i+=1
elif f.isdigit():
d+=1
if not f:
break
f.close()
print('大写有{}个,小写有{}个,数字有{}个',format(s,y,c))
1.创建一个6_1.txt文件,提醒用户输入一些信息,当用户输入-1时结束输入;把用户的输入都保存到6_1.txt文件中,然后把该文件全部显示出来。
解:
f = open("6_1.txt", "a+")
x=input("请输入要编写的内容(输入-1结束输入):")
while x != '-1':
f.write(x+'\n')
x=input("请输入要编写的内容(输入-1结束输入):")
f.seek(0,0)
print(f.read())
f.close()
程序结果:
请输入要编写的内容(输入-1结束输入):23423
请输入要编写的内容(输入-1结束输入):435245
请输入要编写的内容(输入-1结束输入):134234
请输入要编写的内容(输入-1结束输入):Iloveyou
请输入要编写的内容(输入-1结束输入):-1
fefe adfe
23423
435245
134234
Iloveyou
2.在text.csv文件记录了某个班级所有学生的名字、学号和3科成绩,要求读取该文件,计算每个学生的总成绩并输出,统计出每科的平均成绩并输出。请编程实现,程序保存为学号_2.py
输出如下所示:
1001 Make 221
1002 Linda 246
1003 Jone 247
#csv
学号,姓名,数学,英语,语文
1001,Make,86,67,68
1002,Linda,78,74,94
1003,Jone,90,68,89
数学平均:84.67;英语平均:69.67;语文平均:83.67
解:
f=open("text.csv",encoding='gbk')
stu=[]
j=0
f.readline() # 已经读取了第一行 光标移动到第二行开始
for i in f.readlines():
i=i[:len(i)-1] #读取出来是一整行的数据,后面有个反斜杠符\n去掉 从头取到尾
stu.append(i.split(",")) # [['1001','Make','86','67','68']]
stu[j][2]=int(stu[j][2]) # j=0大列表中的小列表,[2]为第三个'86'
stu[j][3]=int(stu[j][3]) # '67'
stu[j][4]=int(stu[j][4]) # '68'
s=sum(stu[j][2:5]) # stu=[['1001', 'Make', 86, 67, 68]] 86+67+68=221
print(stu[j][0],'\t',stu[j][1],'\t',s)
j=j+1
# [['1001', 'Make', 86, 67, 68], ['1002', 'Linda', 78, 74, 94], ['1003', 'Jone', 90, 68, 8]]
s1=0;s2=0;s3=0
for i in range(0,j):
s1=stu[i][2]+s1 # 86+78+90
s2=stu[i][3]+s2 # 67+74+68
s3=stu[i][4]+s3 # 68+94+8
print("数学平均:{:.2f};英语平均:{:.2f};语文平均:{:.2f}".format(s1/j,s2/j,s3/j))
程序结果:
1001 Make 221
1002 Linda 246
1003 Jone 247
数学平均:84.67;英语平均:69.67;语文平均:83.67
思考8_1:定义鸟类Bird,鸟类的共同属性feather = True和reproduction = ‘egg’。
该类有一个方法移动move(),该方法执行print(‘飞飞飞飞’)
假设养了一只鹦鹉交spring,它是Bird的一个对象,输出鹦鹉的两个属性,并调用move方法
class Bird():
feather = True
reproduction ='egg'
def __init__(self,name): # 都要写
self.name = name
def move(self):
print("飞飞飞飞")
bird = Bird('spring')
print(bird.feather)
print(bird.reproduction)
bird.move()
程序结果:
True
egg
飞飞飞飞
思考si8_2: 定义Rectangle类表示矩形。该类有两个属性width和height,均在构造函数中创建,定义方法getArea和getPerimeter计算矩形的面积和周长。
class Rectangle():
def __init__(self,width,height):
self.width = width
self.height = height
def getArea(self):
a = (int(self.width))*(int(self.height))
return a
def getPerimeter(self):
b = (int(self.width))+(int(self.height))
B = 2*b
return B
t1 = Rectangle(15,6)
print(t1.getArea())
print(t1.getPerimeter())
程序结果:
90
42
思考8_3:下面代码的运行结果是什么?
class Testclass:
data=100 # 类属性
def setpdata(self,value):
self.pdata=value
def showpdata(self):
print("self.pdata=",self.pdata)
x = Testclass()
x.setpdata("与时俱进")
x.showpdata()
y = Testclass()
y.setpdata("勇于创新")
y.showpdata()
print(y.data)
程序运行结果:
self.pdata= 与时俱进
self.pdata= 勇于创新
100
思考8_4: 下面代码的运行结果是什么?
class Testclass:
data= "有信念、有梦想" # 类属性
def setdata(self,value):
self.data=value # 创建对象属性
def showdata(self):
print(self.data) # 打印对象属性
x=Testclass()
x.data="勇于创新"
y=Testclass()
Testclass.data="有奋斗、有奉献" # 更改了类属性
print(x.data) # 对象属性
print(y.data) # 没有对y.data赋值 没有创建对象属性,还是修改类属性
print(Testclass.data)
程序运行结果:
勇于创新
有奋斗、有奉献
有奋斗、有奉献
思考8_5:下面代码有1处出错,如何修改
class Rectangle:
def __init__(self,w,h):
self.width=w
self.height=h
def getArea(self):
return self.width*self.height
def getPerimeter(self):
return (self.width+self.height)*2
t1=Rectangle(2,3)
print(Rectangle.width) # 内属性
答:
print(t1.width)
思考8_6:
class Cartoon_sheep:
race='sheep'
def __init__(self,namevalue,sexvalue,birthdayvalue):
self.name=namevalue
self.sex=sexvalue
self.__birthday=birthdayvalue
self._energy=0
def eat(self,food):
print("我正在吃",food)
sheep1= Cartoon_sheep('喜羊羊','男','羊历3505年5月25日')
下面哪些调用是正确的?
a) sheep1.eat(‘草’) # sheep1–>self 草–>food
b) sheep1.eat(sheep1,“草”)
c) Cartoon_sheep.eat(‘草’)
d) Cartoon_sheep.eat(sheep1,‘草’) # sheep1–>self 草–>food
a) d)
思考8_7:下面Site的定义共有4处错,如何修改
class Site:
__number=0 # 私有类属性
def __init__(namevalue,urlvalue): # 少了self
self.name=namevalue
self.__url=urlvalue # 私有对象属性
self.number=self.number+1 # 由下文可知应为私有属性
def printme(self):
__privateme(self) # 利用类属性的方法错误
print('name:',self.name)
print('url:',self.url) # 利用私有对象的方法错误
def __privateme(self): # 私有方法
print(Site.__number)
wz1 = Site("福建农林大学","wwww.fafu.edu.cn")
wz1.printme()
wz2 = Site("学习强国","www.xuexi.cn")
wz2.printme()
修改
class Site:
__number=0
def __init__(self,namevalue,urlvalue): # 1
self.name=namevalue
self.__url=urlvalue
Site.__number=Site.__number+1 # 2
def printme(self):
Site.__privateme(self) # 3
print('name:',self.name)
print('url:',self.__url) # 4
def __privateme(self):
print(Site.__number)
wz1 = Site("福建农林大学","wwww.fafu.edu.cn")
wz1.printme()
wz2 = Site("学习强国","www.xuexi.cn")
wz2.printme()
程序结果:
1
name: 福建农林大学
url: wwww.fafu.edu.cn
2
name: 学习强国
url: www.xuexi.cn
思考8-12:子类Shark,继承Fish类;产生Shark对象时,能初始化其hungry属性为True,请写Shark类代码。
import random
class Fish:
def __init__(self):
self.x=random.randint(0,10)
self.y=random.randint(0,10)
def move(self):
self.x-=1
print("我的位置是",self.x,self.y)
答:
import random
class Fish:
def __init__(self):
self.x=random.randint(0,10)
self.y=random.randint(0,10)
def move(self):
self.x-=1
print("我的位置是",self.x,self.y)
class Shark(Fish):
def __init__(self):
self.hungry=True
a=Shark()
print(a.hungry)
思考8-13:
若Shark在产生对象时,除了能有自己的hungry属性,也想具有Fish类的x和y属性,那该如何操作?改进后的代码:
import random as ran
class Fish:
def __init__(self):
self.x=ran.randint(0,10)
self.y=ran.randint(0,10)
def move(self):
self.x-=1
print("我的位置是{},{}".format(self.x,self.y))
class Shark(Fish):
def __init__(self):
self.hungry=True
super().__init__()
s=Shark()
s.move()
程序结果:
我的位置是0,5
思考8_14:下面代码的运行结果是什么?
class Foo(object):
def __init__(self, a, b):
self.a = a
self.b = b
class Bar(Foo):
def __init__(self, a, c):
super().__init__(a,"有担当") # 创建了a,b属性
self.c = c
n = Bar("有理想","有本领")
print (n.a)
print (n.b)
print (n.c)
程序运行结果:
有理想
有担当
有本领
思考8-15:下面红色代码哪些是错误的
class Product( ):
id = 0
def __init__(self,name,price):
Product.id=Product.id+1
self.name=name
self.__price=price
def getPrice(self):
return self.__price
def __setPrice(self,value):
self.__price=value
class MobilePhone(Product):
def __init__(self,name,price,standard):
####### 一下错误的地方有哪些
super().__init__(name,price)
self.netstandard=standard
print(self.name)
print(self.id)
print(self.__price)
print(self.getPrice())
print(super().__setPrice())
#######
class Product( ):
id = 0
def __init__(self,name,price):
Product.id=Product.id+1
self.name=name
self.__price=price
def getPrice(self):
return self.__price # 返回数值
def __setPrice(self,value):
self.__price=value
class MobilePhone(Product):
def __init__(self,name,price,standard):
super().__init__(name,price)
self.netstandard=standard
print(self.name)
print(self.id)
print(self.__price) # 错误 在类的外面
print(self.getPrice())
print(super().__setPrice()) # 错误 私有方法在外面都不能访问它
a=MobilePhone("iphone",2000,"large")
程序运行
iphone
1
Traceback (most recent call last):
File "/Users/eve/Desktop/PYTHON/SchoolCourse/第8章类/代码/2020-06-11/si8_15.py", line 21, in <module>
a=MobilePhone("iphone",2000,"large")
File "/Users/eve/Desktop/PYTHON/SchoolCourse/第8章类/代码/2020-06-11/si8_15.py", line 17, in __init__
print(self.__price) # 错误
AttributeError: 'MobilePhone' object has no attribute '_MobilePhone__price'
思考 si8_16.py:下面代码的运行结果是什么?
class Product():
def testClassicalClass(self):
print('执行Product类')
class Computer(Product):
def testMethod(self):
print('执行Computer类')
class MobilePhone(Product):
def testClassicalClass(self):
print('执行MobilePhone类')
class SmartMobile (Computer,MobilePhone):
def testMethod(self):
print('执行SmartMobile类')
s = SmartMobile() # Computer,MobilePhone
s.testClassicalClass() # Computer->MobilePhone->testClassicalClass->"执行MobilePhone类"
s.testMethod() # 父类与子类如果同时定义了名称相同的属性名称,父类中的属性在子类中将被覆盖。
程序结果:
执行MobilePhone类
执行SmartMobile类
思考8_18:下面程序的运行结果是什么?
class test:
data1=100
def __init__(self,n):
self.data2=n
def __str__(self):
return "data1={},data2={}".format(self.data1,self.data2)
a=test(20)
print(a) # print会触发 __str__()这个方法
程序结果:
data1=100,data2=20
==思考8_19:==补充完整Rectangle类,使得该类的对象可以进行如下运算:
1.a+b:求出两个矩形的面积和。
2.a==b
:判断两个面积是否相等;若a==b
,表达式的值为”相等“,否则为”不相等“。
3.print(a):打印出该矩形的面积
class Rectangle:###补充完整,使其对象能进行+,==,print操作
def __init__(self,w,h):
self.width=w
self.height=h
def getArea(self):
return self.width*self.height
############################
a=Rectangle(2,4)
print(a)
b=Rectangle(3,6)
print(a+b)
print(a==b)
答:
class Rectangle:###补充完整,使其对象能进行+,==,print操作
def __init__(self,w,h):
self.width=w
self.height=h
def getArea(self):
return self.width*self.height
def __add__(self, other):
return self.getArea()+other.getArea()
def __eq__(self, other):
if self.getArea()==other.getArea():
return "相等"
else:
return "不相等"
def __str__(self):
return "该矩形的面积为"+str(self.getArea())
############################
a=Rectangle(2,4)
print(a)
b=Rectangle(3,6)
print(a+b)
print(a==b)
程序结果:
该矩形的面积为8
26
不相等
思考8_19_1:
#8_19_1
class Rectangle:
def __init__(self,w,h):
self.width=w
self.height=h
def getArea(self):
return self.width*self.height
def __add__(self,other):
return "两矩形的面积和是:"+str(self.getArea()+other.getArea())
def __eq__(self,other):
if self.getArea()==other.getArea():
return "相等"
else:
return "不相等"
def __str__(self):
return "该矩形的面积是:"+str(self.getArea())
if __name__ == '__main__': # 当作主程序运行
print('I runs as main')
else:
print(__name__,'I runs as a module') # 当作模块导入另一文件运行
程序结果:
I runs as main
若代码是主程序,__name__
值为__main__
;若代码作为import模块,__name__
值为文件名
当被当作模块被导入其他文件运行
from si8_19_1 import Rectangle # 代码模块文件导入
a=Rectangle(2,4)
print(a)
b=Rectangle(3,6)
print(a+b)
print(a==b)
程序结果:
si8_19_1 I runs as a module
该矩形的面积是:8
两矩形的面积和是:26
不相等
思考8_20:运行该程序时输入15或150的结果是什么?
def get_age():
age = int(input('请输入年龄(1-140):')) #15 150
if age in range(1,141): #15 is in 150 is not in
return age # 15
raise ValueError # 150 抛出异常
try:
age = get_age() # 调用这个函数
print('用户输入的年龄是:', age) #15
except ValueError:
print('用户输入的年龄不在1-140之间!') # 150
程序结果:
请输入年龄(1-140):15
用户输入的年龄是: 15
请输入年龄(1-140):150
用户输入的年龄不在1-140之间!
思考8_21:下面程序的运行结果是什么?
class MyError(Exception):
def __init__(self,value): # 4
self.value=value # 4
def __str__(self):
return self.value
try:
raise MyError(2*2)
except MyError as e :
print("An exception flew by!",e.value)
程序结果:
An exception flew by! 4
编写Queue类能实现队列的功能(先进先出)。Queue类包含:
__size属性(存放队列的大小)
list属性(存放队列数据)
__init__()
:初始化对象
pop():删除队列首个数据,返回该数据
push():把数据放入队列
isfull():判断队列是否存满数据
isempty():判断队列是否为空
请打开shiyan7_1.py补充完程序,程序另保存为学号_1.py
shiyan7_1.py
class Queue:
def __init__(self, size):
self.size=size
self.list=[]
def isfull(self):
if len(self.list)==self.size:
return True
else:
return False
def push(self,num):
if self.isfull():
print("队列满")
else:
self.list.append(num)
################
################下面代码请不要修改
def main():
a=Queue(10)
for i in range(0,10):
a.push(i)
a.pop()
a.pop()
print(a.list)
if __name__=="__main__":
main()
解:
class Queue:
def __init__(self, size):
self.size=size
self.list=[]
def isfull(self):
if len(self.list)==self.size:
return True
else:
return False
def push(self,num):
if self.isfull():
print("队列满")
else:
self.list.append(num)
################
def isempty(self):
if len(self.list)==0:
return True
else:
return False
def pop(self):
if self.isempty():
print("为空无法删除")
else:
self.list.pop(0)
################下面代码请不要修改
def main():
a=Queue(10)
for i in range(0,10):
a.push(i)
a.pop()
a.pop()
print(a.list)
if __name__=="__main__":
main()
编写Timer类,该类包含:
__hour属性:存放小时
__minute属性:存放分钟
__second属性:存放秒数
__init__()
:初始化对象,Timer的3个属性值全部为0
settime():设置时间,即修改Timer的3个属性
showtime():输出时间,即获得Timer的3个属性,按小时:分钟:秒数的格式输出,如12:30:40
请打开shiyan7_2.py补充完程序,程序另保存为学号_2.py
shiyan7_2.py
#下面代码请不要修改
def main():
a=Timer()
a.settime(12,30,40)
a.showtime()
if __name__=="__main__":
main()
解:
class Timer:
def __init__(self):
self.__hour=0
self.__minute=0
self.__second=0
def settime(self,new_hour,new_minute,new_second):
self.__hour=new_hour
self.__minute=new_minute
self.__second=new_second
def showtime(self):
print(str(self.__hour)+":"+str(self.__minute)+":"+str(self.__second))
#下面代码请不要修改
def main():
a=Timer()
a.settime(12,30,40)
a.showtime()
if __name__=="__main__":
main()
一、 实验目的和要求
(1)类的继承;(2)调用超类的构造方法;(3)运算符重载 (4)异常处理
请打开shiyan8_1.py,补充完Vecter3的定义,进行运算符重载,使得该类能进行加法和乘法运算,并能打印。程序另存为学号_1.py。程序运行结果如下:
5,7,9
10,20,30
解:
##请补充完类Vecter3的定义 vecter是向量的意思
class Vecter3(object):
def __init__(self,x,y,z):
self.X=x
self.Y=y
self.Z=z
def __add__(self,other):
t=Vecter3(0,0,0)
t.X=self.X+other.X
t.Y=self.Y+other.Y
t.Z=self.Z+other.Z
return t
def __mul__(self, n):
t=Vecter3(0,0,0)
t.X=self.X*n
t.Y=self.Y*n
t.Z=self.Z*n
return t
def __str__(self):
return str(self.X)+","+str(self.Y)+","+str(self.Z)
##下面代码请不要修改
if __name__=='__main__':
v1=Vecter3(1,2,3)
v2=Vecter3(4,5,6)
print(v1+v2)
print(v1*10)
程序结果:
5,7,9
10,20,30
2.【题目描述】
以r+模式打开用户输入的文件。若文件不存在,系统会产生异常FileNotFoundError,请捕捉该异常类,然后输出“该文件不存在”。若文件存在,让用户输入字符串,保存到该文件中。当用户输入-1,结束输入。当用户输入的字符串长度大于10,要抛出InvalidError类。请捕捉InvalidError类并产生实例t,执行print(t)和fp.close()。请打开shiyan8_2.py文件,补充完代码,程序另存为学号_2.py。
输入文件名:ff
文件不存在
输入文件名:f1.txt
输入字符串:hello
输入字符串:You are welcome
输入的字符串太长,长度为15
解:
class InvalidError(BaseException):
def __init__(self,n):
super().__init__()
self.num=n
def __str__(self):
return "输入的字符串太长,长度为"+str(self.num)
####当文件不存在,要能捕捉FileNotFoundError(系统产生的异常类)
####当文件存在,用户输入数据保存到文件中
####若输入的字符串长度>10,抛出InvalidError(自定义的异常类)
####要能捕捉InvalidError
####当用户输入-1结束输入
try:
filename = input('输入文件名:')
fp = open(filename , "r+")
ch = input("输入字符串:")
while ch!='-1':
if len(ch)<=10:
fp.write(ch)
ch=input("输入字符串:")
else:
raise InvalidError(len(ch))
except FileNotFoundError:
print("文件不存在")
except InvalidError as t:
print(t)
fp.close()
程序结果:
输入文件名:ff
文件不存在
输入文件名:f1.txt
输入字符串:hello
输入字符串:You are welcome
输入的字符串太长,长度为15