Python基礎訓練100題題庫_第1頁
Python基礎訓練100題題庫_第2頁
Python基礎訓練100題題庫_第3頁
Python基礎訓練100題題庫_第4頁
Python基礎訓練100題題庫_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Python3

基礎訓練100題

文章目錄

實例001數(shù)字組合

實例002“個稅計算”

實例003完全平方數(shù)

實例004這天第幾天

實例005三數(shù)排序

實例006斐波那契數(shù)列

實例007copy

實例008九九乘法表

實例009暫停一秒輸出

實例010給人看的時間

實例011養(yǎng)兔子

實例012100到200的素數(shù)

實例013所有水仙花數(shù)

實例014分解質(zhì)因數(shù)

實例015分數(shù)歸檔

實例016輸出日期

實例017字符串構成

實例018復讀機相加

實例019完數(shù)

實例020高空拋物

實例021猴子偷桃

實例022比賽對手

實例023畫菱形

實例024斐波那契數(shù)列II

實例025階乘求和

實例026遞歸求階乘

實例027遞歸輸出

實例028遞歸求等差數(shù)列

實例029反向輸出

實例030回文數(shù)

實例031字母識詞

實例032反向輸出II

實例033列表轉字符串

實例034調(diào)用函數(shù)

實例035設置輸出顏色

實例036算素數(shù)

實例037排序

實例038矩陣對角線之和

實例039有序列表插入元素

實例040逆序列表

實例041類的方法與變量

實例042變量作用域

實例043作用域、類的方法與變量

實例044矩陣相加

實例045求和

實例046打破循環(huán)

實例047函數(shù)交換變量

實例048數(shù)字比大小

實例049lambda

實例050隨機數(shù)

實例051按位與

實例052按位或

實例053按位異或

實例054位取反、位移動

實例055按位取反

實例056畫圈

實例057畫線

實例058畫短形

實例059畫圖(丑)

實例060字符串長度

實例061楊輝三角

實例062查找字符串

實例063畫橢圓

實例064畫橢圓、矩形

實例065畫組合圖形

實例066三數(shù)排序

實例067交換位置

實例068旋轉數(shù)列

實例069報數(shù)

實例070字符串長度II

實例071輸入和輸出

實例072創(chuàng)建鏈表

實例073反向輸出鏈表

實例074列表排序、連接

實例075不知所云

實例076做函數(shù)

實例077遍歷列表

實例078字典

實例079字符串排序

實例080猴子分桃

實例081求未知數(shù)

實例082八進制轉十進制

實例083制作奇數(shù)

實例084連接字符串

實例085:整除

實例086:連接字符串II

實例087:訪問類成員

實例088:打印星號

實例089:解碼

實例090:列表詳解

實例091:time模塊

實例092:time模塊II

實例093:time模塊川

實例094:time模塊IV

實例095:轉換時間格式

實例096:計算復讀次數(shù)

實例097:磁盤寫入

實例098:磁盤寫入II

實例099:磁盤讀寫

實例100:列表轉字典

實例001:數(shù)字組合

題目有四個數(shù)字:1、2、3、4,能組成多少個互不相同且無重復數(shù)字的三位數(shù)?各是多少?

程序分析遍歷全部可能,把有重復的剃掉。

total=0

foriinrange(l,5):

forjinrange(l,5):

forkinrange(l,5):

if((i!=j)and(j!=k)and(k!=i)):

print(ij.k)

total+=l

print(total)

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

簡便方法用itertools中的permutations即可。

importitertools

sum2=0

a=[l,2.3,4]

foriinitertools.permutations(a,3):

print(i)

sum2+=l

print(sum2)

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

實例002:“個稅計算”

題目企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高

于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可提成

7.5%;20萬到40萬之間時,高于20萬元的部分,可提成5%;40萬到60萬之間時高于40

萬元的部分,可提成3%;60萬到100萬之間時,高于50萬元的部分,可提成1.5%,高于

