《python语言程序设计》第5章 第19题 嵌套循环做出类似金子塔平面的数列解题过程 。

5.19 魔鬼5.19 我终于冲破你了

在这里插入图片描述
2021-10-19第一次接触它,碰壁了。脑袋晕菜了。重新回第一章吧。灰溜溜。
2021-11-05 单独对付它,又一次体无完肤。根本找不到解题的步骤和灵魂。强迫症的我 失败了

2021-12-12第11次来到第五章。当走到这里的时候。出现了第一次曙光 第一方案出世了


#5.19  2021-12-20 找到了解题的重大突破
#方案一
int_num = 7
date_num = int_num + 2
for i in range(1,date_num):
    for j in range(1,i):
        print(j,end = ' ')
    print()
# 现在差另一侧的阵列

在这里插入图片描述

第一方案解决了该题右侧阵列的问题。但是左侧却苦苦无法出现。中间看了其他教材和该书的其他章节来解答自己的一些假设问题。但对我来说也是两个月来第一次最开心的一刻。非常高兴。

第一个假设这些阵列是不是因为我对format这个命令不熟悉造成的呢。因为这个第一方案也是试验了很多次才有的结果。其中有一次是通过format这个格式化命令让我看到了希望。但是很快也破灭了。所以我想,我再重新看看之前的章节是不是自己疏忽了什么呢??

回看过去的章节,发现了这个其实是一个嵌套循环所以产生了第二方案

#方案二
# int_num = eval(input('Enter the number of lines: '))
int_num = 7
date_num = int_num + 2
for i in range(1,date_num):
    for k in range(2,i):
        print(k,end = ' ')
    for j in range(1,i):
        print(j,end = ' ')
       
    print()

其他几次的方案在下方

方案三

int_num = 7
date_num = int_num + 2
for i in range(1,date_num):
    for k in range(2,date_num - i,1): #这个是从上往下然后是从多往少排列 是第一次
        print(k,end='')
   print()

2021-12-22 尝试第N次失败

无法做到让数字在倒序显示的同时还可以从右侧开始出现第一个数字。
今天这个方案只是解决了一行的问题。
a_num = 7
b_num = a_num+2
for i in range(7, 0, -1):
    for j in range(6, 0, -1):
        print(j, end='')
    print()

int_num = 7
date_num = int_num + 2
for i in range(1, date_num):
    for k in range(1, i):  # 从左往右排列但是不成功
        print(i- k, end=' ' * (i-date_num)) #该种形式可能满足第5.21题里右侧半壁的状态
    print()

2021-12-24 N次

int_num = 7
date_num = int_num + 2
for i in range(1, date_num):  # 决定了阵列的列数
    for k in range(2, i):  # 决定了阵列的行数
        print(k, end=' ')   
        # print(' ' * (i), k, end=' ') #通过空格来排列数字。但是发现随着每一次循环,我们的空格也会随着循环变化
    print()

2021-12-24最大的问题是如何让我们的列能够从左往右侧进行

int_num = 7
date_num = int_num + 2
for i in range(1, date_num):  # 决定了阵列的行数
    for k in range(date_num, 2, -1):  # 决定了阵列的列数
        print(k, end=' ')
        # print(' ' * (i), k, end=' ') #通过空格来排列数字。但是发现随着每一次循环,我们的空格也会随着循环变化
    print()

2021年曙光来了 2021年底我迎来了曙光

方案四 2021-12-31 解决了12-24日的难题。现在往新的方向前进

通过CSDN里一位朋友的提示。他是用这样的方式阵列*号。但是这个也是很好的启发一下让我找到了从左边阵列的办法。

s_num = 7
s_int_num = s_num + 2

for i in range(1, s_int_num):
    for j in range(0, s_num - i):
        print(' ', end=' ')  # 看到2021-12-31csdn一位朋友的分享灵感凸显,可以用空格来弄

    for k in range(2, i):
        print(k, end=' ')

    for n in range(1, i):
        print(n, end=' ')

    print()    

突破的主要方向是发现编程输出是从上往右开始输出。而我们正常的嵌套式也只能做到这一点。但是该题是金字塔输出结果。另外就是左侧的还要是倒序的。经过1个多月的磨合,虽然头发没掉光,但是情绪已经很低落,再次感谢在论坛上看到的朋友给的提示。非常感谢。我终于又一次离目标进了一些。

在这里插入图片描述

方案五 最终成功了 2021-12-31

s_num = 7
s_int_num = s_num + 2

for i in range(2, s_int_num):
    for k in range(i, s_int_num):
        print(' ', end='')
    for j in range(1, i):
        print(abs(j - i), end='')
    for n in range(2, i):
        print(n, end='')
    print()

在这里插入图片描述

这个abs和今天的缩进也是突发奇想。其实我之前也想过用空格的方式把数字挤向右侧,但是不是很成功。

 print(' ' * (i), k, end=' ')  # 这个就是一个尝试的记录,但是没有2021-12-31日看到的那个文章的好。
最后总结一下。其实这里还有很多对for循环和嵌套循环里设置起始、终止、步幅之间练习的问题。有的脑子里有概念。有的当时分析程序的时候一闪而过。不能都一一的记录。非常感谢又是一年学习了python。今年确实比去年学的要好一些。但是年龄又大了。看来去大厂打工的梦。要变成自己创业了。但不管怎么说。2021年还是有好消息和好兆头的。

2022年我们来了,祝所有的朋友们,和同学继续的努力吧。

同时 在程序结束的输出时,编译器自带的运行确实很方便。但是还是建议在powershell或者cmd的环境下运行,这样效果更接近一些。我开始在pycharm里的运行效果就有点小瑕疵。

还有很多总结自己激动一时想不出来了。谢谢大家。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电饭叔

谢谢各位兄弟们的关注,谢谢破费

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值