9.8作業

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.5
small_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保存數據的簡單學生管理系統

"""
__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' % 2
self.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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內容

  • 一、快捷鍵 ctr+b 執行ctr+/ 單行注釋ctr+c ...
    o_8319閱讀 5,847評論 2 16
  • 寫在前面的話 代碼中的# > 表示的是輸出結果 輸入 使用input()函數 用法 注意input函數輸出的均是字...
    FlyingLittlePG閱讀 2,791評論 0 8
  • 【阿音茶語】作者:阿音 等你來寵我/在春日里/我一直在等待/熱情的水把我泡開/當一個生命為另一個生命而綻放時/請問...
    阿音茶道和素齋閱讀 548評論 0 0
  • 早期農耕時代的女人較之牧游族的女人,要有地位得多,因為早期農耕時代的女人在農業公社常有極高的尊嚴。 這...
    sunshinewang閱讀 311評論 0 0