python星号三角形,不使用y *" *"

时间:2015-10-07 19:19:55

标签: python for-loop

我试图创建一个iso三角形(一个从中间开始)。 我有一个代码,但问题是我不允许使用Y *" *" 5在我的代码中。 (y是变量) 另外,我只能在代码末尾使用一个print语句。 你能帮帮我吗?

f = int(raw_input("enter"))
for i in range(f):
    print " " * (f-i-1) + "*" * (2*i+1)

创建这个三角形

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

但是,不允许在string和int上使用* -operator。例如,' ***''' * 3是不允许的,但3 * 4是

4 个答案:

答案 0 :(得分:2)

这只是创建一个连续的字符串,然后在结尾打印

f = int(raw_input("Enter height: "))
s = ''
for i in xrange(f):
    for j in xrange(f-i-1):
        s += ' '
    for j in xrange(2*i+1):
        s += '*'
    s += '\n'
print s

答案 1 :(得分:1)

这是一个我认为很容易理解的解决方案。您可以设置range()变量的参数,使其更具动态性。

from __future__ import print_function

for i in range(1,12,2):
    count=(11-i)/2
    for j in xrange(count):
        print(" ",end='')
    for j in xrange(i):
        print("*",end='')
    for j in xrange(count):
        print(" ",end='')
    print(end="\n")

答案 2 :(得分:1)

我认为最好的解决方案是使用center()字符串方法:

f = int(raw_input("How many rows to print in the triangle? "))
star = "*"
full_string = ""
for X in xrange(f):
    star += "**" if X>0 else ""
    full_string += star.center(2*f-1) + "\n"
print full_string[:-1]

str.center()文档:

https://docs.python.org/2/library/string.html#string.center

编辑:如果你不能在print循环中使用for语句,你可以在循环中连接字符串并在结尾打印它:

f = int(raw_input("How many rows to print in the triangle? "))
star = "*"
full_string = ""

for X in xrange(f):
    # the first row should take only one star
    star += "**" if X>0 else ""
    star2 = star.center(2*f-1)
    full_string += star2 + "\n"

# slice the string to delete the last "\n"
print full_string[:-1]

我注意到使用for循环添加换行符。如果要避免这种情况,可以在打印前对字符串进行切片。

答案 3 :(得分:0)

此代码没有问题,我只是检查了它,它工作正常。如果您要发布错误消息,我们可以提供更多帮助。