2016-10-28 2 views
1

Я начинаю курс начинающих на python 3 и должен формировать треугольник звездочки, который выводится следующим образом. Asterisk triangle formatAsterisk Triangle Python (с вводом)

Моя попытка до сих пор выглядит следующим образом:

def printRow(c, length) : 

    line = c * length 
    print(line) 
myLen = 0 
stars ="*" 
n = myLen-1 
spaces = (' '*n) 
myLen = int(input("Enter number to make triangle: ")) 


if myLen<=0 : 
    print("The value you entered is too small to display a triangle") 
elif myLen>=40 : 
    print("the value you entered is too big to display on a shell window") 
while myLen>0 : 
    print(spaces, stars, myLen) 
    myLen = myLen-1 

This is what it outputs in the shell

С этого момента я был совершенно потерян, так что любая помощь будет оценена.

+1

Вы вызываете 'print' во второй строке, а не в' printRow'. – Jeff

ответ

0

Как Джефф Л. упоминалось вы не называя вашу функцию, так что вы на самом деле печать на одно место, одно звезда, а затем новое значение myLen.

Что касается реальной проблемы, попробуйте провести линию за строкой, справа налево. Сначала вычислите количество пробелов и количество звезд для строки. Распечатайте его, перейдите к следующей строке.

См код ниже:

space = ' '; 
star = '*'; 

size = int(input("Enter number to make triangle: \n")) 

def printRow(current_row, max_row) : 
    line = space * (max_row - current_row) + star * current_row; 
    print(line) 

if size<=0 : 
    print("The value you entered is too small to display a triangle") 
elif size>=40 : 
    print("the value you entered is too big to display on a shell window") 


for i in range(1, size + 1) : 
    printRow(i, size); 
+0

Большое спасибо, я понимаю, где я сейчас ошибся! – blockoblock

1

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

def asterisk(): 
    ast = "*" 
    i = 1 
    lines = int(input("How many asterisks do you want? ")) 
    space = " " 
    for i in range(0, lines+1): 
     print (lines * space, ast*i) 
     lines -= 1 
     i += 1 
1

Это будет работать для вас.

def printer(n): 
    space=" " 
    asterisk="*" 
    i=1 
    while(n>0): 
     print((n*space)+(asterisk*i)) 
     n=n-1 
     i=i+1 

n=input("Enter a number ") 
printer(n) 

Есть несколько проблем, с вашими решениями, и я не совсем уверен, что вы пытаетесь сделать there.You сделал функцию под названием PRINTROW, но вы не использовали его. Попытайтесь выполнить сухой код кода во время отладки. Следуйте всем на бумаге. Например, напишите, какие переменные значения будут иметься на каждой итерации, и какой результат будет на каждой итерации. Это поможет вам понять, где вы поступили неправильно. Все самое лучшее!

Смежные вопросы