Python基本数据类型

目录


数字(小数字池:-5 ~ 257)

>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))

  (1)int整型:

    在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
    在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

  注意:在Python3中已经没有long长整型这一数据类型了,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,受机器内存限制。

  (2)float浮点型

  (3)complex复数

  (4)bool布尔值:True和False(空、0、None)

  数值运算:

>>> 5 + 4  # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7  # 乘法
21
>>> 2 / 4  # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余 
2
>>> 2 ** 5 # 乘方
32

  

  进制转换:

C:WINDOWSsystem32>python3
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x=12
>>> y=hex(x)
>>> print(y)
0xc
>>> z=oct(12)
>>> print(z)
0o14
>>> s=bin(x)
>>> print(s)
0b1100

字符串

  (1)字符串拼接

1 name='egon'
2 age='18'
3 print(name+'is'+age)
4 #egonis18字符串可以做级联运算(级联是设计一对多的关系),但是没空格,是字符串之间做,不能与其他类型
5 print(name,'is',age)
6 #egon is 18逗号能转成空格
7 print('_'.join(['my','name','is','kara']))
8 #用'_'拼接起列表,列表的元素必须都是字符串类型。
View Code

  (2)重复运算

1 apple='red '*4
2 print(apple)
3 #red red red red
View Code

  (3)strip

1 name='* egon**_*'
2 print(name.strip("*_ "))
3 #egon
4 print(name.lstrip('*'))
5 # egon**_*
6 print(name.rstrip('*_ '))
7 #* egon
View Code

  (4)format

 1 res1='{} {} {}'.format('egon',18,'male')
 2 #egon 18 male
 3 res2='{1} {0} {1}'.format('egon',18,'male')
 4 #18 egon 18
 5 res3='{name} {age} {sex}'.format(sex='male',name='egon',age=18)
 6 #egon 18 male
 7 print(res1,res2,res3)
 8 
 9 name=input('name>>')
10 x='my name is {y}'.format(y=name)#format的传递格式类似于key=value
11 print(x)#想要实现将用户输入的值传递给format就要将赋值给它
View Code

  (5)split

1 name='root:x:0:0::/root:/bin/bash'
2 print(name.split(':')) 
3 #默认分隔符为空格
4 name='C:/a/b/c/d.txt' #只想拿到顶级目录
5 print(name.split('/',1))
6 #['root:x:0:0::', 'root:/bin/bash']
7 
8 name='a|b|c'
9 print(name.rsplit('|',1)) #['a|b', 'c']从右开始切分
View Code

  (6)join

tag=' '#有一个空格能让join的个字符串间隔开,不然就是连在一起的
print(tag.join(['egon','say','hello','world'])) #可迭代对象必须都是字符串

  (7)replace

name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','ss',1))

  (8)其他方法

 1 name='the fIRST program IS hello WOrld'
 2 print(name.capitalize())
 3 #The first program is hello world首字母大写
 4 
 5 print(name.casefold())
 6 #the first program is hello world把大写变小写
 7 
 8 print(name.lower())
 9 #全小写the first program is hello world
10 
11 print(name.upper())
12 #全大写THE FIRST PROGRAM IS HELLO WORLD
13 
14 print(name.swapcase())
15 #THE First PROGRAM is HELLO woRLD翻转大小写
16 
17 print(name.endswith('female'))
18 #判断结束位,输出布尔值
19 
20 print(name.startswith('Karla'))
21 #判断起始位,输出布尔值
22 
23 print('there has three little cats.they are black and white.'.title())
24 #There Has Three Little Cats.They Are Black And White
25 
26 print(name.center(50,'*'))
27 #*********************aBccdDEfg**********************
28 
29 print(name.rjust(25,'*'))
30 #****************aBccdDEfg
31 
32 print(name.ljust(25,'*'))
33 #aBccdDEfg****************
34 
35 print(name.zfill(25))
36 #0000000000000000aBccdDEfg
37 
38 print(name.count('c'))
39 #结果是2,区分大小的
40 
41 print(name.encode())
42 #b'aBccdDEfg'将字符串编码成bytes格式
43 
44 print('hello	world'.expandtabs(10))
45 #hello     world将	转成多长的空格
46 
47 (name.find('a',3,5))
48 #find( self, sub, start, end)返回找到的第一个匹配的字符的索引位置,如果没有找到则返回-1
49 
50 age=input('>>: ')
51 print(age.isdigit())
52 #判断输入的是不是数字
53 
54 name='egon123'
55 print(name.isalnum()) 
56 #字符串由字母或数字组成
57 print(name.isalpha()) 
58 #字符串只由字母组成
59 
60 print(name.isidentifier())
61 #检测是否包含python关键字
62 print(name.islower())
63 #检测是否全小写
64 print(name.isupper())
65 #检测是否全大写
66 print('  -'.isspace())
67 #检测是否全空格
68 print(name.istitle())
69 #检测是否是标题
70 
71 print(int(' 12'))
72 #转换中有空格能被自动删掉
73 print(type(str({'a':'b',1:2})))
74 #str
View Code

  

