分支和循环结构的应用(习题)
目錄
1、尋找水仙花數(shù)
?2、將12345變成54321
?3、百錢(qián)百雞問(wèn)題
?4、CRAPS賭博游戲
?5、斐波那契數(shù)列
6、打印100以內(nèi)的素?cái)?shù)
1、尋找水仙花數(shù)
說(shuō)明:水仙花數(shù)也被稱為超完全數(shù)字不變數(shù)、自戀數(shù)、自冪數(shù)、阿姆斯特朗數(shù),它是一個(gè)3位數(shù),該數(shù)字每個(gè)位上數(shù)字的立方之和正好等于它本身,例如:$ 153=1^3+5^3+3^3 $。
這個(gè)題目的關(guān)鍵是將一個(gè)三位數(shù)拆分為個(gè)位、十位、百位,這一點(diǎn)利用Python中的//(整除)和%(求模)運(yùn)算符其實(shí)很容易做到,代碼如下所示。
s = 0 num = int(input('請(qǐng)輸入一個(gè)三位數(shù):')) x = num while x > 0:a = x % 10s += (a**3)x //= 10 if (s == num):print('是水仙花數(shù)') else:print('不是水仙花數(shù)')?
?2、將12345變成54321
代碼如下所示:
s = 0 num = (input('請(qǐng)輸入一個(gè)數(shù):')) x = int(num) i = len(num) - 1 while x > 0:a = x % 10s += (a*10**i)i -= 1x //= 10 print(s)?3、百錢(qián)百雞問(wèn)題
說(shuō)明:百錢(qián)百雞是我國(guó)古代數(shù)學(xué)家張丘建在《算經(jīng)》一書(shū)中提出的數(shù)學(xué)問(wèn)題:雞翁一值錢(qián)五,雞母一值錢(qián)三,雞雛三值錢(qián)一。百錢(qián)買(mǎi)百雞,問(wèn)雞翁、雞母、雞雛各幾何?翻譯成現(xiàn)代文是:公雞5元一只,母雞3元一只,小雞1元三只,用100塊錢(qián)買(mǎi)一百只雞,問(wèn)公雞、母雞、小雞各有多少只?
for i in range(0,20):for j in range(0,33):z = 100 - i - jif z % 3 == 0:if (i * 5 + j * 3 + z // 3 == 100):print('母雞:%d,公雞:%d,小雞:%d' % (i,j,z))break上面使用的方法叫做窮舉法,也稱為暴力搜索法,這種方法通過(guò)一項(xiàng)一項(xiàng)的列舉備選解決方案中所有可能的候選項(xiàng)并檢查每個(gè)候選項(xiàng)是否符合問(wèn)題的描述,最終得到問(wèn)題的解。這種方法看起來(lái)比較笨拙,但對(duì)于運(yùn)算能力非常強(qiáng)大的計(jì)算機(jī)來(lái)說(shuō),通常都是一個(gè)可行的甚至是不錯(cuò)的選擇,只要問(wèn)題的解存在就能夠找到它。
?4、CRAPS賭博游戲
說(shuō)明:CRAPS又稱花旗骰,是美國(guó)拉斯維加斯非常受歡迎的一種的桌上賭博游戲。該游戲使用兩粒骰子,玩家通過(guò)搖兩粒骰子獲得點(diǎn)數(shù)進(jìn)行游戲。簡(jiǎn)化后的規(guī)則是:玩家第一次搖骰子如果搖出了7點(diǎn)或11點(diǎn),玩家勝;玩家第一次如果搖出2點(diǎn)、3點(diǎn)或12點(diǎn),莊家勝;玩家如果搖出其他點(diǎn)數(shù)則玩家繼續(xù)搖骰子,如果玩家搖出了7點(diǎn),莊家勝;如果玩家搖出了第一次搖的點(diǎn)數(shù),玩家勝;其他點(diǎn)數(shù)玩家繼續(xù)搖骰子,直到分出勝負(fù)。
count = 1 while 1:num = int(input('請(qǐng)輸入骰子的點(diǎn)數(shù):'))if (count <= 1):s = numif (num == 7 or num == 11):print('恭喜你,贏了')breakif (num == 2 or num == 3 or num == 12):print('不好意思,你輸了')breakelse:if (num == 7):print('不好意思,你輸了')breakif (num == s):print('恭喜你,贏了')breakcount +=1?5、斐波那契數(shù)列
說(shuō)明:斐波那契數(shù)列(Fibonacci sequence),通常也被稱作黃金分割數(shù)列,是意大利數(shù)學(xué)家萊昂納多·斐波那契(Leonardoda Fibonacci)在《計(jì)算之書(shū)》中研究在理想假設(shè)條件下兔子成長(zhǎng)率問(wèn)題而引入的數(shù)列,因此這個(gè)數(shù)列也常被戲稱為“兔子數(shù)列”。斐波那契數(shù)列的特點(diǎn)是數(shù)列的前兩個(gè)數(shù)都是1,從第三個(gè)數(shù)開(kāi)始,每個(gè)數(shù)都是它前面兩個(gè)數(shù)的和,按照這個(gè)規(guī)律,斐波那契數(shù)列的前10個(gè)數(shù)是:1, 1, 2, 3, 5, 8, 13, 21, 34, 55。斐波那契數(shù)列在現(xiàn)代物理、準(zhǔn)晶體結(jié)構(gòu)、化學(xué)等領(lǐng)域都有直接的應(yīng)用。
n = int(input('請(qǐng)輸入一個(gè)數(shù):')) a,b = 0,1 for i in range(n):a,b=b,a+bprint(a,end='\t')?
6、打印100以內(nèi)的素?cái)?shù)
說(shuō)明:素?cái)?shù)指的是只能被1和自身整除的正整數(shù)(不包括1)。
for i in range(1,100):count = 0for j in range(1,i):if (i == 1):print(1)if (i % j == 0):count +=1if (count <= 1):print(i)?
總結(jié)
以上是生活随笔為你收集整理的分支和循环结构的应用(习题)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeedCode刷题
- 下一篇: mysql 最大并发连接数