скажем в командной строке у вас есть:
C:\> C:\Documents and Settings\fred\My Documents\Downloads\google-python-exercises
\google-python-exercises\hello.py John
, чтобы сделать его легче читать, давайте просто сократить это:
C:\> hello.py John
argv
представляет все элементы, которые приходят вместе с помощью входной сигнал командной строки, но отсчет начинается с нуля (0) не один (1): в этом случае «hello.py
» является элементом 0, «John
» является элементом 1
, другими словами, sys.argv[0] == 'hello.py'
и sys.argv[1] == 'John'
... но посмотрите, сколько элементов это? 2, правильно! так что даже если числа равны 0 и 1, здесь есть два элемента.
len(sys.argv) >= 2
только проверил, введено ли вы как минимум два элемента. в этом случае, мы вошли ровно 2.
теперь давайте перевести свой код на английском языке:
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'
так что это значит? это означает, что если вы ввели:
- «
hello.py
», то код выхода «Hello World
», потому что вы не дали имя
- «
hello.py John
», то код выхода «Hello John
», потому что вы сделали
- «
hello.py John Paul
», код по-прежнему выводит «Hello John
», потому что он не сохраняет и не использует sys.argv[2]
, что было «Paul
» - вы видите в этом случае len(sys.argv) == 3
, потому что в списке есть 3 элемента?
Благодарим вас за очень четкое объяснение. –
yvw! я видел, что другие уже ответили на это довольно хорошо, и мне нужна была альтернатива, которая больше ориентировалась на чистый «английский перевод» кода, если есть такая вещь. ура! – wescpy
Вы также можете запустить свой цикл 'for i в диапазоне (1, len (sys.argv) -1):' затем получите свое значение с помощью 'sys.argv [i]', если вам нужно знать позицию, а также стоимость. –