列表(值可以是任意类型)

  (1)定义列表

Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> x=['aa','bb',123]

>>> y=list(['ac','bc',234])

>>> print(x,y)

['aa', 'bb', 123] ['ac', 'bc', 234]
fruit=['apple','banana','pear','peach','watermelon']

  (2)访问列表元素

fruit=['apple','banana','pear','peach','watermelon']

print(fruit[-1])
#watermelon

print(fruit[1:3])
#区间前闭后开['banana', 'pear']

print(fruit[1:-1])
#['banana', 'pear', 'peach']

print(fruit[:3])
#['apple', 'banana', 'pear']

print(fruit[::2])
#['apple', 'pear', 'watermelon']代表每隔一个元素就取一个

print(fruit[::-1])
#['watermelon', 'peach', 'pear', 'banana', 'apple']反向输出

print(fruit[::-2])
#['watermelon', 'pear', 'apple']反向间隔取值

  (3)增

fruit=['apple','banana','pear','peach','watermelon']

fruit.append('新增加')#增加至列表末尾
print(fruit)

fruit.insert(1,'放在banana前')#想放入的位置和新增内容
print(fruit)

num=[1,2,3,4]
fruit.extend(num)#一次性往后面加多个列表元素
print(fruit)

fruits=fruit.copy()#复制列表
print(fruits)
#['apple', '放在banana前', 'banana', 'pear', 'peach', 'watermelon', '新增加', 1, 2, 3, 4]

  (4)删

#删除del
del fruit[-1]
print(fruit)
#['apple', 'banana', 'pear', 'peach']

del fruit
print(fruit)
NameError: name 'fruit' is not defined将列表全部删除

#删除remove
fruit.remove('apple')
#remove只用于精确的删除,不用于删除整个列表
print(fruit)
#['banana', 'pear', 'peach', 'watermelon']

#pop
fruit.pop()
#取走列表最后一个元素,pop可以将取走的元素返回显示
print(fruit)
#['apple', 'banana', 'pear', 'peach']

  (5)改

fruit[0]='123'
print(fruit)
#['123', 'banana', 'pear', 'peach', 'watermelon']

  (6)查

#统计count
name=[1,2,3,1,1,1]
print(name.count(1))#4

#获取下标
print(name.index(1))
#0,只返回找到的第一个相应值的下标,从左至右查找

  (7)排序

name.sort()
#不同数据类型不能放在一起排序
print(name)
#[1, 1, 1, 1, 2, 3]

name.reverse()
#反序排列
print(name)
#[3, 2, 1, 1, 1, 1]

字典(字典的键必须是不可变类型,值可以是任意类型)

Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> x={'name':'张三','agge':18}

>>> print(x)

{'name': '张三', 'agge': 18}

>>> y={1:23}

>>> print(y)

{1: 23}

>>> z={None:12}

>>> print(z)

{None: 12}

>>> h={0:0}

>>> print(h)

{0: 0}

>>> a={False:0}

>>> print(a)

{False: 0}

>>> c={[1,2,'a']:['b','c']}

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: unhashable type: 'list'

可变类型和不可变类型的区别是当id不变的情况下,值可不可以变。可变类型有字典和列表,不可变类型有数字、字符串。

info={
    None:123,
    True:[123,456],
    'name':'egon',
    'age':18,
    'gender':'male',
    0: {12: 34, 'gender': 'male'},
    False: {'bool': False, 123: 567}
}
print(info)
'''
输出结果是:
{'name': 'egon', 'age': 18, 'gender': 'male', 0: 'bool'}
键要求是不可变类型,值可以是任意类型
'''
print(info[None])#123
print(info[True][1])#456
print(info[False]['bool'])#bool
print(info[0][12])#bool而不是输出{12: 34, 'gender': 'male'}
print(info[0][12])#KeyError: 12

info={
    None:123,
    True:[123,456],
    'name':'egon',
    'age':18,
    'gender':'male',
    False: {'bool': False, 123: 567},
    0: {12: 34, 'gender': 'male'}
}
print(info)#输出{None: 123, True: [123, 456], 'name': 'egon', 'age': 18, 'gender': 'male', False: {12: 34, 'gender': 'male'}}
print(info[0])#输出{12: 34, 'gender': 'male'}
print(info[0][12])#输出34
print(info[False])#输出{12: 34, 'gender': 'male'}
print(info[False][12])#输出34
print(info[False][123])#KeyError: 123

 字典的操作+内置方法:

employee={
    'a':{
        'age':28,
        'gender':'male',
        'salary':'15k'
    },
    'b':{
        'age':34,
        'gender':'male',
        'salary':'30k'
    }
}
#增加
employee['c']={'age':23,'gender':'female'}
print(employee)#{'a': {'age': 28, 'gender': 'male', 'salary': '15k'}, 'b': {'age': 34, 'gender': 'male', 'salary': '30k'}, 'c': {'age': 23, 'gender': 'female'}}

#修改
employee['b']['gender']='female'
print(employee)#{'a': {'age': 28, 'gender': 'male', 'salary': '15k'}, 'b': {'age': 34, 'gender': 'female', 'salary': '30k'}, 'c': {'age': 23, 'gender': 'female'}}

#删除pop
employee.pop('c')
print(employee)#{'a': {'age': 28, 'gender': 'male', 'salary': '15k'}, 'b': {'age': 34, 'gender': 'female', 'salary': '30k'}}
#删除del
del employee#写del employee('c')是删除'c'
print(employee)#NameError: name 'employee' is not defined
#删除popitem
employee.popitem()#随机删除一个键值对
print(employee)

#查找
print('c' in employee)#True,判断键是否存在
print(employee['a'].get('age'))#28

集合

s=set([3,5,2,'a',6,8])#自动排序、去重
print(s)#{2, 3, 'a', 5, 6, 8}

x=set('hello world,pretty world')
print(x)#{'d', 'o', 'e', 'h', 'p', 't', ' ', 'l', 'w', 'y', ',', 'r'}

print(s|x)#合集{2, 3, 'w', 5, 6, 'd', 8, 'r', 'p', 'o', ',', ' ', 'l', 'e', 'y', 'h', 'a', 't'}
print(s&x)#交集set()
print(s-x)#差集,在s中,但是不在x中{2, 3, 5, 6, 8, 'a'}
print(s^x)#对称差集

# x.add('a')
print(x)#添加一个元素{'p', 'l', 'e', ' ', 'o', 'r', 'w', 'd', 'y', 'a', 't', ',', 'h'}
s.update(['h','e','l','o'])
print(s)#添加多个元素{2, 3, 5, 6, 8, 'e', 'o', 'a', 'h', 'l'}

x.remove('h')
print(x)#删除一个元素{',', 'p', 'e', 'w', 'l', ' ', 'r', 'o', 't', 'd', 'y'}

print(len(x))#11

if条件语句

#!/usr/bin/env python
#coding:utf-8

name=input('name>>>')

pwd=input('password>>>')

if name == 'aa'  and pwd == '123':

    print('welcome')

else:

    print('sorry')

1.猜年龄游戏

age=input('input your age:')
height=input('input your height:')
weight=input('input your weight:')
is_pretty=True

success=False

if age>='18' and age<'22' and height>'170' and weight<'100' and is_pretty==True:
    print('上前打招呼')
elif success==True:
    print('在一起')
else:
    print('大哥,你好')

while循环语句

1.用户验证:

#!/usr/bin/env python
#coding:utf-8

name = 'seven'

pwd = 123

username = input('please input username:')

password = input('please input password:')

password = int(password)

if username==name and password==pwd:

    print('you are successful')

else:

    print('input error')

2.用户有三次验证机会

#!/usr/bin/env python
#coding:utf-8
name = 'seven'

pwd = 123

count=0

while count<3:

    count+=1

    username = input('please input username:')

    password = input('please input password:')

    password = int(password)

    if username==name and password==pwd:

        print('you are successful')

        break

    else:

        print('failed')

3.多用户验证,每个用户有三次验证机会

#!/usr/bin/env python
#coding:utf-8

dic={

    'kara1':{'pwd':'123','count':0},

    'kara2':{'pwd':'123','count':0},

    'kara3':{'pwd':'123','count':0}

}

while True:

    username=input('username>>>')

    if not username in dic:

        print('用户不存在')

        continue

 

    if dic[username]['count']>2:

        print('验证次数过多')

        break

    dic[username]['count'] += 1

 

    password=input('password>>>')

    if password==dic[username]['pwd']:

        print('login in')

        break

    else:

        print('error')

  升级版:

#在同目录下创建一个db.txt文件

#!/usr/bin/env python
#coding:utf-8

dic={

    'kara1':{'pwd':'123','count':0},

    'kara2':{'pwd':'123','count':0},

    'kara3':{'pwd':'123','count':0}

}

count=0

while True:

    username=input('username>>>')

    if username not in dic:

        print('用户不存在')

        continue

 

    with open('db.txt','r') as f:

        lock_users=f.read().split('|')

        if username in lock_users:

            print('用户%s已被锁定'%username)

            break

 

    if dic[username]['count']>2:

        print('验证次数过多,已被锁定')

        with open('db.txt','a') as f:

            f.write('%s|'%username)

        break

    dic[username]['count'] += 1

 

    password=input('password>>>')

    if password==dic[username]['pwd']:

        print('login in')

        break

    else:

        print('error')
原文地址:https://www.cnblogs.com/qiaoqianshitou/p/8603822.html