8月22日-----字符串相关
2-3 个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello Eric, would you like to learn some Python today?”。
username = 'jme'
print("Hello "+username+", would you like to learn some Python today?")
print("Hello %s, would you like to learn some Python today?" % username)
2-4 调整名字的大小写: 将一个人名存储到一个变量中,再以小写、大写和首字母大写的方式显示这个人名。
username = 'lucian'
首字母大写显示
print(username.capitalize())
小写显示
print(username.lower())
大写显示
print(username.upper())
result:
Lucian
lucian
LUCIAN
2-5 名言: 找一句你钦佩的名人说的名言,将这个名人的姓名和他的名言打印出来。输出应类似于下面这样(包括引号):Albert Einstein once said, “A person who never made a mistake never tried anything new.”
this sentence is created by rzlong
print('Rzlong said,"Don't hesitate! Just do it now."')
result:
Rzlong said,"Don't hesitate! Just do it now."
2-6 名言2: 重复练习2-5,但将名人的姓名存储在变量famous_person 中,再创建要显示的消息,并将其存储在变量message 中,然后打印这条消息。
famous_person = "Rzlong"
message = 'Rzlong said,"Don't hesitate! Just do it now."'
print(message)
result:
Rzlong said,"Don't hesitate! Just do it now."
2-7 剔除人名中的空白: 存储一个人名,并在其开头和末尾都包含一些空白字符。务必至少使用字符组合"\t" 和"\n" 各一次。 打印这个人名,以显示其开头和末尾的空白。然后,分别使用剔除函数lstrip() 、rstrip() 和strip() 对人名进行处理,并将结果打印出来。
badname = '*****S\thiting\n King*****'
badname2 = ' S\thiting\n King '
print(badname)
print('------------------------')
lstrip()函数,剔除字符串左边的空白,也可以括号里带参数(剔除对应的字符)
print(badname.lstrip('*'))
rstrip()函数剔除字符串右边的空白,也可以括号里带参数(剔除对应的字符)
print(badname.rstrip('*'))
strip()函数剔除字符串两边的空白,也可以括号里带参数(剔除对应的字符)
print(badname.strip('*'))
print('------------------------')
print(badname2.lstrip())
print(badname2.rstrip())
print(badname2.strip())
reslut:
*****S hiting
King*****
S hiting
King*****
*****S hiting
King
S hiting
King
S hiting
King
S hiting
King
S hiting
King
8月23日----循环作业
1.读程序
numbers=1
for i in range(0,20):
numbers*=2
print(numbers)
2^20
2.读程序
summation=0
num=1
while num<=100:
if (num%3==0 or num%7==0) and num%21!=0:
summation += 1
num+=1
print(summation)
找出 1-100之间能整除3或7但是又不能被这两者整除的数 的个数
3.求1到100之间所有数的和、平均值
for
sum1 = 0
mean1 = 0
for n in range(1,101):
sum1 += n
mean1 = sum1/100
print('for: 1-100之间所有数的和:%d,平均值:%d' % (sum1,mean1))
while
sum11 = 0
mean11 = 0
numa = 1
while numa <= 100:
sum11 += numa
numa +=1
mean11 = sum11/100
print('while: 1-100之间所有数的和:%d,平均值:%.2f' % (sum11,mean11))
结果:
for: 1-100之间所有数的和:5050,平均值:50.50
while: 1-100之间所有数的和:5050,平均值:50.50
4.计算1-100之间能3整除的数的和
for
sum2 = 0
for n in range(1,101):
if not n%3:
sum2 += n
print('for: 1-100之间能3整除的数的和:%d' % sum2)
while
sum21 = 0
num21 = 1
while num21 <= 100:
if not num21%3:
sum21 += num21
num21 += 1
print('while: 1-100之间能3整除的数的和:%d' % sum21)
结果:
for: 1-100之间能3整除的数的和:1683
while: 1-100之间能3整除的数的和:1683
5.计算1-100之间不能被7整除的数的和
for
sum3 = 0
for n in range(1,101):
if n%7:
sum3 += n
print('for: 1-100之间不能被7整除的数的和:%d' % sum3)
while
sum31 = 0
num31 = 1
while num31 <= 100:
if num31%7:
sum31 += num31
num31 += 1
print('while: 1-100之间不能被7整除的数的和:%d' % sum31)
结果:
for: 1-100之间不能被7整除的数的和:4315
while: 1-100之间不能被7整除的数的和:4315
1.求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34......
def fibonacci(n):
fibonacci_list=[]
if n == 1:
fibonacci_list = [1]
elif n == 2:
fibonacci_list = [1,1]
else:
fibonacci_list = [1,1]
for num in range(3,n+1):
fibonacci_list.append(fibonacci_list[num-2]+fibonacci_list[num-3])
print('斐波那契数列为:%s, 第%d个数的值: %d' % (str(fibonacci_list),n,fibonacci_list[n-1]))
if name == 'main':
fibonacci(8)
结果:
斐波那契数列为:[1, 1, 2, 3, 5, 8, 13, 21], 第8个数的值: 21
2.判断101-200之间有多少个素数,并输出所有素数。判断素数的方法:用一个数分别除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数
def prime_number(start,end):
prime_number_count = []
for num in range(start,end+1):
mark = 1 # mark = 1 是素数
for n in range(2,num):
if not num%n:
mark = 0
break
if mark:
prime_number_count.append(num)
print('%d-%d之间的素数:%s, 共%d 个'%(start,end,str(prime_number_count),len(prime_number_count)))
if name == 'main':
prime_number(101,200)
结果:
101-200之间的素数:[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199], 共21 个
3.打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3
def Narcissistic_number():
Narcissistic_number_list = []
for num in range(100,1000):
one = num % 10 #个位
decade = num // 10 % 10 #十位
hundred = num // 100 #百位
num_s = one3 + decade3 + hundred**3
if num_s == num:
Narcissistic_number_list.append(num_s)
print('所有水仙花数:%s'% Narcissistic_number_list )
if name == 'main':
Narcissistic_number()
结果:
所有水仙花数:[153, 370, 371, 407]
4.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数分子:上一个分数的分子加分母 分母: 上一个分数的分子 fz = 2 fm = 1 fz+fm / fz
def fractional_sequence(n):
fz = 2
fm = 1
fractional = 0
fractional_list = [2]
for num in range(2,n+1):
fractional = (fz + fm)/fz
fractional_list.append(fractional)
(fz, fm) = (fz+fm, fz)
print('分数序列:%s, 第%d个分数的值: %s'%(fractional_list,n,fractional_list[-1]))
if name == 'main':
fractional_sequence(20) # n > 1
结果:
分数序列:[2, 1.5, 1.6666666666666667, 1.6, 1.625, 1.6153846153846154, 1.619047619047619, 1.6176470588235294, 1.6181818181818182, 1.6179775280898876, 1.6180555555555556, 1.6180257510729614, 1.6180371352785146, 1.618032786885246, 1.618034447821682, 1.6180338134001253, 1.618034055727554, 1.6180339631667064, 1.6180339985218033, 1.618033985017358], 第20个分数的值: 1.618033985017358
5.给一个正整数,要求:1、求它是几位数 2.逆序打印出各位数字
def positive_integer(num):
num_str = str(num)
num_list = list(num_str)
print('正整数是%d位数, 逆序打印: %s 或 %s' % (len(num_str),num_list[::-1],num_str[::-1]))
if name == 'main':
positive_integer(2589)
结果:
正整数是4位数, 逆序打印: ['9', '8', '5', '2'] 或 9852
8月24日-------------作业
1.控制台输入年龄,根据年龄输出不同的提示(例如:老年人,青壮年,成年人,未成年,儿童)
age = int(input('请输入年龄:'))
if age >= 60:
print('老年人')
elif age >= 35:
print('青壮年')
elif age >= 18:
print('成年人')
elif age >= 12:
print('未成年')
elif age >= 0:
print('儿童')
else:
pass
结果:
请输入年龄:60
老年人
请输入年龄:24
成年人
请输入年龄:2
儿童
2.计算5的阶乘 5!的结果是
number = int(input('输入需要阶乘的数字:'))
value = 1
for n in range(1,number+1):
value *= n
else:
print('%d 的阶乘值:%d' % (number,value))
result:
输入需要阶乘的数字:5
5 的阶乘值:120
3.求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。
number = int(input('输入要计算的阶乘再求和的数字:'))
sum1 = 0
for num in range(1,number+1):
value = 1
for n in range(1,num+1):
value *= n
sum1 += value
print('含%d 以内的所有数字的阶乘再求和的值: %d' % (number,sum1))
result:
输入要计算的阶乘再求和的数字:20
含20 以内的所有数字的阶乘再求和的值: 2561327494111820313
4.计算 1+1/2!+1/3!+1/4!+...1/20!=?
number = int(input('输入要计算的阶乘再求和的数字:'))
sum1 = 0
for num in range(1,number+1):
value = 1
for n in range(1,num+1):
value *= n
sum1 += (1/value)
print('含%d以内的所有数字的阶乘倒数再求和的值: %.6f' % (number,sum1))
result:
输入要计算的阶乘再求和的数字:20
含20以内的所有数字的阶乘倒数再求和的值: 1.718282
5.循环输入大于0的数字进行累加,直到输入的数字为0,就结束循环,并最后输出累加的结果。
print('输入数字累加运算,输入0结束.')
sum1 = 0
while True:
number = int(input('输入数字: '))
sum1 += number
if not number:
break
print('累加的和:%d' % sum1)
result:
输入数字累加运算,输入0结束.
输入数字: 1
输入数字: 2
输入数字: 3
输入数字: 4
输入数字: 5
输入数字: 0
累加的和:15
6.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。
number = input('输入要计算的整数:')
length = int(input('输入相加数字的数量:'))
sum1 = 0
for n in range(1,length+1):
sum1 += int(number*n)
print('由 %s 组成的 %d 个数相加的和: %d' % (number,length,sum1))
result:
输入要计算的整数:2
输入相加数字的数量:5
由 2 组成的 5 个数相加的和: 24690
7.输入三个整数x,y,z,请把这三个数由小到大输出。
number1 = int(input('第一个整数:'))
number2 = int(input('第二个整数:'))
number3 = int(input('第三个整数:'))
number_list = [number1,number2,number3]
number_list.sort() #会对原列表进行排序 reverse可以改变排序方式;但是list.sort()本身返回None
print('由小到大排序: %s' % number_list)
result:
第一个整数:423
第二个整数:23
第三个整数:3
由小到大排序: [3, 23, 423]
8.控制台输出三角形(直三角和正三角)
直三角
number = input('构成直角三角形的行数:')
for n in range(1,int(number)+1):
print(''(int(number)-n+1))
result:
构成直角三角形的行数:5
**
正三角
number = int(input('构成正三角形的最多的字符数:')) #7
for n in range(1,int((number+1)/2+1)):
print(' 'int((number+1)/2-n),''(2n-1))
result:
构成正三角形的最多的字符数:7
*
9.输出99口诀。
for i in range(1,10):
for j in range(1,10):
if(j > i):
break
print('%d%d=%d' % (j,i,i*j),end=' ')
print('\n')
result:
1*1=1
12=2 22=4
13=3 23=6 3*3=9
14=4 24=8 34=12 44=16
15=5 25=10 35=15 45=20 5*5=25
16=6 26=12 36=18 46=24 56=30 66=36
17=7 27=14 37=21 47=28 57=35 67=42 7*7=49
18=8 28=16 38=24 48=32 58=40 68=48 78=56 88=64
19=9 29=18 39=27 49=36 59=45 69=54 79=63 89=72 99=81
10.这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?
horses = 100
goods = 100
for small_horse in range(0,201): #最多200
for middle_horse in range(0,51): #最多50
for big_horse in range(0,34): #最多33
if(small_horse + middle_horse + big_horse == horses) and (0.5small_horse + middle_horse2 + big_horse3 == goods):
print('small_horse:%d middle_horse:%d big_horse:%d' % (small_horse,middle_horse,big_horse))
result:
small_horse:68 middle_horse:30 big_horse:2
small_horse:70 middle_horse:25 big_horse:5
small_horse:72 middle_horse:20 big_horse:8
small_horse:74 middle_horse:15 big_horse:11
small_horse:76 middle_horse:10 big_horse:14
small_horse:78 middle_horse:5 big_horse:17
small_horse:80 middle_horse:0 big_horse:20
11.我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的: 5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。
money = 100
chicken = 100
for chick in range(0,301): #最多300
for hen in range(0,34): #最多33
for cock in range(0,21): #最多20
if(chick + hen + cock == chicken) and (5cock + 3hen + 1/3*chick == 100):
print('公鸡%d 只,母鸡%d 只,小鸡%d 只' % (cock, hen, chick))
result:
公鸡0 只,母鸡25 只,小鸡75 只
公鸡4 只,母鸡18 只,小鸡78 只
公鸡8 只,母鸡11 只,小鸡81 只
公鸡12 只,母鸡4 只,小鸡84 只
12.小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些购买结合?
money = 100
for shampoo in range(0,7): #最多6
for soap in range(0,51): #最多50
for toothbrush in range(0,21): #最多20
if(shampoo15 + soap2 + toothbrush*5 == 100):
print('可以洗发水%d 瓶,肥皂%d 块,牙刷%d 副' % (shampoo, soap, toothbrush))
result:
可以洗发水0 瓶,肥皂0 块,牙刷20 副
可以洗发水0 瓶,肥皂5 块,牙刷18 副
可以洗发水0 瓶,肥皂10 块,牙刷16 副
可以洗发水0 瓶,肥皂15 块,牙刷14 副
可以洗发水0 瓶,肥皂20 块,牙刷12 副
可以洗发水0 瓶,肥皂25 块,牙刷10 副
可以洗发水0 瓶,肥皂30 块,牙刷8 副
可以洗发水0 瓶,肥皂35 块,牙刷6 副
可以洗发水0 瓶,肥皂40 块,牙刷4 副
可以洗发水0 瓶,肥皂45 块,牙刷2 副
可以洗发水0 瓶,肥皂50 块,牙刷0 副
可以洗发水1 瓶,肥皂0 块,牙刷17 副
可以洗发水1 瓶,肥皂5 块,牙刷15 副
可以洗发水1 瓶,肥皂10 块,牙刷13 副
可以洗发水1 瓶,肥皂15 块,牙刷11 副
可以洗发水1 瓶,肥皂20 块,牙刷9 副
可以洗发水1 瓶,肥皂25 块,牙刷7 副
可以洗发水1 瓶,肥皂30 块,牙刷5 副
可以洗发水1 瓶,肥皂35 块,牙刷3 副
可以洗发水1 瓶,肥皂40 块,牙刷1 副
可以洗发水2 瓶,肥皂0 块,牙刷14 副
可以洗发水2 瓶,肥皂5 块,牙刷12 副
可以洗发水2 瓶,肥皂10 块,牙刷10 副
可以洗发水2 瓶,肥皂15 块,牙刷8 副
可以洗发水2 瓶,肥皂20 块,牙刷6 副
可以洗发水2 瓶,肥皂25 块,牙刷4 副
可以洗发水2 瓶,肥皂30 块,牙刷2 副
可以洗发水2 瓶,肥皂35 块,牙刷0 副
可以洗发水3 瓶,肥皂0 块,牙刷11 副
可以洗发水3 瓶,肥皂5 块,牙刷9 副
可以洗发水3 瓶,肥皂10 块,牙刷7 副
可以洗发水3 瓶,肥皂15 块,牙刷5 副
可以洗发水3 瓶,肥皂20 块,牙刷3 副
可以洗发水3 瓶,肥皂25 块,牙刷1 副
可以洗发水4 瓶,肥皂0 块,牙刷8 副
可以洗发水4 瓶,肥皂5 块,牙刷6 副
可以洗发水4 瓶,肥皂10 块,牙刷4 副
可以洗发水4 瓶,肥皂15 块,牙刷2 副
可以洗发水4 瓶,肥皂20 块,牙刷0 副
可以洗发水5 瓶,肥皂0 块,牙刷5 副
可以洗发水5 瓶,肥皂5 块,牙刷3 副
可以洗发水5 瓶,肥皂10 块,牙刷1 副
可以洗发水6 瓶,肥皂0 块,牙刷2 副
可以洗发水6 瓶,肥皂5 块,牙刷0 副
8月25日-----------------------list相关作业
1.已知一个列表,求列表中心元素
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
length = len(list1)
if length%2:
print('中心元素:%d' % list1(length//2))
else:
print('中心元素:%d %d' % (list1[(length-1)//2], list1[(length+1)//2]))
reuslt:
中心元素:4 5
2.已知一个列表,求所有元素和
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
sum1 = 0
for item in list1:
sum1 += int(item)
print('元素总和: %d' % sum1)
result:
元素总和: 36
3.已知一个列表,输出所有下标是奇数的元素
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
rint(list1[1::2])
result:
[2, 4, 6, 8]
4.已知一个列表,输出所有元素中,值为奇数的元素。
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
for item in list1:
if item%2:
print('%d' % item,end=' ')
result:
1 3 5 7
5.已知一个列表,将所有的元素乘以2。
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
list2 = [x*2 for x in list1]
print(list2)
result:
[2, 4, 6, 8, 10, 12, 14, 16]
6.已知一个列表,将所有元素加到第一个元素中。
list3 = [[1], 2, 3, 4, 5]
for item in list3[:]:
if list3[0]==item:
continue
list3[0].append(item)
print(list3)
result:
[[1, 2, 3, 4, 5], 2, 3, 4, 5]
7.已知一个列表A,将奇数位置元素存到B列表中,偶数元素存到C列表中。
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
list_B = [x for x in list1 if x % 2]
list_C = [x for x in list1 if not x % 2]
print('奇数B列表: %s 偶数C列表: %s' % (list_B, list_C))
result:
奇数B列表: [1, 3, 5, 7] 偶数C列表: [2, 4, 6, 8]
8.把A列表的前5个元素复制到B列表中。
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
list_b = [x for x in list1 if list1.index(x) < 5]
print(list_b)
result:
[1, 2, 3, 4, 5]
9.有一个长度是10的列表,按递增排列,用户输入一个数,插入适当位置。
list4 = []
for num in range(10):
number = int(input('输入数字: '))
list4.append( number )
list4.sort()
print('递增序列: %s' % list4)
result:
输入数字: 123
输入数字: 4
输入数字: 23
输入数字: 86
输入数字: 53
输入数字: 2
输入数字: 90
输入数字: 67
输入数字: 454
输入数字: 6
递增序列: [2, 4, 6, 23, 53, 67, 86, 90, 123, 454]
10.自己实现列表的count方法的功能。
def my_count(my_list,obj):
count = 0
for item in my_list:
if item == obj:
count += 1
print(count)
my_list = ['a','a','b',1,2,3,1]
my_count(my_list,'a')
result:
2
11.自己实现列表的extend方法的功能。
def my_extend(my_list,seq):
for item in seq:
my_list.append(item)
print(my_list)
my_list = ['a','a','b',1,2,3,1]
my_extend(my_list,[10,20,[30,40]])
result:
['a', 'a', 'b', 1, 2, 3, 1, 10, 20, [30, 40]]
12.自己实现列表的index方法
def my_index(my_list,obj):
for n in range(len(my_list)):
if my_list[n] == obj:
print(n)
break
my_list = ['a', 'a', 'b', 1, 2, 3, 1, 10, 20, [30, 40]]
my_index(my_list,'b')
result:
2
8月27日----------------------列表和元组,集合,字典相关作业
制作一个简单的学生信息管理系统
"""
author = 'rz'
Time = 2018/8/28 0028 下午 4:20
"""
student_list = [
{'id':2018001,'name':'admin','age':20,'phone':'10086'},
{'id':2018002,'name':'Lucian','age':20,'phone':'10010'},
{'id':2018003,'name':'lax','age':20,'phone':'10000'}
]
def menu():
#print(student_list)
print('\n***********************************')
print('XXX管理系统'.center(17,' '))
print('1.添加学生信息'.center(15,' '))
print('2.修改学生信息'.center(15, ' '))
print('3.查看学生信息'.center(15, ' '))
print('4.删除学生信息'.center(15, ' '))
print('0.退出学生系统'.center(15, ' '))
print('***********************************\n')
choose = input('输入功能选项:')
if choose == '1':
add_student()
elif choose == '2':
edit_student()
elif choose == '3':
query_student()
elif choose == '4':
delete_student()
elif choose == '0':
exit()
else:
print('选项有误,请重新输入')
menu()
def add_student():
print('\n')
print('添加学生'.center(15,' '))
name = input('输入学生的姓名:')
age = input('输入学生的年龄:')
phone = input('输入学生的电话:')
stu_len = len(student_list)
student_id = student_list[stu_len-1]['id'] + 1
student = {'id':student_id,'name':name,'age':age,'phone':phone}
student_list.append(student)
if stu_len < len(student_list):
print('添加学生成功.')
else:
print('添加学生失败,请联系管理员.')
print('\n')
print('选择操作选项'.center(15, ' '))
print('1.继续添加学生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('输入(按0返回/按1继续添加):')
if choose == '0':
menu()
elif choose == '1':
add_student()
else:
print('输入有误,请重新输入。')
def edit_student():
print('\n')
print('修改学生'.center(15, ' '))
stu_id = int(input('输入需要修改的学生id:'))
for n in range(len(student_list)):
if student_list[n]['id'] == stu_id:
print('学生信息:',student_list[n])
name = input('输入修改后学生的姓名:')
age = input('输入修改后学生的年龄:')
phone = input('输入修改后学生的电话:')
student_list[n]['name'] = name
student_list[n]['age'] = age
student_list[n]['phone'] = phone
print('修改成功,核实学生信息--',student_list[n])
break
else:
print('没有此名学生,请重新选择。')
edit_student()
print('\n')
print('选择操作选项'.center(15, ' '))
print('1.继续修改学生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('输入(按0返回/按1继续修改):')
if choose == '0':
menu()
elif choose == '1':
edit_student()
else:
print('输入有误,请重新输入。')
def query_student():
print('\n')
print('学生信息查询'.center(15, ' '))
print('1.按照姓名查询'.center(15, ' '))
print('2.按照年龄查询'.center(15, ' '))
print('3.全部查询'.center(15, ' '))
while True:
choose = input('输入选项:')
if choose == '1':
query_name()
elif choose == '2':
query_age()
elif choose == '3':
query_all()
else:
print('输入有误,请重新输入。')
def query_name():
name = input('输入学生名字(粗略查找):')
count = 0
for n in range(len(student_list)):
if name in student_list[n]['name']:
print(student_list[n])
count += 1
print('共找到符合要求的学生 %d 名' % count)
print('\n')
print('选择操作选项'.center(15, ' '))
print('1.继续查找学生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('输入(按0返回/按1继续查找):')
if choose == '0':
menu()
elif choose == '1':
query_student()
else:
print('输入有误,请重新输入。')
def query_age():
age = input('输入学生年龄(粗略查找):')
count = 0
for n in range(len(student_list)):
if age == str(student_list[n]['age']):
print(student_list[n])
count += 1
print('共找到符合要求的学生 %d 名' % count)
print('\n')
print('选择操作选项'.center(15, ' '))
print('1.继续查找学生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('输入(按0返回/按1继续查找):')
if choose == '0':
menu()
elif choose == '1':
query_student()
else:
print('输入有误,请重新输入。')
def query_all():
print('\n')
for n in range(len(student_list)):
print(student_list[n])
print('\n')
print('选择操作选项'.center(15, ' '))
print('1.继续查找学生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('输入(按0返回/按1继续查找):')
if choose == '0':
menu()
elif choose == '1':
query_student()
else:
print('输入有误,请重新输入。')
def delete_student():
print('\n')
print('删除学生'.center(15, ' '))
stu_id = int(input('输入需要删除的学生id:'))
for n in range(len(student_list)):
if student_list[n]['id'] == stu_id:
print('学生信息:',student_list[n])
while True:
print('\n确认删除吗? y确认/n取消')
choose = input().upper()
if choose == 'Y':
del student_list[n]
print('id %s 的学生删除成功' % stu_id)
break
elif choose == 'N':
break
else:
print('输入有误,请重新输入.')
print('\n')
print('选择操作选项'.center(15, ' '))
print('1.继续删除学生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('输入(按0返回/按1继续删除):')
if choose == '0':
menu()
elif choose == '1':
delete_student()
else:
print('输入有误,请重新输入。')
8月29日=-----------------------函数相关作业
1.编写一个函数,求1+2+3...+N
def sum2(maxinum:int): #参数为最后一位数
list1 = [x for x in range(1,maxinum+1)]
sum2 = sum(list1)
return sum2
print(sum2(5))
result:
15
2.编写一个函数,求多个数中的最大值
def get_maxinum(seq): #seq表示元组
list1 = list(seq)
list1.sort()
return list1[-1]
print(get_maxinum(1,5,2,1,90,9))
result:
90
3.编写一个函数,实现摇色子的功能,打印n个骰子的点数和
import random
def play_dice(num):
list1 = []
count = 0
for n in range(num):
number = random.randint(1,6)
list1.append(number)
count += number
print('摇色字点数情况:',list1)
return count
print('骰子的点数和: %d' % play_dice(6))
result:
摇色字点数情况: [3, 1, 3, 5, 4, 2]
骰子的点数和: 18
4.编写一个函数,交换指定字典的key和value。例如:{'a':1,'b':2,'c':3} ---> {1:'a',2:'b',3:'c'}
def exchange_key_value(dict1):
dict2 = {}
for n in dict1:
dict2[dict1[n]] = n
return dict2
dict1 = {'a':1,'b':2,'c':3}
print(exchange_key_value(dict1))
result:
{1: 'a', 2: 'b', 3: 'c'}
5.编写一个函数,三个数中最大值
def maxinum2(list1):
list1.sort()
return list1[-1]
list1 = [20,8,15]
print(maxinum2([20,8,15]))
result:
20
6.编写一个函数,提取指定字符串中的所有字母,然后拼接在一起打印出来。例如:'12a&bc12d--' --> 打印'abcd'
def get_alphabet(str1:str):
str2 = ''
for item in str1[:]:
if item <= 'z' and item >= 'a' or item <= 'Z' and item >= 'A':
str2 += item
return str2
str2 = '12a&bc12d--'
print(get_alphabet(str2))
result:
abcd
7.写一个函数,求多个数的平均值
def avarage(seq): #seq表示一个元组的数据 此时输入的时候直接输入数据就是元组,若输入元组,就会成为元组的一个子项元组
sum1 = 0
for item in seq[:]:
sum1 += item
return sum1/len(seq)
print(avarage(1,5,2,6,9))
result:
4.6
8.写一个函数,默认求10的阶乘,也可以求其他数的阶乘
def factorial(num=10):
count = 1
for n in range(1,num+1):
count *= n
return count
print(factorial())
print(factorial(11))
result:
3628800
39916800
9.写一个函数,可以对多个数进行不同的运算
def operation(str1,number):
count = 0
count2 = 1
if str1 == '+':
for n in number[:]:
count += n
return count
elif str1 == '-':
count = number[0]
for n in number[1:]:
count -= n
return count
elif str1 == '':
for n in number[:]:
count2 = n
return count2
elif str1 == '/':
count2 = number[0] / number[1]
return count2
elif str1 == '':
count2 = number[0]number[1]
return count2
elif str1 == '//':
count2 = number[0] // number[1]
return count2
elif str1 == '%':
count2 = number[0] % number[1]
return count2
else:
print('不支持这种运算符')
print(operation('+',2,3,5,6))
print(operation('-',2,3,5,6))
print(operation('',2,3,5,2))
print(operation('/',2,3))
print(operation('//',2,3))
print(operation('**',2,3))
print(operation('%',2,3))
result:
16
-12
60
0.6666666666666666
0
8
2
8月30日--------------------函数相关作业
1.写一个函数将一个指定的列表中的元素逆序(例如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)
reverse_order = lambda x:x[::-1]
print(reverse_order([1,5,2,7]))
result:
[7, 2, 5, 1]
2.写一个函数,提取出字符串中所有奇数位上的字符
def uneven_str(str1):
list2 = []
for item in str1[::2]:
list2.append(item)
return list2
print(uneven_str('ABCDEFGHIJK'))
result:
['A', 'C', 'E', 'G', 'I', 'K']
3.写一个匿名函数,判断指定的年是否是闰年
leap_year = lambda x:bool(x // 4 and not x // 100 or x // 400)
print(leap_year(400))
result:
True
4.使用递归打印:
def recursion(n): #注意判断递归的函数执行顺序,一层一层的剥开解读。
"""
递归打印@
:param n: 行数
:return: None
"""
if not n:
return
recursion(n-1)
print('@'*n)
recursion(5)
result:
@
@@
@@@
@@@@
@@@@@
5.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def check_list(list1):
for item in list1[::-1]:
if len(list1) > 2:
list1.remove(item)
return list1
check = check_list([1,2])
print(check)
result:
[1, 2]
6.写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者。
def fibonacci(n):
if n == 1 or n == 2:
return 1
else:
return fibonacci(n-1)+fibonacci(n-2)
fibo = fibonacci(10)
print(fibo)
result:
55
7.写一个函数,获取列表中的成绩的平均值,和最高分
def average_best(list1):
list1.sort()
return (sum(list1)/len(list1),list1[-1])
ave_b =average_best([10,20,30,40])
print(ave_b)
result:
(25.0, 40)
8.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新的列表返回给调用者
def uneven_index(*seq):
return list(seq[::2])
ue_index = uneven_index('a','b','c','d')
print(ue_index)
result:
['a', 'c']
9.写一个属于自己的数学模块(封装自己认为以后常用的数学相关的函数和变量)和列表模块(封装自己认为以后常用的列表相关的操作)
'''
没得想法,数学有运算符有math模块,list有切片,和c语言相比,简直无敌,还有列表函数。
'''
def func():
a = []
for i in range(5):
a.append(lambda x:x * i)
return a
aa = func()
print(aa0,aa2,aa3)
'''
注意:由于闭包特性,在函数中的子函数并不会立即执行,而是全部放入到list中,并且i值随遍历变成4
因此所得结果都是8
'''
9月1日----------------
基于json保存数据的简单学生管理系统
- 需要用到json文件和python格式编码转换的看这
- 控制台终端Terminal密码隐藏输入(不是直接run xx.py)
- 在线json格式校验
- codes
"""
__author__ = 'rz'
__Time__ = 2018/8/31 0031 下午 8:05
"""
import json
import getpass #用于控制台input输入密码隐藏化
def menu():
"""
主功能界面
:return:
"""
print("*"*53)
print('*' + ' '*51 + '*')
print('*' + 'Student Manager System'.center(51,' ') + '*')
print('*' + '1.Log in'.center(51,' ') + '*')
print('*' + '2.Register'.center(51,' ') + '*')
print('*' + '0.Exit '.center(51,' ') + '*')
print('*' + ' ' * 51 + '*')
print("*" * 53)
while True:
option = input('输入选项:')
if option == '1':
login()
elif option == '2':
register()
elif option == '0':
exit()
elif option == '':
continue
else:
print('输入有误,请重新选择功能项!')
def login():
"""
用户登录
:return:
"""
print('*' + 'starting login'.center(50, ' ') + '*')
f1 = open('./rmyfile/system_info.json', 'r', encoding='utf-8')
res = f1.read()
f1.close()
sys_info_list = json.loads(res) # 将文本中的json格式转换成python中格式,此处为list
while True:
t_id = input('输入id:')
t_pwd = getpass.getpass('输入密码:')
for n in range(len(sys_info_list)):
if sys_info_list[n]['id'] == t_id and sys_info_list[n]['pwd'] == t_pwd:
submenu(sys_info_list[n]) ##将该用户的字典信息返回
else:
print('没有该用户或用户密码不匹配,请重新登录')
def register():
"""
用户注册
:return:
"""
print('*' + 'starting register'.center(50, ' ') + '*')
f1 = open('./rmyfile/system_info.json', 'r', encoding='utf-8')
res = f1.read()
f1.close()
sys_info_list = json.loads(res) # 将文本中的json格式转换成python中格式,此处为list
while True:
t_id = input('输入用户id:')
for n in range(len(sys_info_list)):
if t_id == sys_info_list[n]['id']:
print('该用户id已存在.')
break
elif t_id == '':
print('用户id不能为空.')
break
else:
break
t_user = input('输入用户名:')
while True:
t_pwd = getpass.getpass('输入密码:')
t_pwd2 = getpass.getpass('确认密码:')
if t_pwd != t_pwd2:
print('密码不一致')
else:
break
new_info_dict = {}
new_info_dict['id'] = t_id
new_info_dict['user'] = t_user
new_info_dict['pwd'] = t_pwd
new_info_dict['students'] = []
sys_info_list.append(new_info_dict)
sys_info_json = json.dumps(sys_info_list) #将添加完信息的列表转换成json格式
f2 =open('./rmyfile/system_info.json','w',encoding='utf-8')
f2.write(sys_info_json)
print('用户:%s' % t_id + '注册成功')
f2.close()
print('选项:继续注册1/返回上一级0')
while True:
option = input('请输入选项:')
if option == '1':
register()
elif option == '0':
menu()
elif option == '':
continue
else:
print('输入有误,请重新选择.')
def submenu(teacher_dict:dict):
"""
子功能界面-用户登录后
:param teacher_dict:
:return:
"""
print("*" * 53)
print('*' + ('Welcome to you - %s'%teacher_dict['user']).center(50, ' ') + '*')
print('*' + '1.Add student'.center(50, ' ') + '*')
print('*' + '2.Edit student'.center(50, ' ') + '*')
print('*' + '3.Query student'.center(50, ' ') + '*')
print('*' + '4.Delete student'.center(50, ' ') + '*')
print('*' + '5.Return menu'.center(50, ' ') + '*')
print('*' + '0.Exit'.center(50, ' ') + '*')
print("*" * 53)
while True:
option = input('输入选项:')
if option == '1':
add_student(teacher_dict)
elif option == '2':
edit_student(teacher_dict)
elif option == '3':
query_student(teacher_dict)
elif option == '4':
delete_student(teacher_dict)
elif option == '5':
menu()
elif option == '0':
exit()
elif option == '':
continue
else:
print('输入有误,请重新选择功能项!')
def add_student(teacher_dict:dict):
print('*' + 'Adding student'.center(50, ' ') + '*')
f1 = open('./rmyfile/system_info.json', 'r', encoding='utf-8')
res = f1.read()
f1.close()
sys_info_list = json.loads(res) # 将文本中的json格式转换成python中格式,此处为list
stu_name = input('输入学生姓名:')
while True:
stu_id = input('输入学生学号:')
if stu_id == '':
continue
for n in range(len(teacher_dict['students'])): #学号一定不能相同
if stu_id == teacher_dict['students'][n]['stuid']:
print('学号已被占用,请重置.')
break
else: #注意若是上面的break结束循环,是不会执行else的
break
age = input('输入年龄:')
phone = input('输入电话号码:')
student_dcit = {'stuname':stu_name,'stuid':stu_id,'age':age,'phone':phone} #生成的新学生字典
t_index = sys_info_list.index(teacher_dict) #教师字典信息在系统信息列表的索引
sys_info_list[t_index]['students'].append(student_dcit) #添加新学生到系统信息列表
sys_info_json = json.dumps(sys_info_list)
f2 = open('./rmyfile/system_info.json', 'w', encoding='utf-8')
f2.write(sys_info_json)
f2.close()
print('添加学生( %s )成功.\n' % stu_name)
print('选项:继续添加1/返回上一级0')
while True:
option = input('请输入选项:')
if option == '1':
add_student(sys_info_list[t_index])
elif option == '0':
submenu(sys_info_list[t_index])
elif option == '':
continue
else:
print('输入有误,请重新选择.\n')
def edit_student(teacher_dict:dict):
print('*' + 'Editing student'.center(50, ' ') + '*')
print('你的所有学生信息如下:')
for n in range(len(teacher_dict['students'])): #打印全部学生
print(teacher_dict['students'][n])
f1 = open('./rmyfile/system_info.json', 'r', encoding='utf-8')
res = f1.read()
f1.close()
sys_info_list = json.loads(res) # 将文本中的json格式转换成python中格式,此处为list
t_index = sys_info_list.index(teacher_dict) # 教师字典信息在系统信息列表的索引
while True:
edit_id = input('输入需要修改的学生id:') # 先不做输入得不到学生id的情形
mark = 0
if edit_id == '':
continue
for n in range(len(teacher_dict['students'])):
if teacher_dict['students'][n]['stuid'] == edit_id: #找到匹配的学生
edit_name = input('修改名字:')
edit_age = input('修改年龄:')
edit_phone = input('修改电话号码:')
teacher_dict['students'][n]['stuname'] = edit_name
teacher_dict['students'][n]['age'] = edit_age
teacher_dict['students'][n]['phone'] = edit_phone
sys_info_list[t_index]['students'][n] = teacher_dict['students'][n].copy() #修改对应的学生的字典
mark = 1
sys_info_json = json.dumps(sys_info_list)
f2 = open('./rmyfile/system_info.json', 'w', encoding='utf-8')
f2.write(sys_info_json)
f2.close()
print('修改学生信息成功.\n')
break
if not mark:
print('欲修改的学生不存在( %s ).\n' % edit_id)
break
print('选项:继续修改1/返回上一级0')
while True:
option = input('请输入选项:')
if option == '1':
edit_student(sys_info_list[t_index])
elif option == '0':
submenu(sys_info_list[t_index])
elif option == '':
continue
else:
print('输入有误,请重新选择.')
def delete_student(teacher_dict:dict):
print('*' + 'Deleting student'.center(50, ' ') + '*')
print('你的所有学生信息如下:')
for n in range(len(teacher_dict['students'])): # 打印全部学生
print(teacher_dict['students'][n])
f1 = open('./rmyfile/system_info.json', 'r', encoding='utf-8')
res = f1.read()
f1.close()
sys_info_list = json.loads(res) # 将文本中的json格式转换成python中格式,此处为list
t_index = sys_info_list.index(teacher_dict) # 教师字典信息在系统信息列表的索引
while True:
del_id = input('输入需要删除的学生id:') # 先不做输入得不到学生id的情形
mark = 0
if del_id == '':
continue
for n in range(len(teacher_dict['students'])):
if teacher_dict['students'][n]['stuid'] == del_id: # 找到匹配的学生id
sys_info_list[t_index]['students'].pop(n) #删除对应学生的字典
sys_info_json = json.dumps(sys_info_list)
f2 = open('./rmyfile/system_info.json', 'w', encoding='utf-8')
f2.write(sys_info_json)
f2.close()
print('删除学生( %s )成功.\n' % del_id)
mark = 1
break
if not mark: #若没有这名学生给提示信息
print('没有id( %s )的学生\n' % del_id)
break
print('选项:继续删除1/返回上一级0')
while True:
option = input('请输入选项:')
if option == '1':
delete_student(sys_info_list[t_index])
elif option == '0':
submenu(sys_info_list[t_index])
elif option == '':
continue
else:
print('输入有误,请重新选择.')
def query_student(teacher_dict:dict):
print('*' + 'Querying student'.center(51, ' ') + '*')
print('*' + ' ' * 51 + '*')
print('*' + '1.Query by student name'.center(51, ' ') + '*')
print('*' + '2.Query by student id'.center(51, ' ') + '*')
print('*' + '3.Query by age'.center(51, ' ') + '*')
while True:
option = input('请输入选项:')
if option == '1':
query_student_name(teacher_dict)
elif option == '2':
query_student_id(teacher_dict)
elif option == '':
continue
else:
print('输入有误,请重新选择.')
def query_student_name(teacher_dict:dict):
print('*' + 'Querying by name'.center(51, ' ') + '*')
query_name = input('输入需要查询的学生姓名:')
count = 0
for n in range(len(teacher_dict['students'])):
if query_name in teacher_dict['students'][n]['stuname']:
count += 1
print(teacher_dict['students'][n])
print('总共为您找到%d条记录\n' % count)
print('选项:继续查询1/返回上一级0')
while True:
option = input('请输入选项:')
if option == '1':
query_student(teacher_dict)
elif option == '0':
submenu(teacher_dict)
elif option == '':
continue
else:
print('输入有误,请重新选择.')
def query_student_id(teacher_dict:dict):
print('*' + 'Querying by id'.center(51, ' ') + '*')
query_id = input('输入需要查询的学生学号:')
count = 0
for n in range(len(teacher_dict['students'])):
if query_id == teacher_dict['students'][n]['stuid']:
count += 1
print(teacher_dict['students'][n])
print('总共为您找到%d条记录\n' % count)
print('选项:继续查询1/返回上一级0')
while True:
option = input('请输入选项:')
if option == '1':
query_student(teacher_dict)
elif option == '0':
submenu(teacher_dict)
else:
print('输入有误,请重新选择.')
if __name__ == '__main__':
menu()
9月4日---------------------------------------------------------------------
1.提取data.json中的数据,将每条数据中的name、text、love和comment信息。并且保存到另外一个json文件中
import json
with open('./files/data.json','r',encoding='utf-8') as f:
content1 = json.load(f)
data_list = []
for n in range(len(content1['data'])):
data_dict = {'name':content1['data'][n]['name'],
'text':content1['data'][n]['text'],
'love':content1['data'][n]['love'],
'comment':content1['data'][n]['comment']}
data_list.append(data_dict)
with open('./files/data1.json','w',encoding='utf-8') as f2:
json.dump(data_list,f2)
2.统计data.json中comment数量超过1000的个数
import json
with open('./files/data.json','r',encoding='utf-8') as f:
content1 = json.load(f)
count = 0
for n in range(len(content1['data'])):
if int(content1['data'][n]['comment']) > 1000:
count += 1
print('统计data.json中comment数量超过1000的个数:%d ' % count )
result:
统计data.json中comment数量超过1000的个数:0
3.将data.json文件中所有点赞数(love)对应的值超出1000的用k来表示,例如1000修改为1k, 1345修改为1.3k
import json
with open('./files/data.json','r',encoding='utf-8') as f:
content1 = json.load(f)
for n in range(len(content1['data'])):
if content1['data'][n]['love'] > '1000':
str1 = str(int(content1['data'][n]['love'])/1000)
love_str = str1+'K'
content1['data'][n]['love'] = love_str
with open('./files/data.json','w',encoding='utf-8') as f2:
json.dump(content1,f2)
4.写猜数字游戏,如果输入有误,提示重新输入,直达输入正确为止。比如:输入数字的时候没有按要求输入,提示重新输入
import random
print('猜数字游戏(1-100).')
random_num = random.randint(1,100)
while True:
try:
num = int(input('输入数字:'))
if num > 100 or num < 0:
print('数值越界')
continue
elif num < random_num:
print('小了')
elif num > random_num:
print('大了')
else:
print('成功')
break
except ValueError as err:
print('ValueError:%s' % err)
5.写学生管理系统的添加学生功能(数据需要本地化),要求除了保存学生的基本信息以外还要保存学生的学号,但是学号需要自动生成,生成原则:
添加第一个学生对应的学号是:py001 第二次添加的学生的学号是:py002 ... 如果前面的学生因为各种原因被移除了,那后面添加学生的时候原则不变,
就是比如上次已经添加到py012,那么前面不管有没有删除情况,再次添加学生的学号是py013
import json
student_list = []
with open('./files/stu.json','r',encoding='utf-8') as f:
content1 = json.load(f)
add_dict = {}
name = input('输入姓名:')
age = input('输入年龄:')
if len(content1): #若开始列表不是空
student_id = content1[len(content1)-1]['student_id']
if int(student_id[2]) > 0: #py紧挨的不是0的情况
new_id = 'py' + str(int(student_id[2:])+1)
else: #py紧挨的是0
right_num = student_id.lstrip('py0') #剔除py和紧挨的0,得到后面直接相加的数字
new_id ='py' + (len(student_id)-len(right_num)-2)*'0' + str(int(right_num)+1)
add_dict = {'student_id': new_id, 'student_name': name, 'age': age}
else: #列表开始为空
add_dict = {'student_id':'py001','student_name':name,'age':age}
content1.append(add_dict)
with open('./files/stu.json','w',encoding='utf-8') as f2:
json.dump(content1,f2)
9月5日 ========================================
import pygame
from random import randint
if name == 'main':
pygame.init()
window = pygame.display.set_mode((1000,600))
window.fill((255,255,255))
pygame.display.flip()
ball_list = [] #{'ball_x':x,'ball_y':y,'speed':randint(1,3),'color':color,'radius':radius2}
while True:
# 不断的画圆
pygame.time.delay(10) #延迟10毫秒
window.fill((255,255,255)) #填白,将之前的界面中的球填充
for item in ball_list:
pygame.draw.circle(window,item['color'],(item['ball_x'],item['ball_y']),item['radius']) #画球
if item['ball_x'] < item['radius'] or item['ball_x'] > 1000-item['radius']: #触碰边界反向
item['speed'][0] *= -1
if item['ball_y'] < item['radius'] or item['ball_y'] > 600-item['radius']:#触屏边界方向
item['speed'][1] *= -1
item['ball_x'] += item['speed'][0]
item['ball_y'] += item['speed'][1]
for item2 in ball_list:
if item == item2:
pass
else:
if (item['ball_x'] - item2['ball_x']) ** 2 + \
(item['ball_y'] - item2['ball_y']) ** 2 <= (item['radius'] + item2['radius']) ** 2:
if item['radius'] == item2['radius']: #改变一个球的方向即可,相同的球撞开
item['speed'][0] = -item['speed'][0]
item['speed'][1] = -item['speed'][1]
if item['radius'] > item2['radius']:#大球吃小球
if item['radius'] + int(item2['radius']/5) <= 100:
item['radius'] = item['radius'] + int(item2['radius']/5)
ball_list.remove(item2)
else:#球最大100
item['radius'] = 100
ball_list.remove(item2)
pygame.display.update() #更新界面
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
if event.type == pygame.MOUSEBUTTONDOWN:
x,y = event.pos
color = (randint(0,255),randint(0,255),randint(0,255)) #随机取颜色球
radius2 = randint(10,20) #随机取半径
pygame.draw.circle(window, color, (x, y), radius2) # 画球
ball_dict = {'ball_x':x,'ball_y':y,'speed':[randint(1,3),randint(1,3)],'color':color,'radius':radius2}
ball_list.append(ball_dict)#
9月6日===================================
1.声明一个电脑类:属性:品牌、颜色、内存大小 方法:打游戏、写代码、看视频
a.创建电脑类的对象,然后通过对象点的方式获取、修改、添加和删除它的属性
b.通过attr相关方法去获取、修改、添加和删除它的属性
class Computer:
def init(self,brand,color,memory):
self.brand = brand
self.color = color
self.memory = memory
def play_game(self):
print('play games')
def write_codes(self):
print('write codes')
def look_video(self):
print('look at video')
if name == 'main':
computer = Computer('HP','white','2g')
computer.play_game()
print(computer.brand,computer.color,computer.memory)
computer.brand = 'Apple'#修改
computer.type = 'PC'#添加
del computer.color #删除
print(computer.brand, computer.type, computer.memory) #查看
setattr(computer,'brand','华硕') #修改
delattr(computer,'memory') #删除
print(getattr(computer,'brand'),getattr(computer,'color','Black'),computer.getattribute('type')) #查看和添加
result:
play games
HP white 2g
Apple PC 2g
华硕 Black PC
2.声明一个人的类和狗的类:
狗的属性:名字、颜色、年龄 狗的方法:叫唤
人的属性:名字、年龄、狗
人的方法:遛狗
a.创建人的对象小明,让他拥有一条狗大黄,然后让小明去遛大黄
class Dog:
def init(self,name,color,age):
self.color = color
self.name = name
self.age = age
def voice(self):
return(self.name+'-汪汪汪')
class Person:
def init(self,name,age,dog):
self.name = name
self.age = age
self.dog = dog
def walk_dog(self,voice):
print(self.name + '->遛狗->'+self.dog+'叫唤->'+voice)
if name == 'main':
dog = Dog('大黄','粉色','3')
person = Person('小明','10',dog.name)
person.walk_dog(dog.voice())
result:
小明->遛狗->大黄叫唤->大黄-汪汪汪
声明一个矩形类:属性:长、宽 ⽅方法:计算周长和面积
a.创建不同的矩形,并且打印其周长和面积
class Rectangle:
def init(self,length,width):
self.length = length
self.width = width
def circumference(self):
return '周长:%.2f' % 2(self.length+self.width)
def area(self):
return '面积:%.2f' % 2self.length*self.width
创建一个学生类:属性:姓名,年龄,学号 ⽅方法:答到,展示学生信息
创建一个班级类:属性:学生,班级名 ⽅方法:添加学生,删除学生,点名
class Student:
def init(self,name,age,id):
self.name = name
self.age = age
self.id = id
def sign_in(self):
print(self.name+'已到达')
def show_student(self):
print( {'name':self.name,'age':self.age,'id':self.id})
class Class:
def init(self,class_name,students):
self.class_name = class_name
self.students = students
def add_student(self,student):
"""
添加学生到学生列表中
:param student: 学生信息的字典
:return:
"""
self.students.apppend(student)
print('添加学生成功.')
def del_student(self,student_name):
"""
传入学生的姓名后从学生列表中删除该学生
:param student_name:
:return:
"""
for stu in self.students[:]:
if student_name == stu['name']:
self.students.remove(stu)
print('删除成功')
break
print('删除失败.')
def call_name(self):
for stu in self.students:
print(stu['name'],end=' ')
5.写一个类,封装所有和数学运算相关的功能(包含常用功能和常用值,例例如:pi, e等)
class Maths:
pi = 3.141592653589793
e = 2.718281828459045
@classmethod
def addition(cls,*number):
"""
加法
:param number:远算数元组
:return:
"""
return(sum(number))
@classmethod
def subtraction(cls,num,*number):
"""
减法
:param num:减数
:param number:被减数元组
:return:
"""
return(num-sum(number))
@classmethod
def multiplication(cls,*number):
"""
乘法
:param number: 乘数元组
:return:
"""
count = 1
for item in number:
count *= item
return count
@classmethod
def division(cls,num,*number):
"""
除法
:param num:除数
:param number:被除数元组
:return:
"""
for item in number:
num /= item
return num
@classmethod
def exponentiation(cls, number,num):
"""
乘方
:param number: 底数
:param num: 阶数
:return:
"""
count = 1
if num > 0:
for _ in range(num):
count *= number
return count
@classmethod
def factorial(cls, number,num):
"""
阶乘
:param number: 底数
:param num:阶数
:return:
"""
count = 1
if not num:
return 1
if num > 0:
for n in range(1,num+1):
count *= n
return count
6.1.写一个班级类,属性:班级名、学生; 功能:添加学生、删除学生、根据姓名查看学生信息,展示班级的所有学生信息
class Class2:
def init(self,class_name,students):
self.class_name = class_name
self.students = students
def add_student(self,student):
"""
添加学生到学生列表中
:param student: 学生信息的字典
:return:
"""
self.students.apppend(student)
print('添加学生成功.')
def del_student(self,student_name):
"""
传入学生的姓名后从学生列表中删除该学生
:param student_name:
:return:
"""
for stu in self.students[:]:
if student_name == stu['name']:
self.students.remove(stu)
print('删除成功')
break
print('删除失败.')
def query_student(self,student_name):
for stu in self.students:
if student_name == stu['name']:
print('找到该学生:%s' % stu)
break
print('没有找到该学生')
def all_students(self):
for stu in self.students:
print(stu)
9月7日========================================
0.定义一个学生类。有属性:姓名、年龄、成绩(语文,数学,英语)[每课成绩的类型为整数]
方法: a. 获取学生的姓名:getname() b. 获取学生的年龄:getage()
c. 返回3门科目中最高的分数。get_course()
class Student:
def init(self,name,age,*score):
self.name = name
self.age = age
self.score = score
def get_name(self):
return self.name
def get_age(self):
return self.age
def get_course(self):
return max(self.score)
def str(self):
return '姓名:%s 年龄:%d 成绩--语文%d分 数学%d分 英语%d分' %
(self.name,self.age,self.score[0],self.score[1],self.score[2])
if name == 'main':
stu =Student('艾瑞莉娅',25,78,90,88)
print(stu.get_name(),stu.get_age())
print(stu.get_course())
print(stu)
result:
艾瑞莉娅 25
90
姓名:艾瑞莉娅 年龄:25 成绩--语文78分 数学90分 英语88分
1.建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等成员变量,并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。
再定义一个小汽车类CarAuto 继承Auto 并添加空调、CD等成员变量 覆盖加速 减速的方法
class Auto:
def init(self,tire_num,color,weight,speed):
self.tire_num = tire_num
self.color = color
self.weight = weight
self.speed = speed
def speed_up(self,num):
self.speed += num
print('Auto:speed up,now your speed is %d' % self.speed)
def speed_down(self,num):
self.speed -= num
print('Auto:speed down,now your speed is %d' % self.speed)
def auto_stop(self):
self.speed = 0
print('Auto:stop, speed is 0')
class CarAuto(Auto):
def init(self,cd,conditioner,tire_num,color,weight,speed):
super(CarAuto, self).init(tire_num,color,weight,speed)
self.cd = cd
self._conditioner = conditioner
@property
def conditioner(self):
if self._conditioner:
return '有空调'
else:
return '没有空调'
def speed_up(self,num):
self.speed += num
print('Auto:speed up,now your speed is %d' % self.speed)
def speed_down(self, num):
self.speed -= num
print('Auto:speed down,now your speed is %d' % self.speed)
if name == 'main':
auto = Auto(4,'black','3t',90)
print(auto.dict)
auto.speed_up(20)
auto.speed_down(10)
auto.auto_stop()
car_auto =CarAuto('save',True,8,'yellow','5t',70)
print(car_auto.dict)
car_auto.speed_up(20)
car_auto.speed_down(10)
car_auto.auto_stop()
result:
{'tire_num': 4, 'color': 'black', 'weight': '3t', 'speed': 90}
Auto:speed up,now your speed is 110
Auto:speed down,now your speed is 100
Auto:stop, speed is 0
{'tire_num': 8, 'color': 'yellow', 'weight': '5t', 'speed': 70, 'cd': 'save', '_conditioner': True}
Auto:speed up,now your speed is 90
Auto:speed down,now your speed is 80
Auto:stop, speed is 0
2.创建一个名为User 的类,其中包含属性firstname 和lastname ,还有用户简介通常会存储的其他几个属性。在类User 中定义一个名
为describeuser() 的方法,它打印用户信息摘要;再定义一个名为greetuser() 的方法,它向用户发出个性化的问候。
管理员是一种特殊的用户。编写一个名为Admin 的类,让它继承User类。添加一个名为privileges 的属性,用于存储一个由字符串
(如"can add post"、"can delete post"、"can ban user"等)组成的列表。编写一个名为show_privileges()的方法,它显示管理员的权限。
创建一个Admin 实例,并调用这个方法。
class User:
def init(self,firstname,lastname,age,gender):
self.firstname =firstname
self.lastname = lastname
self.age = age
self.gender = gender
def describeuser(self):
print('姓:%s 名:%s 年龄:%d 性别:%s' % (self.firstname,self.lastname,self.age,self.gender))
def greetuser(self):
print('hey,i'm %s%s.hope to be friend with you' % (self.firstname,self.lastname))
class Admin(User):
def init(self,privileges:list,firstname,lastname,age,gender):
super(Admin, self).init(firstname,lastname,age,gender)
self.privileges = privileges
def show_privileges(self):
print('Administrator's privileges: %s' % self.privileges)
if name == 'main':
admin = Admin(['can add','can delete','can do everything'],'wang','shiting',20,'woman')
admin.show_privileges()
admin.greetuser()
admin.describeuser()
result:
Administrator's privileges: ['can add', 'can delete', 'can do everything']
hey,i'm wangshiting.hope to be friend with you
姓:wang 名:shiting 年龄:20 性别:woman
3.创建一个Person类,添加一个类字段用来统计Perosn类的对象的个数
class Person:
count_class = 0
def init(self):
Person.count_class += 1
if name == 'main':
person = Person()
person2 = Person()
print(Person.count_class)
result:
2