Python99道經(jīng)典練習(xí)題答案_第1頁
Python99道經(jīng)典練習(xí)題答案_第2頁
Python99道經(jīng)典練習(xí)題答案_第3頁
Python99道經(jīng)典練習(xí)題答案_第4頁
Python99道經(jīng)典練習(xí)題答案_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

褐f家惜愛^f家襄愛

#!/usr/bin/envpython

#coding:utf-8

[程序1]

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

1.程序分析:可填在百位、十位、個位的數(shù)字都是1、2、3、4。組成所有的排列后再去

掉不滿足條件的排列。

2.程序源代碼:

III

foriinrange(1,5):

forjinrange(1,5):

forkinrange(1,5):

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

printi,j,k

【程序2】

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

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

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

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

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

1.程序分析:請利用數(shù)軸來分界,定位。注意定義時需把獎金定義成長整型。

20程序源代碼:

bonusl=100000*0?1

bonus2=bonusl+100000*0o500075

bonus4=bonus2+200000*0。5

bonus6=bonus4+200000*0.3

bonusl0=bonus6+400000*0.15

=int(raw_input('inputgain:\n,))

ifi<=100000:

bonus=i*0o1

elifi<=200000:

bonus=bonusl+(i-100000)*0o075

elifi<=400000:

bonus=bonus2+(i-200000)*0。05

elifi<=600000:

bonus=bonus4+(i—400000)*0.03

elifi<=1000000:

bonus二bonus6+(i—600000)*0o015

else:

bonus=bonusl0+(i-1000000)*0。01

print'bonus=',bonus

【程序3】

題目:一個整數(shù),它加上100后是一個完全平方數(shù),再加上268又是一個完全平方數(shù),請問該數(shù)是多少?

1.程序分析:在10萬以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后

的結(jié)果滿足如下條件,即是結(jié)果。請看具體分析:

2.程序源代碼:

#incIude"mathoh"

main()

(

longinti,x,y,z;

for(i=1;i<100000;i++)

{x=sqrt(i+100);/*x為加上100后開方后的結(jié)果*/

y=sqrt(i+268);/*y為再加上268后開方后的結(jié)果*/

if(x*x=i+100&&y*y=i+268)/*如果一個數(shù)的平方根的平方等于該數(shù),這說明此數(shù)是完全平方數(shù)*/

printf("\n%ld\n",i);

)

)

,I9

importmath

foriinrange(10000):

#轉(zhuǎn)化為整型值

x=int(mathosqrt(i+100))

y=int(math,sqrt(i+268))

if(x*x二二i+100)and(y*y=二i+268):

printi

??9

【程序4】

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

1O程序分析:以3月5日為例,應(yīng)該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊

情況,閏年且輸入月份大于3時需考慮多加一天。

2.程序源代碼:

year=int(raw_input('year:\n'))

month=int(raw_input('month:\n'))

day=int(raw_input('day:\n'))

months二(0,31,59,90,120,151,181,212,243,273,304,334)

if0<=month〈二12:

sum二months[month-1]

else:

print'dataerror*

sum+=day

leap=0

if(year%400==0)or((year%4==0)and(year%100!=0)):

leap=1

if(leap==1)and(month>2):

sum十二1

print'itisthe%dthday.'%sum

【程序5】

題目:輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出。

1.程序分析:我們想辦法把最小的教放到x上,先將x與y進行比較,如果x〉y則將x與y的值進行交換,

然后再用X與Z進行匕較,如果X>Z則將X與Z的值進行交換,這樣能使X最小。

2.程序源代碼:

foriinrange(3):

x=int(raw_input('integer:\n'))

I.append(x)

I.sort()

printI

,If

【程序6】

題目:用*號輸出字母C的圖案。

1.程序分析:可先用號在紙上寫出字母C,再分行輸出。

2.程序源代碼:

It,

print'HeiIoPythonworld!\n*

print'*10

foriinrange(5):

print'**'

print'大’*10

print'*\n'*6

,■,

【程序7】

題目:輸出特殊圖案,請在c環(huán)境中運行,看一看,VeryBeautiful!

1O程序分析:字符共有256個。不同字符,圖形不一樣。

2.程序源代碼:

,,I

a=176

b二219

printchr(b),chr(a),chr(a),chr(a),chr(b)

printchr(a),chr(b),chr(a),chr(b),chr(a)

printchr(a),chr(a),chr(b),chr(a),chr(a)

printchr(a),chr(b),chr(a),chr(b),chr(a)

printchr(b),chr(a),chr(a),chr(a),chr(b)

【程序8】

題目:輸出9?9口訣.

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

2.程序源代碼:

#incIude"stdio?h”

main()

(

inti,j,result;

printf(n\n");

for(i=1;i<10;i十十)

{for(j=1;j<10:j++)

(

result=i*j;

printf("%d*%d二%-3d”,i,j,resuIt);/*—3d表示左對齊,占3位*/

)

printf(w\nw);/*每一行后換行*/

}

1

foriinrange(1,10):

forjinrange(1,10):

result=i*j

print'%d*%d二%—3d,%(i,j,result)

print''

【程序9】

題目:要求輸出國際象棋棋盤。

10程序分析:用i控制行,j來控制列,根據(jù)i+j的和的變化來控制輸出黑方格,還是白方格。

2.程序源代碼:

#incIude"stdio.h"

main()

(

inti,j;

for(i=0;i<8;i++)

(

for(j=0;j<8;j++)

if((i+j)%2==0)

printf("%c%c”,219,219);

else

printf("");

printf("\n");

)

}

importsys

foriinrange(8):

forjinrange(8):

if(i+j)%2=0:

sys.stdout,write(chr(219))

sys.stdout.write(chr(219))

else:

sys<>stdoutowrite,')

print''

III

【程序10]

題目;打印樓梯,同時在樓糅上方打印兩個笑臉。

1o程序分析:用i控制行,j來控制列,j根據(jù)i的變化來控制輸出黑方格的個數(shù).

2O程序源代碼:

I,,

importsys

sys.stdout,write(chr(1))

sys.stdout,write(chr(1))

print''

foriinrange(1,11):

forjinrange(1,i):

sysostdoutowrite(chr(219))

sys.stdout,write(chr(219))

print

【程序11]

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

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

1O程序分析:兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21....

2.程序源代碼:

main()

(

long

inti;

f1=f2=1;

for(i=1;i<=20;i++)

{printf("%121d%12ldw,f1,f2);

if(i%2=0)printf("\n");/*控制輸出,每行四個*/

f1=f1+f2;/*前兩個月加起來賦值給第三個月*/

f2=f1+f2;/*前兩個月加起來賦值給第三個月*/

)

1

II,

f1=1

f2二1

foriinrange(1,21):

print'%12d%12d'%(f1,f2)

if(i%2)==0:

print''

f1=f1+f2

f2=f1+f2

【程序12]

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

1.程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,

則表明此數(shù)不是素數(shù),反之是素數(shù)”

20程序源代碼:

,I,

h=0

leap=1

frommathimportsqrt

fromsysimportstdout

forminrange(101,201):

k=int(sqrt(m+1))

foriinrange(2,k+1):

ifm%i-0:

Ieap=0

break

ifleap==1:

print'%-4d'%m

h+二1

ifh%10==0:

print

leap=1

print'ThetotaIis%d'%h

【程序13]

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

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

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

2.程序源代碼:

9?,

forninrange(100,1001):

i=n/100

j=n/10%10

k二n%10

ifi*100+j*10+k==i+j**2+k**3:

print"%-5d”%n

I,,

【程序14]

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

程序分析:對n進行分解質(zhì)因數(shù),應(yīng)先找到一個最小的質(zhì)數(shù)k,然后按下述步驟完成:

(1)如果這個質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可。

(2)如果n〈>k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你n,

重復(fù)執(zhí)行第一步。

⑶如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步.

2.程序源代碼:

fromsysimportstdout

n=int(raw_input("inputnumber:\n"))

print“n二%d"%n

foriinrange(2,n+1):

whilen!=i:

ifn%i==0:

stdout,write(str(i))

stdout?write("*")

n=n/i

else:

break

print%n

ir,

【程序15]

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

60分以下的用C表示.

1.程序分析:(a>b)?a:b這是條件運算符的基本例子。

2.程序源代碼:

不支持這個運算符

,II

score=int(raw_input('inputscore:\n?))

ifscore〉=90:

grade-'A'

eIifscore)=60:

grade='B'

else:

grade-'C

print'%dbeIongsto%s'%(score,grade)

,,,

【程序17]

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

程序分析:利用whiIe語句,條件為愉人的字符不為

2o程序源代碼:

,,I

importstring

s=rawinputinputastring:\n')

letters=0

space=0

digit=0

others=0

forcins:

ifCoisaIpha():

letters+=1

eIifCoisspace():

space+二1

eIifCoisdigit():

digit+=1

else:

others+二1

print'char=%d,space=%d,digit=%d,others=%d'%(Ietters,space,digit,others)

題目:求s=a+aa+aaa+aaaa+aa.o?a的值,其中a是一數(shù)字c例如2+22+222+2222+22222(此時

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

1.程序分析:關(guān)鍵是計算出每一項的值。

2.程序源代碼:

I,,

Tn=0

Sn=[]

n=int(raw_input(,n=:\n'))

a=int(raw_input('a=:\n*))

forcountinrange(n):

Tn=Tn+a

a=a*10

Sn.append(Tn)

printTn

Sn二reduce(Iambdax,y:x+y,Sn)

printSn

I,,

【程序19]

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

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

1.程序分析:請參照程序〈一上頁程序14.

2o程序源代碼:

fromsysimportstdout

forjinrange(2,1001):

k=[]

n=-1

s=j

foriinrange(1,j):

ifj%i==0:

n+=1

s-=i

k.append(i)

ifs==0:

printj

foriinrange(n):

stdout.write(k[i])

stdoutowrite(*')

printk[n]

【程序20]

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

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

1O程序分析:見F面注釋

2.程序源代碼:

,>,

Sn=100.0

Hn=Sn/2

forninrange(2,11):

Sn+=2*Hn

Hn/=2

print'TotaIofroadis%Sn

print'Thetenthis%fmeter*%Hn

,,,

【程序21]

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

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

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

1.程序分析:采取逆向思維的方法,從后往前推斷.

2.程序源代碼:

II,

x2=1

fordayinrange(9,0,-1):

x1=(x2+1)*2

x2=x1

printx1

I,,

【程序22]

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

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

三隊賽手的名單。

10程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,

則表明此數(shù)不是素數(shù),反之是素數(shù)。

2.程序源代碼:

foriinrange(ordCx'),ord(*****z*)+1):

forjinrange(ord('x'),ord(')+1):

ifi!

forkinrange(ord('x'),ord('z,)+1):

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

if(i!=ord('x'))and(k!=ord('x'))and(k!=ord('z')):

print'orderisa%s\tb%s\tc----%s'%(chr(i),chr(j),

chr(k))

,>I

【程序23]

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

*

***

*****

*******

*****

***

*

1.程序分析:先把圖形分成兩部分來看待,前四行一個規(guī)律,后三行一個規(guī)律,利用雙重

for循環(huán),第一層控制行,第二層控制列。

20程序源代碼:

fromsysimportstdout

foriinrange(4):

forjinrange(2-i+1):

stdoutowrite(*')

forkinrange(2*i+1):

stdoutowrite。*')

print

foriinrange(3):

forjinrange(i+1):

stdoutowrite(*')

forkinrange(4-2*i+1);

stdoutowrite('夫’)

print

,■I

【程序24]

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

1O程序分析:請抓住分子與分母的變化規(guī)律。

2。程序源代碼:

,II

#方法一

a—2o0

b=1.0

s=0

forninrange(1,21):

s+二a/b

a=a+b

b=t

prints

#方法二

s=O00

forninrange(1,21):

s+=a/b

b,a=a,a+b

prints

s=Oo0

forninrange(1,21):

s+=a/b

b,a=a,a+b

prints

#方法三

I=[]

forninrange(1,21):

b,a=a,a+b

I.append(a/b)

printreduce(Iambdax,y:x+y,I)

【程序25]

題目:求1+2!+3!+.oo+20!的和

1o程序分析:此程序只是把累加變成了累乘。

2.程序源代碼:

#方法一

n=0

s=0

t=1

forninrange(1,21):

t*=n

S+=t

print'1!+2!+3!+。。.+20!=%d'%s

#方法二

s=0

I=range(1,21)

defop(x):

r=1

foriinrange(1,x+1):

r*=i

returnr

s=sum(map(op,I))

print'1!+2!+3!+..。+20!=%d'%s

?tf

【程序26]

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

1.程序分析:遞歸公式:fn=fn」*4!

2.程序源代碼:

deffact(j):

sum=0

ifj=0:

sum=1

else:

sum=j*fact(j-1)

returnsum

foriinrange(5):

print'%d!二%d,%(i,fact(i))

III

【程序27]

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

1.程序分析:

2O程序源代碼:

999

defpaIin(n):

next=0

ifn<=1:

next=input()

print

printnext

else:

next=input()

paIin(n-1)

printnext

i=5

paIin(i)

print

I,,

【程序28]

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

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

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

K程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數(shù),需知道

第口人的歲數(shù),依次類推,推到第一人(10歲),再往日推。

,?9

defage(n):

ifn==1:c=10

else:c=age(n-1)+2

returnc

printage(5)

I,,

【程序29]

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

U程序分析:學(xué)會分解出每一位數(shù),如F解釋:(這里是一種簡單的算法,師專數(shù)002班趙鑫提供)

2.程序源代碼:

x=int(raw_input("inputanumber:\nn))

a=x/10000

b=x%10000/1000

c二x%1000/100

d=x%100/10

e=x%10

ifa!=0:

print“thereare5",e,d,c,b,a

elifb!=0:

print"thereare4”,d,c,b,a

elifc!=0:

print"thereare3",e,d,c

elifd!=0:

print“thereare2",e,d

else:

print”thereare1",e

9,,

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

1.程序分析:同29例

2.程序源代碼:

If,

x=int(raw_input("inputanumber:\n"))

x=str(x)

foriinrange(Ien(x)/2):

ifx[i]!=x[—i-1]:

print'thisnumberisnotahuiwen'

break

print'thisnumberisahuiwen?

程序31]

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

判斷第二個字母。

1.程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母.

2.程序源代碼:

,,,

fromsysimportstdin

Ietter=stdin.read(1)

stdinofIush()

whileletter!='Y';

ifletter=='S':

print'pleaseinputsecondIetter'

letter=stdin.read(1)

stdinofIush()

ifletter--'a':

print'Saturday'

elifletter=='u':

print'Sunday'

else:

print*dataerror?

break

elifletter二二'F':

print'Friday*

break

eIifletter=='M':

print'Monday*

#break

elifletter二二'T':

print'pleaseinputsecondIetter

letter=stdin,read(1)

stdin.fIush()

ifletter二二'u':

print'Tuesday'

eIifletter=='h':

print'Thursday*

else;

print'dataerror'

break

eIifletter=='W':

print'Wednesday*

else:

print'dataerror'

Ietter=stdinoread(1)

stdin,flush()

【程序32]

題目:Pressanykeytochangecolor,doyouwanttoit.Pleasehurryup!

1O程序分析:

2o程序源代碼:

不知道寫呢:(,先空著吧

【程序33]

題目:學(xué)習(xí)gotoxy()與cIrscr()函數(shù)

1.程序分析:

2.程序源代碼:

不知道如何寫:(先空著吧

【程序34]

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

1O程序分析:

2.程序源代碼:

III

defhello_worId():

print'helIoworId1

defthree_heIIos():

foriinrange(3):

heIIo_worId()

if_name_二二'_main_':

three_heIIos()

【程序35]

題目:文本顏色設(shè)置

1o程序分析:

2.程序源代碼:

#incIude<conio.h〉

voidmain(void)

(

intcolor;

for(color=1;coIor〈16;coIor++)

(

textcolor(color);/*設(shè)置文本顏色*/

cprintf(nThisiscolor%d\r\n”,coIor);

)

textcolor(128+15);

cprintf(nThisisblinking\r\n");

)

【程序36]

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

1.程序分析:

2.程序源代碼:

aV?

frommathimportsqrt

if_name_=='_main_'

N=100

a=range(0,N)

foriinrange(2,int(sqrt(N))):

forjinrange(i+1,N):

if(aEi]!=0)and(a[j]!=0):

ifa[j]%a[i]==0:

a[j]=0

print

foriinrange(2,N):

ifa[i]!=0:

print"%5d"%a[i]

if(i-2)%10==0:

print

【程序37]

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

1o程序分析:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換,

下次類推,即用第二個元素與后8個進行比較,并進行交換。

2O程序源代碼:

I,I

if_name_=="_main_":

N=10

#inputdata

print'pIeaseinputtennum:\n'

I=口

foriinrange(N):

I.append(int(raw_input('inputanumberAn*)))

print

foriinrange(N):

printI[i]

print

#sorttennum

foriinrange(N-1):

min=i

forjinrange(i+1,N):

ifI[min]>I[j]:min=j

I[i],I[min]=I[min],I[i]

print'aftersorted'

foriinrange(N):

printILi]

【程序38]

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

1o程序分桁:利用雙重for循環(huán)控制輸入二維數(shù)組,再將a[i][i]累加后輸出。

2.程序源代碼:

,■,

if_name_二二'_main_':

a=[]

sum=0.0

foriinrange(3):

a.append([])

forjinrange(3):

a[i].append(float(raw_input("inputnum:\nv)))

foriinrange(3):

sum+=a[i][i]

printsum

【程序39]

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

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

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

2.程序源代碼:

_name_=='_main_';

#方法一

a=[1,4,6,9,13,16,19,28,40,100,0]

print'originalIistis:'

foriinrange(len(a)):

printa{_i]

number=int(raw_input("insertanewnumber:\nn))

end=a[9]

ifnumber>end:

a[10]=number

else:

foriinrange(10):

ifa[i]〉number:

tempi=a[i]

a[i]=number

forjinrange(i+1,11):

temp2=a[j]

a[j]=tempi

tempi=temp2

break

foriinrange(11):

printa[i]

#方法二

#insrtanothernumber

number=int(raw_input('inputanumber:\n)))

ifnumber>a[Ien(a)-1]:

a0append(number)

else:

foriinrange(Ien(a)):

ifa[i]>number:

aoinsert(i,number)

printa

【程序40]

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

1.程序分析:用第一個與最后一個交換。

2O程序源代碼:

if_name_=='_main_':

a[9,6,5,4,1]

N=len(a)

printa

foriinrange(Ien(a)/2):

a[i],a[N—i—1]=a[N—i—1],a[i]

printa

【程序41]

題目:學(xué)習(xí)static定義靜態(tài)變量的用法

1.程序分析:

20程序源代碼:

9,,

#python沒有這個功能了,只能這樣了:)

defvarfunc():

var=0

print'var二%d'%var

var+=1

if_name_—'_main_':

foriinrange(3):

varfunc()

#attributofcIass

#作為類的一個屬性吧

cIassStatic:

StaticVar=5

defvarfunc(self):

seIf.StaticVar+二1

printseIf.StaticVar

printStatic0StaticVar

a=StaticO

foriinrange(3):

a0varfunc()

9,,

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

1.程序分析:

2.程序源代碼:

沒有auto關(guān)鍵字,使用變量作用域來舉例吧

num=2

defautofunc():

num=1

print'internaIbIocknum=%d*%num

num十二1

foriinrange(3):

print'Thenum=%d'%num

num+二1

autofunc()

【程序43]

題目:學(xué)習(xí)使用static的另一用法。

10程序分析:

2O程序源代碼:

有一^個static變量的用法,python是沒有,演示一^個python昨用域使用方法

ItI

cIassNum:

nNum=1

definc(self):

seIf.nNum+二1

print'nNum=%d'%self.nNum

if_name_=='_main_':

nNum=2

inst=Num()

foriinrange(3):

nNum+=1

print'Thenum=%d*%nNum

inst.inc()

9I,

【程序44]

題目:學(xué)習(xí)使用external的用法。

1o程序分析:

20程序源代碼:

external.py代碼:

I,I

importexternaI

ifnamemain

printexternaI.add(10,20)

【程序45]

題目:學(xué)習(xí)使用register定義變量的方法.

1.程序分析:

2.程序源代碼:

沒有register關(guān)鍵字,用整型變量代替

,I,

tmp=0

foriinrange(1,101):

tmp+二i

print'Thesumis%d,%tmp

I9i

【程序46]

題目::S#define命令練習(xí)(1)

1o程序分析:

2.程序源代碼:

沒有C語言的宏,就這么寫了

TRUE=1

FALSE=0

defSQ(x):

returnx*x

print'ProgramwiIIstopifinputvaIuelessthan50。

again=1

whileagain:

num=int(raw_input(TPleaseinputnumber'))

print'Thesquareforthisnumberis%d,%(SO(num))

ifnum>=50:

again=TRUE

else:

again=FALSE

I,I

題目:宏#define命令練習(xí)(2)

1.程序分析:

2。程序源代碼:

#incIude”stdio0h”

#defineexchange(a,b)(\/*宏定義中允許包含兩道衣裳命令的情彩,此時必須在最右邊加上"\"*/

intt;\

t=a;\

a二b;\

b二t;\

},

這個宏定義python不支持

,i,

defexchange(a,b):

a,b二b,a

return(a,b)

if_name_二二'_main_':

x=10

y=20

print'x=%dfy=%d'%(x,y)

x,y=exchange(x,y)

print'x=%d,y=%d'%(x,y)

,,,

【程序48]

題目:宏#(^右根命令練習(xí)(3)

1.程序分析:

2.程序源代碼:

#defineLAG>

#defineSMA<

#defineEQ二二

#incIude"stdio0h"

voidmain()

(

inti=10;

int產(chǎn)20;

if(iLAGj)

printf("\40:%dIargerthan%d\n",i,j);

elseif(iEQj)

printf("\40:%dequaIto%d\nn,i,j);

eIseif(iSMAj)

printf("\40:%dsmaIIerthan%d\n”,i,j);

eIse

printf(”\40:Nosuchvalue。\n'j;

)

不知道如何用python實現(xiàn)類似的功能

ifnamemain

i=10

j=20

ifi>j:

print'%dIargerthan%d'%(i,j)

elifi==j:

print'%dequaIto%d'%(i,j)

elifi<j:

print%dsmaIIerthan%d'%(i,j)

else:

print'Nosuchvalue'

【程序49]

題目:#if#ifdef和#ifndef的綜合應(yīng)用。

1o程序分析:

2.程序源代碼:

#inoIude"stdiooh”

#defineMAX

#defineMAXIMUM(x,y)(x>y)?x:y

#defineMINIMUM(x,y)(x>y)?y:x

voidmain()

(

inta=10,b=20;

#ifdefMAX

printf("\40:Thelargeroneis%d\n",MAXIMUM(a,b));

#eIse

printf("\40:Theoweroneis%d\nn,MINIMUM(a,b));

#endif

#ifndefMIN

printf("\40:Theoweroneis%d\n",MINIMUM(a,b));

#eIse

printf("\40:TheIargeroneis%d\n",MAXIMUM(a,b));

#endif

#undefMAX

#ifdefMAX

("\40:TheIargeroneis%d\n",MAXIMUM(a.b));

#eIse

printf("\40:Theoweroneis%d\n”,MINIMUM(a,b));

#endif

#defineMIN

#ifndefMIN

printf("\40:Theloweroneis%d\n",MINIMUM(a,b));

#eIse

printf(”\40:TheIargeroneis%d\n",MAXIMUM(a,b));

#endif

)

這個還是預(yù)處理的用法,python不支持這樣的機制,演示lambda的使用。

MAXIMUM=Iambdax,y:(x)y)*x+(x<y)*y

MINIMUM=Iambdax,y:(x>y)*y+(x<y)*x

ifnamemain

a=10

b=20

print'Thelargaroneis%d'%MAXIMUM(a,b)

print'Theloweroneis%d'%MINIMUM(a,b)

9,,

【程序51]

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

1.程序分析:0&0二0;0&1=0;1&0=0;1&1=1

2.程序源代碼:

if_name_=='_main_':

a=077

b=a&3

print'a&b二%d'%b

b&二7

print'a&b二%d'%b

II,

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

1.程序分析:0|0二0;0|1=1;1|0=1;1|1=1

2.程序源代碼:

if_name_=='_main_':

a二077

b=aI3

print'aIbis%d,%b

b|=7

print*a|bis%d,%b

,?,

【程序53]

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

A

10程序分析:o*o=o;oi=i;ro=i;ri=o

2o程序源代碼:

if_name_二二'_main_

a=077

b=a"3

print'Thea"3=%d'%b

b八二7

print'Thea'b=%d*%b

I,,

【程序54]

題目:取一個整數(shù)a從右端開始的4~7位.

程序分析:可以這樣考慮:

(1)先使a右移4位。

(2)設(shè)置一個低4位全為1,其余全為0的數(shù)??捎?(~0<<4)

(3)將上面二者進行&運算。

if_name_=='_main_':

a=int(raw_input('inputanumber:\n'))

b=a>>4

c二?(?0?4)

d=b&c

print'%o\t%o'%(a,d)

【程序55]

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

1.程序分析:?0=1;?仁0;

2o程序源代碼:

如何查看復(fù)數(shù)的16進制數(shù)

if_name_=='_m

溫馨提示

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

最新文檔

評論

0/150

提交評論