Hi, and welcome! My answers are below.
On Mon, Apr 27, 2015 at 08:37:54PM +1000, Whom Isac wrote: > Hi, I am trying to build a python mini program to solve a math problem . I > wanted my program to ask two number from the operator and it can add those > number as a integer but as consecutive number in range. For example, if > num1 entry =1 & num2 entry = 100 , the program should be adding number from > 1 to 100 together(which should equal to 5050). I thought that I could use > range() to use it for any given input from the user. However, there are few > argumentation error and I don't know why my bool function did not work in > while loop. Is there any way to make the program more concise. > I have uploaded my code file below. Please, note that I am fairly new to > programming and donot use complex modules, therefore, suggest me where I > was wrong with the code. I have checked for indentation error, however, > there were no error. So, I don't have any idea about the error. > Thanks. Thank you very much for sending the code you have so far! Unfortunately, I wish I had good news but I don't -- nearly everything about it is wrong. You have a good idea of what you want the program to do, and you have made a good attempt at splitting it into separate functions, but sadly the details are wrong and that prevents your code from working. Let's see if we can fix that. The first, and most important, thing is that Python can only run code it has already seen. So if I write this: do_something() # Call the function. def do_something(): # Define the function. print("Working really hard...") it will fail because at the time Python tries to call do_something() it doesn't exist yet. This is your very first problem: > if __name__=='__main__': > interact() > > def iteract(): When you try to call interact(), the function doesn't exist! Rule 1: Put your function definitions at the top of the file. Put the if __name__ == '__main__' block at the bottom of the file. That way, by the time Python reaches that block and calls the functions, they will have already been created and are ready to use. Now, let's think about good program design. A well-designed program will separate the program logic from the user-interface. In other words, the part of the program which calculates the result should be kept apart from the part of the program which communicates with the user. That makes it much easier to test each half separately, in case of any problems. So, let's start with a simple function that takes two integers as arguments, and adds all the numbers between then. Python gives you the tools to make this easy: ---- cut here ----- def add_range(start, end): """Add the numbers between start and end inclusive.""" the_range = range(start, end+1) return sum(the_range) print(add_range(1, 7)) # Should print 28 print(add_range(8, 20)) # Should print 128 ---- cut here ---- There is a function, sum(), which is used for adding up a sequence of numbers, and another function, range(), which creates a sequence of numbers from start to one less than the end. So we add one more to the end, create the range, then use sum() to add up the numbers. Now let's have another function to get a number from the user. We will use that function to get the starting number, then re-use it to get the ending number, then finally pass those two number to the add_range() function we created above. ---- cut here ---- def get_user_number(message): """Get an int from the user.""" while True: # Keep trying forever. answer = input(message) if answer.isdigit(): return int(answer) else: print("Sorry, that is not a number!") start = get_user_number("Please enter your starting number: ") end = get_user_number("Please enter your ending number: ") print("start is", start, "; end is", end) print(add_range(start, end)) ---- cut here ---- And that's nearly all you need! Any questions? -- Steve _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor