python学习笔记——语法基础

语法基础

变量声明

变量声明的三种格式:

  • var_name = var_value
  • var1 = var2 = var3 = var_value
  • var1, var2, var3 = v1, v2, v3
# 格式1
s1 = "Hello world!"

# 格式2
s2 = s3 = "Hello python!"

# 格式3
s4, s5, s6 = "Hello ereryone!", "Hello tensorflow!", 123

变量类型

  • 严格意义上讲,Python只有1个变量类型

  • 标准数据类型有6种:

    • 数字 Number

    • 字符串 str

    • 列表 list

    • 元组 tuple

    • 字典 dictionary

    • 集合 set

数字 Number

Python中的数字没有大小限制,常见的数字分类:

  • 整数

    • 没有小数部分

    • 包含正数,负数,0

    • 二进制

      • 以0b开头的01串

      • 例如:

        • 0b110
        • 0b11110
    • 八进制

      • 以0o开头的 0到7之间的数字串

      • 例如:

        • 0o71
    • 十六进制

      • 以0x开头的 由0-9,a-f构成的串
      • 例如:
        • 0xffff
        • 0x53f2
# 二进制定义
a1 = 0b110  # 10进制的6
print(a1)

a2 = 0b11110  # 十进制的30
print(a2)

# 八进制定义
a3 = 0o71  # 十进制的57
print(a3)

# 十六进制定义
a4 = 0xffff  # 十进制的65535
print(a4)

a5 = 0x53f2  # 十进制的21490
print(a5)
  • 浮点数

    • 就是通俗意义上的小数量

    • 常见格式:

      • 3.1415926

      • 0.4

      • .4

# 浮点数

a = .2
print(a)
  • 科学计数法
    • 定义跟数学定义一致
    • 写法是e后面跟整数用来表示10的整数
# 科学计数法

high = 184
print(high)

high = 1.84e2
print(high)
  • 复数 complex
    • 与数学定义一致
    • 复数的虚部用j/J表示
    • 例如:
      • 5+4j
      • 4j
      • (4j)
# 复数 complex

a = 4j
print(a)
  • 布尔值
    • 布尔值就是用来表示真假的值
    • 只有两个值:True / False
    • 在Python中,布尔值可以当数字使用
      • 布尔值当数字使用时,True = 1,False = 0
      • 如果数字用来当做布尔值使用,0 = False,其余当做True
# 布尔值当做数字使用

age = 18 + True
print(age)

age = 18 + False
print(age)

a = -1
if a:
    print("负数是True")
else:
    print("负数是False")

字符串

  • string

    • 表示文字信息
    • 用单引号,双引号,三引号括起来
    s1 = 'Hello world!'
    print(s1)
    
    s2 = "Hello python!"
    print(s2)
    
    s3 = """
    人生苦短
    我用python
    """
    print(s3)
    
  • 转义字符

    • 用一种特殊的方法表示出一系列不方便写出的内容,比如回车键,换行符,退格键
    • 借助反斜杠字符,反斜杠后面一个或者几个字符不再是原来的意思,而是进行了转义
    • 在字符串中,一旦出现反斜杠要倍加小心,可能会有转义字符出现
    • 不同操作系统对换行操作有不同的表示
      • Windows:\n
      • Linux:\r\n

    常见转义字符

    转义字符描述
    \(在行尾时)续行符
    \\反斜杠符号
    \’单引号
    \"双引号
    \a响铃
    \b退格(Backspace)
    \e转义
    \000
    \n换行
    \v纵向制表符
    \t横向制表符
    \r回车
    \f换页
    \oyy八进制数,yy代表的字符,例如:\o12代表换行
    \xyy十六进制数,yy代表的字符,例如:\x0a代表换行
    \other其它的字符以普通格式输出
    # 转义字符的案例
    # 想表达Let's Go
    
    # 使用转义字符
    s1 = 'Let\'s Go'
    print(s1)
    
    # 使用单双引号嵌套
    s2 = "Let's Go"
    print(s2)
    
    # \\ 表示斜杠,比如C:\User\Augsnano
    s1 = "C:\\User\\Augsnano"
    print(s3)
    
    # \n 表示回车换行
    s2 = "Ich\nlieb\nWangxiaojing"
    print(s4)
    
    # \ 表示此行未结束,处于美观,需要下一行继续
    s3 = "Hello \
    world!"
    print(s3)
    
  • 格式化

    • 把字符串按照一定格式进行打印或者填充
    • 格式化的分类
      • 传统格式化:使用百分号(占位符),一般只能被同类型替换,或替换类型能被转换成占位符的类型
      • format
    # %s 表示简单的字符串
    
    s = "Hello %s"
    print(s % "world!")
    print(s % "python!")
    
    print("Hello %s" % "world!")
    
    # %d 表示十进制整数
    
    s = "田梓莯今年%d岁了"
    print(s % 3)
    
  • 内建函数

