免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5032 | 回复: 8
打印 上一主题 下一主题

python初学者求助。。。做了一个猜数字的游戏 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-02-04 11:57 |只看该作者 |倒序浏览

现在基本已经做完了 但是每次猜词之后 下边的 正确数/7 correct要怎么做?就是告诉玩家正确字符数
如果要自己def一个方程用for循环的话要怎么做? 是这样先分成三种情况么
下边是自己应经做的代码
#This is a hacking program
CorrectAnswer='HUNTING'
def displayInstruction(): #Displays instructions
        print('A group of possible passwords will be displayed.')
        print('You must guess the password.You have at most 4 guesses.')
        print('your guess were in exactly the correct location of the passwrod.')
guesses=4
def displaywords(): #Displays words
        for word in words:
                print(word)                    
words=['PROVIDE','SETTING','CANTINA','CUTTING','HUNTERS','SURVIVE',\
               'HEARING','HUNTING','REALIZE','NOTHING','OVERLAP','FINDING',\
               'PUTTING']
count=0
displayInstruction()
displaywords()
while guesses>0:
        playsAnswer=input('Enter password '+str(guesses)+' guesses remaining> ')
        if playsAnswer==CorrectAnswer:
                print('User login successful')
                break
        else:
                if guesses>=1:
                        print('Password Incorrect')
                        guesses = guesses - 1
                if guesses==0:
                        print('User login unsuccessful')

论坛徽章:
0
2 [报告]
发表于 2015-02-04 11:58 |只看该作者
前边三张图是这个游戏最后应该出来的效果图。。。

论坛徽章:
0
3 [报告]
发表于 2015-02-04 17:59 |只看该作者
def compare(CorrectAnswer,playsAnswer):
    result = 0
    for pl in playsAnswer:
        if CorrectAnswer.count(pl) > 0: result+=1
    result = "%s/%s correct." % (result,len(CorrectAnswer))
    return result

个人建议:
1、猜字游戏的大小写是不是应该处理一下,小写输入也应该可以支持吧;
2、应该使用 raw_input 如果使用input 需要“21313”这样输入

论坛徽章:
0
4 [报告]
发表于 2015-02-04 18:20 |只看该作者
赵大班长 发表于 2015-02-04 17:59
def compare(CorrectAnswer,playsAnswer):
    result = 0
    for pl in playsAnswer:

谢谢回复~做下个版本的时候试着去加下大小写
再请问下result = "%s/%s correct." % (result,len(CorrectAnswer))这一句里边  "%s/%s correct." %是什么意思。。。还有len是什么意思。。。

论坛徽章:
0
5 [报告]
发表于 2015-02-04 18:51 |只看该作者
回复 4# 13723168221

1、len() 使计算长度的,可以计算列表、元祖、字典、字符串等,但是不能计算整数
2、"%s" 格式化字符串  具体怎么用你百度就可以了


   

论坛徽章:
0
6 [报告]
发表于 2015-02-05 05:06 |只看该作者
回复 5# 赵大班长
嗯啊 万分感谢!

   

论坛徽章:
0
7 [报告]
发表于 2015-02-05 07:10 |只看该作者
再问下。。。具体是哪个步骤是用来比较两组代码的字符是否相等的。。。回复 3# 赵大班长


   

论坛徽章:
0
8 [报告]
发表于 2015-02-05 09:28 |只看该作者
回复 7# 13723168221


  我得先说一下,这个游戏的规则我不清楚我是按我的理解写的。
我理解的规则:我输入的字符,中出现了正确答案中的字符就算是对的,比如就是正确答案是abc  我输入的是cab 也会返回3/3 这样的情况,证明我的字母对了但是顺序有误。
按照以上规则
    if CorrectAnswer.count(pl) > 0: result+=1 遍历一下我输入的字符串,计算其中每一个字符在正确结果中的出现次数,大于0 就是代表出现过,计算一个结果数就好了。

ps:规则可能不是我理解的,所以仅供参考

论坛徽章:
0
9 [报告]
发表于 2015-02-05 10:06 |只看该作者
  1. def compare(CorrectAnswer,playsAnswer):
  2.     return len(filter(lambda i:i[0]==i[1], zip(CorrectAnswer, playsAnswer)))
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP