上一节我们通过一个helloworld程序学习python的一些简单操作,还有输入与输出

这节我们来讲Python的数据类型与变量的操作

Python的交互器

在讲这个之前,我要先讲一下python的交互器,之后讲解代码(除了做简单项目)都在交互器上进行,这样可能比较直接一些,有利于刚接触python的人理解代码

python在命令行自带一个交互器,我们可以直接通过输入python进入python的交互器

但是他的功能并不是很齐全,比如代码着色,和变量的提示,以及操作shell命令的功能都没有

所以我在这推荐一款更强大的Python“交互器Shell”,IPython

IPython 是一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。

例如可以直接在ipython中直接使用Linux命令,如 ls  命令查看文件夹下的文件

安装ipython只需要执行以下命令即可

pip install ipython

 使用ipython只需要输入ipython即可

Python中操作数字

在交互器中,Python语言可以和自然语言一样处理数学的计算,例如

In [1]: 4+4
Out[1]: 8 In [2]: 100 - 6*3
Out[2]: 82 In [3]: (100 - 5*6) / 10
Out[3]: 7.0 In [4]: 10 / 3
Out[4]: 3.3333333333333335

  注意在Python中进行除法时只返回浮点数,也就是带小数点的数

整型 int

像4, 45, 255, 2455这些都是整型数字

浮点数 float

像5.0,3.1415,5.733都是浮点数

前面讲了进行除法时使用" / "只会返回一个浮点数

如果你想返回一个整数,那么你就可以使用" // "操作符

In [5]: 20 / 3
Out[5]: 6.666666666666667 In [6]: 20 // 3
Out[6]: 6

取余操作符" % "

例如

In [8]: 30 % 4    #30取4的余数
Out[8]: 2 In [9]: 4 * 7 + 2
Out[9]: 30

  

次方操作符 " ** "

例如

In [10]: 4 ** 2    #4的二次方
Out[10]: 16 In [11]: 2 * 4 #2的四次方
Out[11]: 8

  

注意:进行负数的次方运算时最好把负数加上括号

In [27]: -2**4
Out[27]: -16 In [28]: (-2)**4
Out[28]: 16

  

赋值符号 " = "

把一个数值赋给一个变量

例如

In [14]: height = 12.5    #长

In [15]: width = 5    #宽

In [16]: area = height * width  #面积

In [17]: print(area)
62.5

  

需要注意的是一个变量必须要在使用时对其赋初值定义


混合数据类型的计算

在进行混合类型的计算时,Python的解释器总是会在整数与浮点数的计算中返回一份浮点数

In [19]: 7 * 8 - 2.00
Out[19]: 54.0

  

操作浮点数的精度 "round"

round()方法需要传入两个参数,第一个是要操作的数字,第二个是浮点数的精度

例如

In [25]: PAI = 3.1415926535 

In [26]: round(PAI, 2)
Out[26]: 3.14

  

Python中操作字符串(string)

在Python中,字符串是最常用的数据类型,当然数值也不例外,

申明一个字符串可以用 '  ' 和 ''  ''

在输出单引号和双引号时我们可以使用转义符号"  \  "

例如

In [29]: 'hello world'
Out[29]: 'hello world' In [30]: "hello world"
Out[30]: 'hello world' In [31]: " PHP是世界上\"最好\"的语言 "
Out[31]: ' PHP是世界上"最好"的语言 '

  

在这里我们稍微扩展以下,常见的转义字符

转义字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

注意:python的print()方法是默认换行输出的,只有使用输出方法时,\n才会生效,例如

In [4]: talk = "你好\nPython"

In [5]: talk
Out[5]: '你好\nPython' In [6]: print(talk)
你好
Python

  

当然如果你不这么麻烦,想直接输入一段话,不考虑转义,这是你就可以使用原始字符串,把要输出的字符串加上引号,然后在前面加上 r 即可

例如

输出一段路径时

In [7]: print("D:\notepad++\bin")
D:
otepad+in In [8]: print(r"D:\notepad++\bin")
D:\notepad++\bin

  

当然除了上面的方法,还有一个就是用python的格式化输出

格式化输出 '''   ....   '''

如果想要格式化输出一行或多行文本时,就可以用 三引号 来输出

例如输出一个人的基本信息

In [9]: info = ''' name: %s   age: %d   '''%("susmote",18)

In [10]: print(info)
name: susmote age: 18

  

多行输出时

