Python 用自然語言/流程圖描述演算法並實現(以雞兔同籠問題為例)
索引
演算法的定義及作用
一、匯入:程式設計解決問題的步驟
- 分析問題
- 劃分邊界
- 設計演算法 #importance
- 編寫程式
- 除錯測試
- 後期維護
注:參考嵩天老師的《Python語言程式設計》
二、生活中的演算法問題:飲料換杯
兩個杯子,一杯裝可樂,一杯裝雪碧,怎樣才能讓裝可樂的杯子裝雪碧,裝雪碧的杯子裝可樂?
再拿一個杯子。
-
設計演算法:
t=a #第一步
a=b #第二步
b=t #第三步 -
編寫程式碼:
>>> a="可樂"
>>> b="雪碧"
>>> t=a
>>> a=b
>>> b=t
>>> print("a=",a,"b=",b)
a= 雪碧 b= 可樂
完成由演算法到程式的過程。
演算法的定義:解決問題的步驟
演算法是有限步驟內求解某一問題所使用的一組定義明確的規則。
演算法怎麼描述
一、自然語言描述雞兔同籠問題
我國古代數學著作《孫子算經》中應有“今有雉兔同籠,上有三十五頭,下有九十四足,問雉兔各有幾和?”
- 數學思維:假設法、列方程
- 計算思維:窮舉法
列舉出雞和兔子只數的組合,不斷試錯。
試錯有止境。
將雞的數量定義為變數a,則兔為35-a,雞和兔腳數量的總和是否為94即為程式是否結束的判斷標準
二、自然語言描述雞兔同籠問題
演算法描述的兩個基本要素:初始狀態、變化規律。
- 初始狀態:最開始嘗試的那一組資料(0只雞、35只兔子)設雞為變數n,兔子為變數35-n。
- 變化規律:失敗了之後雞的數量+1,兔子的數量-1。變化規律n=n+1。
故:自然語言描述
- 假設的雞的數量為n只;兔的數量為35-n;
- n=0;
- 如果2n+4(35-n)=94,則輸出結果n;否則執行步驟4;
- n=n+1;
- 執行步驟3;
二、流程圖描述雞兔同籠問題:
三、程式碼實現
基礎實現:
#雞兔同籠V1:
n=0
m=35-n #設初值,雞有0只,兔子有35只
while 0<=n<=35 and 0<=m<=35:
if 2*n+4*m == 94: #表判斷
print("雞有",n,"只")
print("兔有",m,"只")
break
else:
n=n+1 #雞的數量加一,兔子的數量減一,不斷試錯
m=35-n #直到得出正確答案
執行結果:
雞有 23 只
兔有 12 只
能看過程的:
n=0
m=35-n #設初值,雞有0只,兔子有35只
while 0<=n<=35 and 0<=m<=35:
if 2*n+4*m == 94: #表判斷
print("符合!")
print("雞有",n,"只")
print("兔有",m,"只")
break
else:
n=n+1 #雞的數量加一,兔子的數量減一,不斷試錯
m=35-n #直到得出正確答案
print("雞有",n,"只、","兔有",m,"只時,","符合條件嗎?")
執行結果:
雞有 1 只、 兔有 34 只時, 符合條件嗎?
雞有 2 只、 兔有 33 只時, 符合條件嗎?
雞有 3 只、 兔有 32 只時, 符合條件嗎?
雞有 4 只、 兔有 31 只時, 符合條件嗎?
雞有 5 只、 兔有 30 只時, 符合條件嗎?
雞有 6 只、 兔有 29 只時, 符合條件嗎?
雞有 7 只、 兔有 28 只時, 符合條件嗎?
雞有 8 只、 兔有 27 只時, 符合條件嗎?
雞有 9 只、 兔有 26 只時, 符合條件嗎?
雞有 10 只、 兔有 25 只時, 符合條件嗎?
雞有 11 只、 兔有 24 只時, 符合條件嗎?
雞有 12 只、 兔有 23 只時, 符合條件嗎?
雞有 13 只、 兔有 22 只時, 符合條件嗎?
雞有 14 只、 兔有 21 只時, 符合條件嗎?
雞有 15 只、 兔有 20 只時, 符合條件嗎?
雞有 16 只、 兔有 19 只時, 符合條件嗎?
雞有 17 只、 兔有 18 只時, 符合條件嗎?
雞有 18 只、 兔有 17 只時, 符合條件嗎?
雞有 19 只、 兔有 16 只時, 符合條件嗎?
雞有 20 只、 兔有 15 只時, 符合條件嗎?
雞有 21 只、 兔有 14 只時, 符合條件嗎?
雞有 22 只、 兔有 13 只時, 符合條件嗎?
雞有 23 只、 兔有 12 只時, 符合條件嗎?
符合!
雞有 23 只
兔有 12 只
嘗試將雞和兔子的頭和腳的數量改成可以輸入的模式:
a=int(input("請問一共有多少個頭:"))
b=int(input("請問一共有多少隻腳:"))
n=0
m=a-n
while 0<=n<=a and 0<=m<=a:
if 2*n+4*m == b:
print("==================================================")
print("雞有",n,"只")
print("兔有",m,"只")
break
else:
n=n+1
m=a-n
#print("當雞的數量為:",n,"兔子的數量為:",m,"不符合條件!")
執行結果:
請問一共有多少個頭:24
請問一共有多少隻腳:84
==================================================
雞有 6 只
兔有 18 只
提出更改:
當輸入頭和腳的數目求解不出答案時,以上程式不會報錯。
可以利用判斷語句實現這一功能。
相關文章
- 每日一題:C語言經典例題之雞兔同籠每日一題C語言
- 雞兔同籠35個頭94只腳 問雞和兔各有幾隻?
- C++列舉演算法之雞兔同籠C++演算法
- 用C語言實現八數碼問題C語言
- 動態語言的靈活性是把雙刃劍 -- 以 Python 語言為例Python
- 蟻群演算法介紹(以TSP問題為例)演算法
- 使用Mahout實現自然語言處理自然語言處理
- 自然語言處理之序列標註問題自然語言處理
- Python自然語言處理Python自然語言處理
- 為什麼要選擇Python語言實現機器學習演算法Python機器學習演算法
- 以dart語言為例說說如何學習一門新的語言Dart
- NPL---自然語言處理單詞界定問題自然語言處理
- Python自然語言處理工具Python自然語言處理
- Python自然語言處理入門Python自然語言處理
- 【自然語言處理篇】--以NLTK為基礎講解自然語⾔處理的原理和基礎知識自然語言處理
- 基於Python的tf-idf演算法實現:以《笑傲江湖》為例Python演算法
- 《Python自然語言處理實戰》連結表Python自然語言處理
- Python自然語言處理 1 語言處理與PythonPython自然語言處理
- 資料結構與演算法分析(c 語言描述)最大子序列和問題資料結構演算法
- DeerOJ 的題目上傳流程(以傳統提交為例)
- 機器學習無法解決自然語言理解問題 - thegradient機器學習
- 自然語言處理中的分詞問題總結自然語言處理分詞
- c語言實現貓吃老鼠的問題C語言
- 用12種主流程式語言實現氣泡排序演算法(附原始碼)排序演算法原始碼
- Python自然語言處理實戰(1):NLP基礎Python自然語言處理
- 精通Python自然語言處理 2 :統計語言建模Python自然語言處理
- 中文和英文NLP自然語言處理異同點分析自然語言處理
- 以 ZGC 為例,談一談 JVM 是如何實現 Reference 語義的GCJVM
- 自然語言處理(NLP)系列(一)——自然語言理解(NLU)自然語言處理
- 如何使用Python語言實現計數排序演算法?Python排序演算法
- 資料結構與演算法分析(c 語言描述)習題 1.2資料結構演算法
- 資料結構與演算法分析(c 語言描述)習題 1.3資料結構演算法
- 資料結構與演算法分析(c 語言描述)習題 1.1資料結構演算法
- 資料結構與演算法分析(c 語言描述)基數排序 陣列實現資料結構演算法排序陣列
- 基於 Python 的簡單自然語言處理實踐Python自然語言處理
- 排序演算法-C語言實現排序演算法C語言
- C語言實現A*演算法薦C語言演算法
- 【圖論】-橋-並查集(1)題目描述圖論並查集