用python迭代器开发可以通关的小游戏
python的迭代器有两个重要的函数,一个是iter()用于创建迭代器,一个是next()用于获取迭代器中的元素。
同样是遍历数据序列,迭代器与for循环比起来,各有各的优势,比如下面这个用迭代器开发的可通关的小游戏,代码如下:
def guessNum(x, y):
import random
md = random.randint(x,y)
start = x
end = y
inp = int(input('从%s到%s猜一个数字' %(start, end)))
while start > inp or end < inp:
inp = int(input('请重新输入从%s到%s猜一个数字' %(start, end)))
while start <= inp <= end:
if inp inp or end < inp:
inp = int(input('请重新输入从%s到%s猜一个数字' %(start, end)))
elif inp > md:
end = inp
inp = int(input('从%s到%s猜一个数字:' %(start,end)))
while start > inp or end < inp:
inp = int(input('请重新输入从%s到%s猜一个数字' %(start, end)))
else:
break
score = [10,20,30]
i_end = iter([50,100,200]) #iter()内置函数创建可迭代的对象,
n = len(score) #要通关的关数
i_score = iter(score)
x = 0 #
i = 1
sumScore = 0 #用于统计总得分
while i <= n: #while循环的条件判断,不仅用于终止while循环,也终止了next()获取超出元素个数范围的值,避免引发错误
print('第%s关!' %i)
y = next(i_end) #next()函数用于获取迭代器的下一个元素,当一关通过就用next()获取下一个元素作为猜字游戏的end值
guessNum(x,y)
sumScore += next(i_score) #统计总得分
print('恭喜你闯过了第%s关,你目前的得分是%s分'%(i,sumScore))
i += 1
——————————————————————————————————————————
第1关!
从0到50猜一个数字10
从10到50猜一个数字:20
从10到20猜一个数字:30
请重新输入从10到20猜一个数字15
从15到20猜一个数字:16
从16到20猜一个数字:18
从18到20猜一个数字:19
恭喜你闯过了第1关,你目前的得分是10分
第2关!
从0到100猜一个数字50
从50到100猜一个数字:60
从50到60猜一个数字:55
从55到60猜一个数字:58
从55到58猜一个数字:56
恭喜你闯过了第2关,你目前的得分是30分
第3关!
从0到200猜一个数字100
从100到200猜一个数字:150
从150到200猜一个数字:180
从180到200猜一个数字:190
从180到190猜一个数字:185
从180到185猜一个数字:183
从180到183猜一个数字:182
从180到182猜一个数字:181
恭喜你闯过了第3关,你目前的得分是60分
关于python迭代器更多的介绍,可以参考下面的内容:
python迭代器,iter()函数,通关游戏实例 - 大器编程
通关游戏实例解析
如上面游戏实例中的注释,iter()函数用于创建迭代器对象,next()用于获取迭代器的下一个元素,这比起用for循环来要方便许多。
注意:上面的代码要作为一个游戏来说并不完整,比如我们还可以为该游戏设置猜数字的次数,当超过这个次数的时候,游戏就game over,当然,如果只是限定次数,游戏仍然要靠没有依据的猜测,我们可以为游戏玩家设置问答的程序,如果答对了就可以获得缩小数字范围的提示,等等,还有很多可以进行完善的地方,在后面的章节中,如果有机会,我们就来完善这个游戏。