一.Python基础语法

1基本数据类型

1.1 数值

int 整数
与C、C++、Java不同,Python中整数类型只有一个int,没有短整型short、长整形long。

>>> a = 1
>>> type(a)
<class 'int'>

1.2 浮点数

float 浮点数,也就是小数

>>> a = 1.0
>>> type(a)
<class 'float'>

1.3 布尔值

bool 布尔值True or Flase
非零即为Ture,零则为False

     In [4]: type(0.3)
     Out[4]: float
     In [5]: type(True)
     Out[5]: bool
     In [6]: type(1)
     Out[6]: int

2 序列类型

2.1 列表

一个有序的队列,可变数据类型;
元素可以是任意对象;
列表内元素有序,可以使用索引;
线性的数据结构;使用[]表示;

##############列表#################
# 1.列表定义
# 虽然列表跟ava中的数组很相似,但不同之处,它可以存放任意类型
list_1 = ['hello', 'world',"hello","中国",18, True, 1.11]
list_2 = list(range(10))
print(list_1)
print(list_2)
# 2.列表的访问
print(list_1[1])
print(list_1[-1])
# print(list_1_ele3)# 超出指定范文,会报越界异常IndexError: list index out of range
# 3.列表查询
## index(value,[start,[stop]])
## 通过值value,从指定区间查找列表内的元素的是否匹配
## 匹配第一个就立即返回,匹配不到,抛出异常ValueError
print(list_1.index("hello"))
# print(list_1.index(10)) # 因为不存在,这里会报异常ValueError
## coutn(value) 返回列表中匹配value的次数,没有则返回0
print(list_1.count("hello"))
print(list_1.count("haha"))
## len(list_name) 返回列表的长度,或者元素个数
print(len(list_1))
# 4.列表的修改
## append(object):None
## 列表尾部追加元素,返回None
list_1.append("世界")
## insert(index,object)-None
## 在指定索引处插入元素,尽量少用,因为列表是线性结构,查询快,但中间插入或删除元素效率低
list_1.insert(2,"demo")
## extend(iterable): 将可迭代对象追加进来,返回None
list_1.extend(list_2)
print(list_1)
## + 连接操作,将两个列表连起来,产生新的列表,本质上调用的是__add__()方法
list_3 = list_1 + list_2
print(list_3)

# 5 切片操作
print(list_3[1:3]) # 左闭右开
print(list_3[1:5:2])

# 6.列表删除元素
## remove(value) 从左至右查找匹配的value值,删除
## 执行效率低,若列表很长或者执行次删除次数多,建议少用
list_3.remove("demo")
print(list_3)
## pop(index) 弹出指定索引的元素,不指定索引,则弹出尾部元素
list_3.pop()
list_3.pop(0)
## clear() 清空列表元素
list_3.clear()
print(list_3)

2.2元组

tuple 元组,与列表相似,同样支持下标访问,区别它不可变

元组示例

# 元组定义
tup1  = ()  # 空元组
tup2 = tuple() # 空元组
tup3 = tuple(range(10))
# tup3[0] = 27 # 错误,元组不可变,会报异常TypeError: 'tuple' object does not support item assignment
# 下标访问元组元素
print(tup3[1])
print(tup3[2])
# 与列表类似,支持查询操作,但不支持修改
tup3 = ("a","b","hello",18, 22)
res = tup3.index("hello") 
print(res)
# 其他方法相似,但没有修改与删除操作

2.3 字符串

一个个字符组成的有序的序列,是字符的结合,在python中使用单引号、双引号、三引号表示字符串。
Python中字符串不可变对象,支持使用索引访问,可迭代。

#################字符串##################
# 1.字符串定义,三引号支持换行
str_1 = 'hello'
str_2 = "hello"
str_3 = '''hello world china good'''
str_4 = """我爱中国,我是中国人"""
print(str_1)
print(str_2)
print(str_3)
print(str_4)
# 2.常用方法
## join()连接
print(",".join(str_1))  # 输出结果 h,e,l,l,o
## split() 按照指定分割符号,切割字符串,返回列表
print(str_3.split(" ")) # ['hello', 'world', 'china', 'good']
## partition(sep)--(head,sep,tail)
## 将字符串按照分隔符分隔成2两部分,返回头、分隔符、尾三部分的元组;
## 如果没有找到分隔符,就返回头、2个空字符的三元组
print(str_3.partition(" ")) # ('hello', ' ', 'world china good')
## upper() 字符串转大写
print(str_3.upper())
## lower() 字符串转小写
print(str_3.lower())
## replace()字符串替换
print(str_3.replace("good","very good"))
## 字符串判断
print(str_3.startswith("hello")) # 是否hello开头
print(str_3.endswith("good")) # 是否以good结尾
print(str_3.islower()) # 是否小写
print(str_3.isupper()) # 是否大写

