本節(jié)內(nèi)容:
改進(jìn)課程3的小游戲幾個(gè)點(diǎn):
1.有報(bào)錯(cuò)提示;
2.需要可以多次輸入;
3.答案應(yīng)該隨機(jī)。
1.條件分支(IF ELSE)
if 條件 : (后面有冒號(hào))
條件為T(mén)RUE (滿足后操作用縮進(jìn))
else :
條件為FALSE
2.while循環(huán)(使用AND邏輯操作符,得到布爾類(lèi)型的值(TRUE/FALSE))
while 條件:
條件為T(mén)RUE的操作
3.答案隨機(jī):引入外援(在程序前用import 導(dǎo)入模塊)
radom 模塊:函數(shù)randint(),會(huì)返回一個(gè)隨機(jī)整數(shù)。
課后題:
0.請(qǐng)問(wèn)以下代碼會(huì)打印多少次“我愛(ài)魚(yú)C”?
while 'C':
print('我愛(ài)魚(yú)C')*
答:無(wú)限循環(huán)。
當(dāng)while語(yǔ)句中條件為真的時(shí)候,會(huì)無(wú)限循環(huán)下去。所以“我愛(ài)魚(yú)C”會(huì)一直打印,可以用CTRL+C來(lái)結(jié)束循環(huán)。
1.請(qǐng)問(wèn)以下代碼會(huì)打印多少次“我愛(ài)魚(yú)C”?
i=10
while i > 0:
print (''I love you")
i = i-1
答:10次 I love you
10次,只有條件為真的時(shí)候while語(yǔ)句才會(huì)執(zhí)行下去,當(dāng)i減為0時(shí),條件變?yōu)閒alse,語(yǔ)句不再執(zhí)行。
2.請(qǐng)寫(xiě)出與10<cost<50等價(jià)的表達(dá)式。
答:10 < cost and cost <50
( 10 < cost ) and ( cost < 50 ),加上括號(hào)強(qiáng)調(diào)先算括號(hào)內(nèi)
3.python3中一行可以寫(xiě)多個(gè)語(yǔ)句嗎?
答:可以
可以,使用“;”隔開(kāi)。舉例如:a = 4;c = 5
4.python3中一個(gè)語(yǔ)句可以分為多行書(shū)寫(xiě)嗎?
答:可以
可以。使用反斜杠‘\’或者使用括號(hào)分解成幾行
print('I love \
python')
5.什么是短路邏輯?
答:不知道
布爾運(yùn)算符有個(gè)有趣的特性:只有在需要求值時(shí)才進(jìn)行求值。舉例來(lái)說(shuō),表達(dá)式x and y需要兩個(gè)變量都為真時(shí)才為真,所以如果x為假,表達(dá)式就會(huì)立刻返回false,而不管y的值(事實(shí)上各個(gè)語(yǔ)言都有這個(gè)特性)。實(shí)際上,如果x為假,表達(dá)式會(huì)返回x得值----否則它就返回y的值。這種行為被稱為短路邏輯(short-circuit logic)或惰性求值(lazy evaluaion):布爾運(yùn)算符通常被稱為邏輯運(yùn)算符,就像你看到的那樣第2個(gè)值有時(shí)“被短路了”。這種行為對(duì)于or來(lái)說(shuō)也同樣適用。在表達(dá)式x or y中,x為真時(shí),它直接返回x的值,否則返回y值。注意,這意味著在布爾運(yùn)算符之后的所有代碼都不會(huì)執(zhí)行。
邏輯運(yùn)算符and或or一旦不止一個(gè),其運(yùn)算規(guī)則的核心思想就是短路邏輯。
表達(dá)式從左至右計(jì)算,若or的左側(cè)邏輯值為T(mén)rue,則短路or后所有的表達(dá)式(不管是and還是or,直接輸出or左側(cè)表達(dá)式)。
表達(dá)式從左至右計(jì)算,若and的左側(cè)邏輯值為False,則短路其后所有and表達(dá)式,直到有or出現(xiàn),輸出and左側(cè)表達(dá)式到or的左側(cè),參與接下來(lái)的邏輯運(yùn)算。
若or的左側(cè)為False,或者and的左側(cè)為T(mén)rue,則不能使用短路邏輯。
動(dòng)動(dòng)手:
0.完善第二個(gè)改進(jìn)要求(為用戶提供三次機(jī)會(huì)嘗試,機(jī)會(huì)用完或者用戶猜中答案均退出循環(huán))并改進(jìn)視頻中小甲魚(yú)的代碼。
答:
import random
secret = random.randint(1,10)
print("---------我愛(ài)魚(yú)c工作室---------")
temp = input("不妨猜一下小甲魚(yú)現(xiàn)在心里想的哪個(gè)數(shù)字:")
guess = int(temp)
i = 3
while i > 0 and guess != secret:
temp = input("哎呀,猜錯(cuò)了,請(qǐng)重新輸入:")
guess = int(temp)
i = i-1
if guess == secret:
print("臥槽,你是小甲魚(yú)心里的蛔蟲(chóng)嗎?!")
print("哼,猜中了也沒(méi)有講理!")
else:
if guess > secret:
print("哥,大了,大了.....")
else:
print("嘿,小了,小了.....")
print("游戲結(jié)束,不玩啦")
問(wèn)題出現(xiàn)在:第一個(gè)輸入數(shù)字后沒(méi)有給出判斷,4次后再結(jié)束。
參考答案:
print('--------猜數(shù)字--------')
import random
secret = random.randint(1,10)
count = 3
print('請(qǐng)輸入你猜的數(shù)字:',end="")
num = 0 #在條件引用參數(shù)前必須賦值
while num != secret and count>0:
tmp = input() #第一次輸入數(shù)字的判斷
num = int(tmp)
count = count - 1
if num == secret:
print('恭喜,猜對(duì)了!')
else:
if num > secret:
print('大了,大了!')
else:
print('小了,小了!')
if count > 0: #在循環(huán)里先判斷次數(shù)是否大于0
print('請(qǐng)?jiān)俨乱淮危?,end="")
else:
print('機(jī)會(huì)用完了!')
print('游戲結(jié)束!')
end設(shè)定不是很明白
為末尾[end]傳遞一個(gè)空字符串,這樣print函數(shù)不會(huì)在字符串末尾添加一個(gè)換行符,而是添加一個(gè)空字符串,表示這個(gè)語(yǔ)句沒(méi)結(jié)束。
print默認(rèn)是打印一行,結(jié)尾加換行。[end]=' '意思是末尾不換行,加空格.實(shí)際顯示如下:
加上end 不加end
請(qǐng)輸入數(shù)字:8 請(qǐng)輸入數(shù)字:
8
1.打印一列數(shù)字
print('--------打印一列數(shù)字-----------')
tmp = input('請(qǐng)輸入一個(gè)數(shù)字:')
num = int(tmp)
i = 1
while num:
print(i)
i = i + 1
num = num - 1
運(yùn)行結(jié)果,輸入5
--------打印一列數(shù)字-----------
請(qǐng)輸入一個(gè)數(shù)字:5
1
2
3
4
5
疑問(wèn):為什么while條件時(shí)num沒(méi)有設(shè)置>0。
輸入0,則while條件就是FALSE.
2.打印一組符號(hào)
print('--------打印一組符號(hào)-----------')
tmp = input('請(qǐng)輸入組數(shù):')
fuhao = input('請(qǐng)輸入一個(gè)符號(hào):')
num = int(tmp)
while num:
print(' ' * num + fuhao * num) #前面是空格,為了顯示,+拼接
num = num - 1
運(yùn)行結(jié)果
--------打印一組符號(hào)-----------
請(qǐng)輸入組數(shù):10
請(qǐng)輸入一個(gè)符號(hào):$
$$$$$$$$$$
$$$$$$$$$
$$$$$$$$
$$$$$$$
$$$$$$
$$$$$
$$$$
$$$
$$
$