#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. спасибо, ребята, наконец-то я понял, я действительно ценю это