用户交互、基本数据类型及其使用
一、程序与用户交互
用户交互就是人往计算机中input/输入数据,计算机print/输出结果,交互的本质就是输入、输出
1、输入input
python3 中的input功能和在python2 有一些不同:
# 在python3中,input功能会等待用户的输入,用户输入任何内容都会变成字符串类型,然后赋值给左边的变量名 >>> name = input("请输入你的名字:") 请输入你的名字:abc #name = "abc" >>> password = input("请输入你的密码:") 请输入你的密码:123 #password = "123" >>> type(name) <class 'str'> >>> type(password) <class 'str'> # 在python2中,input功能会需要用户输入一个明确的数据类型 # 但是也有一个和python3一样的用法,就是raw_input >>> name = input("请输入你的名字:") 请输入你的名字:abc Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module> NameError: name 'abc' is not defined >>> name = input("请输入你的名字:") 请输入你的名字:"abc" >>> name 'abc' >>> type(name) <type 'str'> >>> password = input("请输入你的密码:") 请输入你的密码:123 >>> type(password) <type 'int'> >>> name = input("请输入你的名字:") 请输入你的名字:[1,2] >>> type(name) <type 'list'> >>> name = raw_input("名字:") 名字:[1,2] >>> type(name) <type 'str'>
2、输出print
格式化输出就是把一段字符串里面的某些内容替换掉后再输出
格式化输出三种方式:
a、使用占位符%d、%s
# %s占位符可以接收任意类型的数据 # %d占位符只能接收数字 >>> print('你的名字叫%s,你的年龄是%d'%('abc',18)) 你的名字叫abc,你的年龄是18
b、使用format方法
# format按照前后顺序接收数据 >>> print('你的名字:{},你的年龄:{}'.format('abc',18)) 你的名字:abc,你的年龄:18 # format按照对应关系接收数据 >>> name = 'abc' >>> age = 18 >>> >>> print('你的年龄:{age},你的名字:{name}'.format(name = name,age = age)) 你的年龄:18,你的名字:abc
c、使用f-string方法
# f"{}"方法 >>> name = 'abc' >>> age = 18 >>> print(f"你的年龄{age},你的名字{name}") 你的年龄18,你的名字abc
二、基本数据类型
学习变量是为了让计算机能够像人一样去记忆事物的某种状态,而事物的状态是有很多种的类型的,例如人的身高、体重、年龄、职位等,而变量也就有不同的数据类型
数据:描述、衡量数据的状态
类型:不同的事物需要不同的的类型存储
1、数字类型
a、int 整型
age = 18 本质是:age = int(18)
# 在python3 中,无论多大数值的整型,数据类型都是 int >>> a = 11111111111111111111111111111111 >>> type(a) <class 'int'> # 在python2 中,范围在[-24xxxxxxxx,24xxxxxxxx]:int # 不在这个范围的 :long >>> a = 1111111 >>> type(a) <type 'int'> >>> a = 1111111111111111111111111111111111111 >>> type(a) <type 'long'>
b、float浮点类型
weight = 65.4 本质是:weight = float(65.4)
>>> weight = 65.4 >>> type(weight) <class 'float'>
2、str字符串类型
定义:存一些描述性信息,存个人爱好,个人简介
字符串引号是用没有区别,但是不能混用
如果字符串中还需引号,就必须嵌套
s1 = 'abc' 本质是:s1 = str(abc)
# python3 str 序列其实是Unicode序列 >>> ss1 = 'abc' >>> type(ss1) <class 'str'> >>> ss1 = ss1.encode('utf-8') >>> ss1 b'abc' >>> type(ss1) <class 'bytes'> # python2 str 序列其实是8个bit位的序列 >>> s1 = 'abc' >>> type(s1) <type 'str'> >>> s1 = s1.decode("utf-8") >>> s1 u'abc' >>> type(s1) <type 'unicode'>
字符串可以使用 + 运算,效果就是把两个字符串拼接起来
>>> s1 = 'abc' >>> s2 = 'def' >>> s3 = s1 + s2 >>> s3 'abcdef'
3、list列表类型
存在一个或者多个类型的值,列表索引下标是从0开始的
>>> s1 = ['a',12,['b','c','d',18]] >>> s1[1] 12 >>> s1[2][0] 'b'
4、dict字典
定义方法:通过大括号存储数据,通过key:value这种映射关系定义键值对
每个键值对通过括号进行分隔
>>> d1 = {"name":'abc',"age":19} >>> type(d1) <type 'dict'> >>> d1['name'] 'abc' # 字典可以嵌套 >>> d2 = {"name":'abc',"age":19,"hobby":['d','e']} >>> d2["hobby"][1] #取第二个爱好e 'e'
5、bool布尔类型
主要用判断事物的对错,一般不会单独定义
>>> 1<2 True >>> a = 277 >>> b = 277 >>> a == b #等号比较的是value True >>> a is b #is比较的是地址 False “““ 值相等的情况下,id不一定相等 id相等的情况下,值一定是相等 ”””
三、基本运算符
1、算术运算
+、-、*、/
// 整除
% 取模
** 指数
2、赋值运算
+=、-=、*=、/=
>>> a = 1 >>> a += 1 #类似于a = a + 1 >>> a 2 >>> b = 5 >>> b -= 1 #类似于b = b - 1 >>> b 4 >>> c = 2 >>> c *= 2 #类似于c = c * 2 >>> c 4 >>> d = 2 >>> d /= 2 #类似于d = d / 2 >>> d 1
3、链式赋值
>>> x = y = z = 1 >>> print(x,y,z) (1, 1, 1)
4、交叉赋值
>>> a = 1 >>> b = 2 >>> print(a,b) (1, 2) # 交换a、b的值 >>> a,b = b,a >>> print(a,b) (2, 1)
5、解压赋值
>>> s1 = [1,2,3,4,5] >>> a,b,c,d,e = s1 >>> print(a,b,c,d,e) (1, 2, 3, 4, 5) # 当需要赋值的数小于列表的长度时,用*_表示缺省 >>> s2 = [1,2,3,4,5] >>> a,b,c,*_=s2 >>> print(a,b,c) 1 2 3 >>> *_,e,d,f = s2 >>> print(e,d,f) 3 4 5 >>>
6、逻辑运算
与、或、非
and、or、not