《Python入門經典 以解決計算問題為導向的Python編程實踐》Lesson2

來源:互聯網
上載者:User
5+3>9-2
就是8>7,python是先計算後比較
其他算術運算先於布林運算子執行

Python支援這樣的比較:
aInt = 5
0<=aInt<=5

while booleanExpression:
    #suite 1
#else:
    #suite2
當while迴圈布林運算式為假時,進入else語句。注意:while內部的break跳出迴圈也會跳過else語句。

習題 2

1.

#-*-coding:gbk-*-for i in range(100,1000):if i%17==0:print i,

2.

#-coding:gbk-*-#(a)myNum=int(raw_input("Please input a number:"))Sum=0while myNum>=1:Sum+=myNummyNum-=1print Sum#(b)for i in range(1,myNum+1):Sum=0Kong=0Str=""for j in range(1,i+1):Sum+=jif j==i:Str+=str(j)+" "*((myNum-Kong)*2-1)else:Str+=str(j)+"+"Kong+=1print Str,"=",Sumprint#(c)for i in range(1,myNum+1):Sum=0Kong=0Str=""for j in range(1,i+1):Sum+=jif j==i:Str+=str(j)+" "*((myNum-Kong)*2-1)else:Str+=str(j)+"+"Kong+=1if Sum%i==0:print Str,"=",Sumprint

3.

#-*-coding:gbk-*-#method_1 從後往前輸出 MoneyStr=raw_input("Input your money to convert(納特):")Money=int(MoneyStr)if Money/29!=0:if Money%29!=0:print Money%29,"納特",Money=Money/29if Money/17!=0:if Money%17!=0:print Money%17,"錫可",Money=Money/17print Money,"加侖"else:print Money,"錫可"else:if Money!=0:print Money,"納特"#method_2x=int(MoneyStr)if x/(29*17)!=0:#money數是否大於或等於29*17的整數倍,有加侖print x/(29*17),"加侖",x=x%(29*17)#得到加侖後的餘數if x/29!=0:#money數是否大於或等於29的整數倍,有錫可print x/29,"錫可",#輸出錫可if x%29!=0:#有錫可後的餘數print x%29,"納特"else:#money湊不夠一個錫可,非零時輸出納特if x!=0:print x,"納特"

4.

#-*-coding:gbk-*-#當因數加到一半就大於輸入的數字,break#SumofDivisor預先就設為1,Divisor就是2,少算一步#更多詳情請參考“梅森素數”topNum=int(raw_input("Please input the upper limit:"))theNum=2Deficient=0Abundant=0while theNum<=topNum:#print theNumDivisor=2SumofDivisor=1while Divisor<theNum:#不包括數字本身if theNum%Divisor==0:SumofDivisor+=Divisorif SumofDivisor>theNum:breakDivisor+=1if SumofDivisor==theNum:print theNum,elif SumofDivisor>theNum:Abundant+=1else:Deficient+=1theNum+=1printprint Abundant,"are abundant."print Deficient,"are deficient."

5.

#-*-coding:gbk-*-h=raw_input("Please input your height(m):")w=raw_input("Please input your weight(kg):")h=float(h)w=float(w)bmi=w/h**2print "Your BMI is",bmiif bmi>=30.0:print "Too fat"elif 25.0<=bmi<=29.9:print "Overweight"elif 18.5<bmi<=24.9:print "Normal"elif bmi<=18.5:print "Too light"

6.

#-*-coding:gbk-*-Int=raw_input("Input an integer:")while not Int.isdigit():Int=raw_input("Error: try again. Input an integer:")Int=int(Int)print "The integer is :",Int

7.

#-*-coding:gbk-*-#1)for i in range(1,10):Str=""for j in range(1,i+1):Str+=str(j)#print Strprint Str,"*",8,"+",i,"=",int(Str)*8+i#2)for i in range(1,10):Str=""for j in range(1,i+1):Str+=str(j)#print Strprint Str,"*",9,"+",i+1,"=",int(Str)*9+(i+1)#3)for i in range(9,1,-1):Str=""for j in range(9,i-1,-1):Str+=str(j)#print Strprint Str,"*",9,"+",i-2,"=",int(Str)*9+(i-2)#4)for i in range(1,10):Str=""for j in range(1,i+1):Str+=str(1)#print Strprint Str,"*",Str,"=",int(Str)**2

8.

#-*-coding:gbk-*-import mathmyNum=int(raw_input("Please input a number:"))i=2while i<=math.sqrt(myNum):if myNum%i==0:print myNum,"is not a prime." breaki+=1else:print myNum,"is a prime."

9.

