一.变量
变量就是指变化的量
1.为什么要有变量
程序本质上是一种变化的状态,所以要有一种变化的机制来对应程序变化的状态或者记录保存这种状态的变化
2,变量是如何定义的
例如:x=‘qwer‘(变量名-等于-变量值)
3.变量是如何规范的
变量名开头不能是数字
变量名的关键字不能是python的关键字
‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘
变量名只能是字母,下划线,数字的任意组合
4.定义方式
驼峰体:AgeOfOldbaby
下划线体:age_of_oldbaby
5定义变量名不好的方式
拼音,中文,词不达意
6.变量会有id,type,value
1 等号比较的是value,
#2 is比较的是id
#强调:
#1. id相同,意味着type和value必定相同
#2. value相同type肯定相同,但id可能不同,如下
>>>x=‘Info Egon:18‘
>>> y=‘Info Egon:18‘
>>> id(x)
>>> id(y)
>>>
>>> x == y
True
>>> x is y
False
常量:不变的量
二.用户人机交互
在python3里的input相当于python2里的raw_input
在python3中 input:用户输入任何值,都存成字符串类型 在python2中 input:用户输入什么类型,就存成什么类型 raw_input:等于python3的input
注释:
1.表示放法:单行用#
多行用‘‘‘ ‘‘‘
作用:便于理解代码的意思,可以用中文或者英文表示
文件头:
#!/usr/bin/env python # -*- coding: utf-8 -*-
三.基本数据类型
int整型(年龄,年代,人数,身份证id等)/float浮点型(身高,体重,时间)
四.字符串
定义:加了‘‘ " " ‘‘‘ ‘‘‘的任意字符
三者没有什么区别,唯一的区别就是三引号是多行,单双引号要考虑单双配合
字符串的拼接(可以相加或者相乘)
例如:
a=‘qw‘ age=‘11‘ name+age #相加其实就是简单拼接 ‘qw11‘ >>> name*5 ‘egonegonegonegonegon‘
注意:只能字符串加字符串,不能字符串加其他类型
列表
在[]内用逗号分隔,可以存放n个任意类型的值 定义:students=[‘egon‘,‘alex‘,‘wupeiqi‘,] #students=list([‘egon‘,‘alex‘,‘wupeiqi‘,])
嵌套列表如何取值:
students_info=[[‘egon‘,18,[‘play‘,]],[‘alex‘,18,[‘play‘,‘sleep‘]]] students_info[0][2][0] #取出第一个学生的第一个爱好 ‘play‘
字典:重点知识
为何还要用字典?
存放一个人的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,我们完全可以基于刚刚学习的列表去存放,如下
info=[‘egon‘,‘male‘,18]
定义列表的目的不单单是为了存,还要考虑取值,如果我想取出这个人的年龄,可以用
info[2]
但这是基于我们已经知道在第3个位置存放的是年龄的前提下,我们才知道索引2对应的是年龄
即:
#name, sex, age
info=[‘egon‘,‘male‘,18]
而这完全只是一种假设,并没有真正意义上规定第三个位置存放的是年龄,于是我们需要寻求一种,即可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value,这就用到了字典
在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
定义:info={‘name‘:‘egon‘,‘age‘:18,‘sex‘:18} #info=dict({‘name‘:‘egon‘,‘age‘:18,‘sex‘:18})
用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值
字典的嵌套取值
info={ ‘name‘:‘egon‘, ‘hobbies‘:[‘play‘,‘sleep‘], ‘company_info‘:{ ‘name‘:‘Oldboy‘, ‘type‘:‘education‘, ‘emp_num‘:40, } } print(info[‘company_info‘][‘name‘]) #取公司名 students=[ {‘name‘:‘alex‘,‘age‘:38,‘hobbies‘:[‘play‘,‘sleep‘]}, {‘name‘:‘egon‘,‘age‘:18,‘hobbies‘:[‘read‘,‘sleep‘]}, {‘name‘:‘wupeiqi‘,‘age‘:58,‘hobbies‘:[‘music‘,‘read‘,‘sleep‘]}, ] print(students[1][‘hobbies‘][1]) #取第二个学生的第二个爱好
布尔:一个false 一个true
计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识 a=3
b=5
a > b #不成立就是False,即假 False a < b #成立就是True, 即真 True 接下来就可以根据条件结果来干不同的事情了: if a > b print(a is bigger than b ) else print(a is smaller than b ) 上面是伪代码,但意味着, 计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。
布尔知识的重点:
所有数据类型都自带布尔值 1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False 2、其余均为真
关于可变不可变类型的重点:
1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典 #2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)
五.格式化输出
程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式
比如要求用户输入用户名和年龄,然后打印如下格式:
My name is xxx,my age is xxx.
很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的xxx位置,而且数字也必须经过str(数字)的转换才能与字符串进行拼接。
这就用到了占位符,如:%s、%d
%s字符串占位符:可以接收字符串,也可接收数字
print(‘My name is %s,my age is %s‘ %(‘egon‘,18))
#%d数字占位符:只能接收数字
print(‘My name is %s,my age is %d‘ %(‘egon‘,18))
print(‘My name is %s,my age is %d‘ %(‘egon‘,‘18‘))报错
接收用户输入,打印成指定格式
name=input(‘your name: ‘)
age=input(‘your age: ‘) #用户输入18,会存成字符串18,无法传给%d
print(‘My name is %s,my age is %s‘ %(name,age))
#注意:
#print(‘My name is %s,my age is %d‘ %(name,age)) #age为字符串类型,无法传给%d,所以会报错