猜數字遊戲可用一個簡單的while循環來實現。
其中 隨機數 的生成在第4篇介紹過,
鍵盤輸入在上一篇介紹過
import random
result = round(random.random()*100)
while result != guess:
guess = int(input())
if guess>result:
print('大了!')
elif guess<result:
print('小了!')
else:
print('猜對了!')
小結
較長的篇幅在介紹條件語句和循環語句,合稱為控制語句。
顧名思義,控制語句就是控制程序的執行邏輯。控制語句的語法雖然不多,但卻是程序的骨架,記住語法不難,真正理解並靈活應用卻不簡單。
關於練習
有朋友和我說,不是號稱初中生就能看懂嗎?我怎麼看不懂啊?
我問他,是代碼執行失敗了,找不到原因嗎?
他反問我說,代碼?什麼代碼?
好吧,敢情是把這當小說看了!
好吧。
也許把英語單詞和語法都背熟就能學好英語。
但不做練習肯定學不好數學。
學編程也是一樣!不寫代碼是不可能學會的!
敲代碼的過程中有問題,可以留言或微信。
關於刷題
也有朋友說,文章裡的習題太少了,有沒有在線測試自己學習成果的地方。
推薦2個:LeetCode 和 洛谷。
洛谷的題目絕大多數來自於 NOIP。
NOIP:全國青少年信息學奧林匹克聯賽,可以簡單理解為省賽。
初、高生都可以參加,對初升高,高考擇校都有很大幫助。
2019年停辦了,改成csp認證。
NOP:全國青少年信息學奧林匹克競賽,可以簡單理解為全國賽。
理論上高中生才可能獲獎。
全國一等獎的話,基本上名校隨便挑。
ACM:國際大學生程序設計競賽,可以簡單理解為全球賽。
總決賽獲獎的,網際網路公司高薪搶著要。
洛谷的題目難度跨度很大。
用現在學到的內容,就可以進入「試煉場」的「新手村」刷題了。
但後兩關「省選鬥獸場」、「USACO」難度相當高,比LeetCode的「困難題」更難。
LeetCode面向的主要是找工作面試。
不會有簡單的題,也不會有特別難的題。
所以想去LeetCode刷題,至少要到30節課左右。
據說刷完LeetCode的題,去任何公司面試,編程題都是灑灑水。
洛谷刷題補充知識
洛谷的題,一般會給定一個輸入,檢驗你的輸出。
這時你會碰到 2 個或 多個數字 輸入在一行,中間用空格隔開。
在程序裡怎麼獲得每一個數字呢?
1. input() 函數會把整行當成一個字符串。
2. split(' ') 可以把字符串按空格切割,注意引號中間有空格。
3. 切割完之後, i[0] 就是第一個, i[1] 是第二個,依次類推。
4. 用int()轉換為數字
階段練習
1.階乘是基斯頓·卡曼(Christian Kramp,1760~1826)於 1808 年發明的運算符號。階乘用感嘆號表示,比如6的階乘, 6!= 1*2*3*4*5*6=720。求正整數n的階乘 n!
2.《孫子算經》是重要的古代漢族數學著作。約成書於1500年前,卷下第31題,是後世「雞兔同籠」題的始祖。「今有雉兔同籠,上有三十五頭,下有九十四足,問雉兔各幾何?」,。
3.程大位我國明代數學家,珠算發明家。在他的著作《算法統宗》有一道題,「一百饅頭一百僧,大僧三個更無爭,小僧三人分一個,大小和尚各幾丁」,就是說100個和尚100個饅頭,大和尚吃3個饅頭,3個小和尚吃一個饅頭。求大小和尚的人數。
4.假設還是100個和尚100個饅頭,壯年和尚吃5個饅頭,老年和尚吃3個饅頭,2個小和尚吃一個饅頭。求壯年和尚、老和尚、小和尚的人數。
5.猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,看見只剩下一個桃子了。求第一天共摘了多少。
6.有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少?
7.如下圖,列印出99乘法表。
8.如下圖,列印菱形。