CH6. 迴圈-習題 - 菲絲恩教你學會Python
文章推薦指數: 80 %
請寫一支程式能夠輸入兩個數字,然後輸出這兩個數字的最大公因數。
觀看解答.
首頁
教材
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
延伸文章資訊
- 1因數分解 - OpenHome.cc
程式實作:最大公因數、最小公倍數
- 2CH6. 迴圈-習題 - 菲絲恩教你學會Python
請寫一支程式能夠輸入兩個數字,然後輸出這兩個數字的最大公因數。 觀看解答.
- 3在Python 中實現最大公約數操作 - Delft Stack
最大公約數(GCD),也稱為兩個值的最高公因數(HCF),是將兩個給定數相除的最大數。最大公約數也可以用Python 計算和實現。 本教程演示了在Python 中 ...
- 4最大公因數( 多個數字) - Python 教學
基本原理. 要求出有多個數字的最大公因數,最簡單的方法就是先將「最小的數字」當作「暫定的 ...
- 5Python 求两个正整数的最大公因数和最小公倍数 - CSDN博客
a, b = eval(input("输入两个正整数:")) c = a * b # 求最大公因数,用辗转相除法。 if a < b: a, b = b, a while a % b != 0:...