自学计划 - python 小白基础教程 - 第三课:字符串和数字

目录

简介
第一课:python 的介绍
第二课:变量与操作符
第三课:字符串和数字
第四课:条件执行语句
第五课:列表与元组
第六课:循环语句
第七课:集合
第八课:字典
第九课:函数
第十课:面向对象
第十一课:文件的操作
第十二课:学生管理系统

字符串的索引

我们在之前已经接触过字符串,它在 python 是str类型。现在让我我们来更深入地了解一下。

一个字符串是一系列字符的组合,因此我们可以通过方括号操作符号加上序号来获取单个字符。

words = '小明爱吃瓜'
print(words[1])

咦,第一个字符不是吗?为什么这里打印了,我的 python 坏掉了吗?

你的 python 没有坏掉,因为在绝大多数包括 python 的程序语言中,计数都是从 0 开始的。

index

这意味着我们使用序号0才能拿到字。

words = '小明爱吃瓜'
print(words[1])

我们取最后一个字符岂不是要先数下字符串有多少个字符,如果字符串是一篇论文,我们不是要数到脑壳疼?

这样子的话让 python 帮我们数吧,内建的len函数可以帮我们数出字符串的长度。由于序号从 0 开始,长度减 1 就是我们最后一个字符的序号。

words = '小明爱吃瓜'
length = len(words)
print('长度:', length)
print('最后一个元素是:', words[length-1])
长度: 5
最后一个元素是: 瓜

拿最后一个字符除了数长度之外我们还有更好的办法,就是用 -1 作为序号。

因为 python 里同时有另一种取值方式,那就是 -1 作为最后一个元素的序号,往前逐个递减。

index
words = '小明爱吃瓜'
print('最后一个元素是:', words[-1])
最后一个元素是: 瓜

字符串切片

字符串中的一部分叫作切片,例如"爱吃"相对于"小明爱吃瓜"。我们同样可以用方括号操作符去获取字符串的切片, 获取方式为 [a:b]。其中 a 为起始序号,b 为结束序号。
注意的是获取的切片包含 a 不包含 b

例如要获取"爱吃"

words = '小明爱吃瓜'
sliced = words[2:4]

print(sliced)
爱吃

当我们将 a 置为空时,切片结果为 b 之前不包含 b的所有字符。当我们将 b置为空时,切片的结果就为 a 之后并包含 a 的所有字符。

words = '小明爱吃瓜'
print(words[:4])
print(words[2:])
小明爱吃
爱吃瓜

a 等于 b 时返回结果为空字符串,当 ab 都置空时返回当前字符串的拷贝对象。

words = '小明爱吃瓜'
print(words[2:2])
print(words[:])

输出


小明爱吃瓜

in 操作符

in 操作符可以左右各接收一个字符串,判断左边的字符串是否被包含在右边的字符串中,返回结果是一个 bool 对象。

words = '小明爱吃瓜'
print('小明' in words)
print('小红' in words)

输出

True
False

字符串相关函数

我们依旧可以用dir查看字符串中有哪些可用的函数,并且使用 help 查看其帮助文档。

words = '小明爱吃瓜'
print(dir(words))
print(help(words.upper))
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
Help on built-in function upper:

upper() method of builtins.str instance
    Return a copy of the string converted to uppercase.

我们介绍几个常用的方法。首先是upper,将字符串的字母转换成大写。

words = 'happy'
print(words.upper())
HAPPY

很显示,对应的 lower 就是小写。

words = 'HAPPY'
print(words.lower())
happy

isdigit 的用法是判断字符串是否是书面意思上的数字。

words = '10'
print(words.isdigit())
words = '10ab'
print(words.isdigit())
help(str.isdigit)
True
False
Help on method_descriptor:

isdigit(self, /)
    Return True if the string is a digit string, False otherwise.

    A string is a digit string if all characters in the string are digits and there
    is at least one character in the string.

很多内置函数的学习可以用 help 函数去查看和了解。建议同学们可以经常使用,这里就不过多赘述了。

数字类型

常见的数字类型包括 int(整型)和 float (浮点型)。在之前我们已经用 str 类型来表示我们生活中的一些常见内容了,比如姓名、地址、小说等我们都用 str 类型进行保存。

我们还需要一些类型,来表示我们的体重、年龄、商品的价格等数据,并且能对他们进行数学上的运算。这时就需要intfloat类型。为什么需要定义两种类型呢?

因为对于 int(整型)的数据,它可以用来表达次数的概念。我去了两次北京,而不能说我去了 2.5 次北京。因此在使用上整数与带小数的数字必须有所区分,所以把数字分成 intfloat两个类型。

int 整型

当我们给变量赋值一个不带小数点的数字时,这个变量就默认为int(整型)。

n = 12
print(type(n))
<class 'int'>

注意,两个整型经过除法运算后,不管结果是不是书面意义上的整数,其都为 float (浮点型)。

n = 4 / 2
print(type(n))
<class 'float'>

float 浮点型

一个数字只要带有 . 都为浮点型。

f1 = 1.5
f2 = 1.
f3 = .5
print(f1, type(f1))
print(f2, type(f2))
print(f3, type(f3))
1.5 <class 'float'>
1.0 <class 'float'>
0.5 <class 'float'>

练习

1.定义姓名、年龄、身高三个变量来保存关于你自身的数据,你能说出他们分别属于什么类型吗?
2.打印出你姓名中的姓,假设你是慕容XX复姓的话又该如何?

解析

1.定义姓名、年龄、身高三个变量来保存关于你自身的数据,你能说出他们分别属于什么类型吗?

name = '小明'
age = 18
height = 1.8

print('name 的类型是:', type(name))
print('age 的类型是:', type(age))
print('height 的类型是:', type(height))
name 的类型是: <class 'str'>
age 的类型是: <class 'int'>
height 的类型是: <class 'float'>

2.打印出你姓名中的姓,假设你是慕容XX复姓的话又该如何?

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

推荐阅读更多精彩内容