On 18/12/14 21:10, Abdullahi Farah Mohamud wrote:
hello i need help with a program and i dont understand what is wrong

Please always add a meaningful subject line.

when the computers asks the user if he would like to go again
> and the user says yes, it asks for the number of lines
> and then if the user clicks 3 it will only give
me one line.

import random
abz = 0
lines = int(input('How many lines would you like?'))
loop = lines
if lines >7:

You might want to check fpor negative numbers too
or you will loop forever.

     print('Too many lines saaxib')
     exit()
else:
     print()
while lines != 0:
     line1 = random.randint (1,7)
     line2 = random.randint (8,14)
     line3 = random.randint (15,21)
     line4 = random.randint (22,28)
     line5 = random.randint (29,35)
     line6 = random.randint (36,42)
     line7 = random.randint (43,49)
>      lines = lines - 1
>      print(line1, line2, line3, line4, line5, line6,line7)

Down to here basically works. But...

You could have used a list instead of all the
individual variables

line[0] = ...
line[1] = ...

But then you could get clever and use a loop:

while lines != 0:
   start = 1
   period = 7
   for lineNum in range(7):
       line[lineNum] = random(start,period)
       start += period
       period += period
   print (*line)
   lines -=1


while abz == 0:
     again = input('Would you like to go again?')
     if again == 'yes':
         lines = int(input('How many lines would you like?'))
     line1 = random.randint (1,7)

Notice this is outside the if statement so will execute
regardless of the answer.

But unlike the equivalent section above it is NOT in a
while loop so will only execute once per question.
Which is what you were seeing.

     line2 = random.randint (8,14)
     line3 = random.randint (15,21)
     line4 = random.randint (22,28)
     line5 = random.randint (29,35)
     line6 = random.randint (36,42)
     line7 = random.randint (43,49)
     lines = lines - 1
     print(line1, line2, line3, line4, line5, line6,line7)

Since you are duplicating code you could put it in a function - have you seen functions yet?

def getLine(start=1, period=7):
   line = []
   for lineNum in range(7):
       line[lineNum] = random(start,period)
       start += period
       period += period
   return line

then the while loop becomes:

while lines != 0:
    line = getLine()
    print(*line)
    lines -= 1

     if again == 'no':
         print('Okay the program is finished saaxib')
         exit()

HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to