鱼C论坛

 找回密码
 立即注册
查看: 2731|回复: 1

关于打印菱形

[复制链接]
发表于 2015-10-30 18:41:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求大神指点:
怎样可以仅仅通过while以及if打印出用'*'表示的菱形?
如下代码可以实现实心三角,请帮忙补齐下面那一半。同时要求不能使用如下代码中未出现的内建函数。
i = 0
while i < 10:
    j = 1
    while j < 20:
        mid = 19 // 2 + 1
        if j >= mid - i and j <= mid + i:
            print('*',end=' ')
        else:
            print(' ',end=' ')
        j += 1
    print('')
    i += 1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-11-2 18:01:23 | 显示全部楼层
已经自己研究出解决办法,代码如下:

s = int(input('请输入菱形总行数:')) #总行数
z = s // 2 + 1                    #中间行
z1 = z * 2 - 1                    #最大列
z2 = z1 // 2 + 1                #中间列
z3 = z - 2
i = 0                                  #当前行
print(s,z,z1,z2,z3)
while i < s:
    if i < z:
        j = 1                          #当前列
        while j <= z1:
            if j >= z2 - i and j <= z2 + i:
                print('*',end=' ')
            else:
                print(' ',end=' ')
            j += 1
        print('')
    elif i >= z and i < s:
        j = 1
        while j < z1:
            if j >= z2 - z3 and j <= z2 + z3:
                print('*',end=' ')
            else:
                print(' ',end=' ')
            j += 1
        z3 -= 1
        print('')
    i += 1

自己也在网上查了下,如果使用for循环仅用10行左右代码即可实现,但是鉴于本人为初学者,此意为巩固while循环以及if分支语句知识点,所以勿喷不简洁,如有仅仅使用while及if语句实现打印实心菱形更简洁的方法,欢迎交流~:loveliness:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-18 02:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表