Python 3.6 Beginner here, need help

Okay, so after the whole incident two years ago with a really terrible computer science GTA teaching C++ in the summer I have decided to give programming another chance. But this time I am teaching myself Python at my own pace and I am currently using an intro book. And I have a question for you Python experts on a simple question.

My question is, why do i have to use the (10, 110, 10) on my code? I am currently learning Python 3.6 on Mac.for i in range(10, 110, 10)

I had this originally:

# Programming Exercise 5:
# 5.) Modify the convert.py program (Section 2.2) so that it computes and prints
# a table of Celsius temperatures and the Fahrenheit equivalents every 10
# degrees from 0°C to 100°C.
#
#-------------------------------------------------------------------------------
# convert.py
# A program to convert Celsius temps to Fahrenheit
# by: Renee Yaldoo
def main():
print("This program computes and prints a table of Celsius temperatures")
print("and the Fahrenheit equivalents every 10 degrees from 0°C to 100°C.")
for i in range(10):
celsius = i
fahrenheit = 9/5 * celsius + 32
print(str(celsius)+"\t"+str(fahrenheit))
input("Press the <Enter> key to quit.")
main()

Can someone here please explain why I need to use (10, 110, 10)? I haven't gotten too far into the book I am using (Python Programming 3rd Edition by John Zelle). I'm only on Chapter 2 right now. Thank you for taking the time reading and responding to this. Happy Holidays, and Merry Christmas everyone! :)

INABIAF. It's not a bug. It's a feature. As much as it has been "explained" as to how this makes programming easier I still consider it a failing of the language. Range generates numbers starting at the first number and proceeding by the increment up to but not including the second number. So in order to get the numbers from 1 to 10 you have to use range(1,11). I always favour clarity over everything else so this design choice offends me.

In mathematics, when a range is specified as (a,b) it is referred to as an open range and does not include the endpoints. When it is specified as [a,b] it is a closed range and does include the endpoints. A programming language should be consistent. When I see (a,b) I expect (and rightly so) to see consistent behaviour. A desired feature of a language is that the expected behaviour should be the actual behaviour. I accept that this is the way Python was designed. I maintain my opinion that it is wrong, no matter how convenient that behaviour is.

Perhaps they should have allowed range(a,b), range[a,b], range(a,b] and range[a,b). That would be consistent with mathematical definitions and would still allow the convenience for coding.

There are many programming tricks that are convenient but are still strongly discouraged because they are lack clarity. But this is probably not the thread to hold this debate (again).