Python中while循环练习——打印星星总结

Python中利用循环打印星星

1.打印直角三角形星星

1.1使用字符串拼接

直角三角形星星有四种情况分别是,如下图所示,假设行数等于列数

其中(1)和(2)属于一种情况,(3)与(4)属于另一种情况

首先说(1)和(2):

这种三角形星星只需要打印星星即可,然后观察可以知道

图(1)是第1行打印1个星星,第2行打印2个星星,以此类推

# 定义行变量,从1开始计数
row = 1
# 循环5次
while row <= 5:
    print("*" * row)  # 第i行打印i个星星
    row +=  1
print("end")

图(2)类似,只不过变成第1行打印5个星星,第2行打印4个星星,以此类推第i行打印n-i+1个,n为行数,代码读者可以自行练习这里就省略了。

接下来说(3)和(4):

这种三角形星星即要打印空格又要打印星星,观察可知

图(3)是第1行打印0个空格和5个星星,第2行是打印1个空格和4个星星,以此类推

# 定义行变量,从1开始计数
row = 1
while row <= 5:
    print(" " * (row-1) + "*" * (6-row))  # 第i行打印i-1个空格和6-i个星星,加起来等于行数5
    row += 1
print("end")

图(4)类似,只不过变成第1行打印4个空格和1个星星,第2行打印3个空格和2个星星,以此类推第i行打印n-i个空格和i个星星,加起来等于行数n,代码读者可以自行练习。 

总结:以上是使用Python的字符串拼接来打印,比较方便不需要循环嵌套。可以比较方便的处理字符串是我觉得Python比C方便的地方之一

1.2不用字符串拼接,使用循环嵌套

不使用字符串拼接打印就有点类似C等其他语言的思路,就是一个一个的打印,那么就需要变化一下,首先来介绍一下print函数

  • 在默认情况下,print 函数输出内容之后,会自动在内容末尾增加换行

  • 如果不希望末尾增加换行,可以在 print 函数输出内容的后面增加 , end=""

  • 其中 "" 中间可以指定 print 函数输出内容之后,继续希望显示的内容

  • 语法格式如下:

# 向控制台输出内容结束之后,不会换行
print("*", end="")

# 单纯的换行
print("")

end="" 表示向控制台输出内容结束之后,不会换行

有了以上知识后首先说图(1)和(2)

由于是从左到右一个字符一个字符的打印,这个时候就需要引入列变量

图(1)第1行打印1个星星,就是列变量计数的内层循环只循环1次,第2行打印2个星星就是列变量计数的内层循环循环2次,以此类推

# 定义行变量,从1开始计数
row = 1
while row <= 5:
    # 定义列变量,从1开始计数
    col = 1
    # 第i行,列循环i次
    while col <= row:
        print("*", end="")
        col += 1
    # 每打印完1行换行
    print("")
    row += 1
print("end")

图(2)类似,第1行打印5个星星,就是列变量计数的内层循环循环5次,第2行打印4个星星就是列变量计数的内层循环循环4次,以此类推第i行的内层循环循环n+1-i次,其中n为行数,代码读者可以自行练习。

图(3)和(4)就比较麻烦,因为既要打印空格又要打印星星

我们可以这么来看图(3)和(4),它们都是打印5行,每行有5列,对于每一行来说先打印空格然后打印星星,空格和星星的个数加起来等于5,一共打印25下。

我们可以先简化问题,打印5行5列,共25个星星看一下

# 定义行变量,从1开始计数
row = 1
while row <= 5:  #打印5行
    col = 1  # 定义列变量,从1开始计数
    while col <= 5:  # 每行打印5列
        print("*", end="")
        col += 1
    print("")  # 每打印完1行后换行
    row += 1
print("end")

有了以上程序之后我们就可以在此基础上修改

我们的目标是第1行先打印0个空格然后打印5个星星,第2行先打印1个空格然后打印4个星星,可以在内层循环中用if来判断打印几个空格和几个星星, 第i行就是i-1个空格和6-i个星星,空格和星星的个数加起来等于列数n

# 定义行变量,从1开始计数
row = 1
while row <= 5:  #打印5行
    col = 1  # 定义列变量,从1开始计数
    while col <= 5:  # 每行打印5列
        # 第i行打印i-1个空格和6-i个星星
        if col <= (row - 1):
            print(" ", end="")
        else:
            print("*", end="")
        col += 1
    print("")  # 每打印完1行后换行
    row += 1
print("end")

图(4)类似,第1行打印4个空格和1个星星,第2行打印3个空格和2个星星,以此类推,第i行打印n-i个空格和i个星星,n等于列数 ,代码读者可以自行练习。

总结:使用循环嵌套虽然麻烦一点,但是其他语言比如C只能用这种方式打印,有利于我们掌握循环和循环的嵌套,以上总结仅供参考,相信读者学会了以上方法之后,更加复杂的例如菱形小星星和九九乘法表之类的也能够轻松解决了

猜你喜欢

转载自blog.csdn.net/qq_41196472/article/details/86362994