100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發(fā)放獎金總數(shù)?

程序分析分區(qū)間計算即可。

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。]:

bonus+=profit*rates[i]

profit=0

break

else:

bonus+=threshclds[i]*rates[i]

profit-=thresholds[i]

bonus+=profit*rates[-l]

print(bonus)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

1

2

3

4

5

6

7

8

9

10

11

12

13

14

實例003:完全平方數(shù)

題目一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問

該數(shù)是多少?

程序分析因為168對于指數(shù)爆炸來說實在太小了,所以可以直接省略數(shù)學分析,用最樸素

的方法來獲取上限:

n=0

while(n+l)**2-n*n<=168:

n十二1

print(n+l)

85

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

思路是?最壞的結果是n的平方與(n+1)的平方剛好差168,由于是平方的關系,不可能存

在比這更大的間隙。

至于判斷是否是完全平方數(shù),最簡單的方法是:平方根的值小數(shù)為0即可。

結合起來:

n=0

while(n+l)**2-n*n<=168:

n+=l

foriinrange((n+1)**2):

ifi**0.5==int(i**0.5)and(i+168)**0.5==int((i+168)**0.5):

print(i-lOO)

1

2

3

4

5

6

7

1

2

3

4

5

6

7

實例004:這天第幾天

題目輸入某年某月某日,判斷這一天是這一年的第幾天?

程序分析特殊情況,閏年時需考慮二月多加一天:

defisLeapYear(y):

return(y%400==0orandy%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[2]+=l

foriinrange(month):

res+=DofM[i]

print(res+day)

1

2

3

4

5

6

7

8

9

10

11

12

13

1

2

3

4

5

6

7

8

9

10

11

12

13

實例005:三數(shù)排序

題目輸入三個整數(shù)x,y,z,請把這三個數(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))

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

實例006:斐波那契數(shù)列

題目斐波那契數(shù)列。

程序分析斐波那契數(shù)列(Fibonaccisequence),從1,1開始,后面每一項等于前面兩項之

和。圖方便就遞歸實現(xiàn),圖性能就用循環(huán)。

#遞歸實現(xiàn)

defFib(n):

return1ifn<=2elseFib(n-l)+Fib(n-2)

print(Fib(int(input())))

#樸素實現(xiàn)

target=int(input())

res=0

a.b=l,l

foriinrange(target-l):

a,b=b,a+b

print(a)

1

2

3

4

5

6

7

8

9

10

11

12

13

1

2

3

4

5

6

7

8

9

10

11

12

13

實例007:copy

題目將一個列表的數(shù)據(jù)復制到另一個列表中。

程序分析使用列表口拿不準可以調(diào)用copy模塊。

importcopy