In [12]: print('''\
...: name : %s
...: age : %d
...: '''%("susmote",18) )
name : susmote
age : 18

  

字符串的连接输出

python作为一门弱类型语言,你可以花式操作字符串

例如要重复输出一段字符串时,其他语言只能通过循环去完成,而python除了循环,你还可以对他进行数学操作,例如

In [15]: 'h' + 'e' + 2*'l' + 'o'
Out[15]: 'hello'

  

当然你也可以不用加号

In [19]: 'h' 'e' +2*'l'+ 'o'
Out[19]: 'hello'

  

注意,不能把一个变量跟字符串直接相连(不加“ + ”号)

字符串索引切片

字符串,通俗来讲也就用字符连接成的串,那么我们怎么能够获取其中包含的字符呢,这时我们就要用到索引(index)了,只需要在字符串后面加'' [ index ] '',index代表你要获取的字符顺序

注意索引都是从0开始的,这个目前市场上主流语言都适用

例如

In [30]: name = "susmote"

In [31]: name[0]
Out[31]: 's' In [33]: name[1]
Out[33]: 'u'

  

除了用正序索引,我们也可以使用倒序索引,用" - "开始

In [34]: name[-1]  相当于name[6]
Out[34]: 'e' In [35]: name[-2]  相当于name[5]
Out[35]: 't'

  

字符串的切片

用上面的方法我们每次最多也只能获取一个字符,但是如果我们想获取多个字符该怎么办呢,这时就要用到切片了

切片操作,只需要在字符串后加   [ index1 : index2 ],注意两个index之间用" : "(分号)隔开,index1代表开始的字符,index2代表结束的字符

注意切片是 包头不包尾的

例如以下例子

In [43]: name = 'susmote'

In [44]: name[0:1]
Out[44]: 's' In [45]: name[0:2]
Out[45]: 'su' In [46]: name[0:6]
Out[46]: 'susmot' In [47]: name[0:7]
Out[47]: 'susmote'

  

也可以不加索引(开始的索引和结束的索引),默认index1(开始字符的索引)是0,index2(结束字符的索引)是最后的字符索引加1

例如

In [49]: name[:]
Out[49]: 'susmote' In [50]: name[0:]
Out[50]: 'susmote' In [51]: name[:7]
Out[51]: 'susmote'

  

切片也可以用" - "  倒序索引

但是切片是按照正序来操作的,所以针对复杂的切片还是要仔细分析索引

In [72]: name[-1:]
Out[72]: 'e' In [73]: name[:-1]
Out[73]: 'susmot' In [74]: name[-7:-1]
Out[74]: 'susmot'

  

索引的结构如下

+---+---+---+---+---+---+---+
| s | u | s | m | o | t | e |
+---+---+---+---+---+---+---+
 0   1  2  3  4   5 6
-6 -5 -4 -3 -2 -1

  

如果开始字符的索引超出了字符的长度,那么什么都不会输出

如果结束字符的索引超出了字符的长度,那么只会输出开始的字符到整个字符串的最后一个字符索引

In [75]: name[40:]
Out[75]: '' In [76]: name[3:40]
Out[76]: 'mote'

  

注意字符串类型是不可以被改变的,你不能对索引对象和切片对象进行赋值

获取字符串的长度

获取的字符串的长度我们可以通过 len() 方法来获得

In [79]: well = "susmote very smart"

In [80]: len(well)
Out[80]: 18

  

数值和字符串简单的我们就讲到这里,下一节在介绍python其他的数据类型

