0013 人挪活,树挪死,数据类型该换就得换

上节课作业

1. 继续改造上面的星座判断程序,日期判断也用list实现,代码更简洁

主要的思路,是将1到12月的每个月的日期最大天数放到list中,可以用month-1作为序号直接取出用于判断

修改后的代码如下:

大家如何按照以前的要求测试了各种情况的话,会发现这个程序有错误,请大家找出来并修改正确,大家就当参加面试做题目一样要求自己。

2. 输入邮政编码前2位数字判断输出是哪个省份

程序逻辑提示:

去网上搜索一个邮政列表,里面是关于邮政编码前2位各自对应的省份名称,然后参考上面的星座判断程序编写,注意用到list然后用for循环。

网上搜索到每个省份的邮政编码,例如北京是10,上海是20,等等

将这些信息作成2个list,里面元素个数相同,postcodes存放数字10,20等,provinces存放省份名称北京,上海等

然后输入一个邮政编码数字

循环外面存放一个变量index用于记录数组序号

然后对postcodes用for进行循环,循环里面判断输入的邮政编码是否等于postcodes元素数据,如果相等,则根据序号去访问provinces的元素,记录数据到变量value

如果value有值,则输出,否则输出邮政编码不正确

代码如下:

这里注意,一行代码太长,要拆分的话,用\符号,下面的行前面可以缩进也可以不缩进,缩进的话看起来更舒服

结果如下:

从1开始到1000,统计包含数字2的数字的总个数

来做一个新的题目,从1开始到1000,统计包含数字2的数字的总个数

程序思路:

首先设置一个变量用于累计含2数字总个数

首先有一个循环,从1循环到1000,可以用while循环,能否用for循环呢

然后,针对循环里面的每一个数字,判断该数字是否包含了数字2

如果包含,则累计总个数加1

最后打印输出累计总个数

那么关键点在于如何判断该数字是否包含了数字2

人脑思考的时候,肯定是依次判断数字的每一位数字,是否等于2,如果等于则认为包含了

但是计算机程序在这里要注意了,前面用的循环是数字类型,数字类型要判断每一位是否等于2

要对数字进行10,100,1000...等进行整除计算,这样做起来有点复杂

如果把数字转换为字符串类型,然后遍历字符串的每一位,判断是否等于字符串"2",就方便很多

那么,这个问题我们先放一放,先学习一下数据类型转换的知识再来做题

标准数据类型

在内存中存储的数据可以有多种类型

例如年份用数字来存储,名称用字符串来存储


Python有五个标准的数据类型:

Numbers(数字)

String(字符串)

List(列表)

Tuple(元组)

Dictionary(字典)

前面我们已经接触过的是Numbers,String,List


Numbers(数字)支持四种数字类型:

int(有符号整型)

long(长整型)

float(浮点数)

complex(复数)

整数大家能理解,浮点数就是小数,例如5.6,3.1415926等等

长整型主要是在用到比较大的整数的时候用到


String(字符串)是由数字,字母,下划线组成的一串字符

一般标记为 s="a1a2...an"

字符串类似于一个由字符组成的list,可以用下标序号访问其中的元素字符

例如:

>>> s="Hello World!"

>>> print s[0]

H

>>> print s[6]

W

目前我们暂时先了解这么多,在以后具体用到的时候再去网上搜素用法即可

数据类型转换

如果要将一个数字转换为字符串,应该这么做:

str(x)

例如:

可以看到,x为整数,访问x[0]会出错

用str转换为字符串后,访问s[0]就能得到结果

用函数len(s)可以取得字符串的总长度

同样可以用for针对字符串进行循环遍历

那么,是否还有其它类型转换函数呢

是的,比如我们之前用的int(input("month:")),这里的int()函数就是将输入转换为整数

其它的还有一些,具体大家可以在用到的时候再去网上搜索

函数range

前面的问题,能否用for循环呢

可以的,但是要定义一个list从1到1000,好像太多了,没法写出来

那么有没有一个简便的函数生成这样的list呢

使用函数range来生成一个list,例子如下:

#代表从1到5(不包含5)

>>> range(1,5)

[1, 2, 3, 4]

#代表从1到5,间隔2(不包含5)

>>> range(1,5,2)

[1, 3]

#代表从0到5(不包含5)

>>> range(5)

[0, 1, 2, 3, 4]

#从1到1000,包含1000

>>> range(1,1001)

统计代码

经过之前的知识储备,能够将关键点梳理清楚,大家可以尝试自己先去写代码,不要往下看:

正确的结果应该是271,如果不正确,请再次修改代码

代码如下:

二维列表

list里面的元素数据,也可以是list,也就是list里面套list,这个人就是二维列表

例如

list=[[1,2,3],[4,5,6]]

座位表=[["第1排第1列","第1排第2列","第1排第3列"],["第2排第1列","第2排第2列","第2排第3列"],["第3排第1列","第3排第2列"]]

>>> print 座位表[0][2]

第1排第3列

>>> print 座位表[2][1]

第3排第2列

二维列表在某些情况下很有用

比如前面的邮政编码的代码,在输入邮政编码前2位数字和对应的省份名称的时候,要很小心的检查,如果漏写了一个,就容易匹配不上,如果改成二维数组就不容易出错了,并且代码也简洁多了。

代码如下:

课后作业

1. 找到邮政编码里面数字最多的那个省份的名字和共有几个数字,结果应该是四川省和数字4

2. 定义如下的一个座位表,然后输出座位表的每一个人的名字,同时输出是第几排第几列

右下角张鑫晨为第1排第1列

注意最后一排有空位


往期教程

0001 零基础的小白能学会编程吗?

0002 真的吗,700元的电脑可以学会编程?

0003 十分钟组装一台电脑开始编程

0004 如何编写人生的第一行代码helloworld

0005 键盘打字如何练成像黑客一样的飞速

0006 编程入门python语言之加法计算器

0007 编程入门python语言之四则运算器

第一部分前7课小结和课程规划说明及微信群主招募

0008 加减乘除也会算错?还要编写程序测试?

0009 如何编写程序计算所属星座,一看就懂

0010 人生就像死循环,只要不退出就要继续运行

0011 迷人的斐波拉契数列,数学到极致就是美,编程同样如此

0012 优秀的程序员就是用简洁优美的代码实现同样的功能

因为教程是系列教程,前后关联性非常强,请大家按照公众号的发布时间先后次序进行阅读。

作者简介

学哥,二十年编程经验,历任程序员,资深程序员,技术经理,项目经理,产品经理,系统架构师,IT总监。爱好篆刻,阅读,美食。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,608评论 18 399
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,566评论 1 118
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,743评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,646评论 18 139
  • NBN的故事41:新武器 时间:9000年2月10日 地点:其它星球 甲比安操纵火箭飞了过去,这个火箭的材料可真...
    我我了阅读 141评论 2 1