Python3中引入了两个新类型

bytes 不可变的字节序列
bytearray 字节数组、可变

###############bytes##############
b_1 = b"hllll"
print(type(b_1))
print(b_1[2])
############bytearray##############
barr_1 = bytearray("hello".encode())
print(type(barr_1))
print(barr_1)

2.4 集合

set 可变的,无序的,不重复的元素的集合

#############集合############
# 定义
set_1 = {1, 2, 3 , 1}
print(set_1) # {1, 2, 3} ,因为set是可变的无序的不重复的集合
# set中的元素必须可以hash,list和bytearray属于不可哈希类型,所以不能作为set中的元素
# set_2 = {[1, 2, 3], 2} # TypeError: unhashable type: 'list'
# set 中增加元素
set_1.add("hello")
print(set_1) # {1, 2, 3, 'hello'}
# set中删除元素
set_1.remove("hello") # 从set中移除指定元素,元素不存在,抛出keyerror异常
print(set_1.pop()) # 移除并返回随机元素
set_1.discard(1) # 从set中移除元素,元素不存在,也不会抛出异常
# 清空集合元素
set_1.clear()
# set修改和查询
# set 没有直接修改的操作,要么删除元素,要么加入新的元素
"""
- set和线性结构

    线性 线性结构的查询时间复杂度O(n),随着数据规模的增大,耗时越来越长
    set、dict等结构,内部使用哈希值作为key,时间复杂度可以做到O(1),查询时间和数据规模无关。
- 可哈希类型
    数值型int、float、complex等
    bool类型
    字符串类型string、bytes
    tuple
    None
以上都是不可变类型,可哈希类型,可以作为集合元素
- 集合运算
        * 并集:
            union(*others):返回和多个集合合并后的新集合
            | 运算符重载,等同于union
            update(*others) 和多个集合合并,就地修改
            |= 等同于update 中间不可以有空格

        * 交集:
            intersection(*others) 返回和多个集合的交集
            等同于 &
            intersection_update(*others)
                获取多个集合的交集,并就地修改
            &= 等同于intersection_update

         * 差集:
            difference(*others)
            等同于 - 返回多个集合的差集
            differnece_update(*others) 获取和多个集合的差集就地修改
            -= 等同于difference_update
            
         *  对称差集
            集合A和B,由所有不属于A和B的交集元素组成的集合,记作(A-B) U (B-A)
            symmetric_difference(other)
                返回和另一个集合的对称差集
                等同于^
            symmetric_difference_update()
                获取和另一个集合的差集,就地修改
                等同于^=
                
            * issubset(other)、 <= 判断当前集合是否是另一个集合的子集
            set1 < set2
                判断set1是否是set2的真子集
            issuperset(other) >=
                判断当前集合是否是other的超集
            set1 > set2
                判断set1是否是set2的真超集
            isdisjoint(other)
                当前集合和另一个集合没有交接,没有交接返回True

"""

2.5 字典

###############字典############
# 字典定义
## 定义一个空字典
dic_1 = dict()
dic_2 = {}
## 定义一个含有元素的字典
dic_3 = {"name":"张三丰","age":100, "sex":"男"}
## d(key)  返回key对应的值,如果key不存在则抛出异常
v1 = dic_3["name"]
# get(key[,default]) 返回key对应的值,key不存在返回缺省值,没有缺省是,返回None
v2 = dic_3.get("name")
## setdefault(key[,default]), key 存在返回对应的值,不存在则添加key-value
v3 = dic_3.setdefault("门派","武当")
## 字典元素增加d[key]=value,key存在增加修改对应的值,不存在,则添加key-value
dic_3["内功"]="纯阳无极功"
## pop(key[,default]) ,
### key存在,移除它,返回它的value
print(dic_3.pop("age"))
### key不存在,返回给定的default
print(dic_3.pop("弟子","武当七侠"))
### 未设置default,key不存在则抛出异常
# print(dic_3.pop("弟子"))
## 清空字典clear
dic_3.clear()

3. 运算符

3.1 算数运算符

  • 算数运算符如下
