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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

■ooi:數(shù)字組合

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

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

total=0

foriinrange(I方):

forjinrange(lf5):

forkinrange(1.5):

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

print(ijk)

total*=l

print(total)

12345678

簡(jiǎn)便方法用itertools中的pernutations即可@

importitertools

sum2=0

a=[l,2.3.4]

foriinitertools.permutations(a,3):

print(i)

sum2*=Iprint(sum2)

12345678

■002:“個(gè)稅計(jì)算”

題目企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)⑴低于或等于I。萬元時(shí),獎(jiǎng)金可提儂:利潤(rùn)高于I。萬

元,低于20萬元時(shí),低于10萬元的部分按10%提成,高于10萬元的部分,可提成7.55;20萬到40

萬之間時(shí),高于20萬元的部分,可提成5$:40萬到60萬之間時(shí)高于40萬元的部分,可提成帆60

萬到I。。萬之間時(shí),高于60萬元的部分,可提成L5*高于I。。萬元時(shí),超過I。。萬元的部分按居提

成,從鍵盤輸入當(dāng)月利潤(rùn)I,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)?

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

profit=int(input(Showmethemoney:'))

bonus=0

thresholds=[100000.100000.200000,200W0.400000]

rates=[0.10.075.0.050.030.0150.01]

foriinrange(Icn(threshoIds)):

ifprofit<=threshoIds[i]:

bonus^-=profit*rates[i]

profit=0

break

else:

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

profit-=threshoIds[i]

bonus+=profit#rates[-l]

print(bonus)

14

*■003:完全平方數(shù)

題目一個(gè)整數(shù),它加上I。。后是一個(gè)完全平方數(shù),再加上攻又是一個(gè)完全平方數(shù),請(qǐng)問該數(shù)是

多少?

程序分析因?yàn)橄駥?duì)于指數(shù)爆炸來說實(shí)在太小了,所以可以直接省略數(shù)學(xué)分析,用最樸素的方

法來獲取上限:

n=0

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

n+=l

print(n+l)

85

123456789

思路是:最壞的結(jié)果是n的平方與(卅)的平方剛好差168?由于是平方的關(guān)系,不可能存在比這更

大的間隙。

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

結(jié)合起來:

n=0

whiIe(n*l)**2-n*n<=168:

n+=lforiinrange((n*I)**2):

ifi?n-s==int(i**n-wnnd(i+iAA)**ns=int(<i4iAA)**on-

print(i-100)

1234567

■°04:這天第幾天

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

程序分析特殊情況,閏年時(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]

re$=Oyear=int(input(*Year:'))

month=int(input(Month:'))

day=int(input(day:))

ifisLeapYcar(year):

DofM[2]+=l

foriinrange(month):

rcs^=DofM[i]

print(res*day)

005:三數(shù)排序

題目輸入三個(gè)整數(shù)x.y.z,請(qǐng)把這三個(gè)數(shù)由小到大輸出。

程序分析練練手就隨便找個(gè)排序算法實(shí)現(xiàn)一下,偷懶就直接調(diào)函數(shù)c

raw=[]

foriinrange(3):

x=int(input('intSd:1%(1I))

raw.append(x)foriinrange(len(raw)):

forjinrange(ijen(raw)):

ifraw[i]>raw[j]:

rawfi]raw[j]=raw[j],raw[i]

raw2=[]

foriinrange(3):

x=int(inputCintSd:.%(i)))

print(raw)

raw2.append(x)

print(sorted(raw2))

1415161718

I006:斐波那契數(shù)列

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

程序分析斐波那契數(shù)列(Fibo皿cisequence).從「開始,后面每一項(xiàng)等于前面兩項(xiàng)之和。圖方便就

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

#遞歸實(shí)現(xiàn)

defFib(n):

return1ifn<=2elseFib(n-l)¥ib(n-2)

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

#樸素實(shí)現(xiàn)

target:int(input。)

re$=0

a.b=l,/

foriinrange(target-I):

ab=ba+bprint(a)

007;copy

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

程序分析使用列表[:],拿不準(zhǔn)可以調(diào)用copy模塊。

importcopy

#賦值

#淺拷貝

d=copy,copy(a)#淺拷貝

e=copydeepcopy(a)#深拷貝

aappend(5)

a(41.append('c*)print(a='.a)print(b=\b)print(c=c)print(d=\d)print(e=*e)

=======RESTART:F:\PyWorkspace\Python100\10OexampIes\007.py=======

a=[1,2,3.4.1aTbLc15]

b=[1,2,3,4.同b'JcI5]c=[L2,3.4,d=E2,3.4,『a'Jb丁c1]e=[1,2.3.4.[a:'b']]223

008:九九乘法表

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

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

foriinranged.10):

forjinranged1):

print('Sd*^d=%2ld'%(i.end=>

privilo

1234

009:暫停一秒輸出

題目暫停一秒輸出.

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

importtimeforiinrange(4):

print(str(int(time,time()))[-2:])

time,sleep(I)1234

PIO:給人看的時(shí)間

題目暫停一秒輸出,并格式化當(dāng)前時(shí)間,程序分析同。09.

importtimeforiinrange(4):

print(time,strftime(*%Y-Sm-%dtimc.localtimc(timc.time())))

time,sleep(I)

12345

0”:養(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)?/p>

兔,三月兔變成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔。

month=int(input(,繁殖幾個(gè)月?:))month」=1

month_2=0

month_3=0

month_elder=0

foriinrange(month):month_Imonth_2month_3montheIder=month_eIder-hnonth.Smonth_I<nonth_2month-elder+month_3

print("Sd個(gè)月共+month」-Tnonth_2-month_3-month_cldcr「對(duì)兔子,)

print('其中1月兔:monthJ)

print(,其中2月兔:\momh_2)

print]其中3月兔:)month_3)

print('其中成年兔:’,month_elderj1112

012:100到200的素?cái)?shù)

題目判斷刈.200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。

程序分析判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除,則表明此

數(shù)不是素?cái)?shù),反之是素?cái)?shù)。用eke可以進(jìn)一步簡(jiǎn)化代碼.

