【python基础】第05回 数据类型,交互,格式化输出,运算符

上节内容回顾

1.python的注释

# 单行注释  pycharm快捷键:ctrl+?
'''多行注释'''
"""多行注释"""

2.python的编码规范(PEP8)

利用pycharm自动格式化代码的功能反向推导规范要求
1.单行注释如果跟在代码后面
    警号跟代码空两格 注释内容与警号空一格
2.符号左右两边如果有数据/变量 
    两边都应该空一格
快捷键:Ctrl+Alt+L

3.变量与常量的基本使用

1.目的是为了让计算机能够记录事物的状态
2.变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符
3.等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值(先看赋值符号的右边,再看赋值符号的左边)
# 在python中没有真正意义上的常量,在其他编程语言有真正的常量

4.名字的命名规范,风格

1.只能包含数字、字母、下划线
2.数字不能开头
3.不能与关键字冲突
4.尽量做到见名知意
5.两种风格
(1)下划线
    name_from_db = 'zhang'
(2)驼峰体
    NameFromDb = 'zhang'
    nameFronDb = 'zhang'

5.基本数据类型,整型,浮点型,字符串

"""数据类型就类似于是事物的多种不同的状态(表现形式)"""
1.整型  int
    age = 18
2.浮点型 float
    weight = 180.5
3.字符串 str
    name = 'zhang'

本章内容概要

1.基本数据类型

2.与用户交互

3.格式化输出(占位符)

4.运算符

本章内容详解

1.基本数据类型

1.1数据类型之列表(list)

1.本质
   能够存储多个数据 并且能够方便的获取整体或者局部
2.基本使用
   l1 = [1, 2, 3, 4, 5]
3.语言描述
    中括号括起来 内部可以存放多个数据值 数据值与数据值用逗号隔开 数据值可以是任意数据类型
     如:l2 = [1, 1.2, 'zhang', [1, 2]]
4.索引取值
   name_list = ['张三', '李四', '王二']
   '''索引取值:在IT领域数字的起始位置通常是从0开始 现实生活中是从1开始'''
   print(name_list) 
   结果:['张三', '李四', '王二']  #全部
   print(name_list[0])
   结果:张三  #张三
   print(name_list[2])
   结果:王二  #王二
   print(name_list[0:2])   #切片
   结果:['张三', '李四']
   # print(name_list[100])  # 索引超出范围直接报错
   例:取8
    取8
    l1 = [1, 2, [3, 4, 5, [6, 7, 8], 9]]
    '''遇到复杂构造的数据 先明确整体有几个数据值 然后再一步步拆分'''
    # 1.先取8所在的小列表
    print(l1[2])  # [3, 4, 5, [6, 7, 8], 9]
    l2 = l1[2]  # 将索引取值获取到的数据绑定给l2
    # 2.再获取8所在的小小列表
    print(l2[3])  # [6, 7, 8]
    l3 = l2[3]  # 将索引取值获取到的数据绑定给l3
    # 3.变成了最简单的索引取值情况
    print(l3[2])
    '''熟练之后 上述可以简写成一步完成'''
    print(l1[2][3][2])
    

1.2数据类型之字典(dict)

1.本质
    能够存储多个数据 并且能够方便的获取整体或者局部 并且数据具有对于解释
2.基本使用
    info_dict = {'姓名': 'jason', '年龄': 18, '爱好': 'read'}
3.语言描述
    大括号括起来 内部可以存放多个数据 数据的组织形式是K:V键值对
        K是对V的描述性性质的信息 一般是字符串
        V是真实的数据值 可以是任意数据类型
4.按K取值
     info_dict = {'姓名': 'jason', '年龄': 18, '爱好': 'read'}
    '''字典取值:字典无法使用索引取值(因为字典是无序的) 可以使用按K取值'''
    print(info_dict['姓名'])  # jason
    print(info_dict['年龄'])  # 18
    print(info_dict['家产'])  # K不存在直接报错
