默默的学python(一)——数据类型

一、Python语言概览

老生常谈了,但是追本溯源有时候会有它意想不到的好处,全在个人悟性了。

Python的作者,Guido von Rossum,确实是荷兰人。1982年,Guido从阿姆斯特丹大学(University of Amsterdam)获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,尽管拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的活儿。

在那个时候,他接触并使用过诸如Pascal、C、 Fortran等语言。这些语言的基本设计原则是让机器能更快运行。所有的编译器的核心是做优化,以便让程序能够运行。为了增进效率,语言也迫使程序员像计算机一样思考,以便能写出更符合机器口味的程序。在那个时代,程序员恨不得用手榨取计算机每一寸的能力。

然而,这种思考方式让Guido感到苦恼。Guido知道如何用C语言写出一个功能,但整个编写过程需要耗费大量的时间 。他的另一个选择是shell。然而,shell的本质是调用命令。它并不是一个真正的语言。比如说,shell没有数值型的数据类型,加法运算都很复杂。总之,shell不能全面的调动计算机的功能。

Guido希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程。
1989年,为了打发圣诞节假期,Guido开始写Python语言的编译/解释器。Python来自Guido所挚爱的电视剧Monty Python’s Flying Circus 。他希望这个新的叫做Python的语言,能实现他的理念(一种C和shell之间,功能全面,易学易用,可拓展的语言)。Guido作为一个语言设计爱好者,已经有过设计语言的(不很成功)的尝试。这一次,也不过是一次纯粹的hacking行为。

1991年,第一个Python编译器(同时也是解释器)诞生。它是用C语言实现的,并能够调用C库(.so文件)。从一出生,Python已经具有了:类(class),函数(function),异常处理(exception),包括表(list)和词典(dictionary)在内的核心数据类型,以及模块(module)为基础的拓展系统。

二、数据类型

Number类型

int 整型 (正整形 0 负整型)
float 浮点型即小数
bool 布尔型 (True 真 False假)
插一个
complex 复数类型
#表达方式一:
      complexvar = 5 + 6j
      complexvar = 3 - 2j
      print(type(complexvar))
      print(id(complexvar))

#表达方式二:  
		  complex(实数,虚数)
      res = complex(14,2)
      print(res)   => (14,2)

容器数据类型

str 字符串型

'''用引号引起来的就是字符串,三种引号:单引号  双引号  三引号'''

转义字符:\  (1)把有意义的字符转变为无意义的字符
        (2)把无意义的字符转变的有意义

     \n  或者 \r\n :   代表"换行"意思
     \t      	 :   代表"一个缩进"意思
     \r      	 :   代表将\r后面得所有字符拉到该行首  

至于其他转义字符,这里不多赘述

特征:可以获取,但不可以修改,有序排列
获取字符串中的数据:跟列表list 元组tuple的取值一模一样(正向下标,反向下标)

元字符串

‘’‘元字符串可以让转义字符失效’’’
str1 = r"本来\n无一物"
str2 = r"F:\work\home"
print(str1)
print(str2)

在这里插入图片描述

字符串的格式化

“%d %f %s”  语法 : “字符串” % (实际值)
%d 占位符 d代表整型数据,%nd表示占n个位置

str3 = '他买了%d个苹果' % 3
print(str3)

"""输出结果"""
他买了3个苹果

%f 占位符 f代表浮点型数据 默认保留6位小数点,f前面有数值,则根据数值是多少保留对应小数点

str4 = "今天白菜%f一斤" % 2.35
print(str4)
# 结果为:今天白菜2.350000一斤
# %.2f 保留两位小数,存在四舍五入的情况
str5 = "今天白菜%.2f一斤" % 2.356
print(str5)
# 结果为:今天白菜2.36一斤

%s 占位符 代表字符串

str6 = "%s" % "小白"
print(str6)
# 结果为:小白

list 列表型([])

‘’‘特征:可以获取和修改数据,排列有序’’’

在这里插入图片描述

列表的修改

在这里插入图片描述

tuple 元组型 ( () )

获取元组中的数据 : 跟列表list的取值一模一样 (正向下标,反向下标)
实例(Python 3.0+)