importmath

foriinrangefl00*00):

flag=O

forjinrange(2round(math.sqr,:(i))+l):

ifi%j=O:

flag=l

break

ifflag:

continue

print(i)

printC\nSimplifythecodewithelse\n)foriinrange(100,200):

forjinrange(2.round(math.sqr-(i))4-|):

ifi%j=0:

break

else:

print(i)

92021

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

題目打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于

該數(shù)本身。例如:⑸是一個(gè)“水仙花數(shù)”,因?yàn)?5月的三次方+5的三次方+3的三次方,

程序分析利用f。,循環(huán)控制1。。用9個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位.十位,百位。

foriinrange(100.1000):

s=str(i)

one=int(s[-l])

tcn=int(s[-2])

hun=int(s[-3])

ifi=onc**3*tcn**3*hun**3:

print(i)

1234567

分解質(zhì)因數(shù)

題目將一個(gè)整數(shù)分解質(zhì)因數(shù)。例如:輸入9。.打印出9。=233畤。

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

tarRet=int(input('輸入一個(gè)整數(shù):'))

print(targetj=end=2iftarget<0:

target=abs(target)

print(*-1?*,end=")

flag=0

iftarget<=l:

print(target)

flag=1

whiIeTrue:

ifflag:

break

foriinrange(2Jnt(target*I)):

iftarget%!==0:

print(%d*%iend=")

iftarget=i:

flag

break

print('*'.end=M)

target/=i

break

223242526

■015:分?jǐn)?shù)歸檔

題目利用條件運(yùn)算符的嵌套來完成此題:學(xué)習(xí)成績(jī)>=90分的同學(xué)用A表示,60-89分之間的用B表

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

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

point6=int(input('輸入分?jǐn)?shù):’))

ifpoints>=90:

gradeA'

elifpoints<60:

grade=C

else:

grade=Bprint(grade)12345678

016:輸出日期

題目輸出指定格式的日期。

程序分析使用datetime模塊。

importdatetimeprint(datetime.date,t^day())print(datetime,date(2333,23))print(datetime.date,today(),strftimeC%c/%m/%Y'))

day=datetime.dated11I2.3)day=day.replace(year=day.year+22)print(day)128567

P17:字符串構(gòu)成

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

程序分析利用可”或for語句,條件為愉入的字符不為\n'O

d唱二…I("輸入字符串;”)皿=。riuni=0?pa=0ul>t=0furiinrunge(Ieri(bLring)).

ifstring[i].isspaceO:

spa+=l

elifstring[i].isdigit0:num+=l

clifstring[i].isalphaO:alp*=l

else:

nth^=l

printf*pace:\spa)print('digit:*,nun)print(*alpha:\alp)print(other:\oth)

P18:復(fù)讀機(jī)相加

題目求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個(gè)數(shù)字。例如2.22+222+2222.22222(此時(shí)共有5個(gè)數(shù)相

加),幾個(gè)數(shù)相加由鍵盤控制。

程序分析用字符串解決。

ahnputC被加數(shù)字:

nhnHinpuH,力H幾次?:,))

foriinrange(n):

res+=int(a)

a+=a[0]

print('結(jié)果是res)

1234567

019:完數(shù)

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

以的所有完數(shù)。

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

身。

deffactor(num):

target=mt(num)

res:set0

foriinranged,num):

ifnumSi==0:

res.add(i)

res.add(nun/i)

returnresforiinrange(2.10C1):

ifi=sum(factor(i))-i:

print(i)

1112

■1020:高空拋物

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

時(shí),共經(jīng)過多少米?第1。次反彈多高?

程序分析無

high=200.

total=100

foriinrange(10):

high/=2

total+=high

print(high/2)print('總\total)1234567

021:猴子偷桃

題目猴子吃桃問題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不癮,又多吃了一個(gè)第二

天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一

個(gè)。到第10天早上想再吃時(shí),見只剩下一個(gè)桃子了。求第一天共摘了多少。

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

的桃子,一共偷了9天。

peach=Iforiinrange(9):

pcach=(peachyI)*2print(peach)1234

022:比賽對(duì)手

題目?jī)蓚€(gè)乒乓球隊(duì)進(jìn)行比賽,各出三人,甲隊(duì)為ahc三人,乙隊(duì)為三人。己抽簽決定比賽。

有人向隊(duì)員打聽比賽的。a說他不和x比,c說他不和x.z比,請(qǐng)編程序找出三隊(duì)賽手的。

程序分析找到條件下不重復(fù)的三個(gè)對(duì)手即可。

a-4et<['x7y7z'])b-setCfx'WFz[>c-wt(Cx7y7z'])c-set(Cx7z?))a-sctOx')foriina:

forjinb:

forkinc:

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

printCa:%S,>:%5.c:%s,%(ijk))

^^323:畫菱形

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

***

*****

*******

*****

***

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

defdraw(num):

a=**(2*(4-num)+1)

print(a.center(9/1))

ifnum!二I:

draw(num-1)

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

draw(4)

1234567

024:斐波那契數(shù)列”

題目有一分?jǐn)?shù)存列;M,獎(jiǎng),驍,酩,,“621/13…求出這個(gè)數(shù)列的前2。項(xiàng)之和。

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

a=2.0

b=1.0

s=0

forninrange(1,21):

s+=a/b

a-b=a?b.a

print(s)

12345678

IH025階乘求和

題目求l+2!+3!+…+20!的和。

程序分析1+2”3!?…+20!=1+2(1*3(1+4(???20⑴)))res=l

foriinrange(20I.-I):

res=i*res+l

print(res)

1234

*■026:遞歸求階乘

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

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

deffactorial(n):

returnn*factorial(n-l)ifn>lelse1print(factoriaI(5))

123

27:遞歸輸出

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

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

defrec(string):

ifIen(string)l=l:

rac(?tring(l?])

print(string[0],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è)人,他說是I。歲。請(qǐng)問第五個(gè)人多大?程序分析就一等差數(shù)列。

defage(n):

ifn=l:

return10

return2*age(n-l)print(age(5))12345

反向輸出

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

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

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

n=str(n)print(1%d位數(shù)%len(n))

1234

030:回文數(shù)

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

同。

程序分析用字符串比較方便,就算輸入的不是數(shù)字都。匕

n=input("隨便你輸入啥啦:")gb=len(n)-lflag=Truewhilea<b:

ifn[a]!=n[b]:

print]不是回文串,)flag=Falsebreak

ab=a+1b-1ifflag:

prints是回文串)1112

031:字母識(shí)詞

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

個(gè)字母。

程序分析這里用字典的形式直接將對(duì)照關(guān)系存好。