#-*-coding:gbk-*-topNum=raw_input("upper limit:")topNum=int(topNum)for theNum in range(2,topNum+1):sumOfDivisors=0for divisor in range(1,theNum):if theNum%divisor==0:sumOfDivisors+=divisorif sumOfDivisors>theNum:breakif theNum==sumOfDivisors:print theNum,"is perfect."elif theNum<sumOfDivisors:print theNum,"is abundant."else:print theNum,"is deficient."

10.

#-*-coding:gbk-*-import math#(a)#(b)Expr="ax^2+bx+c"print Expra=float(raw_input("a:"))b=float(raw_input("b:"))c=float(raw_input("c:"))delta=b**2-4*a*cif delta==0:res=(-b+math.sqrt(delta))/(2*a)print Expr,"has one root."print "It is",reselif delta>0:res1=(-b+math.sqrt(delta))/(2*a)res2=(-b-math.sqrt(delta))/(2*a)print Expr,"has two roots."print "They are",res1,res2else:part1=math.sqrt(math.fabs(delta))part2=-math.sqrt(math.fabs(delta))x=-b/2*ay=part1/2*ares1=x+eval(str(y)+"j")res2=x-eval(str(y)+"j")print Expr,"has two imaginary roots."print "They are",res1,res2

11.

(a)是奇數但是其立方不是27--1是奇數且其立方是27--3是偶數但小於等於10--2是偶數但大於10--12myVar=1,3,2,12(b){x|x=2*i+1}(i是除了1以外的任意整數,i!=1){3}{x|x=2*i}(i是小於等於5的任意整數,i<=5){x|x=2*i}(i是大於5的任意整數,i>5)

12.

#-*-coding:gbk-*-Str=raw_input("Input a string:")s=""for i in range(len(Str)):    if (i+1)%3==0:s+=Str[i]print s

13.略

14.is看id, ==看值

15.在第6行與第7行之間插入"i-=1",否則死迴圈

16.在while迴圈體插入入if...break

17.

#-*-coding:gbk-*-import math#初級版#Num=raw_input("Enter an integer greater than 2:")#while Num.isdigit():#    Num=raw_input("Error. It is not an interger. Try again:")#Num=int(Num)#while Num<=2:#    Num=raw_input("Error. Integer should be greater than 2. Try again:")#i=0#while Num>=2:#    Num=math.sqrt(Num)#    i+=1#    print("%d: %.3f" % (i,Num))#進階版#用函數什麼的最方便了=。=def IfInputValid(x):    try:        if int(x)>2:            return x        else:            print "Integer less than 2!"            return 0                except:        print "Not an integer!!!"        return 0Num=raw_input("Enter an integer greater than 2:")while not IfInputValid(Num):    Num=raw_input("Enter an integer greater than 2:")Num=int(Num)i=0while Num>=2:    Num=math.sqrt(Num)    i+=1    print("%d: %.3f" % (i,Num))

18.略

19.(c)

20.略

21.True;False

22.迭代器是訪問集合內元素的一種方式。迭代器對象從集合的第一個元素開始訪問,直到所有的元素都被訪問一遍後結束。e.g. range(); it=iter(lst), it.nest()

23.continue忽略迴圈後面的語句,直接跳到下一回的迴圈;break,直接跳出迴圈體

24.

#-*-coding:gbk-*-#檢查一個數是否是迴文數def IfPalindrome(x):    l=len(x)    ok=1    for i in range(int(l/2.)):        if x[i]!=x[l-i-1]:            ok=0            break    return okx=10000while x<999999:    if IfPalindrome(str(x)[-4:]):        Num=x        y=x+1        if IfPalindrome(str(y)[-5:]):            more=2            while more<=10:                z=y+more                if IfPalindrome(str(z)[1:-1]):                    break                more+=1                #print "Add",more            k=z+3            if len(str(k))==6:                if IfPalindrome(str(k)):                    print Num,more    x+=1

 #後面的數字指的是“超過3英裡”時所走的實際英裡數

25.

#-*-coding:gbk-*-for num2 in range(10,100):    num3=num2**2    if 100<=num3<1000 and str(num3)[-2:]==str(num2):        print num2

結果:625

26.

#-*-coding:gbk-*-S,E,N,D,M,O,R,Y=1,0,0,0,1,0,0,0for s in range(1,10):    S=s    for e in range(0,10):        E=e        for n in range(0,10):            N=n            for d in range(0,10):                D=d                M=1#邏輯推理M必為1                for o in range(0,10):                    O=o                    for r in range(0,10):                        R=r                        for y in range(0,10):                            Y=y                            #print S,E,N,D,M,O,R,Y                            send=int(str(S)+str(E)+str(N)+str(D))                            more=int(str(M)+str(O)+str(R)+str(E))                            money=int(str(M)+str(O)+str(N)+str(E)+str(Y))                            if send+more==money and len(set([S,E,N,D,M,O,R,Y]))==8:                                print send,"+",more,"=",money

結果:9567 +1085 =10652


編程題目稍後更新...... To be continued...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.