用星星画一个三角形

2024-04-25 06:29:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是pythonidewing版本4.1

我试图编写一个只有1个输入的函数,它将是一个整数,并返回下一个星形形状:

  *
 **
***

我尝试使用以下代码,但它给出了另一个形状:

^{pr2}$

Tags: 函数代码版本整数形状星形pr2pythonidewing
2条回答

你需要更仔细地考虑算法应该做什么。对于1n范围内的每个整数,您希望打印n-1空格,后跟n星号,那么硬编码的5在那里做什么?为什么你没有空间?既然您知道要循环多少次,为什么要使用while而不是{}?在

实现这一点的最有效方法是使用内置的字符串方法^{},它用空格填充所提供的字符串:

def tri_1(n):
    for i in range(1, n+1):
        print(str.rjust("*"*i, n))

由于这似乎是一个基本的编程练习,我不认为我们应该过于依赖内置函数。下面的函数可以理解这个概念。在

def print_triangle(n):
    for i in range(1, n+1):
        for j in range(n-i):
            print(' ', end='')
        for k in range(i):
            print('*', end='')
        print()

调用print_triangle(3)将打印

^{pr2}$

这个函数稍微短了一点,但它的作用是一样的。在

def print_triangle2(n):
    for i in range(1, n+1):
        print(' '*(n-i), end='')
        print('*'*i)

希望有帮助。在

编辑: 感谢Jon,我已经习惯了python3print语句,以至于忘记了end=''部分不能工作,除非您使用python3。这在Python 2.7中应该可以工作:

import sys
def print_triangle(n):
    for i in range(1, n+1):
        for j in range(n-i):
            sys.stdout.write(' ')
        for k in range(i):
            sys.stdout.write('*')
        sys.stdout.write('\n')

def print_triangle2(n):
    for i in range(1, n+1):
        sys.stdout.write(' '*(n-i))
        sys.stdout.write('*'*i)
        sys.stdout.write('\n')

相关问题 更多 >