Glad you got it working, now here are some picky comments about style: > # This program is to see how can we see how many > students got particular mark > # And how u print it
An introductory comment is good but in Python a common way to do that is to use documentation strings, typically using triple quotes: """This program is to see how can we see how many students got particular mark And how u print it """ Now if you import your module and do print modulename.__doc__ or even help(modulename) Python will print the doc string for you whioch can be useful and saves you opening the file in an editor to read the comments. You can do the same with functions and classes when you get around to using them... > print " \nFirst Enter the No of Students ... " > print "\n Then No of marks " This is kind of redundant since your raw_input promprts tell us what to do each time. > # defining empty array array > array = [] calling something an array is pretty meaningless, it might be better to call it marks or scores or something else that decribes its purpose rather than its structure. One of the design goals of a good programme should be to hide the details of *how* a program is built from the reader and reveal *why* the program is built the way it is.. The same applies to comments. > # defining i > i = 0 So the comment above is pretty much redundant since we can see that we are defining i.The more important question is - what is i for? Its a counter so why not call it that? > # n is the NO of students which I have to enter the > marks > n = int(raw_input("Enter the no: of students : \n")) So why not call it numStudents or similar, then you wouldn't need the comment and the following code will be much more obvious in its meaning. > # m is the Marks of the students which I have to enter m? I see no 'm'. But I do see a 'marks' variable which is self evident. Looks like to anticipated my comment here! :-) Although being really picky I'd probably suggest mark since it only holds one mark at a time... marks implies (to me at least) some kind of collection. > while i < n: > marks = int(raw_input("Enter the Marks for the > students : \n")) > array.append(marks) > print "Marks are ", marks > i = i+1 > > #print "Array Marks ", array > > # Now to display How many students got the same marks > > j = 0 Why introduice a new counter? Just use the previous one. The more names you have in a programme the harder it is to remember what they are all for - especially if they are single letter names. You finished with the counter above so why not just reinitialise it here. > ########## > # To Display the histograph of the students Marks > # 25 is the Max marks > # > > for j in range(25): > print j,"x" * array.count(j) > j += 1 Not sure why you increment j since the for loop does that for you. BTW. Another approach to this problem would be to use a dictionary. That way you can count the occurences as they are added: """ This program is to see how can we see how many students got particular mark And how u print it """ scores = {} mark = int(raw_input('mark?(-1 to end) ')) while mark != -1: try: scores[mark] += 1 except KeyError: scores[mark] = 1 # first time for this mark mark = int(raw_input('mark?(-1 to end) ')) for key in scores: print key,' x' scores[key] You can tidy that up and avoid the try/except by using the get() method of a dictionary, but I'll leave that as an excercise! Hint: use a default value of zero.:-) HTH, Alan G Author of the learn to program web tutor http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor