Thank you guys On Thu, Nov 6, 2014 at 3:39 AM, Dave Angel <da...@davea.name> wrote:
> William Becerra <wbecer...@gmail.com> Wrote in message: > > > > have the following code: > names = "John, Cindy, Peter" > def find(str, ch, s): > index = 0 > while index < len(str): > if s==1: > for char in names[:4]: > if str[index] == ch: > return index + 1 > index = index + 1 > if s==2: > for char in names[6:11]: > if str[index] == ch: > return index + 1 > index = index + 1 > if s==3: > for char in names[13:]: > if str[index] == ch: > return index + 1 > index = index + 1 > return -1 > print find(names,"n", 2) > > > > and my problem is: > I intend for the parameter s to tell the interpreter which name to > look at > so that i get the index return value related to that name. > for example: > John and Cindy both have a letter 'n' but when I call the function > with an s value of 2 I want it to return the index value of the > letter n in Cindy and not in John. > > Your most immediate problem is that you're using index to fetch > characters from the original string, and that's only reasonable > for John. You could make a slice of the original, and search that > slice. Or you could change the comparison to: > if char == ch: > > The loop could also be cleaner with enumerate. > > Your second big problem is that you've hard coded the sizes of the > first two names in the slice expressions. The magic [6:11] for > example certainly doesn't belong inside the function. > > > Third is your while loop makes no sense. Each of the if clauses > won't finish till you're done with the selected substring, so > you might as well return right away. Drop that line entirely. > > > Anyway, I say you're trying to do too much in the one function. If > possible change the data structure of names to eliminate one of > the two tasks, or write two functions, a few lines > each. > > I'd make > names = ["John", "Cindy", "Peter"] > And start the function with > name = names [s-1] > > And now the task of the remainder of the function is to search a > name for a particular character. > > -- > DaveA > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor >
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor