On Wednesday, 13 January 2016 13:23:04 UTC, Alan Robinson wrote: > On Wednesday, 13 January 2016 13:06:11 UTC, Peter Otten wrote: > > Alan Robinson wrote: > > > > > On Wednesday, 13 January 2016 12:32:51 UTC, Chris Angelico wrote: > > >> On Wed, Jan 13, 2016 at 11:23 PM, Alan Robinson > > >> <arobin...@lordlawson.org.uk> wrote: > > >> > def menu(): > > >> > option = int(input("Please select an option: \n 1: Set Generation 0 > > >> > Values \n 2: View Generation 0 Values \n 3: Run Model \n 4: Print > > >> > values")) > > >> > > > >> > if option == 1: > > >> > juveniles,adults,seniles = setGen() > > >> > elif option == 2: > > >> > displayGen() > > >> > elif option == 3: > > >> > runModel(juveniles,adults,seniles) > > >> > elif option == 4: > > >> > print(juveniles,adults,seniles) > > >> > menu() > > >> > > > >> > > >> This is a classic use of recursion instead of iteration. When you call > > >> menu() again, you're creating a completely new 'slot' for the new > > >> function; it has its own set of names. Assigning to names in one call > > >> of menu() has no effect on any other call. > > >> > > >> Instead, look into the way a while loop works. You'll find that your > > >> code is simpler and clearer, plus your variables will stay set. > > >> > > >> ChrisA > > > thanks I need the menu to run again not sure how to do that though > > > > def menu(): > > option = 1 # make sure setGen is invoked on first iteration > > while option: # choosing 0 ends the while loop > > if option == 1: > > juveniles, adults, seniles = setGen() > > elif option == 2: > > ... > > option = int(input(...)) # choose option for the next iteration > > that's really helpful I understand what's happening now I just need to work > out how to do this loop as I am new it looks difficult to do here goes not > too sure what you mean by make sure setGen is invoked on the first iteration?
-- https://mail.python.org/mailman/listinfo/python-list