Мне нужно кодировать шаблон 1 22 333 4444 в Python с циклами while - PullRequest
0 голосов
/ 25 сентября 2019

Я должен сделать шаблон 1 22 333 4444 с циклами while в python

def EXwhile6 ():
    '''This funtion prints a pattern. The user enters how many lines'''
    #Init
    a = input ("Write how many lines you want to print: ")
    a = int(a)
    K = 1
    #Condition
    while K <= a: 
        #Action
        line = str(K)
        #Update
        line2 = line + str(K)
        print (line2)
        K += 1
EXwhile6 ()

Вывод должен быть

1
22
333
4444

Я пробовал этот код и получаю

11
22
33
44

Ответы [ 4 ]

1 голос
/ 25 сентября 2019

Вы пропустили этап обработки.Тело вашего цикла

    line = str(K)
    line2 = line + str(K)
    print (line2)

... специально объединяет ровно две копии числа и распечатывает его.

Вместо двух копий вам нужен циклэто объединит K копий, а не две.

Поскольку ваш опубликованный код показывает, что вы уже знаете, как написать цикл для выполнения K раз, я ожидаю, что вы можете исправить это отсюда.

0 голосов
/ 25 сентября 2019

Вы продолжаете добавлять один и тот же номер (K) в свою линию.Вам нужен второй цикл для подсчета от 1 до K.Измените цикл while следующим образом:

while K <= a:
    #Action
    line = ""
    #Update
    for j in range(1, K + 1):
        line = line + str(K)
    print (line)
    K += 1

В качестве примечания, всю программу можно записать в одну строку, используя списочные выражения и .join():

def EXwhile6 ():
    a = input ("Write how many lines you want to print: ")
    print "\n".join([str(x) * x for x in range(1, int(a) + 1)])
EXwhile6()
0 голосов
/ 25 сентября 2019

Это идиоматический способ сделать это в Python, используя тот факт, что строку можно «умножить»:

def EXwhile6 ():
    a = input("Write how many lines you want to print: ")
    a = int(a)
    K = 1
    while K <= a:
        print(str(K) * K)
        K += 1

Теперь, если вы хотите закодировать ее вручную, вам понадобитсявложенная петля;Вышеуказанное эквивалентно:

def EXwhile6 ():
    a = input("Write how many lines you want to print: ")
    a = int(a)
    K = 1
    while K <= a:
        J = 1
        while J <= K:
            print(K, end="")
            J += 1
        print()
        K += 1
0 голосов
/ 25 сентября 2019

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

def EXwhile6 ():
    '''This funtion prints a pattern. The user enters how many lines'''
    #Init
    a = input ("Write how many lines you want to print: ")
    a = int(a)
    K = 1
    #Condition
    while K <= a: 
        #Action
        print(str(K)*K)
        K += 1
EXwhile6 ()


Write how many lines you want to print: 9
1
22
333
4444
55555
666666
7777777
88888888
999999999
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...