8月22日-----字符串相關(guān)
2-3 個(gè)性化消息: 將用戶(hù)的姓名存到一個(gè)變量中,并向該用戶(hù)顯示一條消息。顯示的消息應(yīng)非常簡(jiǎn)單铃芦,如“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 調(diào)整名字的大小寫(xiě): 將一個(gè)人名存儲(chǔ)到一個(gè)變量中,再以小寫(xiě)咳蔚、大寫(xiě)和首字母大寫(xiě)的方式顯示這個(gè)人名。
username = 'lucian'
首字母大寫(xiě)顯示
print(username.capitalize())
小寫(xiě)顯示
print(username.lower())
大寫(xiě)顯示
print(username.upper())
result:
Lucian
lucian
LUCIAN
2-5 名言: 找一句你欽佩的名人說(shuō)的名言搔驼,將這個(gè)名人的姓名和他的名言打印出來(lái)谈火。輸出應(yīng)類(lèi)似于下面這樣(包括引號(hào)):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: 重復(fù)練習(xí)2-5,但將名人的姓名存儲(chǔ)在變量famous_person 中舌涨,再創(chuàng)建要顯示的消息糯耍,并將其存儲(chǔ)在變量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 剔除人名中的空白: 存儲(chǔ)一個(gè)人名温技,并在其開(kāi)頭和末尾都包含一些空白字符。務(wù)必至少使用字符組合"\t" 和"\n" 各一次扭粱。 打印這個(gè)人名舵鳞,以顯示其開(kāi)頭和末尾的空白。然后琢蛤,分別使用剔除函數(shù)lstrip() 蜓堕、rstrip() 和strip() 對(duì)人名進(jìn)行處理,并將結(jié)果打印出來(lái)虐块。
badname = '*****S\thiting\n King*****'
badname2 = ' S\thiting\n King '
print(badname)
print('------------------------')
lstrip()函數(shù),剔除字符串左邊的空白俩滥,也可以括號(hào)里帶參數(shù)(剔除對(duì)應(yīng)的字符)
print(badname.lstrip('*'))
rstrip()函數(shù)剔除字符串右邊的空白,也可以括號(hào)里帶參數(shù)(剔除對(duì)應(yīng)的字符)
print(badname.rstrip('*'))
strip()函數(shù)剔除字符串兩邊的空白贺奠,也可以括號(hào)里帶參數(shù)(剔除對(duì)應(yīng)的字符)
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日----循環(huán)作業(yè)
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但是又不能被這兩者整除的數(shù) 的個(gè)數(shù)
3.求1到100之間所有數(shù)的和霜旧、平均值
for
sum1 = 0
mean1 = 0
for n in range(1,101):
sum1 += n
mean1 = sum1/100
print('for: 1-100之間所有數(shù)的和:%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之間所有數(shù)的和:%d,平均值:%.2f' % (sum11,mean11))
結(jié)果:
for: 1-100之間所有數(shù)的和:5050,平均值:50.50
while: 1-100之間所有數(shù)的和:5050,平均值:50.50
4.計(jì)算1-100之間能3整除的數(shù)的和
for
sum2 = 0
for n in range(1,101):
if not n%3:
sum2 += n
print('for: 1-100之間能3整除的數(shù)的和:%d' % sum2)
while
sum21 = 0
num21 = 1
while num21 <= 100:
if not num21%3:
sum21 += num21
num21 += 1
print('while: 1-100之間能3整除的數(shù)的和:%d' % sum21)
結(jié)果:
for: 1-100之間能3整除的數(shù)的和:1683
while: 1-100之間能3整除的數(shù)的和:1683
5.計(jì)算1-100之間不能被7整除的數(shù)的和
for
sum3 = 0
for n in range(1,101):
if n%7:
sum3 += n
print('for: 1-100之間不能被7整除的數(shù)的和:%d' % sum3)
while
sum31 = 0
num31 = 1
while num31 <= 100:
if num31%7:
sum31 += num31
num31 += 1
print('while: 1-100之間不能被7整除的數(shù)的和:%d' % sum31)
結(jié)果:
for: 1-100之間不能被7整除的數(shù)的和:4315
while: 1-100之間不能被7整除的數(shù)的和:4315
1.求斐波那契數(shù)列列中第n個(gè)數(shù)的值: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('斐波那契數(shù)列為:%s, 第%d個(gè)數(shù)的值: %d' % (str(fibonacci_list),n,fibonacci_list[n-1]))
if name == 'main':
fibonacci(8)
結(jié)果:
斐波那契數(shù)列為:[1, 1, 2, 3, 5, 8, 13, 21], 第8個(gè)數(shù)的值: 21
2.判斷101-200之間有多少個(gè)素?cái)?shù)个绍,并輸出所有素?cái)?shù)勒葱。判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別除2到sqrt(這個(gè)數(shù)),如果能被整除巴柿,則表明此數(shù)不是素?cái)?shù)凛虽,反之是素?cái)?shù)
def prime_number(start,end):
prime_number_count = []
for num in range(start,end+1):
mark = 1 # mark = 1 是素?cái)?shù)
for n in range(2,num):
if not num%n:
mark = 0
break
if mark:
prime_number_count.append(num)
print('%d-%d之間的素?cái)?shù):%s, 共%d 個(gè)'%(start,end,str(prime_number_count),len(prime_number_count)))
if name == 'main':
prime_number(101,200)
結(jié)果:
101-200之間的素?cái)?shù):[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199], 共21 個(gè)
3.打印出所有的水仙花數(shù),所謂水仙花數(shù)是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身广恢。例如:153是一個(gè)水仙花數(shù),因?yàn)?53 = 1^3 + 5^3 + 3^3
def Narcissistic_number():
Narcissistic_number_list = []
for num in range(100,1000):
one = num % 10 #個(gè)位
decade = num // 10 % 10 #十位
hundred = num // 100 #百位
num_s = one3 + decade3 + hundred**3
if num_s == num:
Narcissistic_number_list.append(num_s)
print('所有水仙花數(shù):%s'% Narcissistic_number_list )
if name == 'main':
Narcissistic_number()
結(jié)果:
所有水仙花數(shù):[153, 370, 371, 407]
4.有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個(gè)數(shù)列的第20個(gè)分?jǐn)?shù)分子:上一個(gè)分?jǐn)?shù)的分子加分母 分母: 上一個(gè)分?jǐn)?shù)的分子 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('分?jǐn)?shù)序列:%s, 第%d個(gè)分?jǐn)?shù)的值: %s'%(fractional_list,n,fractional_list[-1]))
if name == 'main':
fractional_sequence(20) # n > 1
結(jié)果:
分?jǐn)?shù)序列:[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個(gè)分?jǐn)?shù)的值: 1.618033985017358
5.給一個(gè)正整數(shù)凯旋,要求:1、求它是幾位數(shù) 2.逆序打印出各位數(shù)字
def positive_integer(num):
num_str = str(num)
num_list = list(num_str)
print('正整數(shù)是%d位數(shù), 逆序打印: %s 或 %s' % (len(num_str),num_list[::-1],num_str[::-1]))
if name == 'main':
positive_integer(2589)
結(jié)果:
正整數(shù)是4位數(shù), 逆序打印: ['9', '8', '5', '2'] 或 9852
8月24日-------------作業(yè)
1.控制臺(tái)輸入年齡钉迷,根據(jù)年齡輸出不同的提示(例如:老年人至非,青壯年,成年人糠聪,未成年荒椭,兒童)
age = int(input('請(qǐng)輸入年齡:'))
if age >= 60:
print('老年人')
elif age >= 35:
print('青壯年')
elif age >= 18:
print('成年人')
elif age >= 12:
print('未成年')
elif age >= 0:
print('兒童')
else:
pass
結(jié)果:
請(qǐng)輸入年齡:60
老年人
請(qǐng)輸入年齡:24
成年人
請(qǐng)輸入年齡:2
兒童
2.計(jì)算5的階乘 5!的結(jié)果是
number = int(input('輸入需要階乘的數(shù)字:'))
value = 1
for n in range(1,number+1):
value *= n
else:
print('%d 的階乘值:%d' % (number,value))
result:
輸入需要階乘的數(shù)字:5
5 的階乘值:120
3.求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加變成了累乘。
number = int(input('輸入要計(jì)算的階乘再求和的數(shù)字:'))
sum1 = 0
for num in range(1,number+1):
value = 1
for n in range(1,num+1):
value *= n
sum1 += value
print('含%d 以?xún)?nèi)的所有數(shù)字的階乘再求和的值: %d' % (number,sum1))
result:
輸入要計(jì)算的階乘再求和的數(shù)字:20
含20 以?xún)?nèi)的所有數(shù)字的階乘再求和的值: 2561327494111820313
4.計(jì)算 1+1/2!+1/3!+1/4!+...1/20!=?
number = int(input('輸入要計(jì)算的階乘再求和的數(shù)字:'))
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以?xún)?nèi)的所有數(shù)字的階乘倒數(shù)再求和的值: %.6f' % (number,sum1))
result:
輸入要計(jì)算的階乘再求和的數(shù)字:20
含20以?xún)?nèi)的所有數(shù)字的階乘倒數(shù)再求和的值: 1.718282
5.循環(huán)輸入大于0的數(shù)字進(jìn)行累加枷颊,直到輸入的數(shù)字為0戳杀,就結(jié)束循環(huán),并最后輸出累加的結(jié)果夭苗。
print('輸入數(shù)字累加運(yùn)算,輸入0結(jié)束.')
sum1 = 0
while True:
number = int(input('輸入數(shù)字: '))
sum1 += number
if not number:
break
print('累加的和:%d' % sum1)
result:
輸入數(shù)字累加運(yùn)算隔缀,輸入0結(jié)束.
輸入數(shù)字: 1
輸入數(shù)字: 2
輸入數(shù)字: 3
輸入數(shù)字: 4
輸入數(shù)字: 5
輸入數(shù)字: 0
累加的和:15
6.求s=a+aa+aaa+aaaa+aa...a的值题造,其中a是一個(gè)數(shù)字。例如2+22+222+2222+22222(此時(shí)共有5個(gè)數(shù)相加)猾瘸,幾個(gè)數(shù)相加有鍵盤(pán)控制界赔。 1.程序分析:關(guān)鍵是計(jì)算出每一項(xiàng)的值。
number = input('輸入要計(jì)算的整數(shù):')
length = int(input('輸入相加數(shù)字的數(shù)量:'))
sum1 = 0
for n in range(1,length+1):
sum1 += int(number*n)
print('由 %s 組成的 %d 個(gè)數(shù)相加的和: %d' % (number,length,sum1))
result:
輸入要計(jì)算的整數(shù):2
輸入相加數(shù)字的數(shù)量:5
由 2 組成的 5 個(gè)數(shù)相加的和: 24690
7.輸入三個(gè)整數(shù)x,y,z牵触,請(qǐng)把這三個(gè)數(shù)由小到大輸出淮悼。
number1 = int(input('第一個(gè)整數(shù):'))
number2 = int(input('第二個(gè)整數(shù):'))
number3 = int(input('第三個(gè)整數(shù):'))
number_list = [number1,number2,number3]
number_list.sort() #會(huì)對(duì)原列表進(jìn)行排序 reverse可以改變排序方式;但是list.sort()本身返回None
print('由小到大排序: %s' % number_list)
result:
第一個(gè)整數(shù):423
第二個(gè)整數(shù):23
第三個(gè)整數(shù):3
由小到大排序: [3, 23, 423]
8.控制臺(tái)輸出三角形(直三角和正三角)
直三角
number = input('構(gòu)成直角三角形的行數(shù):')
for n in range(1,int(number)+1):
print(''(int(number)-n+1))
result:
構(gòu)成直角三角形的行數(shù):5
**
正三角
number = int(input('構(gòu)成正三角形的最多的字符數(shù):')) #7
for n in range(1,int((number+1)/2+1)):
print(' 'int((number+1)/2-n),''(2n-1))
result:
構(gòu)成正三角形的最多的字符數(shù):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.這是經(jīng)典的"百馬百擔(dān)"問(wèn)題袜腥,有一百匹馬,馱一百擔(dān)貨钉汗,大馬馱3擔(dān)羹令,中馬馱2擔(dān)鲤屡,兩只小馬馱1擔(dān),問(wèn)有大福侈,中酒来,小馬各幾匹?
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.我國(guó)古代數(shù)學(xué)家張邱建在《算經(jīng)》中出了一道“百錢(qián)買(mǎi)百雞”的問(wèn)題肪凛,題意是這樣的: 5文錢(qián)可以買(mǎi)一只公雞堰汉,3文錢(qián)可以買(mǎi)一只母雞,1文錢(qián)可以買(mǎi)3只雛雞∥扒剑現(xiàn)在用100文錢(qián)買(mǎi)100只雞翘鸭,那么各有公雞、母雞远荠、雛雞多少只矮固?請(qǐng)編寫(xiě)程序?qū)崿F(xiàn)。
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.小明單位發(fā)了100元的購(gòu)物卡蠢涝,小明到超市買(mǎi)三類(lèi)洗化用品,洗發(fā)水(15元)阅懦,香皂(2元)和二,牙刷(5元)。要把100元整好花掉耳胎,可如有哪些購(gòu)買(mǎi)結(jié)合惯吕?
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('可以洗發(fā)水%d 瓶,肥皂%d 塊怕午,牙刷%d 副' % (shampoo, soap, toothbrush))
result:
可以洗發(fā)水0 瓶废登,肥皂0 塊,牙刷20 副
可以洗發(fā)水0 瓶郁惜,肥皂5 塊堡距,牙刷18 副
可以洗發(fā)水0 瓶,肥皂10 塊,牙刷16 副
可以洗發(fā)水0 瓶吏颖,肥皂15 塊搔体,牙刷14 副
可以洗發(fā)水0 瓶,肥皂20 塊半醉,牙刷12 副
可以洗發(fā)水0 瓶疚俱,肥皂25 塊,牙刷10 副
可以洗發(fā)水0 瓶缩多,肥皂30 塊呆奕,牙刷8 副
可以洗發(fā)水0 瓶,肥皂35 塊衬吆,牙刷6 副
可以洗發(fā)水0 瓶梁钾,肥皂40 塊,牙刷4 副
可以洗發(fā)水0 瓶逊抡,肥皂45 塊姆泻,牙刷2 副
可以洗發(fā)水0 瓶,肥皂50 塊冒嫡,牙刷0 副
可以洗發(fā)水1 瓶拇勃,肥皂0 塊,牙刷17 副
可以洗發(fā)水1 瓶孝凌,肥皂5 塊方咆,牙刷15 副
可以洗發(fā)水1 瓶,肥皂10 塊蟀架,牙刷13 副
可以洗發(fā)水1 瓶瓣赂,肥皂15 塊,牙刷11 副
可以洗發(fā)水1 瓶片拍,肥皂20 塊煌集,牙刷9 副
可以洗發(fā)水1 瓶,肥皂25 塊捌省,牙刷7 副
可以洗發(fā)水1 瓶牙勘,肥皂30 塊,牙刷5 副
可以洗發(fā)水1 瓶所禀,肥皂35 塊,牙刷3 副
可以洗發(fā)水1 瓶放钦,肥皂40 塊色徘,牙刷1 副
可以洗發(fā)水2 瓶,肥皂0 塊操禀,牙刷14 副
可以洗發(fā)水2 瓶褂策,肥皂5 塊,牙刷12 副
可以洗發(fā)水2 瓶,肥皂10 塊斤寂,牙刷10 副
可以洗發(fā)水2 瓶耿焊,肥皂15 塊,牙刷8 副
可以洗發(fā)水2 瓶遍搞,肥皂20 塊罗侯,牙刷6 副
可以洗發(fā)水2 瓶,肥皂25 塊溪猿,牙刷4 副
可以洗發(fā)水2 瓶钩杰,肥皂30 塊,牙刷2 副
可以洗發(fā)水2 瓶诊县,肥皂35 塊讲弄,牙刷0 副
可以洗發(fā)水3 瓶,肥皂0 塊依痊,牙刷11 副
可以洗發(fā)水3 瓶避除,肥皂5 塊,牙刷9 副
可以洗發(fā)水3 瓶胸嘁,肥皂10 塊瓶摆,牙刷7 副
可以洗發(fā)水3 瓶,肥皂15 塊缴渊,牙刷5 副
可以洗發(fā)水3 瓶赏壹,肥皂20 塊,牙刷3 副
可以洗發(fā)水3 瓶衔沼,肥皂25 塊蝌借,牙刷1 副
可以洗發(fā)水4 瓶,肥皂0 塊指蚁,牙刷8 副
可以洗發(fā)水4 瓶菩佑,肥皂5 塊,牙刷6 副
可以洗發(fā)水4 瓶凝化,肥皂10 塊稍坯,牙刷4 副
可以洗發(fā)水4 瓶,肥皂15 塊搓劫,牙刷2 副
可以洗發(fā)水4 瓶瞧哟,肥皂20 塊,牙刷0 副
可以洗發(fā)水5 瓶枪向,肥皂0 塊勤揩,牙刷5 副
可以洗發(fā)水5 瓶,肥皂5 塊秘蛔,牙刷3 副
可以洗發(fā)水5 瓶陨亡,肥皂10 塊傍衡,牙刷1 副
可以洗發(fā)水6 瓶,肥皂0 塊负蠕,牙刷2 副
可以洗發(fā)水6 瓶蛙埂,肥皂5 塊,牙刷0 副
8月25日-----------------------list相關(guān)作業(yè)
1.已知一個(gè)列表遮糖,求列表中心元素
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.已知一個(gè)列表绣的,求所有元素和
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
sum1 = 0
for item in list1:
sum1 += int(item)
print('元素總和: %d' % sum1)
result:
元素總和: 36
3.已知一個(gè)列表,輸出所有下標(biāo)是奇數(shù)的元素
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
rint(list1[1::2])
result:
[2, 4, 6, 8]
4.已知一個(gè)列表止吁,輸出所有元素中被辑,值為奇數(shù)的元素。
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.已知一個(gè)列表敬惦,將所有的元素乘以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.已知一個(gè)列表,將所有元素加到第一個(gè)元素中俄删。
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.已知一個(gè)列表A宏怔,將奇數(shù)位置元素存到B列表中,偶數(shù)元素存到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('奇數(shù)B列表: %s 偶數(shù)C列表: %s' % (list_B, list_C))
result:
奇數(shù)B列表: [1, 3, 5, 7] 偶數(shù)C列表: [2, 4, 6, 8]
8.把A列表的前5個(gè)元素復(fù)制到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.有一個(gè)長(zhǎng)度是10的列表,按遞增排列斜脂,用戶(hù)輸入一個(gè)數(shù)抓艳,插入適當(dāng)位置。
list4 = []
for num in range(10):
number = int(input('輸入數(shù)字: '))
list4.append( number )
list4.sort()
print('遞增序列: %s' % list4)
result:
輸入數(shù)字: 123
輸入數(shù)字: 4
輸入數(shù)字: 23
輸入數(shù)字: 86
輸入數(shù)字: 53
輸入數(shù)字: 2
輸入數(shù)字: 90
輸入數(shù)字: 67
輸入數(shù)字: 454
輸入數(shù)字: 6
遞增序列: [2, 4, 6, 23, 53, 67, 86, 90, 123, 454]
10.自己實(shí)現(xiàn)列表的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.自己實(shí)現(xiàn)列表的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.自己實(shí)現(xiàn)列表的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日----------------------列表和元組,集合片任,字典相關(guān)作業(yè)
制作一個(gè)簡(jiǎn)單的學(xué)生信息管理系統(tǒng)
"""
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管理系統(tǒng)'.center(17,' '))
print('1.添加學(xué)生信息'.center(15,' '))
print('2.修改學(xué)生信息'.center(15, ' '))
print('3.查看學(xué)生信息'.center(15, ' '))
print('4.刪除學(xué)生信息'.center(15, ' '))
print('0.退出學(xué)生系統(tǒng)'.center(15, ' '))
print('***********************************\n')
choose = input('輸入功能選項(xiàng):')
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('選項(xiàng)有誤,請(qǐng)重新輸入')
menu()
def add_student():
print('\n')
print('添加學(xué)生'.center(15,' '))
name = input('輸入學(xué)生的姓名:')
age = input('輸入學(xué)生的年齡:')
phone = input('輸入學(xué)生的電話:')
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('添加學(xué)生成功.')
else:
print('添加學(xué)生失敗,請(qǐng)聯(lián)系管理員.')
print('\n')
print('選擇操作選項(xiàng)'.center(15, ' '))
print('1.繼續(xù)添加學(xué)生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('輸入(按0返回/按1繼續(xù)添加):')
if choose == '0':
menu()
elif choose == '1':
add_student()
else:
print('輸入有誤,請(qǐng)重新輸入偏友。')
def edit_student():
print('\n')
print('修改學(xué)生'.center(15, ' '))
stu_id = int(input('輸入需要修改的學(xué)生id:'))
for n in range(len(student_list)):
if student_list[n]['id'] == stu_id:
print('學(xué)生信息:',student_list[n])
name = input('輸入修改后學(xué)生的姓名:')
age = input('輸入修改后學(xué)生的年齡:')
phone = input('輸入修改后學(xué)生的電話:')
student_list[n]['name'] = name
student_list[n]['age'] = age
student_list[n]['phone'] = phone
print('修改成功,核實(shí)學(xué)生信息--',student_list[n])
break
else:
print('沒(méi)有此名學(xué)生,請(qǐng)重新選擇对供。')
edit_student()
print('\n')
print('選擇操作選項(xiàng)'.center(15, ' '))
print('1.繼續(xù)修改學(xué)生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('輸入(按0返回/按1繼續(xù)修改):')
if choose == '0':
menu()
elif choose == '1':
edit_student()
else:
print('輸入有誤,請(qǐng)重新輸入位他。')
def query_student():
print('\n')
print('學(xué)生信息查詢(xún)'.center(15, ' '))
print('1.按照姓名查詢(xún)'.center(15, ' '))
print('2.按照年齡查詢(xún)'.center(15, ' '))
print('3.全部查詢(xún)'.center(15, ' '))
while True:
choose = input('輸入選項(xiàng):')
if choose == '1':
query_name()
elif choose == '2':
query_age()
elif choose == '3':
query_all()
else:
print('輸入有誤,請(qǐng)重新輸入。')
def query_name():
name = input('輸入學(xué)生名字(粗略查找):')
count = 0
for n in range(len(student_list)):
if name in student_list[n]['name']:
print(student_list[n])
count += 1
print('共找到符合要求的學(xué)生 %d 名' % count)
print('\n')
print('選擇操作選項(xiàng)'.center(15, ' '))
print('1.繼續(xù)查找學(xué)生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('輸入(按0返回/按1繼續(xù)查找):')
if choose == '0':
menu()
elif choose == '1':
query_student()
else:
print('輸入有誤,請(qǐng)重新輸入产场。')
def query_age():
age = input('輸入學(xué)生年齡(粗略查找):')
count = 0
for n in range(len(student_list)):
if age == str(student_list[n]['age']):
print(student_list[n])
count += 1
print('共找到符合要求的學(xué)生 %d 名' % count)
print('\n')
print('選擇操作選項(xiàng)'.center(15, ' '))
print('1.繼續(xù)查找學(xué)生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('輸入(按0返回/按1繼續(xù)查找):')
if choose == '0':
menu()
elif choose == '1':
query_student()
else:
print('輸入有誤,請(qǐng)重新輸入鹅髓。')
def query_all():
print('\n')
for n in range(len(student_list)):
print(student_list[n])
print('\n')
print('選擇操作選項(xiàng)'.center(15, ' '))
print('1.繼續(xù)查找學(xué)生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('輸入(按0返回/按1繼續(xù)查找):')
if choose == '0':
menu()
elif choose == '1':
query_student()
else:
print('輸入有誤,請(qǐng)重新輸入。')
def delete_student():
print('\n')
print('刪除學(xué)生'.center(15, ' '))
stu_id = int(input('輸入需要?jiǎng)h除的學(xué)生id:'))
for n in range(len(student_list)):
if student_list[n]['id'] == stu_id:
print('學(xué)生信息:',student_list[n])
while True:
print('\n確認(rèn)刪除嗎? y確認(rèn)/n取消')
choose = input().upper()
if choose == 'Y':
del student_list[n]
print('id %s 的學(xué)生刪除成功' % stu_id)
break
elif choose == 'N':
break
else:
print('輸入有誤京景,請(qǐng)重新輸入.')
print('\n')
print('選擇操作選項(xiàng)'.center(15, ' '))
print('1.繼續(xù)刪除學(xué)生'.center(15, ' '))
print('0.返回功能界面'.center(15, ' '))
while True:
choose = input('輸入(按0返回/按1繼續(xù)刪除):')
if choose == '0':
menu()
elif choose == '1':
delete_student()
else:
print('輸入有誤,請(qǐng)重新輸入迈勋。')
8月29日=-----------------------函數(shù)相關(guān)作業(yè)
1.編寫(xiě)一個(gè)函數(shù),求1+2+3...+N
def sum2(maxinum:int): #參數(shù)為最后一位數(shù)
list1 = [x for x in range(1,maxinum+1)]
sum2 = sum(list1)
return sum2
print(sum2(5))
result:
15
2.編寫(xiě)一個(gè)函數(shù)醋粟,求多個(gè)數(shù)中的最大值
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.編寫(xiě)一個(gè)函數(shù)靡菇,實(shí)現(xiàn)搖色子的功能,打印n個(gè)骰子的點(diǎn)數(shù)和
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('搖色字點(diǎn)數(shù)情況:',list1)
return count
print('骰子的點(diǎn)數(shù)和: %d' % play_dice(6))
result:
搖色字點(diǎn)數(shù)情況: [3, 1, 3, 5, 4, 2]
骰子的點(diǎn)數(shù)和: 18
4.編寫(xiě)一個(gè)函數(shù)米愿,交換指定字典的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.編寫(xiě)一個(gè)函數(shù),三個(gè)數(shù)中最大值
def maxinum2(list1):
list1.sort()
return list1[-1]
list1 = [20,8,15]
print(maxinum2([20,8,15]))
result:
20
6.編寫(xiě)一個(gè)函數(shù)育苟,提取指定字符串中的所有字母较鼓,然后拼接在一起打印出來(lái)。例如:'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.寫(xiě)一個(gè)函數(shù)违柏,求多個(gè)數(shù)的平均值
def avarage(seq): #seq表示一個(gè)元組的數(shù)據(jù) 此時(shí)輸入的時(shí)候直接輸入數(shù)據(jù)就是元組博烂,若輸入元組,就會(huì)成為元組的一個(gè)子項(xiàng)元組
sum1 = 0
for item in seq[:]:
sum1 += item
return sum1/len(seq)
print(avarage(1,5,2,6,9))
result:
4.6
8.寫(xiě)一個(gè)函數(shù)漱竖,默認(rèn)求10的階乘禽篱,也可以求其他數(shù)的階乘
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.寫(xiě)一個(gè)函數(shù),可以對(duì)多個(gè)數(shù)進(jìn)行不同的運(yùn)算
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('不支持這種運(yùn)算符')
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日--------------------函數(shù)相關(guān)作業(yè)
1.寫(xiě)一個(gè)函數(shù)將一個(gè)指定的列表中的元素逆序(例如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自帶的逆序函數(shù))
reverse_order = lambda x:x[::-1]
print(reverse_order([1,5,2,7]))
result:
[7, 2, 5, 1]
2.寫(xiě)一個(gè)函數(shù)馍惹,提取出字符串中所有奇數(shù)位上的字符
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.寫(xiě)一個(gè)匿名函數(shù)躺率,判斷指定的年是否是閏年
leap_year = lambda x:bool(x // 4 and not x // 100 or x // 400)
print(leap_year(400))
result:
True
4.使用遞歸打印:
def recursion(n): #注意判斷遞歸的函數(shù)執(zhí)行順序万矾,一層一層的剝開(kāi)解讀悼吱。
"""
遞歸打印@
:param n: 行數(shù)
:return: None
"""
if not n:
return
recursion(n-1)
print('@'*n)
recursion(5)
result:
@
@@
@@@
@@@@
@@@@@
5.寫(xiě)函數(shù),檢查傳入列表的長(zhǎng)度良狈,如果大于2后添,那么僅保留前兩個(gè)長(zhǎng)度的內(nèi)容,并將新內(nèi)容返回給調(diào)用者薪丁。
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.寫(xiě)函數(shù)遇西,利用遞歸獲取斐波那契數(shù)列中的第 10 個(gè)數(shù),并將該值返回給調(diào)用者窥突。
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.寫(xiě)一個(gè)函數(shù)努溃,獲取列表中的成績(jī)的平均值,和最高分
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.寫(xiě)函數(shù)阻问,檢查獲取傳入列表或元組對(duì)象的所有奇數(shù)位索引對(duì)應(yīng)的元素梧税,并將其作為新的列表返回給調(diào)用者
def uneven_index(*seq):
return list(seq[::2])
ue_index = uneven_index('a','b','c','d')
print(ue_index)
result:
['a', 'c']
9.寫(xiě)一個(gè)屬于自己的數(shù)學(xué)模塊(封裝自己認(rèn)為以后常用的數(shù)學(xué)相關(guān)的函數(shù)和變量)和列表模塊(封裝自己認(rèn)為以后常用的列表相關(guān)的操作)
'''
沒(méi)得想法,數(shù)學(xué)有運(yùn)算符有math模塊称近,list有切片第队,和c語(yǔ)言相比,簡(jiǎn)直無(wú)敵刨秆,還有列表函數(shù)凳谦。
'''
def func():
a = []
for i in range(5):
a.append(lambda x:x * i)
return a
aa = func()
print(aa0,aa2,aa3)
'''
注意:由于閉包特性,在函數(shù)中的子函數(shù)并不會(huì)立即執(zhí)行衡未,而是全部放入到list中尸执,并且i值隨遍歷變成4
因此所得結(jié)果都是8
'''
9月1日----------------
基于json保存數(shù)據(jù)的簡(jiǎn)單學(xué)生管理系統(tǒng)
- 需要用到json文件和python格式編碼轉(zhuǎn)換的看這
- 控制臺(tái)終端Terminal密碼隱藏輸入(不是直接run xx.py)
- 在線json格式校驗(yàn)
- codes
"""
__author__ = 'rz'
__Time__ = 2018/8/31 0031 下午 8:05
"""
import json
import getpass #用于控制臺(tái)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('輸入選項(xiàng):')
if option == '1':
login()
elif option == '2':
register()
elif option == '0':
exit()
elif option == '':
continue
else:
print('輸入有誤家凯,請(qǐng)重新選擇功能項(xiàng)!')
def login():
"""
用戶(hù)登錄
: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格式轉(zhuǎn)換成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]) ##將該用戶(hù)的字典信息返回
else:
print('沒(méi)有該用戶(hù)或用戶(hù)密碼不匹配如失,請(qǐng)重新登錄')
def register():
"""
用戶(hù)注冊(cè)
: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格式轉(zhuǎn)換成python中格式绊诲,此處為list
while True:
t_id = input('輸入用戶(hù)id:')
for n in range(len(sys_info_list)):
if t_id == sys_info_list[n]['id']:
print('該用戶(hù)id已存在.')
break
elif t_id == '':
print('用戶(hù)id不能為空.')
break
else:
break
t_user = input('輸入用戶(hù)名:')
while True:
t_pwd = getpass.getpass('輸入密碼:')
t_pwd2 = getpass.getpass('確認(rèn)密碼:')
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) #將添加完信息的列表轉(zhuǎn)換成json格式
f2 =open('./rmyfile/system_info.json','w',encoding='utf-8')
f2.write(sys_info_json)
print('用戶(hù):%s' % t_id + '注冊(cè)成功')
f2.close()
print('選項(xiàng):繼續(xù)注冊(cè)1/返回上一級(jí)0')
while True:
option = input('請(qǐng)輸入選項(xiàng):')
if option == '1':
register()
elif option == '0':
menu()
elif option == '':
continue
else:
print('輸入有誤,請(qǐng)重新選擇.')
def submenu(teacher_dict:dict):
"""
子功能界面-用戶(hù)登錄后
: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('輸入選項(xiàng):')
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('輸入有誤褪贵,請(qǐng)重新選擇功能項(xiàng)!')
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格式轉(zhuǎn)換成python中格式掂之,此處為list
stu_name = input('輸入學(xué)生姓名:')
while True:
stu_id = input('輸入學(xué)生學(xué)號(hào):')
if stu_id == '':
continue
for n in range(len(teacher_dict['students'])): #學(xué)號(hào)一定不能相同
if stu_id == teacher_dict['students'][n]['stuid']:
print('學(xué)號(hào)已被占用,請(qǐng)重置.')
break
else: #注意若是上面的break結(jié)束循環(huán),是不會(huì)執(zhí)行else的
break
age = input('輸入年齡:')
phone = input('輸入電話號(hào)碼:')
student_dcit = {'stuname':stu_name,'stuid':stu_id,'age':age,'phone':phone} #生成的新學(xué)生字典
t_index = sys_info_list.index(teacher_dict) #教師字典信息在系統(tǒng)信息列表的索引
sys_info_list[t_index]['students'].append(student_dcit) #添加新學(xué)生到系統(tǒng)信息列表
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('添加學(xué)生( %s )成功.\n' % stu_name)
print('選項(xiàng):繼續(xù)添加1/返回上一級(jí)0')
while True:
option = input('請(qǐng)輸入選項(xiàng):')
if option == '1':
add_student(sys_info_list[t_index])
elif option == '0':
submenu(sys_info_list[t_index])
elif option == '':
continue
else:
print('輸入有誤,請(qǐng)重新選擇.\n')
def edit_student(teacher_dict:dict):
print('*' + 'Editing student'.center(50, ' ') + '*')
print('你的所有學(xué)生信息如下:')
for n in range(len(teacher_dict['students'])): #打印全部學(xué)生
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格式轉(zhuǎn)換成python中格式脆丁,此處為list
t_index = sys_info_list.index(teacher_dict) # 教師字典信息在系統(tǒng)信息列表的索引
while True:
edit_id = input('輸入需要修改的學(xué)生id:') # 先不做輸入得不到學(xué)生id的情形
mark = 0
if edit_id == '':
continue
for n in range(len(teacher_dict['students'])):
if teacher_dict['students'][n]['stuid'] == edit_id: #找到匹配的學(xué)生
edit_name = input('修改名字:')
edit_age = input('修改年齡:')
edit_phone = input('修改電話號(hào)碼:')
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() #修改對(duì)應(yīng)的學(xué)生的字典
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('修改學(xué)生信息成功.\n')
break
if not mark:
print('欲修改的學(xué)生不存在( %s ).\n' % edit_id)
break
print('選項(xiàng):繼續(xù)修改1/返回上一級(jí)0')
while True:
option = input('請(qǐng)輸入選項(xiàng):')
if option == '1':
edit_student(sys_info_list[t_index])
elif option == '0':
submenu(sys_info_list[t_index])
elif option == '':
continue
else:
print('輸入有誤世舰,請(qǐng)重新選擇.')
def delete_student(teacher_dict:dict):
print('*' + 'Deleting student'.center(50, ' ') + '*')
print('你的所有學(xué)生信息如下:')
for n in range(len(teacher_dict['students'])): # 打印全部學(xué)生
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格式轉(zhuǎn)換成python中格式,此處為list
t_index = sys_info_list.index(teacher_dict) # 教師字典信息在系統(tǒng)信息列表的索引
while True:
del_id = input('輸入需要?jiǎng)h除的學(xué)生id:') # 先不做輸入得不到學(xué)生id的情形
mark = 0
if del_id == '':
continue
for n in range(len(teacher_dict['students'])):
if teacher_dict['students'][n]['stuid'] == del_id: # 找到匹配的學(xué)生id
sys_info_list[t_index]['students'].pop(n) #刪除對(duì)應(yīng)學(xué)生的字典
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('刪除學(xué)生( %s )成功.\n' % del_id)
mark = 1
break
if not mark: #若沒(méi)有這名學(xué)生給提示信息
print('沒(méi)有id( %s )的學(xué)生\n' % del_id)
break
print('選項(xiàng):繼續(xù)刪除1/返回上一級(jí)0')
while True:
option = input('請(qǐng)輸入選項(xiàng):')
if option == '1':
delete_student(sys_info_list[t_index])
elif option == '0':
submenu(sys_info_list[t_index])
elif option == '':
continue
else:
print('輸入有誤槽卫,請(qǐng)重新選擇.')
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('請(qǐng)輸入選項(xiàng):')
if option == '1':
query_student_name(teacher_dict)
elif option == '2':
query_student_id(teacher_dict)
elif option == '':
continue
else:
print('輸入有誤跟压,請(qǐng)重新選擇.')
def query_student_name(teacher_dict:dict):
print('*' + 'Querying by name'.center(51, ' ') + '*')
query_name = input('輸入需要查詢(xún)的學(xué)生姓名:')
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('選項(xiàng):繼續(xù)查詢(xún)1/返回上一級(jí)0')
while True:
option = input('請(qǐng)輸入選項(xiàng):')
if option == '1':
query_student(teacher_dict)
elif option == '0':
submenu(teacher_dict)
elif option == '':
continue
else:
print('輸入有誤,請(qǐng)重新選擇.')
def query_student_id(teacher_dict:dict):
print('*' + 'Querying by id'.center(51, ' ') + '*')
query_id = input('輸入需要查詢(xún)的學(xué)生學(xué)號(hào):')
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('選項(xiàng):繼續(xù)查詢(xún)1/返回上一級(jí)0')
while True:
option = input('請(qǐng)輸入選項(xiàng):')
if option == '1':
query_student(teacher_dict)
elif option == '0':
submenu(teacher_dict)
else:
print('輸入有誤晒夹,請(qǐng)重新選擇.')
if __name__ == '__main__':
menu()
9月4日---------------------------------------------------------------------
1.提取data.json中的數(shù)據(jù)裆馒,將每條數(shù)據(jù)中的name、text丐怯、love和comment信息喷好。并且保存到另外一個(gè)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.統(tǒng)計(jì)data.json中comment數(shù)量超過(guò)1000的個(gè)數(shù)
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('統(tǒng)計(jì)data.json中comment數(shù)量超過(guò)1000的個(gè)數(shù):%d ' % count )
result:
統(tǒng)計(jì)data.json中comment數(shù)量超過(guò)1000的個(gè)數(shù):0
3.將data.json文件中所有點(diǎn)贊數(shù)(love)對(duì)應(yīng)的值超出1000的用k來(lái)表示,例如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.寫(xiě)猜數(shù)字游戲读跷,如果輸入有誤梗搅,提示重新輸入,直達(dá)輸入正確為止效览。比如:輸入數(shù)字的時(shí)候沒(méi)有按要求輸入无切,提示重新輸入
import random
print('猜數(shù)字游戲(1-100).')
random_num = random.randint(1,100)
while True:
try:
num = int(input('輸入數(shù)字:'))
if num > 100 or num < 0:
print('數(shù)值越界')
continue
elif num < random_num:
print('小了')
elif num > random_num:
print('大了')
else:
print('成功')
break
except ValueError as err:
print('ValueError:%s' % err)
5.寫(xiě)學(xué)生管理系統(tǒng)的添加學(xué)生功能(數(shù)據(jù)需要本地化),要求除了保存學(xué)生的基本信息以外還要保存學(xué)生的學(xué)號(hào)丐枉,但是學(xué)號(hào)需要自動(dòng)生成哆键,生成原則:
添加第一個(gè)學(xué)生對(duì)應(yīng)的學(xué)號(hào)是:py001 第二次添加的學(xué)生的學(xué)號(hào)是:py002 ... 如果前面的學(xué)生因?yàn)楦鞣N原因被移除了,那后面添加學(xué)生的時(shí)候原則不變瘦锹,
就是比如上次已經(jīng)添加到py012,那么前面不管有沒(méi)有刪除情況籍嘹,再次添加學(xué)生的學(xué)號(hào)是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): #若開(kāi)始列表不是空
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,得到后面直接相加的數(shù)字
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: #列表開(kāi)始為空
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:
# 不斷的畫(huà)圓
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']) #畫(huà)球
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']: #改變一個(gè)球的方向即可历葛,相同的球撞開(kāi)
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)) #隨機(jī)取顏色球
radius2 = randint(10,20) #隨機(jī)取半徑
pygame.draw.circle(window, color, (x, y), radius2) # 畫(huà)球
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.聲明一個(gè)電腦類(lèi):屬性:品牌叼旋、顏色趁曼、內(nèi)存大小 方法:打游戲邀层、寫(xiě)代碼、看視頻
a.創(chuàng)建電腦類(lèi)的對(duì)象椅挣,然后通過(guò)對(duì)象點(diǎn)的方式獲取头岔、修改塔拳、添加和刪除它的屬性
b.通過(guò)attr相關(guān)方法去獲取、修改切油、添加和刪除它的屬性
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.聲明一個(gè)人的類(lèi)和狗的類(lèi):
狗的屬性:名字蝙斜、顏色、年齡 狗的方法:叫喚
人的屬性:名字澎胡、年齡、狗
人的方法:遛狗
a.創(chuàng)建人的對(duì)象小明娩鹉,讓他擁有一條狗大黃攻谁,然后讓小明去遛大黃
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:
小明->遛狗->大黃叫喚->大黃-汪汪汪
聲明一個(gè)矩形類(lèi):屬性:長(zhǎng)、寬 ?方法:計(jì)算周長(zhǎng)和面積
a.創(chuàng)建不同的矩形弯予,并且打印其周長(zhǎng)和面積
class Rectangle:
def init(self,length,width):
self.length = length
self.width = width
def circumference(self):
return '周長(zhǎng):%.2f' % 2(self.length+self.width)
def area(self):
return '面積:%.2f' % 2self.length*self.width
創(chuàng)建一個(gè)學(xué)生類(lèi):屬性:姓名戚宦,年齡,學(xué)號(hào) ?方法:答到锈嫩,展示學(xué)生信息
創(chuàng)建一個(gè)班級(jí)類(lèi):屬性:學(xué)生受楼,班級(jí)名 ?方法:添加學(xué)生,刪除學(xué)生呼寸,點(diǎn)名
class Student:
def init(self,name,age,id):
self.name = name
self.age = age
self.id = id
def sign_in(self):
print(self.name+'已到達(dá)')
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):
"""
添加學(xué)生到學(xué)生列表中
:param student: 學(xué)生信息的字典
:return:
"""
self.students.apppend(student)
print('添加學(xué)生成功.')
def del_student(self,student_name):
"""
傳入學(xué)生的姓名后從學(xué)生列表中刪除該學(xué)生
: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.寫(xiě)一個(gè)類(lèi)艳汽,封裝所有和數(shù)學(xué)運(yùn)算相關(guān)的功能(包含常用功能和常用值,例例如:pi, e等)
class Maths:
pi = 3.141592653589793
e = 2.718281828459045
@classmethod
def addition(cls,*number):
"""
加法
:param number:遠(yuǎn)算數(shù)元組
:return:
"""
return(sum(number))
@classmethod
def subtraction(cls,num,*number):
"""
減法
:param num:減數(shù)
:param number:被減數(shù)元組
:return:
"""
return(num-sum(number))
@classmethod
def multiplication(cls,*number):
"""
乘法
:param number: 乘數(shù)元組
:return:
"""
count = 1
for item in number:
count *= item
return count
@classmethod
def division(cls,num,*number):
"""
除法
:param num:除數(shù)
:param number:被除數(shù)元組
:return:
"""
for item in number:
num /= item
return num
@classmethod
def exponentiation(cls, number,num):
"""
乘方
:param number: 底數(shù)
:param num: 階數(shù)
:return:
"""
count = 1
if num > 0:
for _ in range(num):
count *= number
return count
@classmethod
def factorial(cls, number,num):
"""
階乘
:param number: 底數(shù)
:param num:階數(shù)
:return:
"""
count = 1
if not num:
return 1
if num > 0:
for n in range(1,num+1):
count *= n
return count
6.1.寫(xiě)一個(gè)班級(jí)類(lèi)对雪,屬性:班級(jí)名河狐、學(xué)生; 功能:添加學(xué)生瑟捣、刪除學(xué)生馋艺、根據(jù)姓名查看學(xué)生信息,展示班級(jí)的所有學(xué)生信息
class Class2:
def init(self,class_name,students):
self.class_name = class_name
self.students = students
def add_student(self,student):
"""
添加學(xué)生到學(xué)生列表中
:param student: 學(xué)生信息的字典
:return:
"""
self.students.apppend(student)
print('添加學(xué)生成功.')
def del_student(self,student_name):
"""
傳入學(xué)生的姓名后從學(xué)生列表中刪除該學(xué)生
: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('找到該學(xué)生:%s' % stu)
break
print('沒(méi)有找到該學(xué)生')
def all_students(self):
for stu in self.students:
print(stu)
9月7日========================================
0.定義一個(gè)學(xué)生類(lèi)迈套。有屬性:姓名捐祠、年齡、成績(jī)(語(yǔ)文桑李,數(shù)學(xué)踱蛀,英語(yǔ))[每課成績(jī)的類(lèi)型為整數(shù)]
方法: a. 獲取學(xué)生的姓名:getname() b. 獲取學(xué)生的年齡:getage()
c. 返回3門(mén)科目中最高的分?jǐn)?shù)。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 成績(jī)--語(yǔ)文%d分 數(shù)學(xué)%d分 英語(yǔ)%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 成績(jī)--語(yǔ)文78分 數(shù)學(xué)90分 英語(yǔ)88分
1.建立一個(gè)汽車(chē)類(lèi)Auto芙扎,包括輪胎個(gè)數(shù)星岗,汽車(chē)顏色,車(chē)身重量戒洼,速度等成員變量俏橘,并通過(guò)不同的構(gòu)造方法創(chuàng)建實(shí)例。至少要求 汽車(chē)能夠加速 減速 停車(chē)圈浇。
再定義一個(gè)小汽車(chē)類(lèi)CarAuto 繼承Auto 并添加空調(diào)寥掐、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 '有空調(diào)'
else:
return '沒(méi)有空調(diào)'
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.創(chuàng)建一個(gè)名為User 的類(lèi)靴寂,其中包含屬性firstname 和lastname ,還有用戶(hù)簡(jiǎn)介通常會(huì)存儲(chǔ)的其他幾個(gè)屬性召耘。在類(lèi)User 中定義一個(gè)名
為describeuser() 的方法百炬,它打印用戶(hù)信息摘要;再定義一個(gè)名為greetuser() 的方法,它向用戶(hù)發(fā)出個(gè)性化的問(wèn)候污它。
管理員是一種特殊的用戶(hù)剖踊。編寫(xiě)一個(gè)名為Admin 的類(lèi),讓它繼承User類(lèi)衫贬。添加一個(gè)名為privileges 的屬性德澈,用于存儲(chǔ)一個(gè)由字符串
(如"can add post"、"can delete post"固惯、"can ban user"等)組成的列表梆造。編寫(xiě)一個(gè)名為show_privileges()的方法,它顯示管理員的權(quán)限葬毫。
創(chuàng)建一個(gè)Admin 實(shí)例镇辉,并調(diào)用這個(gè)方法。
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.創(chuàng)建一個(gè)Person類(lèi)贴捡,添加一個(gè)類(lèi)字段用來(lái)統(tǒng)計(jì)Perosn類(lèi)的對(duì)象的個(gè)數(shù)
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