# 字符串

hello = "Hello world!"
print(hello)

hello1 = 'Hello world!'
print(hello1)

# 三引号可以表示多行
hello2 = """
Hello world!
Hello python!
Hello deeplearning!
"""
print(hello2)

# 以下案例说明单双引号只能引用一行
#hello3 = "
#Hello world!
#Hello python!
#Hello deeplearning!
#"
#print(hello3)

None类型

  • 表示没有,通常用来占位
  • 比如返回,用来表示返回一个空

表达式

  • 由一个或者几个数字或者变量或者运算符合成的一行代码
  • 通常返回一个结果
# 表达式

a = 1 + 2

运算符

  • 由一个以上的值经过一系列的运算得到新值的过程就叫运算

  • 用来操作运算的符号叫运算符

算数运算符
  • 用来进行算数运算的符号
  • 通常用来表示加减乘除
  • Python没有自增自减运算符
# 算术运算符

# 加减乘除跟数学意义基本一致
a = 9 - 2
print(a)

b = 9 + 2
print(b)

c = 8 * 2
print(c)

# python除法分为普通除法,地板除,取余
# 正常除法
a = 9 / 2  # 此操作符在python2.x 和 3.x中有些不同
print(a)

# 地板除,取整
a = 9 // 2
print(a)

# 取余
a = 9 % 2
print(a)

a = 9 % -4 # 参考https://blog.youkuaiyun.com/u013094181/article/details/21863491
print(a)

# 两个*表示指数
a = 7 ** 2
print(a)
比较/关系运算符
  • 对两个内容进行比较的运算符
  • 结果一定是布尔值,即True / False
# 等于 ==
a = 3 == 4
print(a)

# 不等于 !=
a = 3 != 4
print(a)

# >, <, <=, >=
print(3 >= 8)
print("Hello world!" > "Hello python!")
赋值运算符
  • 把一个值放到变量里边去
# 赋值符号 = 
a = 9

# 复杂赋值
a = b = 9
a, b = 1, 2

# 赋值的缩写
c = 0
c = c + 3
print(c)
c += 3  # 仅仅是缩写
print(c)

# 所有数学运算符都可以缩写
# -=, *=, /=, //=, %=, **=, 都是缩写形式
# python里面没有 ++, --
逻辑运算符
  • 对布尔类型变量或者值进行运算的符号
  • and:逻辑与
  • or:逻辑或
  • not:逻辑非

python里面的逻辑运算没有异或

运算规则:

  • and看做乘法,or看做假加法
  • True看做1,False看做0
  • 则逻辑运算就能转换成整数数学运算
  • 最后结果如果是0则为Flase,否则为True

逻辑运算的短路问题

  • 逻辑运算式,按照运算顺序计算,一旦能够确定整个式子未来的值,则不再进行计算,直接返回
# 逻辑表达举例
a = True
b = True
c = False

aa = a and b # 右边表达式可以转换成 1*1
print(aa)

bb = a and c
print(bb)

cc = 100 and c
print(cc)
# 数字转换成布尔值的时候:0 = False,其余是True
# 布尔值转换成数字的时候:Ture = 1,否则为0
# 短路问题
a = True
b = True
c = False

def a():
    print('a')
    return True

def b():
    print('b')
    return True

if a() and b():
    print('AAAAA')

print('*' * 20)  # 字符串乘以数字,表示的是这个字符串重复多少遍

if a() or b():  # 短路发生
    print('BBBBB')
  • 位运算
成员运算符
  • 用来检测一个值或者变量是否在某个集合里面
  • in:成员运算符,表示在里边
  • not in:不再里边的意思
# in
L = [1, 2, 3, 4, 5]
a = 6
aa = a in L
print(aa)  # False

# not in
aa = a not in L
print(aa)  # True
身份运算符
  • 用来确定两个变量是否是同一变量
  • is:是
  • is not:不是

对整数[-5, 256],解释器对他们做了单独的处理,放进了固定的内存中,不因每次运行而变化

# 身份运算符
a = 1
b = 100000

aa = a is b
print(aa)  # False

# a, b仅仅值是一样的,并不代表a, b是一个变量
a = 100000
b = 100000

aa = a is b
print(aa)  # False

# 下面的案例跟上面的案例的不同
a = 5
b = 5

aa = a is b
print(aa)  # True
运算符优先级
运算符说明Python运算符优先级结合性
小括号( )19
索引运算符x[i] 或 x[i1: i2 [:i3]]18
属性访问x.attribute17
乘方**16
按位取反~15
符号运算符+(正号)、-(负号)14
乘除*、/、//、%13
加减+、-12
位移>>、<<11
按位与&10
按位异或^9
按位或|8
比较运算符==、!=、>、>=、<、<=7
is 运算符is、is not6
in 运算符in、not in5
逻辑非not4
逻辑与and3
逻辑或or2
逗号运算符exp1, exp21