运算符 描述 实例
+ 10 + 30
- 5 - 3
* 30 * 20
/ 10 / 20
// 取整除 返回除法的整数部分(商),如 7 // 2 输出结果 3
% 取余数 返回除法的余数 7 % 2 = 1
** 又称次方、乘方,2 ** 3 = 8
  • 算数运算符的优先级

和数学中的运算符的优先级一致,在 Python 中进行数学计算时,同样也是:
* 先乘除后加减
* 同级运算符是 从左至右 计算
* 可以使用 () 调整计算的优先级

  • 以下表格的算数优先级由高到最低顺序排列
运算符 描述
** 幂 (最高优先级)
* / % // 乘、除、取余数、取整除
+ - 加法、减法

3.2.位运算符

运算符 描述
& 位与
| 位或
~ 取反
^ 异或
<< 左边移位
>> 右边移位

2.3 比较运算符

运算符 描述
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 、<> 不等于

3.4 赋值运算符

运算符 描述
+= a+=1 等价于 a=a+1
-= 类似
*= ...
**= ...
/= ...
%= ...

3.5逻辑运算符

运算符 描述
and 逻辑"与",两边为真返回布尔值'True',否则返回False
or 逻辑"或",两边为假返回布尔值'Flase',否则返回True
not 逻辑"非"

3.6 成员运算符

运算符 描述
in 如果在指定的序列中返回True,否则返回Flase
not in 若不在指定的序列中返回True,否则返回False

4. 变量

4.1 变量定义

  • 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建
变量名 = 值

示例

# 定义 class_num 的变量用来保存班级序号
In [8]: class_num = '01'
In [9]: print(class_num)
01

4.2 变量的类型

  • Python 中定义变量是 不需要指定类型(在其他很多高级语言中都需要)

  • 数据类型可以分为 数值型非数值型

  • 数字型

    • 整型 (int)
    • 浮点型(float
    • 布尔型(bool
      • True ---- 非零即真
      • False ----0
    • 复数型 (complex)
      • 主要用于科学计算
  • 非数值类型

    • 字符串
    • 列表
    • 元组
    • 字典
  • 使用 type() 函数可以查看一个变量的类型

4.3 不同类型变量之间的计算

1) 数值类型变量之间可以直接计算

  • 在 Python 中,两个数值类型变量是可以直接进行 算数运算的
  • 如果变量是 bool 型,在计算时
    • True 对应的数字是 1
    • False 对应的数字是 0

2) 字符串变量 之间使用 + 号,则是进行字符串的拼接

In [10]: str1 = "My name is"

In [11]: str2 = "张三"

In [12]: str1 + str2
Out[12]: 'My name is张三'

3) 数值类型变量字符串 之间 不能进行其他计算

In [16]: str1 = "She is"

In [17]: age = 18

In [18]: str1 + age
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-0a392e70e75a> in <module>()
----> 1 str1 + age

TypeError: can only concatenate str (not "int") to str

4.4 变量的输入 input

  • 在 Python 中,如果要获取用户在 键盘 上的输入信息,需要使用到 input 函数

函数: 封装好的代码块,可以进行复用(别人或者自己写的代码),可以直接使用,而 不用关心内部的细节

函数 说明
print(x) 将 x 输出到控制台
type(x) 查看 x 的变量类型
input 获取键盘输入
示例:
In [19]: info = input("输入信息")
输入信息12345

In [20]: info
Out[20]: '12345'

变量类型转换

函数 说明
int(x) 将 x 转换为一个整数
float(x) 将 x 转换到一个浮点数

5 程序控制

高级语言中,程序控制无非是顺序、分支、循环

5.1顺序

按照先后顺序一条条执行
示例代码

""" 
先定义变量 a、b,再定义变量c,最后打印c的值
"""
a = 1
b = 2
c = a + b
print(c)

5.2 分支

Python的分支语句就是if,满足条件则执行,不满足则转到下一个分支条件

a = 1
b = 2
max_num = None
if a > b:
    print(a)
elif a<b:
    print(b)
else:
    print("a = b")

5.2 循环语句

  • whlie循环
a = 1
sum = 0
max_num = 9
while a < max_num:
       sum + = a
       a += 1
print(sum)
  • for 循环
    常用语遍历
    示例代码1 打印九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print(str(i)+"*"+str(j)+"="+str(i*j),end=" ")
    print("\n")
posted @ 2020-04-13 11:58  leafgood  阅读(247)  评论(0编辑  收藏  举报