wcckT={'h':Thursday'.

,ultuesday'}

wcekS=|a:*Saturday.

,ulSunday')

wcek=('t:weekT/

R*wnnkS

mTmonday'.

'wTwensday'.

T/fridayt)

a=wcck[str(input(1請(qǐng)輸入第位子母:'?.lower(H

ifa==weekTora==weekS:

print(a[str(input(請(qǐng)輸入第一位字位》lower。])

else:

print(a)

1415

032:反向輸出II

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

程序分析無,

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

12

033:列表轉(zhuǎn)字符串

題目按逗號(hào)分隔列表,

程序分析無。

L=[12345]

print(7.join{str(n)forninL))12

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

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

程序分析無。

defheIIo0:

print(*HelIoWorld!1)

defheIIoAgain():

foriinrange(2):

heIlo()

if_namc_=*_main_he11oAgain()

12345678

■o35:設(shè)置輸出顏色題目文本顏色設(shè)置。

程序分析無。

classbcolors:

HEADER='\033[951n'

OKBLUE='\033[94m'

OKGREEN='\033[92m,

WARNING=\033[93m'

FAIL-\033[91m1

ENDC=\033[0m

BOLD='\033[lm

UNDERLINE=\033[4mprint(bcolors.WARNING+"警告的顏色字體?"+bcolors.ENOC)

"■036:算素?cái)?shù)

題目求I。。之的素?cái)?shù)。

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

lo=int(input(卜限:1))

hi=int(input('上限:’))

foriinrange(Io.hi+I):

ifi>l:

forjinrange(2.i):

if(i*j)==0:

break

else:

print(i)

123456789

'■037:排序

題目對(duì)I。個(gè)數(shù)進(jìn)行排序。

程序分析同

raw二口

foriinrange(IO):

x=int(inputCintSd:?%(i)))

raw.append(x)foriinrange(len(raw)):

forjinrange(ijen(raw)):

ifraw[i]>raw[j]:

raw[i].raw[j]=raw[j]jraw[i]

print(raw)

11

038:矩陣對(duì)角線之和

題目求一個(gè)3*3矩陣主對(duì)角線元素之和,

程序分析無。

[345].

[456]

res=Oforiinrange(len(mat)):

res*=mat[i][i]

print(res)

12345678

■o39:有序列表插入元素

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

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

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

115=(1,10400.100040000.100000]

n=int(input(insertanumber:*))Iis.append(n)foriinrange(lcn(lis)-l):

ifIis[i]>=n:

forjinrange(ijen(lis)):

IisO].Iis[-l]=lis[-1]JisD]

break

print(Iis)

123456789

*1040:逆序列表

題目將一個(gè)數(shù)組逆序輸出。

程序分析依次交換位置,或者直接調(diào)用reverse方法。

Iis=[1,10,100,1000,10000,100000]

foriinrange(int(Ien(Iis)/2)):

Iis[i]Jis[len(lis)-l-i]=lis[len(lis)-l-i]Jis[i]

print,第一種實(shí)現(xiàn):,)

print(lis)

115=[1,10,100.100040000.100000]

prints第—種實(shí)現(xiàn):)

Iis.reverse()

print(Iis)

1112

041:類的方法與變量

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

程序分析構(gòu)造類,了解類的方法與變量,

defdummy():

i=0

print(i)

i+=l

classcis:

i=0

defdummy(self):

print(self,i)

self.i+=l

a=cIs()

foriinrange(50):

dummy()

a.dunny0

1415

■042:變量作用域

題目學(xué)習(xí)使用aut。定義變量的用法。

程序分析python中的變量作用域,

i=0

n=0

defdummy():

i=0

print(i)

i+二Idefdummy2():

gIobaIn

print(n)

n+=l

prints函數(shù)部的同名變量,)

forjinrange(20):

print(i)

dummy{)

i*=lprint(global聲明同名變量')

forkinrange(20):

print(n)

dummy2()

n+=10

920

。43:作用域、類的方法與變量

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

程序分析綜合?041和042o

classdumny:

num=l

defNum(scIf):

prinL('uIdbbdunmynum/.1T.riuni)

print('globalnum:1.num'self.num+=l

n=dtmny0

num=l

foriinrange(5):

num*=10

n.Num()

1112

,044:矩陣相加

題目計(jì)算兩個(gè)矩陣相加。

程序分析創(chuàng)建一個(gè)新的矩陣,使用面迭代并取出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),

45,9]]

res=[[O00]

[0.0.0).

[0.0,0]]

foriinrange(Ien(res)):

forjinrange(Ien(res[0])):

res[i]U]=X[i]U].Y[i]UJ

print(res)

141516

B1045:求和

題目統(tǒng)計(jì)1到100之和。

程序分析無

res=0

foriinrange(I.101):

res?二i

print(ree)

1234

■■()46:打破循環(huán)

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

程序分析無

whileTrue:

try:

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

except:

Print(輸入錯(cuò)誤,)

continue

dn=n**2

print('其平方為:,.dn)

ifdn<50:

print(,平方小于50退出,)break

11

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

題目?jī)蓚€(gè)變量值用函數(shù)互換。程序分析無

defcxc(arb):

return(b^)

a=0

b=10

ab=exc(a.b)

prim(a'b)

123456

,1048:數(shù)字比大小

題目數(shù)字比較。

程序分析無

a=int(inputCa))

b=int(input(b='))

ifa<b:

print(a<b)

elifa>b:

print(a>b)

else:

print(a=b)

12345678

IHHo49:Iambda

題目使用lambda來創(chuàng)建匿名函數(shù)。

程序分析無

Max=lambdaxy:x*(x>=y)+y*(y>x)

Min=lambdaxy:x*(x<=y)+y*(y<x)a=intIinputCI:*))

b=int(input(2:*))print(Max(a.b))

print(Min(a,b))

12345678

riOso:隨機(jī)數(shù)

題目輸出一個(gè)隨機(jī)數(shù)。

程序分析使用rand0m模塊。

importrandom

print(random,uniform(10.20))

12

"■051:按位與

題目學(xué)習(xí)使用按位與&0

程序分析0&0二0:041二0:140=0:

a=0o77print(a)b=a&3print(b)b=b&7print(b)

123456

P52:按位或

題目學(xué)習(xí)使用按位或I。

程序分析0|0=0:0|1=1:1|0=1;1|1=1a=0o77print(a|3)print(a|3|7)123

P53:按位異或

題目學(xué)習(xí)使用按位異或八。程序分析0,0=0;0*1=1:1,0=1;1*1=0a=0o77print(a,3)

printU*3*7)

123

"■054:位取反、位移動(dòng)

題目取一個(gè)整數(shù)a從右端開始的“7位。

程序分析可以這樣考慮:

⑴先使a右移4位。

⑵設(shè)置一個(gè)低4位全為,其余全為。的數(shù)。可用(。<<4)

⑶將上而二者進(jìn)行&運(yùn)算。

a=int(input('輸入一個(gè)數(shù)字:,))

b=0

b=-b

#10000

#1111

c=a?4

d=c&b

printCar\binfa))

printMbin(b))

