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...