本文章只是本人为了在学习python初的过程中,更熟练地掌握while else循环语句的一个小插曲。大神看了不喜勿喷。
#输入一个想要生成菱形边上的*数量的数值,并将其转化为int类型(因为input输入类型都为字符串,下文将会涉及到数学运算,所以转化),并赋值给u u=int(input('输嘛')) #设置i为行数,赋予初始值1 i=1 #当i的行数值在所生成的菱形最后一行的行数值范围内 while i<=(2*u-1): # 菱形上半段行数的取值范围,注:菱形中间一行的行数跟菱形边的*数值相等,所以本人将上半段的i值取到了菱形中间一行的行数值 while i<=u: # 输出菱形上半段每一行的空格与*,空格是为了让菱形正常显示出形状,与行数值的变化有关 print(" "*(u-i)+"*"*(2*i-1)) # 意为i=i+1,让每次循环输出后行数值加1 i += 1 # 当i行数值大于菱形中间行数值后便跳出上面的while循环,执行下面的循环,下面便是菱形下半部分 else: # 将菱形下半部分倒着数的行数值赋予给o(意思就是最后一行o取值1,倒数第二行o取值2...以此类推) o = 2 * u - i # 有了o的取值,就能跟菱形上半部分输出同理输出下半部分 print(" "*(i-u)+"*"*(2*o-1)) i += 1 else: print("结束")
来一个6*的例子
上半部分非常简单,由于本人的脑力实在有限呐,在吃完午饭过后回来才将下半部分解决。刚开始写下半部分的时候真的绞尽脑汁都想不出来应该怎样解决行数的问题,后来根据本人自己举的边上为4*菱形的例子,来反复验证下半部分和行数值得关联,结果将行数重新定义一下就成功打印出来。不管怎样,保持一个谦逊的态度求学,才能让专业知识得到提炼,提升自己。雄关漫道真如铁,而今迈步从头越。