print(*c:bin(c))

printCdz\binfd))

11

八?055:按位取反

題目學(xué)習(xí)使用按位取反?

程序分析~0=1:~1=0:

print(*234)

print("234)

12

「1056:畫圈

題目畫圖,學(xué)用circle畫圓形。

程序分析無。

fromtkinterimport?

canvas=Canvas(width=800height=600bg=yellow)

canvas,pack(expand:YES/fi11=BOTH)j=I

foriinrange(26):

canvas.crcate_oval{310-k.250-k310*k250+kwidth=l)

kf

j+=0.3

mainIoop0

“057:畫線

題目畫圖,學(xué)用line畫直線。

程序分析無。

if_name_=='_main_

fromtkinterimport*

canvas=Canvas(width=300,height=300bg='green')

canvaspack(expand=YES,fill=80TH)

xO=263

yO=263

yl=275

xl=275

foriinrange(19):

canvas,createdinefx0"0"0,1.widtH=I,fiIl-red)

xO=xO-5

yO=yO-5

xl=xl+5

yl=yl+5

xO=263

yl=275

yO=263

foriinrange(21):

canvas.crcatoJinefxO"O"O"IJi11='red')

xO+=5

yO+=5

yl+=5

mainioop()

223242526

■o58:畫矩形

題目畫圖,學(xué)用rectangle畫方形。

程序分析無。

if_name_='_main_

fromtkinterimport*

root=TkO

root.titlef"anvas')

canvas-Canvas(root,width-40),height=400.bg-'yellow")

xO=263

yO=263

yl=275

xl=275

foriinrange(19):

canvas.create」ectangIe(xO.yO.xl,yI)

xO-=5

yO-=5

+=5

yl.二5

canvas,pack()

root,mainIoop()

1415161718

-059:畫圖(11)題目畫圖,綜合例子。

程序分析//.

if_name_=*_main_

fromtkinterimport?

canvas=Canvas(width=300.height=300.bg=*green')canvas.pack(expand=YESji11=BOTH)

xO=150

yO=100

canvas.crcate_ova1(xO-10,yO-10rx0?10.yO?10)

canvas.create_ova1(xO-20,yO-20,xO?20,yO?20)

canvas.create_ova1(xO-50,y0-50,x0?50,y0?50)importmath

B=0.809

foriinrange(16):

a=2?math,pi/16?i

x=math.ceiIfxO?48*math,cos(a))

