не удалось понять конкретную строку в коде

#python

#python

Вопрос:

привет, ребята, я новичок в программировании, во время практики я не понял строку переменной «a», я оставляю приведенный ниже код, большое спасибо.

 I = 1
j = 2
while i >= 1:
    a = ""*j "*"*i ""*j
    print(a)
    i = i   2
    j = j - 1
    if i > 5:
        break
i = 3
j = 1
while i >= 1:
    a = ""*j "*"*i ""*j
    print(a)
    i = i - 2
    j = j   1
  

Комментарии:

1. Вы пытались разбить его на элементы и распечатать их? Нравится print(""*j) или print("*"*i) ?

2. В любом случае этот код сбивает с толку без причины, потому ""*j "*"*i ""*j что эквивалентен "*"*i

3. да, сэр, я попробовал «*» * я получил первые 3 шага, которые являются *. *** *****

Ответ №1:

Из того, что я могу собрать, переменная a представляет собой строку, которая формируется путем конкатенации: j умножает пустое пространство, i умножает символ * и j снова умножает пустое пространство. В этом конкретном случае j часть определения a бесполезна, так как строка пуста.

По мере увеличения значения i в вашем цикле while количество символов * (или любой строки, если на то пошло), которым будет приписываться a , будет увеличиваться. Вот почему, когда вы запускаете свой код, сначала у * вас печатается один, как i = 1 . Далее в цикле вы затем добавляете 2 to i , чтобы на следующей итерации вашего цикла while, i = 3 , чтобы вы затем *** напечатали (см. Вывод ниже).

 *
***
*****
***
*
  

Но эта строка может быть любой, поэтому, если вы замените ее чем-то другим, она все равно будет работать. Например, если вы замените "*" на "banana" , то результат вашего кода будет:

 banana
bananabananabanana
bananabananabananabananabanana
bananabananabanana
banana
  

Комментарии:

1. спасибо, сэр, есть ли какой-нибудь способ очистить эту переменную? потому что это сбивает с толку

2. С удовольствием! Я не знаю цели этого кода, но я бы сказал, что более чистая версия была бы более питоническим подходом. Например, вы могли бы следовать соглашению PEP, например, этому python.org/dev/peps/pep-0008 (ОПТОСОЗ 8). Это дает несколько хороших советов о том, как писать читаемый код для других (включая ваше будущее «я» ;)). Я бы лично поставил несколько пробелов вокруг знака для удобства чтения, например: a = ""*j "*"*i ""*j Но я не знаю, как вы используете переменную j и ее пустую строку, поэтому просто из этого я бы удалил ее и написал: a = "*"*i

Ответ №2:

Это выражение используется для умножения строк. Это означает, что вы можете повторить строку n раз. Так, например, если вы пишете:

 2*'string'
  

Вы получите: stringstring . В вашем случае повторите пробел и звездочку. Вы можете упростить выражение, используя следующую строку:

 a = "*"*i
  

Комментарии:

1. спасибо, сэр, но когда я набрал «*» * i, я получил только первые 3 строки со звездочками, возможно, мне нужно еще несколько строк кода, чтобы получить остальные. Я в замешательстве

2. Возможно, этот пост вам поможет.

3. спасибо, ребята, наконец-то я понял, я действительно ценю это