Let's say on the command-line you have:
C:\> C:\Documents and Settings\fred\My Documents\Downloads\google-python-exercises \google-python-exercises\hello.py John
To make it easier to read, shorten it to:
C:\> hello.py John
argv represents all the items that come along via the command-line input, but counting starts at zero (0) not one (1): in this case, "hello.py" is element 0, "John" is element 1
In other words, sys.argv[0] == 'hello.py' and sys.argv[1] == 'John' ... but look, how many elements is this? 2, right! so even though the numbers are 0 and 1, there are 2 elements here.
len(sys.argv) >= 2 just checks whether you entered at least two elements. in this case, we entered exactly 2.
Now let's translate your code into English:
define main() function: if there are at least 2 elements on the cmd-line: set 'name' to the second element located at index 1, e.g., John otherwise there is only 1 element... the program name, e.g., hello.py: set 'name' to "World" (since we did not get any useful user input) display 'Hello' followed by whatever i assigned to 'name'
So what does this mean? It means that if you enter:
- "
hello.py", the code outputs "Hello World" because you didn't give a name - "
hello.py John", the code outputs "Hello John" because you did - "
hello.py John Paul", the code still outputs "Hello John" because it does not save nor use sys.argv[2], which was "Paul" -- can you see in this case that len(sys.argv) == 3 because there are 3 elements in the sys.argv list?