y=math,ceiI(yO+48?math,sin(a)*B)canvas.createJinefxO*O-*fi11=*red')

canvas.crcate_oval(xO-60,yO-60fx0?60.yO?60)

forkinrange(501):

foriinrange(17):

a=(2?math,pi/16)*i+(2*math.pi/180)*k

x=math,ceiI(xO+48*math,cos(a))

y=math,ceiI(yO+48?math,sin(a)?B)

canvas,createdine(KO,yO.xyfi11=*red')

forjinrange(51):

a=(2*math,pi/16)*i+(2*math,pi/180)?k-1

x=math,ceiI(xO+48*math,cos(a))

y=math,ceiI(yO+48*math,sin(a)?B)

canvas.create_line(x0.yO,x.y,fi11="red)

mainIoop()31

P60:字符串長(zhǎng)度

題目計(jì)算字符串長(zhǎng)度。

程序分析無,

s-zhangguanglOIprint(len($))12

061:輝三角

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

程序分析無。

defgenerate(numRows):

r=[[l]J

foriinranged,numRows)

r.append(Iist(map(lambdax.y:x+y/0]+r[-1],r[-l]+[0])))

returnr[inumRows]

a=generate(10)

foriina:

print(i)

12345678

"1062:查找字符串

題目查找字符串。

程序分析無“

sI='aabbxuebixuebi

s2-ab

s3=xue

print(si.find(s2))

print(si.find(s3))

12345

'■063:畫橢圓

題目畫橢圓。

程序分析使用tkintero

if'main_

fromtkinterimport*

x=360

y=160

bottom=v-30

top=y-30

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

foriinrange(20):

canvas.crcatc_oval(250-top.250-bottom,250+top.250+botton)

top-=5

bottom*=5

canvas.pack0

mainioop()

14

l*|064:畫橢圓、矩形

題目利用ellipse和rectangle國(guó)圖

程序分析無.

if_name_==*_main_

fromtkinterimport*

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

left=20

right=50

top=50

num=15

foriinrange(nun):

canvas.create_oval(250-right.250-left,250+right.250+left)

canvas,create.oval(250-20.250-top.250+20,250+top)

canvas.create_rectangIe(20-2?i,20-2*|,10?(i+2),10*(i+2))

right+=5

left+=5top+=10

canvas.packOmainIoop()

14151617

■o65:畫組合圖形題目一個(gè)最優(yōu)美的圖案。程序分析無。

importmath

fromtkinterimportclassPTS

def_init_(self):

self,x=0

self,y=0

points=[]dofLinoToDcmo():

screenx=400

screeny=400

canvas=Canvas(width=screen:*,height=screeny,bg='white')

AspectRatio=0.85

h=screenyw=screenxxcenter=w/2ycenter=h/2radius=(h-30)/(AspectRatio*2)-20step=360/MAXPTSangle

0.0

foriinrange(MAXPTS):

rads=angle?math,pi/180.0

P=PTSO

p.x=xcenter+int(math,cos(rads)*radius)

p.y=ycenter-int(math.sin(rads)*radius*AspectRatio)angle?=steppoints.append(p)

canvas.create_ovaI(>center-radius.ycenter-radius,xcenter+radius,ycenter+radius)

MAXPTS=15

foriinrunge(MAXPTS):

forjinrange(iJiAXPTS):

canvas.createdinef5ointstiJ.x*ointsliJ*pointsUJ.x*ointsQJ.y)

canvas.pack()mainloop()if_name_==*_main_

LineToOemo()

940

066:三數(shù)排序

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

程序分析同。。5。

raw=[]foriinrange(3):

x=int(input(intSd:.%(1)))

raw.append(x)foriinrange(I€n(raw)):

forjinronge(ijcn(raw)):

ifraw[i]>raw[j]:

raw[i].raw[j]=raw[j]raw[i]

print(raw)raw2=[]

foriinrange(3):

x=int(input('intSd:.%(i)))

raw2.append(x)

print(sorted(raw2))

1415161718

067:交換位置

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

Ii=[3,2萬,乙8.1.5]Ii[-I]Ji[Ii.index(min(Ii))]=li[Ii.index(min(li))],li[-I]m=Ii[0]

ind=li.index(max(Ii))

liF01=li[indl

Ii[ind)=mprint(Ii)

程序分析無。

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=de

溫馨提示

  • 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. 人人文庫(kù)網(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)論