2016-02-29 13 views
-2

我无法用列表中的任何整数打印行。 我需要结果为:如果我有在名单[5,1,2,3],然后它打印:Python。使星号图形与整数列表

***** 
* 
** 
*** 

我的代码:

zv = [] 
l = 1 
xa = 0 
xb = 1 

eil = int(input("Number of rows: ")) 
eill = eil 

def piesinys(eil, zv): 
    while eil > 0: 
     print("*" * zv[xa:xb]) #<---- This is hard to do 
     xa = xa + 1 
     xb = xb + 1 
     eil = eil - 1 

while eill > 0: 
    abc = int(input("Asterisk's in " + str(l) + " row: ")) 
    zv.append(abc) 
    l = l + 1 
    eill = eill - 1 

piesinys 

打印什么。

+0

为什么空行?我期待5,1,2,3,5,1和2,3之间有一条空行 – purpletentacle

+0

您实际上并没有调用应该执行打印的功能。 – univerio

+0

@ mtk99对不起,编辑。 – Marius

回答

1

与您的代码很少有什么问题:

添加一个全球性的声明,使你的函数可以找到变量之外吧:

def piesinys(eil, zv): 
    global xa, xb 
    while eil > 0: 
     print("*" * zv[xa]) # This is hard to do 
     xa = xa + 1 
     xb = xb + 1 
     eil = eil - 1 

并调用该函数在最后:

piesinys(eil, zv) 
+0

Again .... TypeError:不能通过类型为'list'的非整型来乘序列。这是我认为的主要问题... – Marius

+0

@Marius嗯......很难遵循你的代码中的逻辑 - >你认为你可以编辑你的问题来告诉我们你希望完成什么吗?另外,告诉我,如果编辑修复它:) – Zizouz212

+0

没关系。我明白了... – Marius

1

我看到的问题:

  1. piesinys名称的功能;实际上通话的功能,你需要做的piesinys(eil, zv)

  2. zv[xa:xb]返回一个元素的列表,即[5],当你需要的数字5。改为尝试zv[xa]

我将它改写为

def get_int(prompt): 
    while True: 
     try: 
      return int(input(prompt)) 
     except ValueError: 
      pass 

def get_row_values(num_rows): 
    values = [] 
    for i in range(1, num_rows + 1): 
     prompt = "Asterisks in row {}: ".format(i) 
     value = get_int(prompt) 
     values.append(value) 
    return values 

def draw_histogram(values): 
    for value in values: 
     print('*' * value) 

def main(): 
    num_rows = get_int("Number of rows: ") 
    values = get_row_values(num_rows) 
    draw_histogram(values) 

if __name__ == "__main__": 
    main() 
+0

谢谢!最后我得到了它的工作... – Marius

1

完成工作代码:

zv = [] 
l = 1 
xa = 0 
xb = 1 

eil = int(input("Įveskite eilučių skaičių: ")) 
eill = eil 

def piesinys(eil, zv): 
    global xa, xb 
    while eil > 0: 
     print("*" * zv[xa]) 
     xa = xa + 1 
     xb = xb + 1 
     eil = eil - 1 

while eill > 0: 
    abc = int(input("Įveskite žvaigždučių skaičių " + str(l) + " eilutėje: ")) 
    zv.append(abc) 
    l = l + 1 
    eill = eill - 1 

piesinys(eil, zv) 

再次,感谢大家谁帮我!

0

最简单的解决方案将是:

>>> num_list = [5, 1, 2, 3] 
>>> for x in num_list: 
...  print '*' * x 
... 
***** 
* 
** 
***