В чем смысл приведенного ниже кода? - PullRequest
0 голосов
/ 01 апреля 2019

Вопрос состоит в том, чтобы взять 4 целых числа в качестве ввода, введенного в отдельных строках.Пример: =

1
1
1
2

Приведенный ниже код делает необходимые вещи.Я пытаюсь понять его рабочую часть.

x,y,z,n=[int(input()) for _ in range(4)]

Ответы [ 3 ]

1 голос
/ 01 апреля 2019

Добро пожаловать!

Этот код является эквивалентом

x = int(input())
y = int(input())
z = int(input())
n = int(input())

Функция input() читает ввод от пользователя, а int пытается преобразовать его в целое число, которое присваивается каждой переменной (x, y, z и n) .

Код также можно записать как:

numbers = []
for i in range(4): # Loop 4 times
 numbers[i] = int(input())

x = numbers[0]
y = numbers[1]
z = numbers[2]
n = numbers[3]

Что больше похоже на форму, которую вы предоставили. Но автор использует две возможности Python, которые делают код меньше (и более выразительным). Я объясню оба:

  1. Список понятий

Много раз во время программирования вы будете вынуждены выполнить команду несколько раз и получить результаты в виде списка или, например, отобразить значения из одного списка в другой. В этом случае у вас будет что-то вроде этого:

numbers_til_5 = [0,1,2,3,4,5]
squares_til_5 = []
for n in numbers_til_5:
  squares_til_5.append(n*n)

С синтаксисом понимания списка мы могли бы сделать:

sqaures_til_5 = [ n*n for n in numbers_til_5]

Другая функция:

  1. деструктурирующие

Это функция, которая позволяет вам получать элементы списка в одном операторе. В примере мы имеем это:

x = numbers[0]
y = numbers[1]
z = numbers[2]
n = numbers[3]

Который можно заменить на x,y,z,n = numbers. Еще одна интересная форма, когда вы заботитесь только о первых аргументах, например:

first = numbers[0]
rest = numbers[1:] # This get all elements starting from the first

можно записать как first, *rest = numbers.

Надеюсь, я смог это прояснить.

0 голосов
/ 01 апреля 2019

Он запускает цикл для ввода значений в виде целых чисел и передает эти значения в переменную x, y, z, n в этой последовательности. range (n) запускает цикл для диапазона 0-n (в этом случае 4 раза). _ используется для обозначения «что-нибудь» во время выполнения цикла.

0 голосов
/ 01 апреля 2019

for _ in range(4) повторяется int(input()) 4 раза, поэтому в скобках теперь содержатся первые четыре ввода [1, 1, 1, 2].

В Python вы можете назначать несколько переменных одновременно, так что x, y, z иn будет присвоено соответствующим значениям в скобках.

Для лучшего понимания вы можете извлечь отдельные части, например:

x = int(input())
y = int(input())
z = int(input())
n = int(input())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...