版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)例001:數(shù)字組合
題目有四個(gè)數(shù)字:1、2、3、4,能組成多少個(gè)互不相同且無重復(fù)數(shù)字的三位數(shù)?各是多少?
程序分析遍歷全部可能,把有重復(fù)的剃掉。
total=0
foriinrange(l,5):
forjinrange(l,5):
forkinrange(l,5):
if((i!=j)and(j!=k)and(k!=i)):
print(i,j,k)
total+=l
print(total)
12345678
簡(jiǎn)便方法用itertools中的permutations即可。
importitertools
sum2=0
a=[l,2,3,4]
foriinitertools.permutations(a,3):
print(i)
sum2+=l
print(sum2)
12345678
實(shí)例002:“個(gè)稅計(jì)算”
題目企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)⑴低于或等于10萬元時(shí),獎(jiǎng)金可提10%;利潤(rùn)高
于10萬元,低于20萬元時(shí),低于10萬元的部分按10%提成,高于10萬元的部分,可提成
7.5%;20萬到40萬之間時(shí),高于20萬元的部分,可提成5%;40萬到60萬之間時(shí)高于40
萬元的部分,可提成3%;60萬到100萬之間時(shí),高于60萬元的部分,可提成1.5%,高于
100萬元時(shí),超過100萬元的部分按1%提成,從鍵盤輸入當(dāng)月利潤(rùn)I,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)?
程序分析分區(qū)間計(jì)算即可。
profit=int(input('Showmethemoney:'))
bonus=0
thresholds=[100000,100000,200000,200000,400000]
rates=[0.1,0,075,0.05,0.03,0.015,0.01]
foriinrange(len(thresholds)):
ifprofit<=thresholds[i]:
bonus+=profit*rates[i]
profit=0
break
else:
bonus+=thresholds[i]*rates[i]
profit-=thresholds[i]
bonus+=profit*rates[-l]
print(bonus)
1234567891011121314
實(shí)例003:完全平方數(shù)
題目一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上168又是一個(gè)完全平方數(shù),請(qǐng)問
該數(shù)是多少?
程序分析因?yàn)?68對(duì)于指數(shù)爆炸來說實(shí)在太小了,所以可以直接省略數(shù)學(xué)分析,用最樸素
的方法來獲取上限:
n=0
while(n+l)**2-n*n<=168:
n+=l
print(n+l)
85
123456789
思路是:最壞的結(jié)果是n的平方與(n+1)的平方剛好差168,由于是平方的關(guān)系,不可能存在
比這更大的間隙。
至于判斷是否是完全平方數(shù),最簡(jiǎn)單的方法是:平方根的值小數(shù)為0即可。
結(jié)合起來:
n=0
while(n+l)**2-n*n<=168:
n+=l
foriinrange((n+l)**2):
ifi**0.5==int(i**0.5)and(i+168)**0.5==int((i+168)**0.5):
print(i-lOO)
1234567
實(shí)例004:這天第幾天
題目輸入某年某月某日,判斷這一天是這一年的第幾天?
程序分析特殊情況,閏年時(shí)需考慮二月多加一天:
defisLeapYear(y):
return(y%400==0or(y%4==0andy%100!=0))
DofM=[0,31,28,31,30,31,30,31,31,30,31,30]
res=0
year=int(input('Year:'))
month=int(input(,Month:'))
day=int(input('day:'))
ifisLeapYear(year):
DofM⑵+=1
foriinrange(month):
res+=DofM[i]
print(res+day)
12345678910111213
實(shí)例005:三數(shù)排序
題目輸入三個(gè)整數(shù)x,y,z,請(qǐng)把這三個(gè)數(shù)由小到大輸出。
程序分析練練手就隨便找個(gè)排序算法實(shí)現(xiàn)一下,偷懶就直接調(diào)函數(shù)。
raw=[]
foriinrange(3):
x=int(input('int%d:,%(i)))
raw.append(x)
foriinrange(len(raw)):
forjinrange(i,len(raw)):
ifraw[i]>raw[j]:
raw[i],raw[j]=raw[j],raw[i]
print(raw)
raw2=[]
foriinrange(3):
x=int(input('int%d:,%(i)))
raw2.append(x)
print(sorted(raw2))
123456789101112131415161718
實(shí)例006:斐波那契數(shù)列
題目斐波那契數(shù)列。
程序分析斐波那契數(shù)列(Fibonaccisequence),從1,1開始,后面每一項(xiàng)等于前面兩項(xiàng)之和。
圖方便就遞歸實(shí)現(xiàn),圖性能就用循環(huán)。
#遞歸實(shí)現(xiàn)
defFib(n):
return1ifn<=2elseFib(n-l)+Fib(n-2)
print(Fib(int(input())))
#樸素實(shí)現(xiàn)
target=int(input())
res=0
a,b=l,l
foriinrange(target-l):
a,b=b,a+b
print(a)
12345678910111213
實(shí)例007:copy
題目將一個(gè)列表的數(shù)據(jù)復(fù)制到另一個(gè)列表中。
程序分析使用列表[:],拿不準(zhǔn)可以調(diào)用copy模塊。
importcopy
a=[l,2,3A['a';b']]
b=a#賦值
c=a[:]#淺拷貝
d=copy.copy(a)#淺拷貝
e=copy.deepcopy(a)#深拷貝
a.append(5)
a[4].append('c')
print('a=',a)
print('b=',b)
print('c=,,c)
printed^,d)
print(,e=',e)
============RESTART:F:\PyWorkspace\Pythonl00\100examples\007.py
a=[1,2,3,4,['a','b','c'],5]
b=[l,2,3,4,['a','b','c'],5]
c=[1,2,3,4,['a','b','c']]
d=[l,2,3,4,['a','b','c']]
e=[1,2,3,4,['a','b']]
1234567891011121314151617181920212223
實(shí)例008:九九乘法表
題目輸出9*9乘法口訣表。
程序分析分行與列考慮,共9行9歹(j,i控制行,j控制列。
foriinrange(l,10):
forjinrange(l,i+l):
print('%d*%d=%2ld,%(i,j,i*j),end=")
print()
1234
實(shí)例009:暫停一秒輸出
題目暫停一秒輸出。
程序分析使用time模塊的sleep()函數(shù)。
importtime
foriinrange(4):
print(str(int(time.time()))[-2:])
time.sleep(l)
1234
實(shí)例卜10:給人看的時(shí)間
題目暫停一秒輸出,并格式化當(dāng)前時(shí)間。
程序分析同009.
importtime
foriinrange(4):
print(time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(time.time())))
time.sleep(l)
12345
^Hon:養(yǎng)兔子
題目有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)
月又生一對(duì)兔子,假如兔子都不死,問每個(gè)月的兔子總數(shù)為多少?
程序分析我認(rèn)為原文的解法有點(diǎn)扯,沒有考慮3個(gè)月成熟的問題,人家還是嬰兒怎么生孩
子?考慮到三個(gè)月成熟,可以構(gòu)建四個(gè)數(shù)據(jù),其中:一月兔每個(gè)月長(zhǎng)大成為二月兔,二月兔
變?nèi)峦?,三月兔變成年兔,成年?包括新成熟的三月兔)生等量的一月兔。
month=int(input('繁殖幾個(gè)月?:'))
month_l=l
month_2=0
month_3=0
month_elder=0
foriinrange(month):
month_l,month_2,month_3,month_elder=month_elder+month_3,month_l,month_2,month_el
der+month_3
print('M%d^'%(i+l),month_l+month_2+month_3+month_elder,,X^^-F')
print('其中1月兔month」)
print('其中2月兔::month_2)
print('其中3月兔::month_3)
print(,其中成年兔:,,month_elderj
123456789101112
實(shí)例|。12:100到200的素?cái)?shù)
題目判斷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ù)。用else可以進(jìn)一步簡(jiǎn)化代碼.
importmath
foriinrange(100,200):
flag=0
forjinrange(2,round(math.sqrt(i))+l):
ifi%j==0:
flag=l
break
ifflag:
continue
print(i)
print('\nSimplifythecodewith"else'^n')
foriinrange(100,200):
forjinrange(2,round(math.sqrt(i))+l):
ifi%j==0:
break
else:
print(i)
123456789101112131415161718192021
實(shí)例013:所有水仙花數(shù)
題目打印出所有的"水仙花數(shù)",所謂"水仙花數(shù)"是指一個(gè)三位數(shù),其各位數(shù)字立方和等于
該數(shù)本身。例如:153是一個(gè)"水仙花數(shù)",因?yàn)?53=1的三次方+5的三次方+3的三次方。
程序分析利用for循環(huán)控制100-999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位,十位,百位。
foriinrange(100,1000):
s=str(i)
one=int(s[-l])
ten=int(s[-2])
hun=int(s[-3])
ifi==one**3+ten**3+hun**3:
print(i)
1234567
實(shí)例014:分解質(zhì)因數(shù)
題目將一個(gè)整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=233*5。
程序分析根本不需要判斷是否是質(zhì)數(shù),從2開始向數(shù)本身遍歷,能整除的肯定是最小的質(zhì)
數(shù)。
target=int(input('輸入一個(gè)整數(shù):’))
print(target,'=',end=")
iftarget<0:
target=abs(target)
print('-l*,,end=")
flag=0
iftarget<=l:
print(target)
flag=l
whileTrue:
ifflag:
break
foriinrange(2,int(target+l)):
iftarget%i==0:
print("%d',%i,end=")
iftarget==i:
flag=l
break
print(*,end=")
target/=i
break
1234567891011121314151617181920212223242526
實(shí)例015:分?jǐn)?shù)歸檔
題目利用條件運(yùn)算符的嵌套來完成此題:學(xué)習(xí)成績(jī)>=90分的同學(xué)用A表示,60-89分之間
的用B表示,60分以下的用C表示。
程序分析用條件判斷即可。
points=int(input('輸入分?jǐn)?shù):'))
ifpoints>=90:
grade='A'
elifpoints<60:
grade='C
else:
grade=E
print(grade)
12345678
實(shí)例016:輸出日期
題目輸出指定格式的日期。
程序分析使用datetime模塊。
importdatetime
print(datetime.date.todayO)
print(datetime.date(2333,2,3))
print(datetime.date.today().strftime('%d/%m/%Y'))
day=datetime.date(llll,2,3)
day=day.replace(year=day.year+22)
print(day)
1234567
實(shí)例017:字符串構(gòu)成
題目輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。
程序分析利用while或for語句,條件為輸入的字符不為‘\n'。
string=input("輸入字符串:")
alp=0
num=0
spa=0
oth=0
foriinrange(len(string)):
ifstring[i].isspace():
spa+=l
elifstring[i].isdigit():
num+=l
elifstring[i].isalpha():
alp+=l
else:
oth+=l
print('space:',spa)
print('digit:',num)
print('alpha:',alp)
print('other:',oth)
12345678910111213141516171819
實(shí)例018:復(fù)讀機(jī)相加
題目求s=a+aa+aaa+aaaa+aa—a的值,其中a是一個(gè)數(shù)字。例如2+22+222+2222+22222(此
時(shí)共有5個(gè)數(shù)相加),幾個(gè)數(shù)相加由鍵盤控制。
程序分析用字符串解決。
a=input('被加數(shù)字:')
n=int(input('加幾次?:'))
res=0
foriinrange(n):
res+=int(a)
a+=a[0]
print('結(jié)果是:-res)
1234567
實(shí)例019:完數(shù)
題目一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為"完數(shù)"。例如6=1+2+3.編程找出
1000以內(nèi)的所有完數(shù)。
程序分析將每一對(duì)因子加進(jìn)集合,在這個(gè)過程中已經(jīng)自動(dòng)去重。最后的結(jié)果要求不計(jì)算其
本身。
deffactor(num):
target=int(num)
res=set()
foriinrange(l,num):
ifnum%i==0:
res.add(i)
res.add(num/i)
returnres
foriinrange(2,1001):
ifi==sum(factor(i))-i:
print(i)
123456789101112
^H020:高空拋物
題目一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10
次落地時(shí),共經(jīng)過多少米?第10次反彈多高?
程序分析無
high=200.
total=100
foriinrange(lO):
high/=2
total+=high
print(high/2)
print('總長(zhǎng):total)
1234567
^H021:猴子偷桃
題目猴子吃桃問題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不癮,又多吃了一個(gè)
第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一
半零一個(gè)。到第10天早上想再吃時(shí),見只剩下一個(gè)桃子了。求第一天共摘了多少。
程序分析按規(guī)則反向推斷:猴子有一個(gè)桃子,他偷來一個(gè)桃子,覺得不夠又偷來了與手上
等量的桃子,一共偷了9天。
peach=l
foriinrange(9):
peach=(peach+l)*2
print(peach)
1234
實(shí)例|022:比賽對(duì)手
題目?jī)蓚€(gè)乒乓球隊(duì)進(jìn)行比賽,各出三人。甲隊(duì)為a,b,c三人,乙隊(duì)為x,y,z三人。已抽簽決
定比賽名單。有人向隊(duì)員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請(qǐng)編程序找
出三隊(duì)賽手的名單。
程序分析找到條件下不重復(fù)的三個(gè)對(duì)手即可。
a=set(['x','y',,z'])
b=set(['x','y',,z'])
c=set(['x,,'y';z'])
c-=set(('x','z'))
a-=set('x')
foriina:
forjinb:
forkinc:
iflen(set((i,j,k)))==3:
print('a:%s,b:%s,c:%s'%(ijk))
12345678910
實(shí)例》23:畫菱形
題目打印出如下圖案(菱形):
***
***
程序分析遞歸調(diào)用即可。
defdraw(num):
a="*"*(2*(4-num)+l)
print(a.center(9/'))
ifnum!=l:
draw(num-l)
print(a.center(9,''))
draw(4)
1234567
BM024:斐波那契數(shù)列II
題目有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個(gè)數(shù)列的前20項(xiàng)之和。
程序分析就是斐波那契數(shù)列的后一項(xiàng)除以前一項(xiàng)。
a=2.0
b=1.0
s=0
forninrange(l,21):
s+=a/b
a,b=a+b,a
print(s)
12345678
^H025:階乘求和
題目求l+2!+3!+…+20!的和。
程序分析1+2!+3!+—+20!=1+2(1+3(1+4(-20(1))))
res=l
foriinrange(20,l,-l):
res=i*res+l
print(res)
1234
實(shí)例|026:遞歸求階乘
題目利用遞歸方法求5!。
程序分析遞歸調(diào)用即可。
deffactorial(n):
returnn*factorial(n-l)ifn>lelse1
print(factorial(5))
123
實(shí)例(027:遞歸輸出
題目利用遞歸函數(shù)調(diào)用方式,將所輸入的5個(gè)字符,以相反順序打印出來。
程序分析遞歸真是蠢方法。
defrec(string):
iflen(string)!=l:
rec(string[l:])
print(string[O],end=")
rec(input('stringhere:'))
123456
^|028:遞歸求等差數(shù)列
題目有5個(gè)人坐在一起,問第五個(gè)人多少歲?他說比第4個(gè)人大2歲。問第4個(gè)人歲數(shù),
他說比第3個(gè)人大2歲。問第三個(gè)人,又說比第2人大兩歲。問第2個(gè)人,說比第一個(gè)人大
兩歲。最后問第一個(gè)人,他說是10歲。請(qǐng)問第五個(gè)人多大?
程序分析就一等差數(shù)列。
defage(n):
ifn==l:
return10
return2+age(n-l)
print(age(5))
12345
實(shí)浦029:反向輸出
題目給一個(gè)不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。
程序分析學(xué)會(huì)分解出每一位數(shù),用字符串的方法總是比較省事。
n=int(input('輸入一個(gè)正整數(shù):,))
n=str(n)
print('%d位數(shù)%len(n))
print(n[::-l])
1234
實(shí)例|。30:回文數(shù)
題目一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬位相同,十位與千
位相同。
程序分析用字符串比較方便,就算輸入的不是數(shù)字都。k。
n=input("隨便你輸入啥啦:")
a=0
b=len(n)-l
flag=True
whilea<b:
ifn[a]!=n[b]:
print]不是回文串)
flag=False
break
a,b=a+l,b-l
ifflag:
print('是回文串,)
123456789101112
^HO31:字母識(shí)詞
題目請(qǐng)輸入星期幾的第一個(gè)字母來判斷一下是星期幾,如果第一個(gè)字母一樣,則繼續(xù)判斷
第二個(gè)字母。
程序分析這里用字典的形式直接將對(duì)照關(guān)系存好。
weekT={'h':廿ursday)
'u'l'tuesday'}
weekS={,a':,saturday,,
'u'r'sunday')
week={,t':week-C
's':weekS,
'm'r'monday,,
'w'^wensday,,
'f'l'friday'}
a=week[str(input('請(qǐng)輸入第一位字母:)).lower()]
ifa==weekTora==weekS:
print(a[str(inputC請(qǐng)輸入第二位字母lower。])
else:
print(a)
123456789101112131415
^|032:反向輸出II
題目按相反的順序輸出列表的值。
程序分析無。
a=['one','two','three']
print(a[::-l])
12
實(shí)例|。33:列表轉(zhuǎn)字符串
題目按逗號(hào)分隔列表。
程序分析無。
L=[1,2,3,4,5]
print(','.join(str(n)forninL))
12
實(shí)例|034:調(diào)用函數(shù)
題目練習(xí)函數(shù)調(diào)用。
程序分析無。
defhello():
print('HelloWorld!')
defhelloAgain():
foriinrange(2):
hello()
if_name_=='_main_
helloAgain()
12345678
實(shí)彳歹jo35:設(shè)置輸出顏色
題目文本顏色設(shè)置。
程序分析無。
classbcolors:
HEADER='\033[95m'
OKBLUE='\033[94m'
OKGREEN='\033[92m'
WARNING='\033[93m'
FAIL='\033[91m'
ENDC='\033[0m'
BOLD='\033[lm'
UNDERLINE='\033[4m'
print(bcolors.WARNING+“警告的顏色字體?”+bcolors.ENDC)
12345678910
實(shí)例|。36:算素?cái)?shù)
題目求100之內(nèi)的素?cái)?shù)。
程序分析用else執(zhí)行for循環(huán)的獎(jiǎng)勵(lì)代碼(如果for是正常完結(jié),非break)。
lo=int(input('下限:'))
hi=int(input('_LfS:'))
foriinrange(lo,hi+l):
forjinrange(2,i):
if(i%j)==0:
break
else:
print(i)
123456789
實(shí)例|037:排序
題目對(duì)10個(gè)數(shù)進(jìn)行排序。
程序分析同核例005。
raw=[]
foriinrange(10):
x=int(input('int%d:,%(i)))
raw.append(x)
foriinrange(len(raw)):
forjinrange(i,len(raw)):
ifraw[i]>raw[j]:
raw[i],raw[j]=raw[j],raw[i]
print(raw)
1234567891011
實(shí)例|038:矩陣對(duì)角線之和
題目求一個(gè)3*3矩陣主對(duì)角線元素之和。
程序分析無。
mat=[[l,2,3],
[3,4,5],
[4,5,6]
res=O
foriinrange(len(mat)):
res+=mat[i][i]
print(res)
12345678
實(shí)例|。39:有序列表插入元素
題目有一個(gè)已經(jīng)排好序的數(shù)組。現(xiàn)輸入一個(gè)數(shù),要求按原來的規(guī)律將它插入數(shù)組中。
程序分析首先判斷此數(shù)是否大于最后一個(gè)數(shù),然后再考慮插入中間的數(shù)的情況,插入后此
元素之后的數(shù),依次后移一個(gè)位置。
lis=[l,10,100,1000,10000,100000]
n=int(input('insertanumber:'))
lis.append(n)
foriinrange(len(lis)-l):
iflis[i]>=n:
forjinrange(i,len(lis)):
lis[j],lis[-l]=lis[-l],lis[j]
break
print(lis)
123456789
實(shí)例040:逆序列表
題目將一個(gè)數(shù)組逆序輸出。
程序分析依次交換位置,或者直接調(diào)用reverse方法。
lis=[l,10,100,1000,10000,100000]
foriinrange(int(len(lis)/2)):
lis[i],lis[len(lis)-l-i]=lis[len(lis)-l-i],lis[i]
print('第一種實(shí)現(xiàn):,)
print(lis)
lis=[l,10,100,1000,10000,100000]
print('第二種實(shí)現(xiàn):,)
lis.reverse()
print(lis)
123456789101112
實(shí)例041:類的方法與變量
題目模仿靜態(tài)變量的用法。
程序分析構(gòu)造類,了解類的方法與變量。
defdummy():
i=0
print(i)
i+=l
classcis:
i=0
defdummy(self):
print(self.i)
self.i+=l
a=cls()
foriinrange(50):
dummy()
a.dummy()
123456789101112131415
^1042:變量作用域
題目學(xué)習(xí)使用auto定義變量的用法。
程序分析python中的變量作用域。
i=0
n=0
defdummy():
i=0
print(i)
i+=l
defdummy2():
globaln
print(n)
n+=l
print。函數(shù)內(nèi)部的同名變量')
forjinrange(20):
print(i)
dummy()
i+=l
printCglobal聲明同名變量')
forkinrange(20):
print(n)
dummy2()
n+=10
1234567891011121314151617181920
實(shí)例043:作用域、類的方法與變量
題目模仿靜態(tài)變量(static)另一案例。
程序分析綜合和?042。
classdummy:
num=l
defNum(self):
print('classdummynum:',self.num)
print('globalnum:',num)
self.num+=l
n=dummy()
num=l
foriinrange(5):
num*=10
n.Num()
123456789101112
實(shí)例044:矩陣相加
題目計(jì)算兩個(gè)矩陣相加。
程序分析創(chuàng)建一個(gè)新的矩陣,使用for迭代并取出X和Y矩陣中對(duì)應(yīng)位置的值,相加后
放到新矩陣的對(duì)應(yīng)位置中。
X=[[12,7,3],
[4,5,6],
[7,8,9]]
Y=[[5,8,1],
[6,7,3],
[4,5,9]]
res=[[0,0,0],
[0,0,0],
[0,0,0]]
foriinrange(len(res)):
forjinrange(len(res[0])):
res[i][j]=X[i]U]+Y[i]U]
print(res)
12345678910111213141516
實(shí)例045:求和
題目統(tǒng)計(jì)1到100之和。
程序分析無
res=0
foriinrange(l,101):
res+=i
print(res)
1234
實(shí)例046:打破循環(huán)
題目求輸入數(shù)字的平方,如果平方運(yùn)算后小于50則退出。
程序分析無
whileTrue:
try:
n二float(input1輸入一個(gè)數(shù)字:))
except:
print('輸入錯(cuò)誤')
continue
dn=n**2
print]其平方為:-dn)
ifdn<50:
print(,平方小于50,退出,)
break
1234567891011
實(shí)例047:函數(shù)交換變量
題目?jī)蓚€(gè)變量值用函數(shù)互換。
程序分析無
defexc(a,b):
return(b,a)
a=0
b=10
a,b=exc(a,b)
print(a,b)
123456
實(shí)例048:數(shù)字比大小
題目數(shù)字比較。
程序分析無
a=int(input('a='))
b=int(input('b='))
ifa<b:
print('a<b')
elifa>b:
print('a>b,)
else:
print('a=b')
12345678
實(shí)例049:lambda
題目使用lambda來創(chuàng)建匿名函數(shù)。
程序分析無
Max=lambdax,y:x*(x>=y)+y*(y>x)
Min=lambdax,y:x*(x<=y)+y*(y<x)
a=int(input('l:'))
b=int(input('2:'))
print(Max(a,b))
print(Min(a,b))
12345678
實(shí)例|050:隨機(jī)數(shù)
題目輸出一個(gè)隨機(jī)數(shù)。
程序分析使用random模塊。
importrandom
print(random.uniform(10,20))
12
^^051:按位與
題目學(xué)習(xí)使用按位與&。
程序分析0&0=0;0&1=0;1&0=0;l&l=lo
a=0o77
print(a)
b=a&3
print(b)
b=b&7
print(b)
123456
MM052:按位或
題目學(xué)習(xí)使用按位或|。
程序分析0|0=0;0|1=1;1|0=1;1|1=1
a=0o77
print(a|3)
print(a|3|7)
123
實(shí)例|。53:按位異或
題目學(xué)習(xí)使用按位異或人。
程序分析0Ao=0;0Al=l;lA0=l;lAl=0
a=0o77
print(aA3)
print(aA3A7)
123
實(shí)例|054:位取反、位移動(dòng)
題目取一個(gè)整數(shù)a從右端開始的4?7位。
程序分析可以這樣考慮:
⑴先使a右移4位。
(2)設(shè)置一個(gè)低4位全為1,其余全為0的數(shù)??捎?0<<4)
⑶將上面二者進(jìn)行&運(yùn)算。
a=int(input('輸入一個(gè)數(shù)字:'))
b=0#0
b=~b#1
b=b?4#10000
b=-b#1111
c=a?4
d=c&b
print('a:',bin(a))
print":',bin(b))
print('c:',bin(c))
printed:',bin(d))
1234567891011
實(shí)例055:按位取反
題目學(xué)習(xí)使用按位取反工
程序分析-0=1;-1=0;
print(~234)
print(~~234)
12
實(shí)例》56:畫圈
題目畫圖,學(xué)用circle畫圓形。
程序分析無。
fromtkinterimport*
canvas=Canvas(width=800,height=600,bg='yellowl)
canvas.pack(expand=YES,fill=BOTH)
k=l
j=l
foriinrange(26):
canvas.create_oval(310-k,250-k,310+k,250+k,width=l)
k+=j
j+=0.3
mainloop()
12345678910
實(shí)ff|057:畫線
題目畫圖,學(xué)用line畫直線。
程序分析無。
if_name_==1_main_
fromtkinterimport*
canvas=Canvas(width=300,height=300,bg='green')
canvas.pack(expand=YES,fill=BOTH)
xO=263
yO=263
yl=275
xl=275
foriinrange(19):
canvas.create_line(xO,yO,xO,yl,width=l,fil^'red')
xO=xO-5
yO=yO-5
xl=xl+5
yl=yl+5
xO=263
yl=275
yO=263
foriinrange(21):
canvas.create_line(xO,yO,xO,yl,fill='red')
xO+=5
yO+=5
yl+=5
mainloop()
1234567891011121314151617181920212223242526
實(shí)例1058:畫矩形
題目畫圖,學(xué)用rectangle畫方形。
程序分析無。
if_name_==1_main_
fromtkinterimport*
root=Tk()
root.title('Canvas')
canvas=Canvas(root,width=400,height=400,bg='yellow')
xO=263
yO=263
yl=275
xl=275
foriinrange(19):
canvas.create_rectangle(xO,yO,xl,yl)
xO-=5
yO-=5
xl+=5
yl+=5
canvas.pack()
root.mainloop()
123456789101112131415161718
實(shí)例|。59:畫圖(丑)
題目畫圖,綜合例子。
程序分析丑。
if_name_=='_main_
fromtkinterimport*
canvas=Canvas(width=300,height=300,bg='green')
canvas.pack(expand=YES,fill=BOTH)
xO=150
yO=100
canvas.create_oval(xO-10,yO-10,xO+10,yO+10)
canvas.create_oval(xO-20,yO-20,xO+20,yO+20)
canvas.create_oval(xO-50,yO-50,xO+50,yO+50)
importmath
B=0.809
foriinrange(16):
a=2*math.pi/16*i
x=math.ceil(xO+48*math.cos(a))
y=math.ceil(yO+48*math.sin(a)*B)
canvas.create_line(xO,yO,x,y,fill='red')
canvas.create_oval(xO-60,yO-60,xO+60,yO+60)
forkinrange(501):
foriinrange(17):
a=(2*math.pi/16)*i+(2*math.pi/180)*k
x=math.ceil(x0+48*math.cos(a))
y=math.ceil(y0+48+math.sin(a)*B)
canvas.create_line(x0,y0,x,y,fill='red1)
forjinrange(51):
a=(2*math.pi/16)*i+(2*math.pi/180)*k-1
x=math.ceil(x0+48*math.cos(a))
y=math.ceil(y0+48*math.sin(a)*B)
canvas.create_line(x0,y0,x,y,fill='red')
mainloop()
12345678910111213141516171819202122232425262728293031
實(shí)例|。60:字符串長(zhǎng)度
題目計(jì)算字符串長(zhǎng)度。
程序分析無。
s='zhangguangl01'
print(len(s))
12
實(shí)例|。61:楊輝三角
題目打印出楊輝三角形前十行。
程序分析無。
defgenerate(numRows):
r=[[l]]
foriinrange(l,numRows):
r.append(list(map(lambdax,y:x+y,[O]+r[-l],r[-l]+[O])))
returnr[:numRows]
a=generate(10)
foriina:
print(i)
12345678
實(shí)例|。62:查找字符串
題目查找字符串。
程序分析無。
sl='aabbxuebixuebi'
s2='ab'
s3='xue'
print(sl.find(s2))
print(sl.find(s3))
12345
實(shí)例|。63:畫橢圓
題目畫橢圓。
程序分析使用tkintero
if_name_=='_main_
fromtkinterimport*
x=360
y=160
top=y-30
bottom=y-30
canvas=Canvas(width=400,height=600,bg='white')
foriinrange(20):
canvas.create_ova1(250-top,250-bottom,250+top,250+bottom)
top-=5
bottom+=5
canvas.pack()
mainloop()
1234567891011121314
實(shí)例|064:畫橢圓、矩形
題目利用ellipse和rectangle畫圖。。
程序分析無。
if_name_=='_main_
fromtkinterimport*
canvas=Canvas(width=400,height=600,bg='white')
left=20
right=50
top=50
num=15
foriinrange(num):
canvas.create_oval(250-right,250-left,250+right,250+left)
canvas.create_ova1(250-20,250-top,250+20,250+top)
canvas.create_rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2))
right+=5
left+=5
top+=10
canvas.pack()
mainloop()
1234567891011121314151617
實(shí)例|065:畫組合圖形
題目一個(gè)最優(yōu)美的圖案。
程序分析無。
importmath
fromtkinterimport*
classPTS:
def_init_(self):
self.x=0
self.y=0
points=[]
defLineToDemo():
screenx=400
screeny=400
canvas=Canvas(width=screenx,height=screeny,bg='white')
AspectRatio=0.85
MAXPTS=15
h=screeny
w=screenx
xcenter=w/2
ycenter=h/2
radius=(h-30)/(AspectRatio*2)-20
step=360/MAXPTS
angle=0.0
foriinrange(MAXPTS):
rads=angle*math.pi/180.0
P=PTS()
p.x=xcenter+int(math.cos(rads)*radius)
p.y=ycenter-int(math.sin(rads)*radius*AspectRatio)
angle+=step
points.append(p)
canvas.create_oval(xcenter-radius,ycenter-radius,
xcenter+radius,ycenter+radius)
foriinrange(MAXPTS):
forjinrange(i,MAXPTS):
canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
canvas.pack()
mainloop()
if_name_=='_main_
LineToDemo()
12345678910111213141516171819202122232425262728293031323334353637383940
實(shí)例。66:三數(shù)排序
題目輸入3個(gè)數(shù)a,b,c,按大小順序輸出。
程序分析同實(shí),,005。
raw=[]
foriinrange(3):
x=int(input('int%d:,%(i)))
raw.append(x)
foriinrange(len(raw)):
forjinrange(i,len(raw)):
ifraw[i]>raw[j]:
raw[i],raw[j]=raw[j],raw[i]
print(raw)
raw2=[]
foriinrange(3):
x=int(input('int%d:,%(i)))
raw2.append(x)
print(sorted(raw2))
123456789101112131415161718
實(shí)例|067:交換位置
題目輸入數(shù)組,最大的與第一個(gè)元素交換,最小的與最后一個(gè)元素交換,輸出數(shù)組。
程序分析無。
li=[3,2,5,7,8,l,5]
li[-l],li[li.index(min(li))]=li[li.index(min(li))],li[-l]
m=li[0]
ind=li.index(max(li))
li[0]=li[ind]
li[ind]=m
print(li)
12345678910
實(shí)例|068:旋轉(zhuǎn)數(shù)列
題目有n個(gè)整數(shù),使其前面各數(shù)順序向后移m個(gè)位置,最后m個(gè)數(shù)變成最前面的m個(gè)數(shù)
程序分析無。
fromcollectionsimport*
li=[l,2,3,4,5,6,7,8,9]
deq=deque(li,maxlen=len(li))
print(li)
deq.rotate(int(input('rotate:')))
print(list(deq))
123456
實(shí)例069:報(bào)數(shù)
題目有n個(gè)人圍成一圈,順序排號(hào)。從第一個(gè)人開始報(bào)數(shù)(從1到3報(bào)數(shù)),凡報(bào)到3的人
退出圈子,問最后留下的是原來第幾號(hào)的那位。
程序分析無。
if_name_=='_main_
nmax=50
n=int(inputC請(qǐng)輸入總?cè)藬?shù):'))
num=[]
foriinrange(n):
num.append(i+1)
i=0
k=0
m=0
whilem<n-1:
ifnum[i]!=0:k+=1
ifk==3:
num[i]=0
k=0
m+=1
i+=l
ifi==n:i=0
i=0
whilenum[i]==0:i+=1
print(num[i])
1234567891011121314151617181920212223
實(shí)例|070:字符串長(zhǎng)度II
題目寫一個(gè)函數(shù),求一個(gè)字符串的長(zhǎng)度,在main函數(shù)中輸入字符串,并輸出其長(zhǎng)度。
程序分析無。
deflenofstr(s):
returnlen(s)
printflenofstrCtanxiaofengsheng1))
1234
實(shí)例輸入和輸出
題目編寫input。和。utput()函數(shù)輸入,輸出5個(gè)學(xué)生的數(shù)據(jù)記錄。
程序分析無。
N=3
#stu
#num:string
#name:string
#score[4]:list
student=[]
foriinrange(5):
student.appendd","^]])
definput_stu(stu):
foriinrange(N):
stu[i][0]=input('inputstudentnum:\n')
stu[i][l]=input('inputstudentname:\n')
forjinrange(3):
stu[i][2].append(int(input('score:\n')))
defoutput_stu(stu):
foriinrange(N):
print('%-6s%-10s'%(stu[i][O],stu[i][l]))
forjinrange(3):
print('%-8d'%stu[i][2][j])
if_name_=='_main_
input_stu(student)
print(student)
output_stu(student)
1234567891011121314151617181920212223242526
實(shí)例|。72:創(chuàng)建鏈表
題目創(chuàng)建一個(gè)鏈表。
程序分析原文不太靠譜。
classNode:
def_init_(self,data):
self.data=data
self.next=None
defget_data(self):
returnself.data
classList:
def_init_(self,head):
self.head=head
defis_empty(self):
returnself.get_len()==0
defget_len(self):
length=0
temp=self.head
whiletempisnotNone:
length+=1
temp=temp.next
returnlength
defappend(self,node):
temp=self.head
whiletemp.nextisnotNone:
temp=temp.next
temp.next=node
defdelete(seltindex):
ifindex<1orindex>self.get_len():
print("給定位置不合理")
return
ifindex==1:
self.head=self.head.next
return
temp=self.head
cur_pos=0
whiletempisnotNone:
cur_pos+=1
ifcur_pos==index-1:
temp.next=temp,next.next
temp=temp.next
definsert(self,pos,node):
ifpos<1orpos>self.get_len():
print("插入結(jié)點(diǎn)位置不合理”)
return
temp=self.head
cur_pos=0
whiletempisnotNode:
cur_pos+=1
ifcur_pos==pos-1:
node.next=temp.next
temp.next=node
break
temp=temp.next
defreverse(self,head):
ifheadisNoneandhead.nextisNone:
returnhead
pre=head
cur=head.next
whilecurisnotNone:
temp=cur.next
cur.next=pre
pre=cur
cur=temp
head.next=None
returnpre
defprint_list(self,head):
init_data=[]
whileheadisnotNone:
init_data.append(head.get_data())
head=head.next
returninit_data
if_name_=='_main_
head=Node('head,)
link=List(head)
foriinrange(lO):
node=Node(i)
link.append(node)
print(link.print_list(head))
123456789101112131415161718192021222324252627282930313233343536373839404142434
445464748495051525354555657585960616263646566676869707172737475767778798081828
384858687
實(shí)例1073:反向輸出鏈表
題目反向輸出一個(gè)鏈表。
程序分析無。
classNode:
def_init_(self,data):
self.data=data
self.next=None
defget_data(self):
returnself.data
classList:
def_init_(self,head):
self.head=head
defis_empty(self):
returnself.get_len()==0
defget_len(self):
length=0
temp=self.head
whiletempisnotNone:
length+=1
temp=temp.next
returnlength
defappend(self,node):
temp=self.head
whiletemp.nextisnotNone:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 歐亞共同體課程設(shè)計(jì)
- 自動(dòng)駕駛技術(shù)應(yīng)用總結(jié)
- 體育娛樂行業(yè)人力資源總結(jié)
- 新媒體行業(yè)技術(shù)工作概覽
- 音響行業(yè)演出場(chǎng)地衛(wèi)生消毒方案
- 食品安全銷售總結(jié)
- 非公開發(fā)行股票認(rèn)購協(xié)議三篇
- 2024年稅務(wù)師題庫(輕巧奪冠)
- 2024年美術(shù)教案7篇合集
- 2024年福建開放大學(xué)《網(wǎng)絡(luò)測(cè)試與故障維修》形成性考核參考試題庫(含答案)
- DB21-T 2931-2018羊肚菌日光溫室栽培技術(shù)規(guī)程
- 貴州省黔東南州2023-2024學(xué)年九年級(jí)上學(xué)期期末文化水平測(cè)試化學(xué)試卷
- 《空調(diào)零部件介紹》課件
- 2024年度醫(yī)院內(nèi)分泌與代謝科述職報(bào)告課件
- 手術(shù)室無菌操作流程
- 農(nóng)業(yè)機(jī)械控制系統(tǒng)硬件在環(huán)測(cè)試規(guī)范
- 翁潭電站大王山輸水隧洞施工控制網(wǎng)設(shè)計(jì)說明書
- 隆胸術(shù)培訓(xùn)課件
- 鋼筋焊接培訓(xùn)課件
- 行政內(nèi)勤培訓(xùn)課件
- 化纖企業(yè)(化學(xué)纖維紡織企業(yè))安全生產(chǎn)操作規(guī)程
評(píng)論
0/150
提交評(píng)論