1.什么是变量,为什么需要变量
变量即变化的量,衡量现实中实物的状态;程序执行的本质就是一系列的状态变化,变是程序本身执行的直接体现,因此程序的执行需要这种机制将执行状态以及状态的变化保存下来。
1)变量的定义
规则:
a.数字、字母、下划线的组合
b.第一个字符不能为数字
c.不能使用关键字如Python中的语法字符等
定义方式:
abb = 10
Age = 18
#推荐使用下划线
number_of_oldboy = 'zhang'
2)注意事项
a.变量名不宜使用中文
b.变量名过长
c.变量名尽量贴合变量的使用(如定义人的年龄:age_of_zh = 20)
3)垃圾回收机制
Python中自带垃圾回收机制
4)变量的三个特征
a.id---内存编号
b.type---数据类型
c.vlaue---变量值
2.数据类型
数据即变量的值,上面提到变量的存在是为了衡量实物存在的状态的,那么针对不同的状态就应该使用不同的数据去标识。
1)数字
整型和浮点型
#int整型
age =18
#可标识:年龄,身份证等 #float浮点型
height = 1.80
#可标识:身高,体重等
2)字符
字符串
#加上引号的字符就是字符串,Python中没有字符这一概念
name = 'zhang'
sex = "man"
info = '''
字符串的定义中,使用单引号和双引号并无区别,三引号可实现
多行字符串的定义
''''
延伸:字符串之间可进行相加和相乘运算
name = 'zhang'
age = ''
res1 = name + age
res2 = name * age
3)列表
定义方式:[ ]内使用逗号隔开,列表内可存放无限多个类型的值,且可进行嵌套使用
#定义
student_info = ['zhang',18,['study','grils']]
#取值,取出zhang的第一个爱好
print(sdudent_info[2][0])
4)字典
定义方式:{x:y}键和值之间用:隔开,和列表一样也可存放多个值;区别于取值方式,列表的取值通过索引进行取值,字典的取值通过key进行取值;同时,字典也可以进行嵌套使用
userinfo={
'name':'egon',
'age':18,
'company_info':{'name':'oldboy',
'addr':{'country':'China',
'city':'Shanghai',}
}
} print(userinfo['company_info']['addr']['city'])
3.用户交互input()
Python3.x中的input(),默认将用户输入的值全部存储成字符串,Python2.x与之对应的是raw_input()。除此之外2.x中也存在内置方法input(),但是输入的类型必须明确,因此用户输入什么类型就是什么类型
4.运算符
1)数学运算符
2)逻辑运算符
当存在多个逻辑运算符时,依次从左往右进行判断比较
3)比较运算符
4)赋值运算符
5)身份运算符
a.is是用于比较id值是否相等
b.==用于判断两个值是否相等
补充说明:通常情况下,每声明一个变量就会向系统申请一个内存地址,然而由于Python中自带的内存优化机制,使得在不同的环境下会出现两个值相等的变量的内存地址相同的情况
5.流程控制 if
if 条件1: 代码块 elif 条件2: 代码块 ...... else: 代码块
#练习题
while True:
msg='''
1 加法
2 减法
3 乘法
4 除法
输入'quit'退出
'''
print(msg)
choice = input('>>: ').strip()
if choice == 'quit':
break
else:
num1 = input('输入第一个数字:').strip()
num2 = input('输入第二个数字:').strip()
if choice == '':
res=int(num1)+int(num2)
print('%s+%s=%s' %(num1,num2,res))
elif choice == '':
res=int(num1)-int(num2)
print('%s-%s=%s' %(num1,num2,res))
elif choice == '':
res=int(num1)*int(num2)
print('%s*%s=%s' %(num1,num2,res))
elif choice == '':
res=int(num1)/int(num2)
print('%s/%s=%s' %(num1,num2,res))
6.流程控制while
1)while + break跳出本次循环
#允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出
age = 20
count = 0
while count < 3:
age_ip = input("输入年龄:")
if int(age_ip) == age:
print("恭喜,猜对了...")
break #跳出while循环
else:
count += 1
print("输入错误...")
if count == 3:
print("抱歉,你没机会了...")
2)while + continue
tag = True
username = 'zhang'
password = ''
while tag:
inp_name = input('name>>:')
inp_pwd = input('password>>:')
if inp_name == username and inp_pwd == password:
print('logging successful')
while tag:
cmd = input('cmd>>:')
if cmd == 'quit':
tag = False
continue #退出当前while循环
print('%s 命令正在执行...' % cmd)
else:
print('user or password not vaild!')
7.赋值运算
1)链式赋值
x = 1
y = x
y=x=a=b=1
print(id(y),id(b))
2)交叉赋值
m = 1
n = 10
m,n=n,m
print(m,n)
补充:变量解压
ser = [10,11,12,14]
mon1,mon2,mon3,mon4 = ser
print(mon1,mon2,mon3,mon4)
# 利用 *_ 取前几个或者后几个值
# mon1,mon2,*_=ser
# *_,mon4=ser
# print(mon1,mon2,mon4)
8.进制装换
print(bin(4)) #二进制
print(hex(17)) #十六进制
print(oct(8)) #八进制