python基礎(chǔ)100練習(xí)題及答案匯總_第1頁
python基礎(chǔ)100練習(xí)題及答案匯總_第2頁
python基礎(chǔ)100練習(xí)題及答案匯總_第3頁
python基礎(chǔ)100練習(xí)題及答案匯總_第4頁
python基礎(chǔ)100練習(xí)題及答案匯總_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論