a=[l,2,3,4,['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)

print('d=',d)

print('e=',e)

RESTART:F:\PyWorkspace\Pythonl00\100examples\007.py

a=[1,2,3,4,['a','b'.'c'],5]

b=[1,2,3,4,['a;'b','c'],5]

c=[1,2,3,4,fa','b'.'c']]

d=[1,2,3,4,['a','b','c']]

e=[1,2,3,4,['a',<b']]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

實例008:九九乘法表

題目輸出9*9乘法口訣表。

程序分析分行與列考慮,共9行9歹(i控制行,j控制列。

foriinrange(l.lO):

forjinrange(l,i11):

print('%d*%d=%2ld'%(i,j,i*j),end=")

print()

1

2

3

4

1

2

3

4

實例009:暫停一秒輸出

題目暫停一秒輸出。

程序分析使用time模塊的sleep()函數(shù)。

importtime

foriinrange(4):

print(str(int(time.time;)))[-2:])

time.sleep(l)

1

2

3

4

1

2

3

4

實例010:給人看的時間

題目暫停一秒輸出,并格式化當前時間。

程序分析同009.

importtime

foriinrange(4):

print(time.strftime('%Y-%m-%d%H:%M:%S',time.locaItime(time.time())))

time.sleep(l)

1

2

3

4

5

1

2

3

4

5

實例Oil:養(yǎng)兔子

題目有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個

月又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少?

程序分析我認為原文的解法有點扯,沒有考慮3個月成熟的問題,人家還是嬰兒怎么生孩

子?考慮到三個月成熟,可以構建四個數(shù)據(jù),其中.一月兔每個月長大成為二月兔,二月兔

變?nèi)峦茫峦米兂赡晖?,成年?包括新成熟的三月兔)生等量的一月兔。

month=int(input('繁殖幾個月?:,))

month_l=l

month_2=0

month_3=0

month_elder=0

foriinrange(month):

month^l,month_2,month3,month_elder=month_elder+month_3,month_l,months,mcnth_

elder+month_3

print,第%d個月共'%(i+l),month_l+month2+month_3+monthelder:對兔子')

print。其中1月兔:’month」)

print,其中2月兔:’,month_2)

print('其中3月兔:’,month_3)

print('其中成年兔:',month_elder)

1

2

3

4

5

6

7

8

9

10

11

12

1

2

3

4

5

6

7

8

9

10

11

12

實例012:100到200的素數(shù)

題目判斷101-200之間有多少個素數(shù),并輸出所有素數(shù)。

程序分析判斷素數(shù)的方法.用一個數(shù)分別去除2到sqM這個數(shù)),如果能被整除,則表明此

數(shù)不是素數(shù),反之是素數(shù),用else可以進一步簡化代碼.

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)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

實例013:所有水仙花數(shù)

題目打印出所有的“水仙花數(shù)",所謂‘水仙花數(shù)'是指一人三位數(shù),其各位數(shù)字立方和等于該

數(shù)本身。例如:153是一個‘水仙花數(shù)”,因為153二1的三次方+5的三次方+3的三次方。

程序分析利用for循環(huán)控制100-999個數(shù),每個數(shù)分解出個位,十位,百位。

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)

1

2

3

4

5

6

7

1

2

3

4

5

6

7

實例014:分解質(zhì)因數(shù)

題目將一個整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90:233*5。

程序分析根本不需要判斷是否是質(zhì)數(shù),從2開始向數(shù)本身遍歷,能整除的肯定是最小的質(zhì)

數(shù)。

target=int(input('輸入一個整數(shù):,))

print(target,'=',end=")

iftarget<0:

target=abs(target)

print('-l*',end=")

flag=O

iftarget<=l:

print(target)

flag=l

whileTrue:

ifflag:

break

foriinrange(2,int(target+l)):

iftarget%1==0:

print("%d"%i,end=*')

iftarget==i:

flag二1

break

print('*,,end=")

target/=i

break

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

實例015:分數(shù)歸檔

題目利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之

間的用B表示,60分以下的用C表示。

程序分析用條件判斷即可。

points=int(inpi<輸入分數(shù):1))

ifpoints>=90:

grade='A'

elifpoints<60:

grade='C

else:

grade='B'

print(grade)

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

實例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)

1

2

3

4

5

6

7

1

2

3

4

5

6

7

實例017:字符串構成

題目輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其它字符的個數(shù)。

程序分析利用while或for語句,條件為輸入的字符不為‘\N。

string=input,輸入字符串:")

alp二0

num=O

spa=O

oth=0

foriinrange(len(string)):

ifstring[i].isspace():

spa+=l

elifstring[i].isdigit():

num+=l

elifstring[i].isalpha():

alp+=l

else:

oth+=l

printfspace:'.spa)

print('digit:'.num)

print('alpha:',alp)

print('other:'.oth)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

實例018:復讀機相加

題目求s=a+aa+aaa+aaca+aa-a的值,其中a是一個數(shù)字。例如2+22+222+2222+22222(此

時共有5個數(shù)相加),幾個數(shù)相加由鍵盤控制。

程序分析用字符串解次。

a二input('被力口數(shù)字:')

n=int(input('加幾次?:'))

res=0

foriinrange(n):

res+=int(a)

a+=a[0]

print('結果是:\res)

1

2

3

4

5

6

7

1

2

3

4

5

6

7

實例019:完數(shù)

題目一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)例如6E+2+3.編程找出

1000以內(nèi)的所有完數(shù)。

程序分析將每一對因子加進集合,在這個過程中已經(jīng)自動去重。最后的結果要求不計算其

本身。

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)

1

2

3

4

5

6

7

8

9

10

11

12

1

2

3

4

5

6

7

8

9

10

11

12

實例020:高空拋物

題目一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10

次落地時,共經(jīng)過多少米?第10次反彈多高?

程序分析無

high=200.

total=100

foriinrange(lO):

high/=2

total+=high

print(high/2)

print。總長:'.total)

1

2

3

4

5

6

7

1

2

3

4

5

6

7

實例021:猴子偷桃

題目猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個

第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一

半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。

程序分析按規(guī)則反向推斷:猴子有一個桃子,他偷來一個桃子,覺得不夠又偷來了與手上

等量的桃子,一共偷了9天。

peach=1

foriinrange(9):

peach=(peach+l)*2

print(peach)

1

2

3

4

1

2

3

4

實例022:比賽對手

題目兩個乒乓球隊進行比賽,各出三人。甲隊為abc三人,乙隊為x,y,z三人。已抽簽決

定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找

出三隊賽手的名單。

程序分析找到條件下不重復的三個對手即可。

,,,'

a=set(['x,y1,z])

b=set([,x,,,y',,z'])

c=set([,x,,y,,z'])

c-=set(<,x,,,y'))

a-=set('x')

foriina:

forjinb:

forkinc:

iflen(set((i,j,k)))==3:

print(,a%s,b:%s,c:%s,%(ij.k))

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

實例023:畫麥形

題目打印出如下圖案(菱形):

***

*****

*******

*****

程序分析遞歸調(diào)用即可。

defdraw(num):

a="*"*(2*(4-num)+l)

print(a.center(9,''))

ifnum!=l:

draw(num-l)

print(a.center(9,''))

draw(4)

1

2

3

4

5

6

7

1

2

3

4

5

6

7

實例024:斐波那契數(shù)列II

題目有一分數(shù)序列.2/L3/2,5/3,8/5,13/8,21/13…求出這個數(shù)列的前20項之和。

程序分析就是斐波那契數(shù)列的后一項除以前一項。

a=2.0

b=1.0

s=0

forninrange(lt21):

s+=a/b

a,b=a+b.a

print(s)

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

實例025:階乘求和

題目求1+2!+3!+-+20!的和。

程序分析1+2!+3!+-+20!=1+2(1+3(1+4(-20(1))))

res=l

foriinrange(20,l,-l):

res=i*res?1

print(res)

1

2

3

4

1

2

3

4

實例026:遞歸求階乘

題目利用遞歸方法求5!。

程序分析遞歸調(diào)用即可。

deffactorial(n):

returnn*factorial(n-l)ifn>lelse1

print(factorial(5))

1

2

3

1

2

3

實例027:遞歸輸出

題目利用遞歸函數(shù)調(diào)用方式,將所輸入的5個字符,以相反順序打印出來。

程序分析遞歸真是蠢方法。

defrec(string):

iflen(string)!=l:

rec(string[l:])

print(string[O],end=")

rec(input('stringhere:'))

1

2

3

4

5

6

1

2

3

4

5

6

實例028:遞歸求等差數(shù)列

題目有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),

他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人

大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?

程序分析就一等差數(shù)列。

defage(n):

ifn==l:

return10

return2+age(n-l)

print(age(5))

1

2

3

4

5

1

2

3

4

5

實例029:反向輸出

題目給一個不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。

程序分析學會分解出每一位數(shù),用字符串的方法總是比較省事。

n=int(input('輸入一個正整數(shù):1))

n=str(n)

print('%d位數(shù)'%len(n))

print(n[::-l])

1

2

3

4

1

2

3

4

實例030:回文數(shù)

題目一個5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個位與萬位相同,十位與千

位相同。

程序分析用字符串比較方便,就算輸入的不是數(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('是回文串')

1

2

3

4

5

6

7

8

9

10

11

12

1

2

3

4

5

6

7

8

9

10

11

12

實例031:字母識詞

題目請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù)判斷

第二個字母。

程序分析這里用字典的形式直接揩對照關系存好。

weekT={'h,:,thursday,,

'u'/tuesday'}

weekS={'a':'saturday,,

'u'/sunday'}

week={'t':weekT,

's':weekS,

'm'l'monday',

'w^'wensday;

f'friday'}

a=week[str(input('請輸入第一位字母:'))」ower()]

ifa==weekTora==weekS:

print(a[str(input('請輸入第二位字母)).lower()])

else:

print(a)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

實例032:反向輸出II

題目按相反的順序輸出列表的值C

程序分析無。

a=['one','two','three']

print(a[::-l])

1

2

1

2

實例033:列表轉字符串

題目按逗號分隔列表。

程序分析無。

L=[1,2,3,4,5]

print(','.join(str(n)forninL))

1

2

1

2

實例034:調(diào)用函數(shù)

題目練習函數(shù)調(diào)用。

程序分析無。

defhello():

print('HelloWorld!')

defhelloAgain():

foriinrange(2):

hello()

if_name_==,_main_,:

helloAgain()

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

實例035:設置輸出顏色

題目文本顏色設置。

程序分析無。

classbcolors:

HEADER='\033[95m,

OKBLUE='\033[94m'

OKGREEN='\033[927i'

WARNING='\033[93m'

FAIL='\033[91m'

ENDC='\033[0m,

BOLD='\033[lm,

UNDERLINE='\033[^m,

print(bcolors.WARNING+”警告的顏色字體?”+bcolors.ENDC)

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

實例036:算素數(shù)

題目求100之內(nèi)的素數(shù)。

程序分析用else執(zhí)行for循環(huán)的獎勵代碼(如果for是正常完結,非break)。

lo=int(input('下限:’))

hi=int(inputC±?:,))

foriinrange(lo,hi+l):

ifi>1:

forjinrange(2,i):

if(i%j)==0:

break

else:

print(i)

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

實例037:排序

題目對10個數(shù)進行排序。

程序分析同實例005。

raw二口

foriinrange(lO):

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)

1

2

3

4

5

6

7

8

9

10

11

1

2

3

4

5

6

7

8

9

10

11

實例038:矩陣對角線之和

題目求一個3*3矩陣主對角線元素之和。

程序分析無。

mat=[[1,2,3],

[3,4,5],

[4,5,6]

]

res=0

foriinrange(len(mat)):

res+=mat[i][i]

print(res)

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

實例039:有序列表插入元素

題目有一個已經(jīng)排好序的數(shù)組?,F(xiàn)輸入一個數(shù),要求按原來的規(guī)律將它插入數(shù)組中。

程序分析首先判斷此數(shù)是否大于最后一個數(shù),然后再考慮插入中間的數(shù)的情況,插入后此

元素之后的數(shù),依次后移一個位置。

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)

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

實例040:逆序列表

題目將一個數(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]

prin1(,第一種實現(xiàn)J)

print(lis)

lis=[l,10,100,1000,10000,100000]

prini(1第二種實現(xiàn):1)

lis.reverse()

print(lis)

1

2

3

4

5

6

7

8

9

10

11

12

1

2

3

4

5

6

7

8

9

10

11

12

實例041:類的方法與變量

題目模仿靜態(tài)變量的用法。

程序分析構造類,了解類的方法與變量。

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()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

實例042:變量作用域

題目學習使用aut。定義變量的用法。

程序分析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)

dummyO

i+=l

print('global聲明同名變量)

forkinrange(20):

print(n)

dummy2()

n+=10

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

實例043:作用域、類的方法與變量

題目模仿靜態(tài)變量(stat?另一案例。

程序分析綜合實例041和實例042o

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()

1

2

3

4

5

6

7

8

9

10

11

12

1

2

3

4

5

6

7

8

9

10

11

12

實例044:矩陣相加

題目計算兩個矩陣相加。

程序分析創(chuàng)建一個新的矩陣,使用for迭代并取出X和Y矩陣中對應位置的值,相加后

放到新矩陣的對應位置中,

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[O])):

res[i]Q]=X[i]0]+Y[i]0]

print(res)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

實例045:求和

題目統(tǒng)計1至IJ100之和。

程序分析無

res=0

foriinrange(l,101):

res+=i

print(res)

1

2

3

4

1

2

3

4

實例046:打破循環(huán)

題目求輸入數(shù)字的平方,如果平方運算后小于50則退出。

程序分析無

whileTrue:

try:

n二float(input('輸入一個數(shù)字:,))

except:

print('輸入錯誤)

continue

dn=n**2

print,其平方為:',dn)

ifdn<50:

print('平方小于50,退出‘)

break

1

2

3

4

5

6

7

8

9

10

11

1

2

3

4

5

6

7

8

9

10

11

實例047:函數(shù)交換變量

題目兩個變量值用函數(shù)互換。

程序分析無

defexc(a,b):

return(b.a)

a=0

b=10

a,b=exc(a,b)

print(a.b)

1

2

3

4

5

6

1

2

3

4

5

6

實例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')

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

實例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))

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

實例050:隨機數(shù)

題目輸出一個隨機數(shù)。

程序分析使用random模塊。

importrandom

print(random.uniform(10,20))

1

2

1

2

實例051:按位與

題目學習使用按位與&o

程序分析0&0=0;0&1=0;1&0=0;1&1=1O

a=0o77

print(a)

b二a&3

print(b)

b=b&7

print(b)

1

2

3

4

5

6

1

2

3

4

5

6

實例052:按位或

題目學習使用按位或Ic

程序分析0|0=0;0|1=1;1|0=1;1|1=1

a=0o77

print(a|3)

print(a|3|7)

1

2

3

1

2

3

實例053:按位異或

題目學習使用按位異或入。

程序分析0A0=0;OAl=l;lAO=l;lAl=O

a=0o77

print(aA3)

print(aA3A7)

1

2

3

1

2

3

實例054:位取反、位移動

題目取一個整數(shù)a從右端開始的4s7位。

程序分析可以這樣考慮:

⑴先使a右移4位。

⑵設置一個低4位全為L其余全為0的數(shù)?!鉐ffl(0?4)

⑶將上面二者進行&運算,

a=int(input(輸入一個數(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('b:',bin(b))

print('c:',bin(c))

print('d:',bin(d))

2

3

4

5

6

7

8

9

10

11

1

2

3

4

5

6

7

8

9

10

11

實例055:按位取反

題目學習使用技位取反?。

程序分析-0=1;-1=0;

print(?234)

print(??234)

1

2

1

2

實例056:畫圈

題目畫圖,學用circle畫圓形。

程序分析無。

fromtkinterimport*

canvas=Canvas(width=800theight=600,bg='yellow')

canvas.pack(expand=YES/ill=BOTH)

k=l

j=l

foriinrange(26):

canvas.create_oval(310-k,250-k,310+kI250+k,width=l)

k+=j

j+=0.3

mainloop()

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

實例057:畫線

題目畫圖,學用line畫直線。

程序分析無。

if_name_=='_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.linefxO.yO.xO.yl,width=1,fill='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()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

實例058:畫矩形

題目畫圖,學用rectangle畫方形。

程序分析無。

if_name_=='_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(x0,y0,xl,yl)

xO-=5

yO-=5

xl+=5

yl+=5

canvas.pack()

root.mainloop()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

實例059:畫圖(丑)

題目畫圖,綜合例子。

程序分析丑。

if_name_=='_main_':

fromtkinterimport*

canvas=Canvas(widih=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.createova1(x0-50,yO-50,xO+50,yO+50)

importmath

B=0.809

foriinrange(16):

a=2*math.pi/16*i

x=math.ceil(x0+48*math.cos(a))

y=math.ceil(y0+48*math.sin(a)*B)

canvas.create_line(xO,yO,x(y,fill='red')

canvas.create_ovaI(xO-60,yO-60,xO+60,yO+60)

forkinrange(501):

foriinrange(17):

a=(2*math.pi/16)*i+(2*math.pi/ISO)*k

x=math.ceil(x0+48*math.cos(a))

y=math.ceil(y0+48+math,sin(a)*B)

canvas.create_line(xO,yO,x,y,fi11='red')

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(yO+48*math.sin(a)*B)

canvas.createjine(x0,y0,x,y,fi11='red')

mainloopO

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

實例060:字符串長度

題目計算字符串長度。

程序分析無。

s='2hangguangl01'

print(len(s))

1

2

1

2

實例061:楊輝三角

題目打印出楊輝三角形前十行。

程序分析無。

defgenerate(numRows):

「二[[1]]

foriinrange(l.numRDws):

r.append(list(map(lambdax,y:x+y,[O]+r[-l],r[-l]+[O])))

returnr[:numRows]

a=generate(10)

foriina:

print(i)

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

實例062:查找字符串

題目查找字符串。

程序分析無。

sl='aabbxuebixuebi'

s2='ab'

s3='xue'

print(sl.find(s2))

print(sl.find(s3))

1

2

3

4

5

1

2

3

4

5

實例063:畫橢圓

題目畫橢圓。

程序分析使用tkintero

if_name_==

fromtkinterimport*

x=360

y=160

top=y-30

bottom=y-30

canvas=Canvas(width=400,height=600,bg='white')

foriinrange(20):

canvas.create_oval(250-top,250-bottom,250+top,250+bottom)

top-=5

bottom+=5

canvas.pack()

mainloopO

1

2

3

4

5

6

7

8

9

10

11

12

13

14

1

2

3

4

5

6

7

8

9

10

11

12

13

14

實例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_oval(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()

mainloopO

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

實例065:畫組合圖形

題目一個最優(yōu)美的圖案。

程序分析無。

importmath

fromtkinterimport*

classPTS:

def_init_(self):

self.x=0

self.y=0

points=0

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.createJinefpointsOl.x.pointsfl.y.pointsOJ.x.pointsOly)

canvas.pack()

mainloop()

if_name_=='_main_':

LineToDemo()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

實例066:三數(shù)排序

題目輸入3個數(shù)a,b,c,按大小順序輸出。

程序分析同實例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))

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

實例067:交換位置

題目輸入數(shù)組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數(shù)組。

程序分析無。

li=[3)215,7,8,l,5]

li[-l],li[li.index(min(li))]=li[li.index(min(li))],li[-l]

m=li[O]

ind=li.index(max(li))

li[O]=li[ind]

li[ind]=m

print(li)

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

實例068:旋轉數(shù)列

題目有n個整數(shù),使其前面各數(shù)順序向后移m個位置,最后m個數(shù)變成最前面的m個數(shù)

程序分析無。

fromcollectionsimport*

心[1,23456,789]

deq=deque(li,maxlen=len;li))

print(li)

deq.rotate(int(input('rotate:')))

print(list(deq))

1

2

3

4

5

6

1

2

3

4

5

6

實例069:報數(shù)

題目有n個人圍成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論