tup1 = (‘Google’, ‘Runoob’, 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = “a”, “b”, “c”, “d” # 不需要括号也可以
type(tup3)
<class ‘tuple’>
tup1 = ()
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:

实例(Python 3.0+)

tup1 = (50)
type(tup1) # 不加逗号,类型为整型
<class ‘int’>

tup1 = (50,)
type(tup1) # 加上逗号,类型为元组
<class ‘tuple’>

set 集合型 ({})

集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:

parame = {value01,value02,...}
或者
set(value)

dict 字典 ( {“aaa”:“bbb”,})

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = { key1 : value1, key2 : value2, key3 : value3 }
 特征 : 可以获取,可以修改,无序排列
	   底层使用了哈希算法,储存的数据是散列,键值对储存的数据
	   获取字典当中的数据:可以获取,直接输入冒号左边的键即可取值的数据
	   修改字典当中的数据:可以修改,直接将要改的值替换掉 键 就可实现修改
	   一般在命名字典的键时,推荐使用字符串,按照变量命名的字符串.

补充

获取数据类型的函数:type()
获取变量地址的函数:id()

三、四则运算

在这里插入图片描述
不过,对于这么多的算术运算符,我建议你先看一遍,有个大致的印象就行。你可以先把这张图保存上,等用的时候再找出来,对应着查阅就可以。
咱们再说说一样的——运算优先级:Python世界的运算优先级,和我们平时的计算优先级是一样的

四、字符串拼接

1、利用三个单引号和+号

这里我用python写了一个用户交互,就是需要用户输入一下name、age、job和salary,之后定义了一个参数info(最外面那三个单引号的作用是多行打印),然后我们再用print打印。就可以把用户输入的参数打印出来了,但是这种方法因为所占存储较大所以并不推荐,具体代码和效果如下:

name=input("name:")
age=input("age:")
job=input("job:")
salary=input("salary:")

info='''
--------info of '''+name+''' -------
Name: '''+name+'''
Age:'''+age+'''
Job:'''+job+'''
Salary:'''+salary+'''
'''
print(info)

输出结果如下图:
在这里插入图片描述

2、是利用了%s

这里的%s就相当于java里边的string字符串类型,同样的%d是指数字类型,%f是指浮点类型。%s相当于是一个占位符,我在info的最后,通过%()来依次定义每个占位符上的字符串分别是什么。注意这里的顺序一定不能错。代码如下:

name=input("name:")
age=input("age:")
job=input("job:")
salary=input("salary:")

info='''
--------info of  %s -------
Name: %s
Age:%s
Job:%s
Salary:%s
'''%(name,name,age,job,salary)

print(info)

这里还可以有一个拓展,大家看这里的age,我们看着它是个数字对不对,这样,我们来打印一下它的数据类型,输入一下print(type(age)),我们会发现输出的是str,就是字符串。这就说明这里的age默认是字符串的格式。那么怎么让它变成我们想要的数字格式呢?这个时候我们可以用int()方法来强制转换,就是把原来的age=input(“age:”)改成age=int(input(“age:”)) ,这样age就是数字类型了。
输出结果如下图:
在这里插入图片描述

3、是利用了{}大括号和里边的参数

注意括号里边并不是变量而是我自己定义的一个参数,所以我这里加了一个下划线,然后最后用了.format()方法来格式化,就是给每个参数赋值,把变量的值赋给了参数,这种方法是比较常用且推荐的。代码和效果如下:

name=input("name:")
age=input("age:")
job=input("job:")
salary=input("salary:")

info2='''
--------info2 of {_name} -------
Name:{_name}
Age:{_age}
Job:{_job}
Salary:{_salary}
''' .format(_name=name,_age=age,_job=job,_salary=salary)

print(info2)

输出结果如下图:
在这里插入图片描述

4、最后一种方法和第三种类似

都是利用了大括号{},只不过这里的大括号里边不再是参数,而是数字,这个数字有点类似于数组下标的意思,相当于定义了数组的顺序。在最后我们利用.format() 方法直接定义第0个是哪个变量、第一个是哪个变量…以此类推。代码和效果如下:

name=input("name:")
age=input("age:")
job=input("job:")
salary=input("salary:")

info3='''
--------info2 of {0} -------
Name:{0}
Age:{1}
Job:{2}
Salary:{3}
''' .format(name,age,job,salary)

print(info3)

输出结果如下图:
在这里插入图片描述

五、强制类型转换

函数作用
int(x)将x转换成整数类型
float(x)将 x 转换成浮点数类型
complex(real, [,imag])创建一个复数
str(x)将 x 转换为字符串
repr(x)将 x 转换为表达式字符串
eval(str)计算在字符串中的有效 Python 表达式,并返回一个对象
chr(x)将整数 x 转换为一个字符
ord(x)将一个字符 x 转换为它对应的整数值
hex(x)将一个整数 x 转换为一个十六进制字符串
oct(x)将一个整数 x 转换为一个八进制的字符串

标准输入输出

print()函数

# 括号内是数字的情况
print(520)

# 括号内是单引号的情况。
print('一起玩吧')

# 括号内是双引号的情况。
print("一起玩吧")

# 括号内单双引号同时存在的情况。
print("Let's play")

# 当然,括号内也可以是三引号,参考上面单双同时出现的情况就知道了。

之所以现在才说输入输出,是因为这里面实在可以包含太多东西了,不要被上面的这几个例子所迷惑,print可以打印各种数据类型

input()函数

首先,让我们通过一段代码,来看一看input()函数是如何使用的:

input(‘请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:’)

input('请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:')

input()函数是输入函数。就上面例子来讲,它需要你输入针对括号内’请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:'的答案。
所以,当你在函数的括号内写出问题时,input()函数会将此问题原样显示在屏幕上,并在终端区域等待你针对此问题的回答。

可是,我们为什么要在终端处输入回答呢?不输入行不行?
事实上,我们可以把input()函数当作一扇链接现实世界与代码世界的门。
当问题从代码世界传递给我们,可我们却没有回答时,这扇等待输入的input()大门,就会一直处于敞开状态,一直等着你往里送回答。
注意点

对于input()函数来说,不管我们输入的回答是什么,不管你输入的是整数1234,还是字符串『隐形斗篷是我最想拥有的魔法』,input()函数的输入值(搜集到的回答),永远会被【强制性】地转换为【字符串】类型。

这时候就要对输入的数据进行强制类型转换了:choice = int(input(‘请输入您的选择:’))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值