程序结构

  • 程序三种结构
    • 顺序
    • 循环
    • 分支

循环结构

  • 重复执行某一个固定的动作或者任务
  • 分类:
    • for
    • while
for循环
  • 语法:

    for 变量 in 序列:

    ​ 语句1

    ​ 语句2

    ​ …

    for 变量 in 序列:
    语句块1
    else:
    语句块2

# for语句
# 打印学生列表姓名
# 如果是王晓静,那肯定是我的最爱呀
# 如果是别的学生,那要冷酷的拒绝他

stu_list = ['王大眼', '李美丽', '王晓静']
for stu in stu_list:
    if stu == "王晓静":
        print("晓静你去哪里了?")
    else:
        print("对不起同学,饶了老衲吧")
# for-else语句
# for循环结束的时候,有时候需要执行一些收尾工作,此时需要使用else语句
# else语句是可选的,一般有跳出循环时才有可能用到else

# 打印列表中的同学
# 如果没有在列表内,或者列表结束了,需要打印提示语句,表示不再爱了

stu_list = ['王大眼', '李美丽', '王晓静']
for stu in stu_list:
    if stu == "王晓静":
        print("晓静你去哪里了?")
        break
    else:
        print("对不起同学,饶了老衲吧")
else:
    print("不会再爱了")
while循环
  • 一个循环语句

  • 表示当条件成立的时候,就循环

  • 适应于不知道具体循环次数,但能确定在某个条件成立的情况下就循环

  • while语法:

    while 条件表达式:

    ​ 语句块

    while 条件表达式:

    ​ 语句块1

    else:

    ​ 语句块2

# 如果说年利率是6.7%,本利是每年翻滚,则多少年后本钱会翻倍

end_money = first_money = 10000
year = 0  # 存放需要翻本的年数

while end_money < first_money * 2:
    end_money = end_money * (1 + 0.067)
    year += 1  # year = year + 1

print(year)  # year = 11

# 年利率案例2
# 一般有跳出循环时才有可能用到else1
while end_money < first_money * 2:  # end_money > 2*first_money
    end_money = end_money * (1 + 0.067)
    year += 1  # year = year + 1
else:
    print(year)
break,continue,pass
  • break:无条件结束整个循环,简称循环猝死
  • continue:继续
  • pass:只是占位符号,代表这句话啥也不干,没有跳过功能
# 确定一个数字队列中是否包含数字7
# 确定是否包含,只要找到一个即可确定,不需要再继续往下找,所以使用break

dig_list = [3, 4, 6, 7, 54, 3, 23, 2, 4, 7]
for dig in dig_list:
    if dig == 7:
        print("哈哈哈,找到了")
        break
    else:
        print(dig)
# continue练习
# 在数字1-10中,寻找所有偶数,找到偶数后打印偶数
"""
# continue案例1

dig_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for dig in dig_list:
    if dig % 2 == 0:
        print(dig)
        print("哈哈,你是双的")
    else:
        continue
"""
# 下面代码跟上面等价
dig_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for dig in dig_list:
    if dig % 2 == 1:
        continue
    print(dig)
    print("哈哈,你是双的")
# pass案例1

age = 19
if age > 19:
    pass
else:
    print("你还小")
    
# pass案例2

ages = [2, 23, 43, 54, 65, 2]
for age in ages:
    pass
	print(age)
range函数
  • 生成有序数列
  • 生成数字队列可以定制

一般在python中,表示范围的数字都是左闭右开,randint函数是个特例

range函数在python2.x和python3.x中有严重区别

# range案例1
# 生成数字队列可以定制
# range的生成序列的范围是左闭右开

dig_list = range(1, 100, 2)
for dig in dig_list:
    print(dig)

# range案例2
# 打印从1到9的数字

for i in range(1, 10):
    print(i)

分支结构

单向分支
  • 语法结构:

    if 条件表达式:

    ​ 语句1

    ​ 语句2

    ​ 语句3

    ​ …

  • 条件表达式就是计算结果必须为布尔值的表达式

  • 表达式后面的冒号不能少

  • 注意if后面的出现的语句,如果属于if语句块,则必须同一个缩进等级

# if 语句联系
# 如果你们都买我的习题课,我就发财了
a = "都买习题课"

# 字符串的真假:
# 只有空字符串为False,其余全为True

if a:
    print("刘大拿就发财了")
    print("迎娶王晓静")

print("日子还得过呀!")
# if联系二

age = 19

if age > 16:
    print("喝酒去")
