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