首页 > 技术文章 > python语法之数据类型简介和运算符简介

jiangxianseng 2019-11-02 20:12 原文

一、与用户的交互

1.输入

python2.x版本与python3. x版本在input上有些许区别

  • python2.x中,input一定要声明字符类型

        # 示例
    >>>name = input('输入什么就是什么类型')
    >>>print(name)
    >>>print(type(name))
    >>>'你好'   # 输入带引号的字符串
    >>>'你好'  # 打印出来的也会是字符串格式
    >>><type 'str'>
  • python3.x中,input任何内容都会存成字符串类型,然后赋值给左边的变量名

    示例:
    age = input("请输入您的年龄:")
    print(age)
    print(type(age))

    请输入您的年龄:18
    18
    <class 'str'>

    总结:python2中的raw_input与python3中的input是相同作用的

2.输出

  • 换行符

print('hello world')
hello world  # 只输出一个值

print(1,2,3)
1,2,3    # 用逗号可以输出多个值

# 注意:默认print功能中有一个重要的参数,为end='\n'(代表换行的意思,这就是为什么每个print打印都会重新换一行的原因),可以将'\n'换成任意其他字符,换行功能都会失效
例:
print('aa',end='')  # 不换行
print('bb',end='@')   # 不换行
print('cc',end='\n')   # 换行
print('dd')    # 可以省略,表示换行


aabb@cc
dd
  • 格式化输出

    • %s(接收任意类型的值)和%d(只能接收整型)两种占位符

    示例:
    name = '小新'
    age = 18
    pd = 121212121
    print("请输你的名字:%s,你的年龄:%s,你的密码:%d" %('小新',18,121212121))

     

    • .format

    name = '小新'
    age = 18
    pd = 121212121
    print("请输你的名字:{},你的年龄:{},你的密码:{}" .format('小新',18,121212121))  # 不指定位置时按照顺序传值

    print("请输你的名字:{name},你的年龄:{age},你的密码:{pd}".format(age=age,name=name,pd=pd))   # 指定位置进行传值,可以调换顺序

    print("请输你的名字:{0},你的年龄:{1},你的密码:{2}".format('小新',18,121212121))   # 索引传值



    请输你的名字:小新,你的年龄:18,你的密码:121212121
    请输你的名字:小新,你的年龄:18,你的密码:121212121
    请输你的名字:小新,你的年龄:18,你的密码:121212121
    • f-string (python3.6之后的版本才有)

    name = '小新'
    age = 18
    pd = 121212121
    print(f"请输你的名字:{name},你的年龄:{age},你的密码:{pd}")
    # 指定变量名进行传值


    请输你的名字:小新,你的年龄:18,你的密码:121212121

二、基本数据类型

1.整型(int)

比如年龄,,身份证号等可以用整数来描述的信息称之为整型(用int表示)

age = 18
print(age)
print(type(age))


18
<class 'int'>

注意:python2.x中

数值在[-24xxxxxxxx,24xxxxxxxx]范围内,是整型(int)

不在这个区间范围内是长整型(用long表示)

2.浮点型(flot)

比如人的升高,体重,薪资等用小数来描述的信息称之为浮点型

high = 175.6
print(high)
print(type(high))



175.6
<class 'float'>

3.字符串(str)

用来描述数据的状态一串字符,用单引号,双引号,三引号都可以定义字符串,例如"你好";'你好';"""你好""",注意引号可以套嵌,例如print("姓名,'爱好'")

字符串可以进行的运算

name = 'Tom'   # 注意使用加的时候是重新开了一个内存空间
hob = 'read'
print(name+hob)

Tomread


name = 'Tom'
print(name*3)


TomTomTom

 

4.列表(list)

列表类型同时记录多个同属性的值,存取也十分方便.

示例:user_name['张三','李四','王五']

列表是通过索引来取值,从左往右依次是从0开始计数

