设为首页收藏本站

Crossin的编程教室

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

猜密码游戏

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

12#
发表于 2013-9-25 20:29:24 |只看该作者
aresli 发表于 2013-9-25 17:12
测了几次,好像应该是对的!

蛮好的。应该是对的

第17行可能是你复制到网页的时候缩进出了问题吧

另外,你password拼成了passowrd,但你全部都拼错了,所以就没有问题了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

132

积分

注册会员

Rank: 2

11#
发表于 2013-9-25 17:12:33 |只看该作者
本帖最后由 aresli 于 2013-9-25 17:28 编辑
  1. # -*- coding: utf-8 -*-

  2. import random

  3. def create_password():
  4.     L = [0,1,2,3,4,5,6,7,8,9]
  5.     password_length = 4
  6.     passowrd = ''
  7.     i = 0
  8.     while i < password_length:
  9.         l = random.choice(L)
  10.         #print l
  11.         passowrd += str(l)
  12.         L.remove(l)
  13.         #print L
  14.         i += 1
  15.                 return passowrd
  16.         
  17. password = create_password()
  18. print '悄悄告诉你答案是: ' + password

  19. def guess(password):
  20.     you_input = raw_input('请输入4位存数字,不能重复: ')

  21.     if you_input == password:
  22.         print "Bingo"
  23.     else:
  24.         #print "Opoo.."
  25.         right_number_right_position = 0
  26.         right_number_wrong_position = 0
  27.         i = 0
  28.         while i < 4:
  29.             if you_input[i] in password:
  30.                 if you_input[i] == password[i]:
  31.                     right_number_right_position += 1
  32.                 else:
  33.                     right_number_wrong_position += 1
  34.             i += 1
  35.         print str(right_number_right_position) + 'A' + str(right_number_wrong_position) + 'B'
  36.         guess(password)

  37. guess(password)

  38. # vim:et:ts=4:sw=4:
复制代码
测了几次,好像应该是对的!
回复

使用道具 举报

0

主题

0

好友

134

积分

注册会员

Rank: 2

10#
发表于 2013-9-16 22:03:13 |只看该作者
crossin先生 发表于 2013-9-16 15:03
还是有些问题的。一个是=,一个是+=
i在每次循环后没有重置,前面用来记次数,后面又用来记录a、b ...

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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

9#
发表于 2013-9-16 15:03:59 |只看该作者
scz_000 发表于 2013-9-16 11:33
好像能用,就传了。

还是有些问题的。
  1. if guess[i]==password[i]:
  2.                     guess_result='A'
  3.                 if guess[i]!=password[i]:
  4.                     guess_result+='B'
复制代码
一个是=,一个是+=
i在每次循环后没有重置,前面用来记次数,后面又用来记录a、b
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

134

积分

注册会员

Rank: 2

8#
发表于 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

好友

63

积分

注册会员

Rank: 2

7#
发表于 2013-9-13 10:01:47 |只看该作者
crossin先生 发表于 2013-9-13 01:43
发现我当初题目没说清楚,刚改了下

没玩过这个游戏,看来是我理解错了
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

6#
发表于 2013-9-13 01:43:53 |只看该作者
test777 发表于 2013-9-12 21:58
pygame做图形界面看起来很麻烦啊,连输入框都要自己写么..   想想就觉得头大 ...

发现我当初题目没说清楚,刚改了下
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

5#
发表于 2013-9-13 01:38:33 |只看该作者
test777 发表于 2013-9-12 21:58
pygame做图形界面看起来很麻烦啊,连输入框都要自己写么..   想想就觉得头大 ...

你这个和题目要求不太一样哎,你这个告诉别人哪个数字是b,哪个数字是a了,本来这个游戏只告诉你有几个b,几个a
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

63

积分

注册会员

Rank: 2

地板
发表于 2013-9-12 21:58:08 |只看该作者
pygame做图形界面看起来很麻烦啊,连输入框都要自己写么..   想想就觉得头大
  1. import random

  2. pwd_length = 4

  3. def create_pwd():
  4.     numbers = [0,1,2,3,4,5,6,7,8,9]
  5.     pwd = random.sample(numbers,pwd_length)
  6.     return pwd

  7. def check_pwd(pwd_user, pwd_sys):
  8.     nums = str(pwd_user)
  9.     ret = []
  10.     for i in range(pwd_length):
  11.         if int(nums[i]) == pwd_sys[i]:
  12.             ret.append('A')
  13.         elif int(nums[i]) in pwd_sys:
  14.             ret.append('B')
  15.         else:
  16.             ret.append(nums[i])
  17.     return ''.join(ret)

  18. def check_input(pwd):
  19.     if type(pwd) != type(0):
  20.         print('please type numbers')
  21.         return False

  22.     pwd = str(pwd)

  23.     if len(pwd) < pwd_length:
  24.         print('password is too short!')
  25.         return False

  26.     for i in range(len(pwd)):
  27.         if pwd.count(pwd[i]) > 1:
  28.             print('password has repeat number!')
  29.             return False
  30.     return True

  31. def guess(pwd_sys):
  32.     user_input = input('please input password-->')

  33.     if check_input(user_input):
  34.         ret = check_pwd(user_input,pwd_sys)
  35.         if ret == 'AAAA':
  36.             print('bingo!')
  37.         else:
  38.             print(ret)
  39.             guess(pwd_sys)
  40.     else:
  41.         guess(pwd_sys)


  42. pwd_sys = create_pwd()
  43. guess(pwd_sys)

复制代码
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2013-9-8 16:02:44 |只看该作者
Myk_cc 发表于 2013-9-8 13:36
写了3个小时才完成,看来光看先生的课和模仿先生的代码是不够的啊,自己写个程序就发现困难重重好在最终还 ...

Good Job!
运行了下,挺好的!

敢再进一步吗?
随便说说:比如用pygame做成图形界面?

有人挑战吗?
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-5-18 17:48 , Processed in 0.019504 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部