# 猴子吃桃問題:# 猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個# 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。# 以後每天早上都吃了前一天剩下的一半零一個。# 到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
a =1for i inrange(9):
a =(a +1)*2if i ==8:print(f"第一天一共摘了{a}個桃子")
執行結果
第一天一共摘了1534個桃子
第三題
答案
# 輸入一行字元,分別統計出其中英文字母、空格、數字和其它字元的個數。# 假設我輸入的字元是value
value ="147963123987554682469173//c/d/r/g/h/w/j/a/c/g a b d t 4 k g ShSuUlT"
my_list =[]for i in value:if i notin my_list:
my_list.append(i)else:continueprint(my_list)
a =0for j in my_list:for n in value:if j == n:
a +=1else:continueprint(f"{j}的個數是{a}")
a =0
# 有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少?# 首先我們把1,2,3,4四個數字放到一個列表中.
new_list =[1,2,3,4]# 然後定義兩個空列表# 一個用來存放組成的三位數list=[]# 一個用來存放所有組成的三位數
my_list =[]# 第一次for迴圈遍歷new_list列表for i in new_list:# 在第一次遍歷期間,進行第二次遍歷.# 因為組成的三位數必須是互不相同而且不能重複的# 所以第二次for迴圈遍歷沒有i的列表for j in[x for x in new_list if x != i]:# 在第二次遍歷期間,進行第三次遍歷# 第三次for迴圈遍歷沒有i和j的列表for y in[m for m in new_list if m != i and m != j]:# 然後把i,j,y三個數依次新增到list列表中list.append(i)list.append(j)list.append(y)# 然後再把存放三位數的list列表放到總的my_list列表中
my_list.append(list)# 最後清空存放三位數的list列表list=[]# 輸出結果print(f"四個數字:1、2、3、4,能組成{len(my_list)}個互不相同且無重複數字的三位數")print("分別是:")print(my_list)
# 一個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.程式設計找出1000以內的所有完數。for i inrange(2,1001):
my_list =[]for j inrange(1, i):if i % j ==0:
my_list.append(j)else:continueifsum(my_list)== i:print(f"1-1000以內的完數有:{i}")else:continue
執行結果
1-1000以內的完數有:61-1000以內的完數有:281-1000以內的完數有:496
第八題
答案
# 求0—7所能組成的奇數個數。# 首先我們先把0-7存放到一個my_list列表中
my_list =[0,1,2,3,6,5,4,7]
value1 =int(len(my_list)-1)
new_list =[]for i inrange(1,9):for n in my_list:if n %2!=0:
new_list.append(n)
value =int(len(new_list))if i ==1:print(f"{i}位數的奇數個數為{value}")
new_list =[]elif i ==2:# 由於開頭不能為0,所以開頭可以選擇只有七個
er = value * value1
print(f"{i}位數的奇數個數為{er}")
new_list =[]elif i ==3:
san = value * value1 *(value1 +1)**(i -2)print(f"{i}位數的奇數個數為{san}")
new_list =[]elif i ==4:
si = value * value1 *(value1 +1)**(i -2)print(f"{i}位數的奇數個數為{si}")
new_list =[]elif i ==5:
wu = value * value1 *(value1 +1)**(i -2)print(f"{i}位數的奇數個數為{wu}")
new_list =[]elif i ==6:
liu = value * value1 *(value1 +1)**(i -2)print(f"{i}位數的奇數個數為{liu}")
new_list =[]elif i ==7:
qi = value * value1 *(value1 +1)**(i -2)print(f"{i}位數的奇數個數為{qi}")
new_list =[]elif i ==8:
ba = value * value1 *(value1 +1)**(i -2)print(f"{i}位數的奇數個數為{ba}")sum= value + er + san + si + wu + liu + qi + ba
print(f"0—7所能組成的奇數個數一共有{sum}")
# 一球從100米高度自由落下,每次落地後反跳回原高度的一半;# 再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?# 首先針對這個題,很明顯我們使用遞迴來解決更加方便一些defhight(i):if i ==1or i ==2:return100return hight(i -1)/2
my_list =[]for j inrange(1,11):
my_list.append(hight(j))print(f"第10次落地時,共經過{sum(my_list)}米")print(f"第十次反彈了{hight(10)}米")
執行結果
第10次落地時,共經過299.609375米
第十次反彈了0.390625米
第十題
答案
# 有n個人圍成一圈,順序排號。# 從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位。
value =int(input("請輸入幾個人圍成一圈: "))
my_list =[]
a =-1
ace =Truefor i inrange(1, value +1):
my_list.append(i)while ace:for j inrange(3):iflen(my_list)==1:print(f"最後留下的原來是第{my_list[0]}號")
ace =Falsebreakif a ==len(my_list)-1:
a =-1
a +=1if j ==2:
my_list.remove(my_list[a])
a -=1