设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

猜密码游戏

[复制链接]

0

主题

0

好友

134

积分

注册会员

Rank: 2

楼主
发表于 2013-9-16 11:33:00 |显示全部楼层
好像能用,就传了。
  1. def the_guess_game(password):
  2.     guess=raw_input('what\'s your guess?:')
  3.     i=0
  4.     guess_result=''
  5.     while guess!=password:
  6.         while i < len(guess):
  7.             if guess[i] in password:
  8.                 if guess[i]==password[i]:
  9.                     guess_result='A'
  10.                 if guess[i]!=password[i]:
  11.                     guess_result+='B'
  12.             i+=1
  13.         right_position=0
  14.         wrong_position=0
  15.         for i in guess_result:
  16.             if i=='A':
  17.                 right_position+=1
  18.             if i=='B':
  19.                 wrong_position+=1
  20.         guess_result=str(right_position)+'A'+str(wrong_position)+'B'
  21.         print 'Your guess is wrong!'
  22.         print 'You got '+guess_result[0]+' exact numbers,'+guess_result[2]+' wrong position numbers but in the password.'
  23.         guess=raw_input('please try again:')
  24.     if guess==password:
  25.         print 'congratulations!you are right!'   


  26. the_guess_game('1234')        
复制代码
回复

使用道具 举报

0

主题

0

好友

134

积分

注册会员

Rank: 2

沙发
发表于 2013-9-16 22:03:13 |显示全部楼层
crossin先生 发表于 2013-9-16 15:03
还是有些问题的。一个是=,一个是+=
i在每次循环后没有重置,前面用来记次数,后面又用来记录a、b ...

恩..受教啦!谢谢先生帮忙看!
回复

使用道具 举报

0

主题

0

好友

134

积分

注册会员

Rank: 2

板凳
发表于 2013-10-1 12:41:08 |显示全部楼层
  1. # -*- coding: cp936 -*-
  2. from random import randint,choice
  3. def produce_password():
  4.     pw=['1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
  5.     ra=randint(0,9)
  6.     password=''
  7.     for i in range(0,ra):
  8.         i=choice(pw)
  9.         password+=i
  10.     return password
  11. def the_guess_game(password,t_times,best_score,t_guess):
  12.     print password
  13.     guess=raw_input('请输入你所猜的密码,密码由小写字母和数字组成:')
  14.     this_guess=0
  15.     guess_result=''
  16.     while guess!=password:
  17.         if len(guess)==len(password):
  18.             for i in range(0,len(guess)):
  19.                 if guess[i] in password:
  20.                     if guess[i]==password[i]:
  21.                         guess_result+='A'
  22.                     if guess[i]!=password[i]:
  23.                         guess_result+='B'
  24.         if len(guess)<len(password):
  25.             for i in range(0,len(guess)):
  26.                 if guess[i] in password[:len(guess)]:
  27.                     if guess[i]==password[i]:
  28.                         guess_result+='A'
  29.                     if guess[i]!=password[i]:
  30.                         guess_result+='B'
  31.                 if guess[i] in password[len(guess):]:
  32.                         guess_result+='B'
  33.         if len(guess)>len(password):
  34.             for i in range(0,len(password)):
  35.                 if guess[i] in password:
  36.                     if guess[i]==password[i]:
  37.                         guess_result+='A'
  38.                     if guess[i]!=password[i]:
  39.                         guess_result+='B'
  40.             for i in range(len(password),len(guess)):
  41.                 if guess[i] in password:
  42.                     guess_result+='B'
  43.         right_position=0
  44.         wrong_position=0
  45.         for j in guess_result:
  46.             if j=='A':
  47.                 right_position+=1
  48.             if j=='B':
  49.                 wrong_position+=1
  50.         guess_result=str(right_position)+'A'+str(wrong_position)+'B'
  51.         print '猜错了!'
  52.         print '你所猜的密码有'+guess_result[0]+'位出现在了准确位置.'+'另外,有'+guess_result[2]+'位字符出现在了密码里,但是位置不准确。'
  53.         t_guess+=1
  54.         guess=raw_input('请再试一次:')
  55.         guess_result=''
  56.         this_guess+=1
  57.     if guess==password:
  58.         print '恭喜你,破解了密码!!!'
  59.         t_guess+=1
  60.         this_guess+=1
  61.         t_times+=1
  62.         raw_input('')
  63.     if best_score==0:
  64.         best_score=this_guess
  65.     elif best_score!=0 and this_guess<best_score:
  66.         best_score=this_guess
  67.     return t_times,best_score,t_guess


  68. s=open('c:\Users\User\Desktop\python\codeguess\score.txt')
  69. score=s.readlines()
  70. s.close()
  71. dic={}
  72. f=[]
  73. for i in score:
  74.     f.append(i[:-1])
  75. for j in f:
  76.     p=j.split()
  77.     dic[p[0]]=p[1:]
  78. name=raw_input('欢迎,这是一个猜密码游戏,请输出你的名字,以记录成绩:\n')
  79. score=dic.get(name)
  80. if score==None:
  81.     score=[0,0,0]
  82. t_times=int(score[0])
  83. best_score=int(score[1])
  84. t_guess=int(score[2])
  85. if t_guess>0:
  86.     print '%s,你一共玩了 %d 次游戏,最好的成绩是尝试 %d 次就破解了密码,你平均每次破解密码所用的次数是 %d 次'%(name,t_times,best_score,t_guess)
  87. if t_guess==0 and t_times==0 and best_score==0:
  88.     print '欢迎第一次玩!'
  89. password=produce_password()
  90. a,b,c=the_guess_game(password,t_times,best_score,t_guess)
  91. dic[name]=[str(a),str(b),str(c)]
  92. result=''
  93. for k in dic:
  94.     line = k +' '+ ' '.join(dic[k])+'\n'
  95.     result+=line

  96. n=open('c:\Users\User\Desktop\python\codeguess\score.txt','w')
  97. n.write(result)
  98. n.close()




复制代码
之前做的不完善,没有随机生成密码,输入长度不对好像会有问题,也没有记录成绩。
这次重新改了哈,不过没有难度设置,学图形库再做个图形界面!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-3 22:13 , Processed in 0.025233 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部