Python程序结构2
2018年6月28日笔记
上午上课前分享
高等数学求解及作图软件:mathmatica
5.循环嵌套
左上九九乘法表
if __name__ == '__main__': for i in range(1,10): for j in range(1,11-i): print("%d*%d=%2d" %(i,j,i*j),end=' ') print()
上面一段代码的运行结果如下:
左下九九乘法表
if __name__ == '__main__': for i in range(1,10): for j in range(1,i+1): print("%d*%d=%d" %(i,j,i*j),end=' ') print()
上面一段代码的运行结果如下:
右上九九乘法表
if __name__ == '__main__': for i in range(1,10): for j in range(1,i): print(' '*7,end='') for j in range(i,10): print("%d*%d=%-2d" %(i,j,i*j),end=' ') print()
上面一段代码的运行结果如下:
右下九九乘法表
if __name__ == '__main__': for i in range(1,10): for j in range(1,10-i): print(' '*7,end='') for j in range(10-i,10): print("%d*%d=%-2d" %(i,j,i*j),end=' ') print()
上面一段代码的运行结果如下:
6.推导式
下面两段代码的作用相同,但是推导式对数据处理更加简单、高效。
items = [] for i in range(1,11): items.append(i)
items = [i for i in range(1,11)]
用代码验证推导式的高效性
import time if __name__ == '__main__': startTime = time.time() list1 = [] for i in range(1,10000000): list1.append(i) print(time.time()-startTime) startTime = time.time() list2 = [k for k in range(1,10000000)] print(time.time()-startTime)
上面一段代码的运行结果如下,从下面的结果可以看出速度差距为2、3倍左右,当数据量更大时,可能差距更大。:
2.5785739421844482
0.9168956279754639
多个推导式示例:
if __name__ == '__main__': a = [i**2 for i in range(1,10)] b = [j+1 for j in range(1,10)] c = [n for n in range(1,10) if n % 2 == 0] d = [letter.lower() for letter in 'ABCDEFGHIJK'] print(a,b,c,d,sep='\n')
上面一段代码的运行结果如下:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
[2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 6, 8]
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
7.循环控制
示例1:如果某字母在字符串中存在,则直接跳出循环
if __name__ == '__main__': for letter in 'Python': if letter == 'h': break print(letter)
上面一段代码的运行结果如下:
h
在python中,for...else结构的作用,else后面接的执行语句在for循环正常执行完,即不是通过break跳出的情况下才会执行。代码示例如下:
if __name__ == '__main__': for i in range(10): if i == 5: print("found it! i = %d"%i) break else: print("No found it....")
上面一段代码的运行结果如下:
found it! i = 5
for循环练习
有四个数字:1、 2 、3、 4,能组成多少个互不相同且无重复数字的三位数?各是多少?
if __name__ == '__main__': result = set() for i in range(1,5): for j in range(1,5): for k in range(1,5): if len(set([i,j,k])) == 3: result.add(i*100+j*10+k) print(result) print(len(result))
上面一段代码的运行结果如下:
{132, 134, 142, 143, 412, 413, 421, 423, 431, 432, 312, 314, 321, 324, 213, 214, 341, 342, 231, 234, 241, 243, 123, 124}
24
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
技术 | Python从零开始系列连载(二十二)
挖掘机技术哪家强 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。 输入格式: 输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。 输出格式: 在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。 输入样例:63 652 801 1002 703 403 0 输出样例:2 150 上代码: 注意点: input()可以一次接受多个值,用空格隔开,使用split()即可分开,用对应个数变量接收这些值即可 在c中可以用数组,在Python中我不想import库就用字典实现了,方法应该还有很多,大家可以试试探索。 光看不练,眼高手低可不好哦,动手敲代码吧~ 好啦,这期的分享先到这里,大家可以按照上面的详细步骤进行练习。加油。 原文发布时间为:2018-06-29本文作者:小柳本文来自云栖社区合作伙伴“灯塔大数据”,了解相关信息可以关注“灯塔大数据”
- 下一篇
JavaScript实现排序二叉树的基本操作
记得一开始学习数据结构用的是c语言实现,学了这么久前端就想用JavaScript来实现一下,顺便复习下数据结构。 先来了解下什么是排序二叉树,排序二叉树是具有以下特点的二叉树 若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值, 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值, 左、右子树也分别为二叉排序树 比如下面这图,左边的值永远小于右边的值 下面我们用代码实现一波 首先是树的结构和根节点 var Node = function(key){//节点结构 this.left = null this.right = null this.key = key } var root = null //根节点 二叉树的插入,基本过程是比较要插入的数和当前节点的值大小,按照 排序二叉树 的特点,左边的值永远小于右边 var insertNode = function(node,newNode){ if(node.key > newNode.key){//要插入的值小于当前节点,左子树遍历 if(node.left === null){ node.left = n...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- 设置Eclipse缩进为4个空格,增强代码规范
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装