[Tutor] help with homework

Mark Lawrence breamoreboy at yahoo.co.uk
Sun Oct 28 22:54:54 CET 2012


On 28/10/2012 21:37, Sandra Beleza wrote:
> Hi,
> I have to write a script that asks the user for names one at a time, and
> accept the name only if the user did not gave it before. The script has to
> do this until it gets 3 unique names.
>
> So far I have this:
>
> def GetNames():
>      names=[]
>      while len(names)<3:
>          name=raw_input("Name: ")
>          if name in names:
>              print name, "is already in the data. Try again."
>          if name not in names:
>              names.append(name)
>      names.sort()
>
>      for each in names:
>          print "Hurray for", each +"!"
>      print
>
> However I cannot use the len() built in function. The Teacher is asking for
> another solution that does not use the len() t
> I know I can do it using the command:
>
> def Ask
>
> def GetNames(how_many):
>      names=[]
>      for el in range(how_many):
>          name=raw_input("Name: ")
>      if name in names:
>          print name, "is already in the data. Try again."
>      if name not in names:
>          names.append(name)
>      names.sort()
>      for each in names:
>          print "Hurray for", each +"!",
>      print
>
>
> I cannot get 3 names, and it is easy to understand why (because the loop
> only iterates 3 times). But I don't know how to ask the user for names one
> at a time and to obtain 3 names and an output that looks like this:
> Name #1: Lewis
> Name #2: John
> Name #3: John
> John is already in the data. Try again.
> Name #3:
> Name #3: Chris
> Hurray for Chris! Hurray for John! Hurray for Lewis!
>
>
> Many Thanks!
>

In your original getNames do something like this.
Initialise a counter to zero.
Every time you get a valid name increment the count.
If the count is three you're finished.

-- 
Cheers.

Mark Lawrence.



More information about the Tutor mailing list