004,改進我們的小游戲
python的比較操作符:
> 左邊大于右邊
>>> 1 < 3
True
>>> 1 > 3
False
>= 左邊大于等于右邊
< 左邊小于右邊
<= 左邊小于等于右邊
== 左邊等于右邊
!= 左邊不等于右邊
條件分支語法:
if條件:
條件為真(true)執行的操作
else:
條件為假(false)執行的操作
ps:跟其他語言不同的是,if后面一定要有":"號,條件判斷語句一定要“縮進”!(true,false屬于布爾類型的值!)
課中練習:
1、
temp = input ('猜猜我心里想的是什么數字?')
guess = int (temp)
if guess == 8:
print('wtf,你是我心里的蛔蟲嗎?')
else:
if guess > 8: #注意:縮進
print('大了大了!!')
else:
print('小了小了!!')
print('游戲結束,又被坑了吧!!')
運行結果:
>>>
猜字謎
猜猜我心里想的是什么數字?8
wtf,你是我心里的蛔蟲嗎?
游戲結束,又被坑了吧!!
>>> ================================ RESTART ================================
>>>
猜字謎
猜猜我心里想的是什么數字?9
大了大了!!
游戲結束,又被坑了吧!!
>>> ================================ RESTART ================================
>>>
猜字謎
猜猜我心里想的是什么數字?6
小了小了!!
游戲結束,又被坑了吧!!
>>> ================================ RESTART ================================
思考:做這個練習的時候沒注意第二條件“if guess > 8”,是屬于else:范圍里面,必須縮進,不然會導致錯誤語法報錯。琢磨了一下加入縮進,問題解決。
2、重復運行。
while循環
while條件:
條件為真(true)執行的操作
print('猜字謎')
temp = input ('猜猜我心里想的是什么數字?')#guess變量賦值,需放在while前面。
guess = int (temp)
while guess != 8:
#注意縮進!!
temp = input ('錯了錯了錯了!!')
guess = int (temp)
if guess == 8:
print('wtf,你是我心里的蛔蟲嗎?')
else:
if guess > 8:
print('大了大了!!')
else:
print('小了小了!!')
print('游戲結束,又被坑了吧!!')
運行結果:
>>>
猜字謎
猜猜我心里想的是什么數字?5
錯了錯了錯了!!4
小了小了!!
錯了錯了錯了!!6
小了小了!!
錯了錯了錯了!!9
大了大了!!
錯了錯了錯了!!7
小了小了!!
錯了錯了錯了!!8
wtf,你是我心里的蛔蟲嗎?
游戲結束,又被坑了吧!!
>>>
3、random模塊
randint(),會返回一個隨機的整數。
利用這個函數來改造我們的游戲
import random #必須在程序的最前面,導入random模塊
secret = random.randint (1,10)#加多一個secret變量,生成一個1-10的隨機整數
print('猜字謎')
temp = input ('猜猜我心里想的是什么數字?')#guess變量賦值,需放在while前面。
guess = int (temp)
while guess != secret: #把之前的8改成secret
#注意縮進!!
temp = input ('錯了錯了錯了!!')
guess = int (temp)
if guess == secret: #把之前的8改成secret
print('wtf,你是我心里的蛔蟲嗎?')
else:
if guess > secret: #把之前的8改成secret
print('大了大了!!')
else:
print('小了小了!!')
print('游戲結束,又被坑了吧!!')
運行結果:
>>>
猜字謎
猜猜我心里想的是什么數字?5
錯了錯了錯了!!6
大了大了!!
錯了錯了錯了!!5
大了大了!!
錯了錯了錯了!!4
大了大了!!
錯了錯了錯了!!3
大了大了!!
錯了錯了錯了!!2
大了大了!!
錯了錯了錯了!!1
wtf,你是我心里的蛔蟲嗎?
游戲結束,又被坑了吧!!
>>>
ps:程序缺陷:第一次的數字沒有提示大了或者小了。
課后練習:
測試題:
0. 請問以下代碼會打印多少次“我愛C”
while 'C':
print('我愛C')
答:無數次循環
1. 請問以下代碼會打印多少次“我愛魚C!”
i = 10
while i:
print ('我愛魚C!')
i = i - 1
答:10次
2. 請寫出與 10 < cost < 50 等價的表達式
(10 < cost) and (cost < 50)
3. Python3 中,一行可以書寫多個語句嗎?
答:可以,用分號隔開,如:>>> print('I love you');print('very much!')
4. Python3 中,一個語句可以分成多行書寫嗎?
答:可以,用反斜杠/,或者括號分解成幾行。如:
>>> 3>4 and /
1<2
False
>>> (4>3 and
5>4)
True
>>>
6. 聽說過“短路邏輯(short-circuit logic)”嗎?
答:邏輯操作符有個有趣的特性:在不需要求值的時候不進行操作。這么說可能比較“高深”,舉個例子,表達式 x and y,需要 x 和 y 兩個變量同時為真(True)的時候,結果才為真。因此,如果當 x 變量得知是假(False)的時候,表達式就會立刻返回 False,而不用去管 y 變量的值。這種行為被稱為短路邏輯(short-circuit logic)或者惰性求值(lazy evaluation),這種行為同樣也應用與 or 操作符。
操作:
0. 完善第二個改進要求(為用戶提供三次機會嘗試,機會用完或者用戶猜中答案均退出循環)并改進視頻中的代碼。
import random
times = 3
secret = random.randint (1,10)#隨機函數
print('猜字謎')
#先給出guess賦值(賦一個絕對不等于secret的值)
guess = 0
#print()默認是打印完字符串會自動添加一個換行符,end=" "參數告訴print()用空格代替換行
print ('猜猜我心里想的是什么數字?', end = ' ')#注意逗號用英文標點
while (guess != secret) and (times > 0):
temp = input ()
guess = int (temp)
times = times - 1#每輸入一次,可用機會就-1
if guess == secret:
print('wtf,你是我心里的蛔蟲嗎?')
else:
if guess > secret:
print('大了大了!!')
else:
print('小了小了!!')
if times > 0:
print ('再試一次吧:', end = ' ')
else:
print('機會用完了,退下吧。')
print('游戲結束,又被坑了吧!!')
運行結果:
>>>
猜字謎
猜猜我心里想的是什么數字? 5
小了小了!!
再試一次吧: 6
小了小了!!
再試一次吧: 9
小了小了!!
機會用完了,退下吧。
游戲結束,又被坑了吧!!
>>>
2,
temp = input ('請輸入一個整數:')
num = int (temp)
i = 1
while num:
print(i)
i = i + 1
num = num - 1
運行效果:(未理解其中用法)
>>>
請輸入一個整數:10
1
2
3
4
5
6
7
8
9
10
>>>
3,
temp = input ('請輸入一個整數:')
num = int (temp)
while num:#循環輸入的數字次數,如輸入8則執行8次
i = num - 1#變量i賦值
while i:#循環i次
print(' ',end = ' ')#打印結果中的*號前面的空格。
i = i - 1
j = num
while j:
print('*',end = ' ')#打印結果中的*號
j = j - 1
print()#打印完自動添加換行符
num = num - 1
運行效果
>>>
請輸入一個整數:8
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
>>>
做下改動,
temp = input ('請輸入一個整數:')
num = int (temp)
while num:#循環輸入的數字次數,如輸入8則執行8次
i = num - 1#變量i賦值
while i:#循環i次
print(' ',end = ' ')#打印結果中的*號前面的空格。
i = i - 1
j = num
while j:
print('*',end = ' ')#打印結果中的*號
j = j - 1
k = num
while k:
print('$',end = ' ')
k = k - 1
print()#打印完自動添加換行符
num = num - 1
加多一個變量k,然后做循環,看看效果如下:
>>>
請輸入一個整數:8
* * * * * * * * $ $ $ $ $ $ $ $
* * * * * * * $ $ $ $ $ $ $
* * * * * * $ $ $ $ $ $
* * * * * $ $ $ $ $
* * * * $ $ $ $
* * * $ $ $
* * $ $
* $
>>>
課時小結:
1、while循環語句及其應用(需加深理解)
2、 了解輸入隨機數:import random 和 random.randint ()的含義
3、and的使用
新聞熱點
疑難解答