练习 取age
data = {'name': 'jason', 'others': [111, 222, {'a1': '嘿嘿', 'a2': '哈哈', 'a3': [123, {'name': 'jason1', 'age': 18}]}]}
(1)
print(data['others'])  # [111, 222, {'a1': '嘿嘿', 'a2': '哈哈', 'a3': [123, {'name': 'jason1', 'age': 18}]}]
l1 = data['others']
print(l1[2])  # {'a1': '嘿嘿', 'a2': '哈哈', 'a3': [123, {'name': 'jason1', 'age': 18}]}
l2 = l1[2]
print(l2['a3'])  # [123, {'name': 'jason1', 'age': 18}]
l3 = l2['a3']
print(l3[1])  # {'name': 'jason1', 'age': 18}
l4 = l3[1]
print(l4['age'])
(2)
print(data['others'][2]['a3'][1]['age'])

1.3数据类型之元组(tuple)

1.本质
    能够存储多个数据 并且能够方便的获取整体或者局部
      与列表的区别在于元组内数据值不能"直接修改" 而列表可以
    所以元组有一个小外号>>>:不可变的列表
2.作用
    一般用于存储一些只能看不能改的数据
3.基本使用
    t1 = (1, 2, 3)
4.语言描述
    小括号括起来 内存可以存放多个数据值 数据值与数据值之间逗号隔开
    数据值可以是任意数据类型
5.与列表对比    
     l1 = [1, 2, 3]
         t1 = (1, 2, 3)
         print(l1[0])
         print(t1[0])
         l1[0] = 'zhang'  # 将列表索引0重新绑定数据值jason
         print(l1)  # ['zhang', 2, 3]
         t1[0] = 'tony'  # 将元组索引0重新绑定数据值tony  直接报错!!!
         print(t1)

1.4数据类型之集合(set)

1.本质
    集合只用于去重和关系运算
    去重:自动去除重复的数据
    关系运算:判断两个集合之间数据的关系(共同好友 共同点赞)
2.基本使用
    s1 = {1, 2, 3, 4, 5}
3.定义空集合
    d1 = {}
    s1 = {}
    print(type(d1))  # dict
    print(type(s1))  # dict
    ss = set()  # 必须使用关键字才能定义空集合
    print(type(ss))

1.5数据字典之布尔值(bool)

1.本质
    用来表示事物是否可行 是否正确 是否合理
    总共就两个值
2.基本使用
    is_right = True  # 真 可以 正确
    is_delete = False  # 假 不可以 错误
3.详细介绍
    布尔值看似很简单 很少见 其实在程序中是最多的 也是使用频率最高的
    存储布尔值的名字一般使用is开头 
4.布尔值类型转换
    程序中所有的数据类型都可以转成布尔值
     布尔值为False的数据有
        0 None 空字符串 空列表 空字典 ...
        除上述之外所有的数据对于的布尔值都是True
5.所有的编程语言都有布尔值 只不过关键字和值可能有变化(了解)
    typeof true
    'boolean'  # js中就不一样

2.与用户交互

1.输入
    向计算机传递信息
    input()  # 获取用户输入
    name = input('请输入您的用户名>>>:')
    """
    1.先获取用户输入的数据
    2.再赋值给左边的名字name
    3.之后就可以通过名字name反复的使用用户输入的数据
    """
    print(name)
    input获取到的用户输入都会转成字符串类型
2.输出
    计算机向外界输出信息
    print()  # 打印数据值
    print(123)  # 括号内可以直接放数据值
    name = 'zhang'
    print(name)  # 括号内也可以放名字
       print(123,321,323)  # 括号内也可以一次性打印多个值
    print(name1,name2,name3,name4)
    print(123,name,3333,name1)
"""
换行符:\n \r \r\n  end=''
    最早起的换行是    \r\n
    后面简化成了 \n \r(不同的操作系统可能会有变化)    
不用版本的解释器
    python3.X    print()
    python2.X   print 
"""

3.格式化输出(占位符)

info = "亲爱的xxx你好!你xxx月的话费是xxx,余额是xxx"

