Solved

Python: Find Character Exist, but not in correct position

Posted on 2008-10-24
6
630 Views
Last Modified: 2012-06-22
Hello all, I am trying to achieve something like this:

Say the magic word is "aabb"
The user suppose to guess it, however if the user for example typed "abab", it should tell them that one of the "a" is in the right position, while the other is not. How should I go about doing that?

Thanks!

*This is quite urgent, so if someone can reply really fast, that would be great! Thanks!
0
Comment
Question by:Kira-Kun
  • 3
6 Comments
 
LVL 28

Expert Comment

by:pepr
Comment Utility
How can you proof that it is not a homework? It is not allowed here to give the solutions. However, you can have series of related questions and get the answers that will help you to get "your own" solution (i.e. the one that you really understand well and that you can solve again alone).

Is it a kind of the implementation of the Master Mind game?
0
 
LVL 5

Expert Comment

by:zmo
Comment Utility
well, first learn python : http://docs.python.org/tutorial/
then for your project, choose the right tools on strings : http://docs.python.org/library/strings.html
and input output (which you'll have learned in the tutorial)
and  on random's usage : http://docs.python.org/library/random.html
so you can generate the aabb or abab or whatever...

now you have all the RTFM you need to start, and we're here to help you if you have *real* questions about python. We're not here to do your homework, but to help you get more knowledge, so I'm following pepr's comment.
0
 

Expert Comment

by:GDR-LDE
Comment Utility
Would this be enough?
word = "aabb"

guess = "abab"
 

if not len(word) == len(guess):

    print "error"
 

for i in range(len(word)):

    if word[i] == guess[i]:

        print "The letter %s on position %d is correct" % (guess[i], i)

    else:

        print "The letter %s on position %d is not correct" % (guess[i], i)

Open in new window

0
 
LVL 28

Accepted Solution

by:
pepr earned 500 total points
Comment Utility
OK. Let's start wit thinking and suggestions. Your solution is too talkative. The messages do not make it more comfortable for the user. Also, we are developing the core using the test case (fixed word and guess). Let's remove the unneccessary things to make it apparent.

Try the snippet below. It does the same using different form of displaying the result.

Now you can see that you are able only to indicate or the correct char on the correct position. However, you can say nothing about the other characters. Only that they are not correct chars on the correct positions. You need third state to indicate that it is the correct character on the bad position. (Not solved here.)

Think how would you do it by hand with paper and the pencil.
word = 'aabb'

guess = 'abab'

result = []
 

for i in range(len(word)):

    if word[i] == guess[i]:

        result.append('x')    # correct letter on the position

    else:

        result.append('-')    # wrong letter on the position
 

# Now print the word and the result formed into one string.

print word

print ''.join(result)

Open in new window

0
 
LVL 28

Assisted Solution

by:pepr
pepr earned 500 total points
Comment Utility
Now, more "pythonic" way is to think differently about the for loop than in other languages. Think about for as about iteration through all elements in the container (often the sequence, here the word string). If you need also the counter for the iteration, use the enumerate() function. It returns the tuple (counter, element). The tuple can be assigned into the related number of variables. This way you can write (the same functionality as above)...
word = 'aabb'

guess = 'abab'

result = []
 

for i, c in enumerate(word):

    if c == guess[i]:

        result.append('x')    # correct letter on the position

    else:

        result.append('-')    # wrong letter on the position
 

# Now print the word and the result formed into one string.

print word

print ''.join(result)

Open in new window

0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Suggested Solutions

Installing Python 2.7.3 version on Windows operating system For installing Python first we need to download Python's latest version from URL" www.python.org " You can also get information on Python scripting language from the above mentioned we…
The purpose of this article is to demonstrate how we can use conditional statements using Python.
Learn the basics of lists in Python. Lists, as their name suggests, are a means for ordering and storing values. : Lists are declared using brackets; for example: t = [1, 2, 3]: Lists may contain a mix of data types; for example: t = ['string', 1, T…
Learn the basics of if, else, and elif statements in Python 2.7. Use "if" statements to test a specified condition.: The structure of an if statement is as follows: (CODE) Use "else" statements to allow the execution of an alternative, if the …

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now