04_Python的数据类型1数值和字符串_Python编程之路的更多相关文章

  1. 03-第一个脚本程序以及输入输出_Python编程之路

    上节课已经教大家安装了Python的解释器,那么这节课我们就可以正式来写代码了 说明:在下面的代码演示中,我将大部分使用python交互器演示代码的输入输出,注意">>>& ...

  2. 06_Python的数据类型3元组,集合和字典_Python编程之路

    上一节跟大家讲了Python的列表,当然不是完整的讲完,后续我们还会提到,这一节我们还是来讲Python的数据类型 首先要讲到的就是元组 元组其实拥有列表的一些特性,可以存储不同类型的值,但在某些方面 ...

  3. 01-Python的介绍_Python编程之路

    首先用一句业内非常出名的话来介绍Python "人生哭短,我用Python" 这也是Python宣传时经常说的一句话 从这句话中,可以非常清楚Python他到底优点在哪里,为什么要 ...

  4. 09_Python定义方法_Python编程之路

    有关Python判断与循环的内容我们上几节已经跟大家一起学习了,这一节我们主要针对def 做一个讲解 def 定义一个方法 在项目编程中,我们往往要做很多重复的事,比如一个排序的功能(当然Python ...

  5. 07_Python的控制判断循环语句1(if判断,for循环...)_Python编程之路

    Python的数据类型在前几节我们都简单的一一介绍了,接下来我们就要讲到Python的控制判断循环语句 在现实编程中,我们往往要利用计算机帮我们做大量重复计算的工作,在这样的情况下,需要机器能对某个条 ...

  6. 02-Python的下载和安装_Python编程之路

    原文发布在特克斯博客www.susmote.com 之前给大家讲了关于python的背景知识,还有Python的优点和缺点,相信通过之前的介绍很多人已经清楚自己到底要不要选择学习Python,如果已经 ...

  7. 10_Python函数方法加深_Python编程之路

    上节课已经简单的跟大家讲了如何定义一个方法,但是并没有深入去讲,这一节我们继续来学习定义方法中需要注意的几点 默认参数 前面我们讲到定义一个方法时是可以传递参数的,除了这个功能,实际上python在定 ...

  8. 11_Python的列表推导式_Python编程之路

    上一节我们结束了有关python的方法相关内容 这一节我们先来学习python的列表推导式 之前跟大家说过range方法的使用,在这里我就不做过多的解释了,如忘记了,请翻阅之前的介绍 列表推导式,是P ...

  9. 12_Python的(匿名函数)Lambda表达式_Python编程之路

    Python作为一门高级语言,与很多编程语言一样都具有匿名函数这一特征 匿名函数,也就Lambda表达式,通俗来讲就是不用命名的方法,直接定义,直接用即可 创建匿名函数需要用到Lambda关键字,下面 ...

随机推荐

  1. 移动端web开发安卓和ios客户端在时间转换上的差异性问题

    作为一名移动前端开发的人员,平时遇到的兼容性问题不在少数.那么,今天就来说一下最近遇到的一个小坑(关于Android和ios在时间转换上的差异性问题)话不多说,直接上重点. 最近接到了一个需求,很简单 ...

  2. Octave 命令积累

    Octave Learning : puts all elements into a single vector :put B at A's right :put B at A's Bottom :将 ...

  3. jQuery框架-1.基础知识

    jQuery简介 jQuery,顾名思义是JavaScript和查询(Query),jQuery是免费.开源的.它可以简化查询DOM对象.处理事件.制作动画.处理Ajax交互过程且兼容多浏览器的jav ...

  4. RobotFramework下的http接口自动化Get Response Status 关键字的使用

    Get Response Status 关键字用来获取http请求返回的http状态码. 示例1:访问苏宁易购网站上的http推荐接口,使用Get Response Status 关键字来获取返回的h ...

  5. Java解析YAML和Android解析YAML

    一.Java解析YAML 1. API的选择 一般分两种:Jyaml和snakeYAML.(Jyaml下载地址:http://download.csdn.net/detail/dgssfgfs/847 ...

  6. 描述下@Component,@Repository,@Service,@Scope,@Autowired,@Inject,@Value标记的作用

    1.@Component为通用注解. 2.@Repository为持久层组件注解. 3.@Service为业务层组件注解. 4.@Scope为Bean的作用域注解. 5.@Autowired,@Inj ...

  7. [Luogu3936]Coloring

    Luogu sol 模拟退火呀 初始状态按顺序涂色,让同种颜色尽量放在一起. 每次随机交换两个位置,注意\(\Delta\)的计算 瞎JB调一下参数就行了 可以多做几次避免陷入局部最优解 code # ...

  8. 【BZOJ2693】jzptab

    Time Limit: 5000 ms Memory Limit: 512 MB description 给你\(n, m\),求\(\sum\limits_{i=1}^{n}\sum\limits_ ...

  9. PHP 反射类学习记录

    原文:http://www.upwqy.com/details/58.html 1 开发环境 windows TP5 参考文档 http://php.net/manual/zh/class.refle ...

  10. angular路由详解六(路由守卫)

    路由守卫 CanActivate: 处理导航到某个路由的情况. CanDeactivate:处理从当前路由离开的情况. Resole:在路由激活之前获取路由数据. 1.CanActivate: 处理导 ...