示例:
user_name = ['张三','李四','王二']
print(user_name[0])
print(type(user_name[0]))
print(id(user_name))
print(id(user_name[0]))   # 注意地址是不一样的
print(id(user_name[1]))

张三
<class 'str'>
1629590540872
1629591847344
1629591846960

也可以列表套嵌和取值
user_name = ['张三','李四','王二',['read','sing']]
print(user_name[3][1])

sing



5.字典(dict)

字典用一个变量记录多个不同属性的值,比如人的身高,年龄,身高等,通过key:value的形式来存储数据,key可以对value有描述性的功能。

示例:person_info = {'name':'li','age':'18','height':180.5}

字典可以嵌套,嵌套取值如下

students=[{'name':'tony','age':38,'hobbies':['play','sleep']},          {'name':'jack','age':18,'hobbies':['read','sleep']},          {'name':'rose','age':58,'hobbies':['music','read','sleep']}, ]
print(students[1]['hobbies'][1])

6.布尔(bool)

判断,只有真假两种状态:True或者False,通常在if判断中用到。

三、运算符

python支持的算数运算符与数学上计算的符号使用是一致的,我们以x=9,y=2为例来依次介绍它们

img

1.比较运算符

比较运算用来对两个值进行比较,返回的是布尔值True或False,我们以x=9,y=2为例来依次介绍它们 img

2.赋值运算符

python语法中除了有=号这种简单的赋值运算外,还支持增量赋值、链式赋值、交叉赋值、解压赋值,这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简。我们以x=9,y=2为例先来介绍一下增量赋值

3.增量赋值

img

4.链式赋值

如果我们想把同一个值同时赋值给多个变量名,可以这么做

>>> z=10
>>> y=z
>>> x=y
>>> x,y,z
(10, 10, 10)

链式赋值指的是可以用一行代码搞定这件事

>>> x=y=z=10
>>> x,y,z
(10, 10, 10)

我们定义两个变量m与n

>>> m=10
>>> n=20

5.交叉赋值

如果我们想将m与n的值交换过来,可以这么做

>>> temp=m
>>> m=n
>>> n=temp
>>> m,n
(20, 10)

交叉赋值指的是一行代码可以搞定这件事

>>> m=10
>>> n=20
>>> m,n=n,m # 交叉赋值
>>> m,n
(20, 10)

6. 解压赋值

如果我们想把列表中的多个值取出来依次赋值给多个变量名,可以这么做

>>> nums=[11,22,33,44,55]
>>>
>>> a=nums[0]
>>> b=nums[1]
>>> c=nums[2]
>>> d=nums[3]
>>> e=nums[4]
>>> a,b,c,d,e
(11, 22, 33, 44, 55)

解压赋值指的是一行代码可以搞定这件事

>>> a,b,c,d,e=nums # nums包含多个值,就好比一个压缩包,解压赋值因此得名
>>> a,b,c,d,e
(11, 22, 33, 44, 5)

注意,上述解压赋值,等号左边的变量名个数必须与右面包含值的个数相同,否则会报错

#1、变量名少了
>>> a,b=nums
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)

#2、变量名多了
>>> a,b,c,d,e,f=nums
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 6, got 5)

但如果我们只想取头尾的几个值,可以用*_匹配

>>> a,b,*_=nums
>>> a,b
(11, 22)

ps:字符串、字典、元组、集合类型都支持解压赋值

7.逻辑运算符

逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False

img

8. 连续多个and

可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。

>>> 2 > 1 and 1 != 1 and True and 3 > 2 # 判断完第二个条件,就立即结束,得的最终结果为False
False

9. 连续多个or

可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False

>>> 2 > 1 or 1 != 1 or True or 3 > 2 # 判断完第一个条件,就立即结束,得的最终结果为True
True

10. 混用and、or、not

# and、or、not三者如果混用时,是存在优先级之分的,但在日常开发中我们无需记忆优先级,应该使用()来区分优先级、提升程序的可读性
>>> (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
False

 

推荐阅读