CH6. 迴圈-習題 - 菲絲恩教你學會Python

文章推薦指數: 80 %
投票人數:10人

請寫一支程式能夠輸入兩個數字,然後輸出這兩個數字的最大公因數。

觀看解答. 首頁 教材 CH1.簡介+安裝環境 CH2.基本語法 CH3.變數+賦值+運算子 CH4.字串+數字 CH5.判斷 CH6.迴圈 CH7.序對+串列+集合+字典 CH8.日期+函數 CH9.檔案+模組+例外 習題 CH2.基本語法-習題 CH3.變數+賦值+運算子-習題 CH4.字串+數字-習題 CH5.判斷-習題 CH6.迴圈-習題 CH7.序對+串列+集合+字典-習題 CH8.日期+函數-習題 CH9.檔案+模組+例外-習題 總習題 勘誤 第二版勘誤內容 第一版勘誤內容 論壇 連結 關於 聯絡方式 博客 第六章Loop[迴圈]-習題 習題一金字塔是世界七大奇景之一,請利用for迴圈寫出如下圖所示的4層金字塔圖形。

>>>     *   *  *   *  *  **  *  *  * >>> 觀看解答 foriinrange(4):        #總共有4層         forjinrange(4-i-1):#在第一個*號出現前,先印出空白                 print("",end="")         forkinrange(i+1):                #印出該層所需要的*字數量                 print("*",end="")         print()                #換行 習題二請寫一支程式能夠輸入兩個數字,然後輸出這兩個數字的最大公因數。

觀看解答 first=int(input("第一個數字:")) second=int(input("第二個數字:")) while(first>0andsecond>0):        #輾轉相除法,算到其中一個數為0為止         if(first>second):        #大的整除小的,並取餘數(輾轉相除法算法)                 first=first%second         else:                 second=second%first if(first==0):        #其中一個為0,則另一個數將會是原來這2個數的最大公因數         print("最大公因數為"+str(second)) else:         print("最大公因數為"+str(first)) 習題三讓使用者輸入一個正整數n,求出1!+2!+3!+…+n!之值並輸出。

觀看解答 num=int(input("請輸入一個正整數:")) factorialSum=0 foriinrange(num):        #階層的和         factorial=1         forjinrange(i+1):        #階層                 factorial*=(j+1)         factorialSum+=factorial print(factorialSum) 習題4請撰寫程式輸出500以內的完全數。

其中,完全數代表一正整數,除其自身以外之所有因數的和恰好為該數。

例如,6為第一個完全數,6除自身以外的因數有1、2、3,則6=1+2+3。

觀看解答 foriinrange(2,501):        #檢驗2~500間的所有數         facSum=1        #變數「不包含自身的因數和」,因必有因數1所以預設為1         forjinrange(2,int(i**0.5)+1):        #檢驗因數                 if(i%j==0):                         if(i/j==j):#若i為平方數,則找到j1個因數                                 facSum+=j                         else:        #若i不為平方數,則找到j及i/j2個因數                                 facSum+=j+int(i/j)         if(facSum==i):                 print(str(i),end='') print("為完全數") 觀看解答 count=int(input("請輸入項數:")) if(count>=1):print(str(0),end='') if(count>=2):print(str(1),end='') num_1=0 num_2=1 foriinrange(2,count):         print(str(num_1+num_2),end='')         tm=num_1         num_1=num_2         num_2=tm+num_2 習題6《孫子算經》裡有個「物不知其數」的問題:「今有物,不知其數,三三數之賸二,五五數之賸三,七七數之賸二。

問物幾何?(眼前有一堆物品,不知有多少個。

每次取3個,最後剩下2個;每次取5個,最後剩下3個;每次取7個,最後剩下2個。

問這堆物品到底有多少個?)」。

請利用for迴圈求出該問題的最小解。

觀看解答 num=1 while(num%3!=2ornum%5!=3ornum%7!=2):         num+=1 print(num) 習題7請寫出一個能判定「猜數字」結果的程式碼,預設答案為1234。

例如:玩家輸入:0243,則輸出1A2B。

(A前面的數字表示位置正確的數的個數,B前的數字表示數字正確而位置不對的數的個數。

) 觀看解答 (字串解) Answer=1234 A=0 B=0 Number=input("請輸入你要猜的數字:") foriinrange(4):        #算出相同位置數字相等的數字有幾個 if(str(Answer)[i]==Number[i]): A+=1 forjinrange(4):#算出數字相等的有幾個 forkinrange(4): if(str(Answer)[j]==Number[k]): B+=1 B-=A#B為數字相等位置不同的數量 print("%dA%dB"%(A,B)) (算術解) Answer=1234 A=0 B=0 Number=input("請輸入你要猜的數字:") foriinrange(4):#算出相同位置相等的數字有幾個 if((Answer//(10**i))%10==(int(Number)//(10**i))%10): A+=1 forjinrange(4):#算出數字相等的有幾個 forkinrange(4): if((Answer//(10**j))%10==(int(Number)//(10**k))%10): B+=1 B-=A#B為數字相等位置不同的數量 print("%dA%dB"%(A,B)) 習題8請撰寫一個程式,讓使用者輸入一正數N,再利用二分逼近法求N的平方根並輸出。

觀看解答 N=int(input("請輸入一個正數:")) a=x=0 b=N while(1):         if(x==(a+b)/2):#若x已無變化,已經趨近到精度極限                 break         else:                 x=(a+b)/2#新的x         if(x**2)>N:#重新設定邊界                 b=x         else:                 a=x print(str(N)+"的平方根為"+str(x)) 習題9預設一個List=[9,8,7,6,5,4,3,2,1,0],利用氣泡排序法將其元素由小到大排列後輸出。

氣泡排序法:(1)比較相鄰的兩個元素,若前面的元素較大就進行交換。

(2)重複進行(1)的動作直到最後面,最後一個元素將會是最大值。

(3)重複進行(1)、(2)的動作,每次比較到上一輪的前一個元素。

(4)重複進行以上動作直到沒有元素需要比較。

觀看解答 List=[9,8,7,6,5,4,3,2,1,0] forjinrange(len(List)-1,0,-1):         foriinrange(0,j):                 if(List[i]>List[i+1]):                         List[i],List[i+1]=List[i+1],List[i] print(List) 習題10讓使用者輸入一串數字,再倒序後輸出。

例:輸入「123456」;輸出「654321」。

觀看解答 num=int(input("請輸入一段數字:")) res=0 while(num>0): res=res*10+num%10 num//=10 print(res) 上一章:CH5判斷習題 下一章:CH7序對+串列+集合+字典 習題 ProudlypoweredbyWeebly HIELab,SE,NKNU,Taiwan



請為這篇文章評分?