python里python猜数字四位数游戏,

使用python进行简单的猜数字游戏(while循环)
时间: 20:51:02
&&&& 阅读:1092
&&&& 评论:
&&&& 收藏:0
标签:本案例主要是练习while循环,需求:如果给出某人的年龄,让你猜,猜对的话打印出You&guess&right
如果猜的数字小于真实年龄值,那就打印出Think&bigger,如果该数字大于真实年龄值就打印Think&smaller
;如果不想玩了就按n结束,如果继续就按enter继续
oldboy_age&=&56
count&=&0&#添加计数器,初始数据为0
while&count&&3:#当count小于3&的时候执行下面代码
&&&&guess_age&=&int&(&input&(&"guess_age:"&)&)
&&&&if&guess_age&==oldboy_age:
&&&&&&&&print("You&guess&right")
&&&&&&&&break
&&&&elif&guess_age&&&oldboy_age:
&&&&&&&&print("Think&smaller...")
&&&&&&&&print("Think&bigger")
&&&&count&+=&1&&##每循环一次,count+1
&&&&if&count&==3:#当计数器的数值等于3时,显示下面的友好提示
&&&&&&&&countinue_confirm&=&input("Do&you&want&continue&guessing..?按‘n‘退出,按任意键继续")
&&&&&&&&if&countinue_confirm&!=‘n‘:#如果不想玩了就按n结束
&&&&&&&&&&&&count&=0&#重新计数标签:原文地址:http://7601734.blog.51cto.com/9421
&&国之画&&&& &&&&chrome插件&&
版权所有 京ICP备号-2
迷上了代码!猜数字游戏的实现(Python3.5)
时间: 06:21:16
&&&& 阅读:257
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&最近实现了一个猜数字的游戏,用python写的,本人python技术很渣,在不断百度的情况下,总算完成了这个猜数字的游戏,写上一点心得,也许以后有用。
猜数字游戏规则特别简单,就是用户猜一个4位数字,如果位置正确则记为A,数字正确则记为B(例如:被猜数字1234,用户输入了1456;则返回1A1B)
首先,我定义了一个猜数字的大类,写入了初始化方法后,加了一个生成4位不重复数字的方法,具体逻辑是这样:首先生成一个10位不重复的序列,然后利用List的pop方法,返回结果,然后把每个结果用字符串累加的方法加起来,用while循环控制次数,最后得到4位不重复的数字字符串,其它额外要求根据实际情况增加。这里用到了random模块,所以要import random
import random
class guessNumber():
&&& ‘‘‘
&&& 猜数字游戏:
&&& 1、用户输入一组数字后,返回以*A*B的方式返回结果
&&& 2、1A代表有一个正确的数字位置正确,1B代表有一个数字正确,但是位置不正确
&&& ‘‘‘
&&& def __init__(self):
&&&&&&& self.guess_number = ‘‘ #被猜测的数字
&&& #生成随机不重复的4位数,包括首位位0的数字,如(0567)
&&& def genRandomNum(self):&&&&&&& if self.guess_number == ‘‘:&&& #对象中guess_number参数有没有纸,如果有就直接返回传入的值&&&&&&&&&&& result = ‘‘ #生成的数字&&&&&&&&&&& l1 = [str(i) for i in range(10)]&&& #l1是一个类似[0,1,2,3,4,5,6,7,8,9]序列&&&&&&&&&&& while(result.__len__() & 4):&&& #用while循环控制生成数字的位数&&&&&&&&&&&&&&& tmp = l1.pop(random.randrange(l1.__len__()))&&& #用list的pop方法返回对应的数字,这样可以避免重复&&&&&&&&&&&&&&& if tmp == ‘0‘:&&& #判断首位是否为0,如果是0,那么需要加上之前去除的元素 &&&&&&&&&&&&&&&&&&& l1.append(‘0‘)&&& #把之前删除的&0&重新加上&&&&&&&&&&&&&&&&&&& tmp = l1.pop(random.randrange(l1.__len__()))&&& #再来一次&&&&&&&&&&&&&&&&&&& result += tmp&&& #字符串累加,响应while的循环条件,到4位时停止循环&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&& result += tmp&&&&&&& else:&&&&&&&&&&& result = str(self.guess_number)&&& #如果已经设置了guess_number,那么直接返回设置的结果&&&&&&& return result&&& #返回生成的4位不重复的数字(仅限于自动生成,其它途径传入的不算)
if __name__ == ‘__main__‘:
&&& guess = guessNumber()
&&& target = guess.genRandomNum()
&&& print(target)
第二步:实现生成随机不重复的4位数字后,接下来就考虑用户输入的数字了。
用户输入的数字有这么几种情况:
1、长度不符合要求
2、输入其它非数字字符
这些异常都要过滤
在类guessNumber中添加这个方法:
import random
class guessNumber():
&&& ‘‘‘
&&& 猜数字游戏:
&&& 1、用户输入一组数字后,返回以*A*B的方式返回结果
&&& 2、1A代表有一个正确的数字位置正确,1B代表有一个数字正确,但是位置不正确
&&& ‘‘‘
&&& def __init__(self):
&&&&&&& self.guess_number = ‘‘ #被猜测的数字
&&& #因为没有参数,所以在要加静态方法的声明
&&& @staticmethod&&&
&&& def user():&&&&&&& result = ‘‘&&&&&&& while True:&&&&&&&&&&& primary_number = input("请输入您猜测的数字:")
&&&&&&&&&&& #其它准出条件,如果用户输入了q,Q,quit字符,则退出游戏&&&&&&&&&&& if primary_number == ‘q‘ or primary_number == ‘Q‘ or primary_number == ‘quit‘:&&&&&&&&&&&&&&& return 1
&&&&&&&&&&& #判断用户输入的是不是数字以及长度是不是刚好4位&&&&&&&&&&& elif primary_number.isdigit() and len(primary_number) == 4:&&&&&&&&&&&&&&& tmp = list(str(primary_number))&&& #把用户输入的数字转换成list方便操作&&&&&&&&&&&&&&& a1 = tmp.pop(0)&&& #去掉其中两个字符,并穿给对应的变量(为什么这么做?一种实现方法,勿喷。囧)&&&&&&&&&&&&&&& a2 = tmp.pop(0)&&&
&&&&&&&&&&&&&&& #如果输入的数字大于1000,小于10000&&&&&&&&&&&&&&& if int(primary_number) & 1000 and int(primary_number) & 10000:
&&&&&&&&&&&&&&&&&&& #如果a1和a2有一个在tmp里面,或者tmp里面的两个值相等,那么意味着有重复数字&&&&&&&&&&&&&&&&&&& if a1 in tmp or a2 in tmp or tmp[0] == tmp[1]:&&&&&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& #同上&&&&&&&&&&&&&&& elif(int(primary_number)&1000 and int(primary_number) &= 100):&&&&&&&&&&&&&&&&&&& if a1 in tmp or a2 in tmp or tmp[0] == tmp[1]:&&&&&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&& else:&&&&&&&&&&&&&&& print("不要输入非数字字符")&&&&&&& result = primary_number&&&& #把值给result&&&&&&& return result&
if __name__ == ‘__main__‘:
&&& guess = guessNumber()
&&& target = guess.user()
&&& print(target)
第三步:第二步的代码写得很啰嗦,但是不影响使用&&,用户输入数字后,需要判断用户输入的数字于被猜测的数字之间差了多远,所以要写一个逻辑判断语句
import random
class guessNumber():
&&& ‘‘‘
&&& 猜数字游戏:
&&& 1、用户输入一组数字后,返回以*A*B的方式返回结果
&&& 2、1A代表有一个正确的数字位置正确,1B代表有一个数字正确,但是位置不正确
&&& ‘‘‘
&&& def __init__(self):
&&&&&&& self.guess_number = ‘‘ #被猜测的数字
& & & & self.number = ‘‘&&& #猜测的数字
& & & & self.history = {} && #存储猜测的结果
&&& #我把方法命名成提示
&&& def tip(self):&&&&&&& input_list = list(str(self.number))&&& #将类中的猜测的数转换成一个list&&&&&&& target_list = list(str(self.guess_number))&&& #将类中的被猜测的数转换成一个list&&&&&&& a = 0&&& #A的个数&&&&&&& b = ""&&& #B的字符串&&&&&&& for i in range(input_list.__len__()):&&& #遍历猜测的数字,如果其中有一个数字在被猜测的数中,那么b中增加一个B,如果对应位置的数正好相等,那么a自增1&&&&&&&&&&& if input_list[i] == target_list[i]:&&&&&&&&&&&&&&& a += 1&&&&&&&&&&& if input_list[i] in target_list and input_list[i] != target_list[i]:&&&&&&&&&&&&&&&&b += ‘B‘&&&&&&& result = ("%sA%sB" % (a, len(b)))&&&&&&& #将猜测的结果写入结果集,不重复记录&&&&&&& tmp = []&&&&&&& for key in self.history:&&&&&&&&&&& tmp.append(key)&&&&&&& if self.number in tmp:&&&&&&&&&&& pass&&&&&&& else:&&&&&&&&&&& self.history[self.number] = result&&&&&&& return result&&
if __name__ == ‘__main__‘:&&& a = guessNumber()&&& a.guess_number = ‘1234‘&&& a.number = ‘1456‘&&& print(a.tip())&&& #应该打印出:1A1B
第四步:整合
import random
class guessNumber():
&&& ‘‘‘
&&& 猜数字游戏:
&&& 1、用户输入一组数字后,返回以*A*B的方式返回结果
&&& 2、1A代表有一个正确的数字位置正确,1B代表有一个数字正确,但是位置不正确
&&& ‘‘‘
&&& def __init__(self):
&&&&&&& self.guess_number = ‘‘ #被猜测的数字
& & & & self.number = ‘‘&&& #猜测的数字
& & & & self.history = {} && #存储猜测的结果
&&& #生成随机不重复的4位数,包括首位位0的数字,如(0567)
&&& def genRandomNum(self):&&&&&&& if self.guess_number == ‘‘:&&& #对象中guess_number参数有没有纸,如果有就直接返回传入的值&&&&&&&&&&& result = ‘‘ #生成的数字&&&&&&&&&&& l1 = [str(i) for i in range(10)]&&& #l1是一个类似[0,1,2,3,4,5,6,7,8,9]序列&&&&&&&&&&& while(result.__len__() & 4):&&& #用while循环控制生成数字的位数&&&&&&&&&&&&&&& tmp = l1.pop(random.randrange(l1.__len__()))&&& #用list的pop方法返回对应的数字,这样可以避免重复&&&&&&&&&&&&&&& if tmp == ‘0‘:&&& #判断首位是否为0,如果是0,那么需要加上之前去除的元素 &&&&&&&&&&&&&&&&&&& l1.append(‘0‘)&&& #把之前删除的&0&重新加上&&&&&&&&&&&&&&&&&&& tmp = l1.pop(random.randrange(l1.__len__()))&&& #再来一次&&&&&&&&&&&&&&&&&&& result += tmp&&& #字符串累加,响应while的循环条件,到4位时停止循环&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&& result += tmp&&&&&&& else:&&&&&&&&&&& result = str(self.guess_number)&&& #如果已经设置了guess_number,那么直接返回设置的结果&&&&&&& return result&&& #返回生成的4位不重复的数字(仅限于自动生成,其它途径传入的不算)
&&& @staticmethod&&&
&&& def user():&&&&&&& result = ‘‘&&&&&&& while True:&&&&&&&&&&& primary_number = input("请输入您猜测的数字:")
&&&&&&&&&&& #其它准出条件,如果用户输入了q,Q,quit字符,则退出游戏&&&&&&&&&&& if primary_number == ‘q‘ or primary_number == ‘Q‘ or primary_number == ‘quit‘:&&&&&&&&&&&&&&& return 1
&&&&&&&&&&& #判断用户输入的是不是数字以及长度是不是刚好4位&&&&&&&&&&& elif primary_number.isdigit() and len(primary_number) == 4:&&&&&&&&&&&&&&& tmp = list(str(primary_number))&&& #把用户输入的数字转换成list方便操作&&&&&&&&&&&&&&& a1 = tmp.pop(0)&&& #去掉其中两个字符,并穿给对应的变量(为什么这么做?一种实现方法,勿喷。囧)&&&&&&&&&&&&&&& a2 = tmp.pop(0)&&&
&&&&&&&&&&&&&&& #如果输入的数字大于1000,小于10000&&&&&&&&&&&&&&& if int(primary_number) & 1000 and int(primary_number) & 10000:
&&&&&&&&&&&&&&&&&&& #如果a1和a2有一个在tmp里面,或者tmp里面的两个值相等,那么意味着有重复数字&&&&&&&&&&&&&&&&&&& if a1 in tmp or a2 in tmp or tmp[0] == tmp[1]:&&&&&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& #同上&&&&&&&&&&&&&&& elif(int(primary_number)&1000 and int(primary_number) &= 100):&&&&&&&&&&&&&&&&&&& if a1 in tmp or a2 in tmp or tmp[0] == tmp[1]:&&&&&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&& else:&&&&&&&&&&&&&&& print("不要输入非数字字符")&&&&&&& result = primary_number&&&& #把值给result&&&&&&& return result&
&&& def tip(self):&&&&&&& input_list = list(str(self.number))&&& #将类中的猜测的数转换成一个list&&&&&&& target_list = list(str(self.guess_number))&&& #将类中的被猜测的数转换成一个list&&&&&&& a = 0&&& #A的个数&&&&&&& b = ""&&& #B的字符串&&&&&&& for i in range(input_list.__len__()):&&& #遍历猜测的数字&&&&&&&&&&& if input_list[i] == target_list[i]:&&&&&&&&&&&&&&& a += 1&&&&&&&&&&& if input_list[i] in target_list and input_list[i] != target_list[i]:&&&&&&&&&&&&&&&&b += ‘B‘&&&&&&& result = ("%sA%sB" % (a, len(b)))&&&&&&& #将猜测的结果写入结果集,不重复记录&&&&&&& tmp = []&&&&&&& for key in self.history:&&&&&&&&&&& tmp.append(key)&&&&&&& if self.number in tmp:&&&&&&&&&&& pass&&&&&&& else:&&&&&&&&&&& self.history[self.number] = result&&&&&&& return result&&
&&& #在start函数中调用
&&& def start(self):&&&&&&& self.guess_number = guessNumber.genRandomNum(self)&&& #先生成被猜测的数字,写入类中&&&&&&& while True:&&& #呼应user方法的返回值:1&&&&&&&&&&& self.number = guessNumber.user()&&& #然后用户开始猜测&&&&&&&&&&& if self.number != 1:&&&&&&&&&&&&&&& result = guessNumber.tip(self)&&&&&&&&&&&&&&& if result == ‘4A0B‘:&&& #准出条件,还有隐藏的q/Q/quit!&&&&&&&&&&&&&&&&&&& print("恭喜你,你赢了!")&&&&&&&&&&&&&&&&&&& break&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&& print("你猜测的数字是: " + self.number + " 结果是: " + result)&&&&&&&&&&& else:&&&&&&&&&&&&&&& print("游戏结束,欢迎下次游戏!")&&&&&&&&&&&&&&& breakif __name__ == ‘__main__‘:&&& game = guessNumber()&&& game.start()
1、还可以继续优化
2、可以尝试实现电脑和人脑对局。第一种是猜同一组数字,电脑必须分析并返回最大结果给玩家,但是另外却存储最有可能的数据集合,直到运行出唯一正确答案后直接战胜玩家。另外一种是玩家和电脑对猜对方的数字,先猜正确的先赢。标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/stanmao/p/5599338.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!Python实现猜数字游戏_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Python实现猜数字游戏
来源:Linux社区&
Python实现猜数字游戏
游戏规则:
随机产生1到100之间的整数
共有6次猜测机会,每次猜测如果不正确会提示大于或小于目标值,6次机会用完退出程序
6次机会,包含第6次机会如果猜中,提示用户猜中
如果用户输入不合法需要有提示(包含字符串或不在1到100之间或为),并重新输入
游戏结束后,提示用户是否继续游戏,输入y/Y为继续,其它为结束
实现代码如下:
import random & print("..........猜数字游戏..........\n") print("------------------------------\n") & def judge(number): & & & while not number.isdigit(): & & & & print("你输入的类型错误,请重新输入,你还剩余"+count+"次机会") & & & & number = input("请重新输入一个正整数:") & & & num = int(number) & & & if (num&0) or (num&100): & & & & print("你输入的范围错误,请重新输入,你还剩余"+count+"次机会") & & & & number = input("请重新输入一个正整数:") & & & & judge(number) & & & return num & T = "Y"& while T == "Y" or T == "y": & & num = random.randint(1,100) & & for i in range(0,7): & & & & if i != 6: & & & & & & count = str(6-i) & & & & & & print("你共有6次机会,你还剩余"+count+"次机会") & & & & & & number = input("请输入一个正整数:") & & & & & & & number = judge(number) & & & & & & & if number == num: & & & & & & & & print("恭喜你猜对了!") & & & & & & & & break& & & & & & else: & & & & & & & & if number & num: & & & & & & & & & & print("大了大了!") & & & & & & & & else: & & & & & & & & & & print("小了小了!") & & & & else: & & & & & & print ("游戏结束") & & & & & & break& & T = input("继续猜数字游戏请输入y/Y,输入其它任意键退出:")
本文永久更新链接地址:
相关资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款用Python写一个猜数字游戏? - 知乎9被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答0添加评论分享收藏感谢收起relt_numbers = set(filter(lambda x: len(set(x)) == 4,
map(lambda x: '%4d' % x, range(0, 9999))
后面就是体力活了,实现input的业务,以及存储数字0添加评论分享收藏感谢收起写回答\ 后端开发
python猜数字游戏,初学者的第一个项目
如何学习编写第一个程序,每一个程序员都有不同的故事。当我还是个孩子的时候就开始学习编程了,每次尝试一个新的编程语言就让我产生很大的兴趣,看到别人玩着我编写的游戏,而且它完全按照我预期的方式运行,我心里不知有多满足。
下面是我利用中午休息的时间学习python做出来的第一个小游戏,就是在有限的次数内猜出计算机产生的随机数,里面涉及到导入类、函数、变量类型转换、if条件判断、while循环、错误检测、用户输入、字符串输出,是一个很不错的入门小练习
import random
def youxi():
print('有一个1-100的数字,猜想它是多少')
suiji = random.randint(1, 100)
while cishu & 0:
nu = input("你有" + str(cishu) + "次机会,请输入一个数字:")
nu = int(nu)
if nu & suiji:
print('你输入的数字大了')
if nu & suiji:
print('你输入的数字小了')
if nu == suiji:
print('对了,你真厉害')
cishu = cishu - 1
print('老老实实输入数字')
if cishu == 0:
print('游戏结束!你已经没有机会了')
input("##输入任意键重新开始##...")
若觉得本文不错,就分享一下吧!
请登录后,发表评论
评论加载中...
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-11

我要回帖

更多关于 python猜数字游戏程序 的文章

 

随机推荐