我试图创建一个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是
答案 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)
此代码没有问题,我只是检查了它,它工作正常。如果您要发布错误消息,我们可以提供更多帮助。