print("下次你请我")
双向分支
  • if … else …表达

  • 语法结构:

    if 条件表达式:

    ​ 语句块1

    else:

    ​ 语句块2

# 如果你们都买我的习题课,我就发财了
a = "都买习题课"

if a:
    print("刘大拿就发财了")
    print("迎娶王晓静")
else:
    print("继续吃土吧")
    print("跟五姑娘继续耗下去吧")

print("日子还得过呀!")
# input的作用是
# 1. 在屏幕上输出括号内的字符串
# 2. 接受用户输入的内容并返回到程序
# 3. input返回的内容一定是字符串类型

# input负责接受用户输入并把内容返回给变量
gender = input("请输入您的性别")
print(gender)

if gender == "man":
    print("走,喝酒吸烟剃头")
    print("一起玩儿去呀")
else:
    print("你到底是个啥子呀")
    print("对不起,我是男生")
多路分支
  • 很多分支的情况,叫多路分支

    if 条件表达式:

    ​ 语句块1

    elif:

    ​ 语句块2

    else:

    ​ 语句块3

  • elif可以有好多个,根据实际情况

  • else可选

  • 多路分支最多只会执行一种情况

if语句补充
  • if语句可以嵌套使用,但是不推荐
  • python中没有switch语句
"""
例题:考试成绩判断
	成绩由用户输入
	90以上:输出优秀
	80-90:良
	70-80:中
	60-70:平
	60以下:输出:我没你这撇学僧
"""

# 输入成绩,需要用到input函数

x = input("输入一个分数:")
score = int(x)

if score > 90:
    print("优秀")
elif score > 80:
    print("良")
elif score > 70:
    print("中")
elif score > 60:
    print("平")
else:
    print("我没你这撇学僧")

函数

  • 函数是代码的一种组织形式
  • 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作
  • 有些语言分函数和过程两个概念,有返回结果的叫函数,无返回结果的叫过程,python不加以区分

函数的定义和使用

  • 函数的使用:
    • 函数使用需要先定义
    • 使用函数,俗称调用
# 定义一个函数
# 只是定义的话不会执行
# 1. def关键字,后跟一个空格
# 2. 函数名,自己定义,起名需要遵循便令命名规则,约定俗成,大驼峰命名只给类用
# 3. 后面括号和冒号不能省,括号内可以由参数
# 4. 函数内所有代码缩进

def func():
    print("这是一个函数")
    print("爱生活,爱python")

print("函数结束了")
# 函数的调用
# 直接写出函数名字,后面小括号不能省略,括号内内容根据情况
def func():
    print("这是一个函数")
    print("爱生活,爱python")

func()
print("函数结束了")

函数的参数和返回值

  • 参数:负责给函数传递一些必要的数据或者信息
    • 形参(形式参数):在函数定义时用到的参数,没有具体值,只是一个占位符号
    • 实参(实际参数):在调用函数时输入的值
# 参数person只是一个符号
# 调用时用另一个
def hello(person):
    print("{0},你好吗?".format(person))
    print("{},你看见我家晓静了吗?".format(person))

p = "小明"
hello(p)
  • 返回值:调用函数时的一个执行结果
    • 使用return返回结果
    • 如果没有值需要返回,推荐使用return None表示函数结束
    • 函数一旦执行return,则函数立即结束
    • 如果函数没有return关键字,则默认返回None
# 九九乘法表
# version 1.0

for i in range(1, 10):
    for j in range(1, i+1):
        print("%4d"%(i*j), end = "")
    print()
# 使用函数打印乘法表

def mul_table():
    for i in range(1, 10):
    	for j in range(1, i+1):
        	print("%4d"%(i*j), end = "")
    	print()

mul_table()
# 改造函数

def printLine(line_num):
    '''
    打印一行九九乘法表
    
    line_num:代表行号
    '''
    for j in range(1, line_num+1):
        print("%4d"%(line_num*j), end="")
    print()

def mulTable():
    for i in range(1, 10):
    	printLine(i)
    return None

mulTable()

参数详解

  • 参数分类:
    • 普通参数/位置参数
    • 默认参数
    • 关键字参数
    • 收集参数
# 普通参数案例

def normal_para(one, two, three):
    print(one + two)
    return None

normal_para(1, 2, 3)
# 默认参数

def default_para(one, two, three=100):  # three是默认参数,默认值是100
    print(one + two)
    print(three)
    return None

default_para(1, 2)
default_para(1, 2, 3)
# 关键字参数

def keys_para(one, two, three):
    print(one + two)
    print(three)
    return None

keys_para(one=1, three=3, two=2)

字符串

  • string
  • 转义字符
  • 格式化
  • 内建函数

string

  • 表示文字信息
  • 用单引号,双引号,三引号括起来

转义字符

格式化

内建函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值