在python中如果想要占位 需要使用占位符
%s: 支持所有数据类型替换  (以后我们使用最多的就是%s)
info1 = "亲爱的%s你好!你%s月的话费是%s,余额是%s"
print(info1 % ('zhang', 5, 100, 999999999999))
print("亲爱的%s你好!你%s月的话费是%s,余额是%s" % ('tony', 5, 999, -100))


%d: 只支持给数字占位
info2 = "亲爱的%d你好!你%d月的话费是%d,余额是%d"
print(info2 % (123, 5, 100, 999999999999))
print("亲爱的%d你好!你%d月的话费是%d,余额是%d" % (123, 5, 999, -100))

产生固定位数的数据(总共8位 不够则使用0填充)
print('%08d' % 123)  # 00000123

4.运算符

4.1算数运算符

以下假设变量a=10,变量b=20

# 变种情况
a = 10
a = a + 10  可变写  a += 10
a = a - 10  可变写  a -= 10
a = a * 10  可变写  a *= 10
a = a / 10  可变写  a /= 10

4.2比较运算符

以下假设变量a为10,变量b为20

 

 4.3多种赋值符号

例1:
x = 10
y = x
z = y
# 链式赋值
x = y = z = 10
例2:
m = 1
n = 2
# 让m绑定n绑定的数据值 让绑定m绑定的数据值
m = n
n = m 
print(m)
print(n)
#错误,结果m,n都为2
'''方式1:利用中间变量'''
a = m
m = n
n = a
print(m, n)
'''方式2:交叉赋值'''
m, n = n, m
print(m, n)
例3:
name_list = ['zhang', 'tony', 'kevin']
# 用三个不同的名字存储三个不同的人名
name1 = name_list[0]
name2 = name_list[1]
name3 = name_list[2]
'''解压赋值:赋值符号的左边至少有两个及以上的名字 才能称之为解压赋值'''
name1, name2, name3 = name_list
#述操作需要保证左边的名字和右边的数据值 个数一致
"""特殊情况 带解压的数据非常的多"""
l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
a, b, *c, d = l1  # *在解压赋值的时候会自动将多余的数据值组织成列表赋值给*号后面的变量名
print(a)  # 11
print(b)  # 22
print(c)  # [33, 44, 55, 66, 77, 88]
print(d)  # 99
*a, b, c = l1
print(a)  # [11, 22, 33, 44, 55, 66, 77]
print(b)  # 88
print(c)  # 99

作业

1.获取用户信息并打印出下列格式
    ------------ info of XXX -----------
    Name  : XXX
    Age   : XXX
    gender : XXX
    Job   : XXX 
    ------------- end -----------------

解:
name = input('请输入您的名字:')
age = input('请输入您的年龄:')
gender = input('请输入您的性别:')
job = input('请输入您的工作:')
info1 = '''
------------ info of %s -----------
Name : %s
Age : %s
gender : %s
Job : %s
------------- end -----------------
''' % (name, name, age, gender, job)
print(info1)
或 print(info1 % (name, name, age, gender, job))
print(''' ------------ info of %s ----------- Name : %s Age : %s gender : %s Job : %s ------------- end ----------------- ''' % (name, name, age, gender, job))

 

2.自行研究输入输出在python2和python3中的区别
'''python2现在几乎不用 但是我们得知道它的一些特性'''
2.1.输入的区别
    python3只有一个input()  并且都转成字符串类型
    python2有两个获取用户输入的方式
        input()
            输入的数据必须自己加上数据的特征 输啥就是啥
>>> name = input('name>>:')
name>>:123
>>> type(name)
<type 'int'>
>>> name = input('name>>:')
name>>:zhang
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'zhang' is not defined
>>> type(name)
<type 'int'>
>>> name = input('name>>:')
name>>:'zhag'
>>> type(name)
<type 'str'>
    
           还能够识别一些简单的代码(了解即可)
       raw_input()
            等价于python3里面的input 接收的数据都会转成字符串
2.2.输出的区别
        python3只有print()一种用法
      python2有两种用法 print  print()

 

posted @ 2022-06-20 20:38  |相得益张|  阅读(42)  评论(0编辑  收藏  举报