今天我們學(xué)習(xí)下Python之禪和他朋友們的第二道題目,了解分析下軍哥的代碼
題目
設(shè)計一個猜數(shù)字的游戲,系統(tǒng)隨機生成一個1~100之間的整數(shù),玩家有5次機會宾巍,每猜一次系統(tǒng)就會提示玩家該數(shù)字是偏大還是偏小哪自,如果猜中了框冀,則告知玩家并提前結(jié)束游戲,如果5次都沒猜中担汤,結(jié)束游戲并告知正確答案涎跨。
老樣子!在做題之前我們需要了解以下幾點知識:
- try ... except ... else ...語句
- if ... elif ... else ... 語句
- while ... else ... 語句
- random模塊
try ... except ... else ... 語句
工作原理大致如下:Python執(zhí)行try代碼塊崭歧,只有可能發(fā)生異常的代碼才需要放在try語句中隅很;except代碼塊告訴Python,如果try語句運行發(fā)生異常時率碾,該怎么辦叔营;else代碼塊告訴Python,在try代碼塊成功執(zhí)行時才需要的運行的代碼所宰,放在else代碼塊中绒尊。
first_number = input('First number: ')
second_number = input('Second number: ')
try:
answer = int(first_number) / int(second_number)
except ZeroDivisionError:
print("You can't divide by 0 !")
else:
print(answer)
if ... elif ... else ... 語句
# 年齡不滿4歲,入場為0
age = 12
if age < 4: # 年齡不滿4歲仔粥,入場為0婴谱,跳過余下測試
print('Your admission cost is $0.')
elif age < 18: # elif僅在if語句為False時才能運行
print('Your admission cost is $5.')
else: # 如果if和elif都未通過,else語句才被運行
print('Your admission cost is $10.')
while ... else ... 語句
while … else 在循環(huán)條件為 false 時執(zhí)行 else 語句塊,翻了Python學(xué)習(xí)手冊勘究,while...else...有點晦澀難懂矮湘,菜鳥教程的更容易理解
count = 0
while count < 5:
print count, " is less than 5"
count = count + 1
else: # while循環(huán)被設(shè)置為< 5,當(dāng)count> 5時,便執(zhí)行else語句
print count, " is not less than 5"
0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5
random模塊
參考博客園
基本的解題知識學(xué)完后口糕,我們來看一下的軍哥的代碼
import random
class GuessGame():
def __init__(self, min_num, max_num, choice):
'''
:param min_num:
:param max_num:
:param choice:
:return:
'''
self.min_num = min_num
self.max_num = max_num
self.choice = choice
self.target = random.randint(min_num, max_num)
def guess(self):
'''
:return:
'''
choice = self.choice
while choice > 0:
choice -= 1
try:
num = int(input('輸入數(shù)字: '))
except:
print('輸入有效數(shù)字')
continue # 跳出這次循環(huán)
if num == self.target:
print('恭喜你猜中了')
break # 退出循環(huán)
elif num <= self.target:
print('你猜的數(shù)字太小了缅阳,還剩%d次機會' % choice) # 運用字符串格式化表達式
else:
print('你猜的數(shù)字太大了,還剩%d次機會' % choice)
else:
print('很遺憾景描,%d 次機會都用完了,只差一點點就猜中了十办,正確答案是 %d' % (self.choice, self.target))
if __name__ == '__main__':
game = GuessGame(1, 100, 5) # 創(chuàng)建實例
game.guess()
你猜的數(shù)字太小了,還剩4次機會
輸入數(shù)字: 1
你猜的數(shù)字太小了超棺,還剩3次機會
輸入數(shù)字: 100
你猜的數(shù)字太大了向族,還剩2次機會
輸入數(shù)字: 90
你猜的數(shù)字太大了,還剩1次機會
輸入數(shù)字: 0
你猜的數(shù)字太小了棠绘,還剩0次機會
很遺憾件相,5 次機會都用完了,只差一點點就猜中了,正確答案是 70