python控制台打印美观杨辉三角
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python控制台打印美观杨辉三角,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2112字,纯文字阅读大概需要4分钟。
内容图文
![python控制台打印美观杨辉三角](/upload/InfoBanner/zyjiaocheng/855/f6c0dca25b414e7381624d212f55a909.jpg)
复习python基础的时候发现杨辉三角的控制台打印很有意思,所以就想在控制台上打印出跟平常所见的那种杨辉三角,可以打印出任意高度的杨辉三角而保持形状。
如:
上代码:
#百度杨辉三角得到规律后不用生成器函数实现获取指定的一行杨辉三角数字组合 def getTriangles(n): if n==1: return [1] mid=n//2+n%2 l=[1] for i in range(1,mid): C_up,C_down=1,1 for j in range(1,i+1): C_up=C_up*(n-j) C_down=C_down*j C=C_up/C_down l.append(int(C)) if n%2 == 1: l=l+l[::-1][1:] else: l=l+l[::-1] return l #杨辉三角控制台打印 #输入任意数字,打印出输入数字高度的杨辉三角 #控制台打印杨辉三角我认为最美观的组合是上一排两两相加构成的下一排数字组合要用'\ /'联系起来。 def printTriangles(n): #首先得到要打印的杨辉三角的最大值,因为打印要根据最大值的数字位数来调整数字之间的间隔保持美观 maxValue=getTriangles(n)[n//2+n%2] maxValueLen=len(str(maxValue)) #数字之间最小就是3个空格间隔 spaceLen=3 if maxValueLen>3: spaceLen=spaceLen+maxValueLen-3 sumLen=n+(n-1)*spaceLen for i in range(1,n+1): l=getTriangles(i) if len(l) == 1: s=str(l[0]) s=s.center(sumLen) else: #得到/\字符串 s1='/'+' '*(spaceLen-2)+'\\' for j in range(len(l)-2): s1=s1+' '+'/'+' '*(spaceLen-2)+'\\' s1=s1.center(sumLen) print(s1) s='1' for k in range(1,len(l)): preLen=len(str(l[k-1])) s=s+' '*(spaceLen-preLen+1)+str(l[k]) s=s.center(sumLen) print(s) printTriangles(20) ''' center() 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。 如果指定的长度小于字符串的长度则返回原字符串。 str.center(width[, fillchar])函数 width -- 指定填充指定字符后中字符串的总长度. fillchar -- 填充的字符,默认为空格。 '''
学习杨辉三角主要目的是为了熟悉生成器,所以给出了以下几种生成器实现迭代获取杨辉三角的数字组合:
#我想到的生成杨辉三角生成器的方法,代码不够精简,理解不够透彻 def triangles(): n,pre=1,[1] while 1: if n==1: yield [1] else: now=list(1 for i in range(n)) temp=n//2+n%2 for i in range(temp): if i==0: now[i]=pre[i] now[n-1]=now[i] else: now[i]=pre[i-1]+pre[i] now[n-i-1]=now[i] pre=now.copy() yield now n=n+1 #网友的两种精简实现方法 ''' def triangles(): row = [1] while True: yield(row) row = [1] + [row[k] + row[k + 1] for k in range(len(row) - 1)] + [1] def triangles(): row = [1] while True: yield(row) row, rowR = row + [0], [0] + row for k in range(len(row)): row[k] += rowR[k] '''
内容总结
以上是互联网集市为您收集整理的python控制台打印美观杨辉三角全部内容,希望文章能够帮你解决python控制台打印美观杨辉三角所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。