Python基础

女生的网名这么多〃 提交于 2019-12-01 10:24:17

Python基础

  • Author by liyihang
  • Start:2018-12-06

第一章 Python简介

1.Python起源

  • Python是吉多*范罗苏姆在1989年圣诞节,为了打发无聊而编写的一个解释程序
  • python的意思:蟒蛇
  • 解释型编程语言,无需编译
  • 一般情况下,同样的功能,python的代码量是java的1/5
  • 名言:life is short,you need python(人生苦短,我用python)
  • 现有版本
    • python2.X(过去的版本),发布于2001年
    • python3.X(现在和未来主流版本,3.0发布于2008年)

2. Python的应用

  • 云计算:云计算最火语言(云服务器)

  • web开发:YouTube,豆瓣,知乎
  • 人工智能:语音助手,AI音箱

  • 自动化测试:我们使用的

3. Python的优点

  • 易学
  • 免费,开源
  • 可移植性强(Windows,macOS,Linux)
  • 丰富的库(拓展功能)

第二章 安装Python

1. 下载Python安装包

  • 网址:www.python.org
  • 注意:下载前要先确定系统位数

2. 安装

  • 注意勾选添加python至系统环境变量(path)

  • 修改安装路径(安装至C盘根目录,方便查找)

安装Python截图

3.第一个python程序

  • win+r,输入cmd,打开命令行窗口
  • 在命令行窗口中输入python,进入python交互模式
  • 在交互模式中输入如下代码:
# 打印“你好,世界!” print('Hello World!')
Hello World!

第三章 输出与输入

1.输出

使用print函数在控制台输出指定内容

1.1 输出字符串和数字

# 输出字符串 print('Helloworld')  # 输出数字 print(123)

1.2 输出多个内容

需要同时输出多个内容时,使用逗号隔开

print('Helloworld',123)

1.3 输出不换行

print输出时默认是换行的,如果不想换行需要传入end参数

print('Helloworld',end='')

2.输入

python3中使用input函数从键盘获取数据,返回string类型

注意:在python3中,input将所有输入的数据都保存为字符串类型

username = input('请输入您的用户名:')

使用input输入数据,如果需要保持原类型,比如输入数字保存为原数字类型,需要进行转型操作

# 在input前加int()将输入数据转成整数类型 username = int(input('请输入您的用户名:'))

第四章 安装Pycharm(编辑器)

1.下载Pycharm

2.安装Pycharm

3.配置本地解释器

第五章 注释

1. 注释的作用

  • 注释一般是用来说明代码的作用
  • 纯给人看的,机器不会执行注释里的内容

2. 单行注释

  • 单行注释,用#号表示
  • 单行注释可以单独写一行,也可以写在需要注释的代码的右侧
# 这是一个单行注释 # 单行注释用一个#表示 # 可以在单独行写,也可以在某行代码后面写 print("hello word")
hello word

3. 多行注释(块注释)

  • 多行注释,用一对三单引号或者双引号表示
  • 多行注释通常用来为python文件、模块、类或者函数添加版权,功能等信息
  • 多行注释可以用单行注释来实现
''' 这是多行注释 多行注释用三个单引号表示 多行注释中间会保持原格式 多行注释也叫文档注释(一般放在函数里) '''
'\n这是多行注释\n多行注释用三个单引号表示\n多行注释中间会保持原格式\n多行注释也叫文档注释(一般放在函数里)\n'

第六章 基础数据类型

  • 查看数据类型用type()函数,不能传两个数据类型

1. 整数(int)

游戏中使用数字记录分数,销售网站使用数字记录数量等

  • 100,0,-100
a = 100             # 正整数 b = 0               # 0也是整数 c = -100            # 负整数 print(type(a)) print(type(b)) print(type(c))
<class 'int'> <class 'int'> <class 'int'>

2. 浮点数(float)

  • 1.23,-1.0,0.0
  • 注意:python中的除法结果会将整数转换成浮点数
a = 1.23            # 正浮点数 b = -1.0            # 负浮点数 c = 0.0             # 0.0也是浮点数 print(type(a)) print(type(b)) print(type(c))
<class 'float'> <class 'float'> <class 'float'>

注意:使用浮点数计算时,可能会出现小数位不确定的情况,暂时忽略即可,所有语言都有这个问题

print(0.1 + 0.2)  #0.30000000000000004

3. 字符串(str)

  • ‘abc’
  • ‘’(空字符也是字符串类型)
a = 'abc' b = ''              # 空字符串 c = '我爱中国!' print(type(a)) print(type(b)) print(type(c)) print(a) print(b) print(c)
<class 'str'> <class 'str'> <class 'str'> abc  我爱中国!

4. 布尔值(bool)

  • True(真)
  • False(假)

注意:布尔值可以转换为数值,True表示1,False表示0,但是不建议对布尔值进行计算

a = 1 b = 2 print(a<b) print(a>b)
True False
# 布尔值的计算 # True为1,Flase为0 a = 1 b = 2 c = a < b    # c为True d = a > b    # d为False  e = d - c    # e = 0 - -1 print(e)

5. 空值(None)

  • 表示什么也没有
  • 注意:不同于0和空字符串
  • 用来占位置
a = None print(type(a))
<class 'NoneType'> 

第七章 变量

1. 变量的定义

  • 变量是一个容器,里面可以存任意类型的数据
teacher = '刘老师'  # 定义了一个变量,变量名叫teacher,他里面储存了一个字符串刘老师
print(teacher + '简直帅毙了!')

如果又看见一次teacher=xxx,那么就不是定义变量了

而是变量的==重新赋值==

  • 变量实质是储存在内存中的值,创建变量会在内存中开辟一个空间
  • 变量是可以重复使用的一个量

2. 变量的命名规范

  • 只能由数字、大小写字母、下划线组成
  • 不能以数字开头
    • 4man,5for 是不可以的
    • man4,for5 是可以的
  • 区分大小写
    • forMan 与 forman不是一个变量名称
  • 不能使用系统关键字
    • class,from等 不可以
  • 不推荐使用下划线开头,下划线开头具有特殊含义
  • 推荐
    • 使用具有固定含义的英文单词缩写:srv=server,number=num
    • 驼峰命名法
      • 大驼峰:每个单词第一个字母大写(FirstName,LastName) 用在类名
      • 小驼峰:第一个字母小写,第二个单词开始每个单词首字母大小(firstName,lastName)变量或者函数名
      • 下划线:多个单词用下划线连接,单词全部小写(first_name, last_name)

什么是系统关键字?

  • python一些具有特殊功能的标示符,这就是所谓的关键字
    • class, def, for...

怎么查看系统自带关键字

  • 导入keyword包
  • 使用keyword.list查看
# 查看关键字的方法 import keyword     # 导入关键字模块 print(keyword.kwlist)  # 打印出全部系统关键字
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

3. 变量的赋值

普通赋值

  • 把赋值运算符右边的值给左边的变量
a = 100            #把整数100赋值给a print(a)
100

序列解包赋值

  • 左边的变量与右边的值一一对应
a,b,c = 1,2,3 print(a, b, c)
1 2 3

链式赋值

  • 一个值给多个变量
# 三个变量都放入同一个值 a = b = c = 1 print(a) print(b) print(c)
1 1 1

第八章 运算符

1. 算术运算符

加、减、乘、除

注意:

  • 除法会将整数转为浮点数

  • 除数不能为0,否则会报错

# 两个对象相加 a, b = 1, 2 print(a + b)  # 两个对象相减 a, b = 10, 5 print(a - b) # 使用负号得到负数 c = -5 print(c)  # 两个数相乘,乘号用*表示 a, b = 1, 2 c = a * b print(c)  # 两个数相除,除号使用/表示 # 注意:除法会将整数转为浮点数 # 注意:除数不能为0,否则会报错 a, b = 10, 5 print(a/b) 

取整除

  • 两个数相除,返回商的整数部分
a, b = 10, 5 print(a//b)
2

取余

  • 两个数相除,返回余数

注意:取余时,如果除数是负数,那么结果也是一个负数

a, b = 3, 2 print(a%b)
1

2. 赋值运算符

  • “=”表示赋值运算符
  • 把右边的结果给左边的变量
a = 2 c = a + 2 print(a) print(c)
2 4

加法赋值运算符

  • c += a 等效于 c = c + a
a = 1 a += 1 print(a)

4. 逻辑运算符

  • and:与,并且
    • 两个都为真,结果为真
    • 有一个为假,结果为假
  • or:或
    • 有一个为真,结果为真
  • not:非
a = True b = False c = True  d = a and b    # 有一个假,结果为假 print(d)  d = a and c    # 两个都为真,结果为真 print(d)  d = a or b    # 有一个为真,结果为真 print(d)      d = not a     # 非真即假 print(d)  d = not b     # 非假即真 print(d)
False True True False True

6.比较运算符

如果比较结果为真,则返回True

如果比较结果为假,则返回False

  • 大于:>
  • 小于:<
  • 大于等于:>=
  • 小于等于:<=
  • 不等于:!=
  • 等等于:==(两边值相等返回true,不相等返回false)

7. 运算符的优先级

  • 永远记住,括号具有最高优先级
a, b, c = 1, 2, 3  d = a + (c - b)      # 把想要优先运算的部分用括号括起来 print(d)
2

第九章 字符串

1. 字符串的定义

  • 字符串是python中的一种基础数据结构
  • 通常是由引号包围的序列
    • 单引号
    • 双引号
    • 三单引号
    • 三双引号
  • 特点
    • 有序

    • 不可变

love = 'i love you'    # 单引号 print(love)  love = "i love you"    #双引号 print(love)  # 三单引号 love = '''              i love you ''' print(love)  # 三双引号 love = """ i love you """ print(love)
i love you i love you               i love you

2. 格式化

  • 把数据按照一定的格式打印或者填充

2.1 百分号格式化

利用百分号(%)

  • %s:字符串
  • %d:整数
  • %f:浮点数
# 使用百分号格式化输出 name = '小明' age = 18 crash = 100.0  print('%s今年%d了,他有%f元现金。' %(name, age, crash))  # %f输出浮点数的时候可以指定精度,%.2f:保留两位 print('%s今年%d了,他有%.2f元现金。' %(name, age, crash))
小明今年18了,他有100.000000元现金。 小明今年18了,他有100.00元现金。

2.2 format格式化

# 使用format函数格式化输出 # 用大括号占位 s = "i love {}".format("china") print(s)  # 用大括号加编号占位,从0开始编号 y = "i love {0}, i am {1} years old, i love {0} very much!".format("china", 20) print(y)
i love china i love china, i am 20 years old, i love china very much!

3. 转义字符

转义字符:是指使用反斜杠\对一些特殊字符进行转义

常见的转义字符如下:

\n      换行符 \t      水平制表符

注意:在字符串前加上字母r(或R),那么该字符串就会原样输出,其中的转义字符将不会进行转义

# 打印出 i'm ‘OK’! print("I\'m \'ok\'!" )  # 打印文件路径:c:\user print('c\\:user')  print(r"\t表示制表符") print('制表符前\t制表符后')  print(r'\n表示换行') print("第一行\n第二行")  print(r"这句话里的东西都不转义\\")  print("打印结束加end", end='hi')#end为空字符串时,可以起到不换行的作用
I'm 'ok'! c\:user \t表示制表符 制表符前    制表符后 \n表示换行 第一行 第二行 这句话里的东西都不转义\\ 打印结束加endhi

4. 字符串的索引和取值

索引

  • <索引>就是编号
  • 索引从0开始,不是从1开始
  • 字符串实际上是字符的数组,所以也支持索引

name = 'HelloWorld' print(name[0])      # H print(name[1])      # e print(name[2])      # l

取值

  • 取值是指对操作对象截取其中的一部分操作

  • 取值的语法:[起始:结束:步长]

    • 注意:截取的区间为左闭右开,即从起始开始到结束前一位,不包括结束
  • 使用方法:

    • [:]:从开始提取到结尾

    • [start:]:从起始下标提取到结尾

    • [:end]:从开头提取到结束下标,不包括结束下标

    • [start:end]:从起始下标截取到结束下标,不包括结束下标

      name = 'zhangsan'           # 从开头提取到结尾 print('从开头截取到结尾:{}'.format(name[:]))  name = 'zhangsan'           # 从起始下标提取到结尾 print('从起始下标1截取到结尾:{}'.format(name[1:]))  name = 'zhangsan'           # 从开头提取到结束下标5 print('从开头提取到结束下标5:{}'.format(name[:5]))  name = 'zhangsan'           # 从起始下标截取到结束下标3 print('从起始下标1截取到结束下标3:{}'.format(name[1:3]))  name = 'zhangsan'           # 从开头截取到结尾,步长为2 print('从开头截取到结尾,步长为2:{}'.format(name[::2]))
      从开头截取到结尾:zhangsan 从起始下标1截取到结尾:hangsan 从开头提取到结束下标5:zhang 从起始下标1截取到结束下标3:ha 从开头截取到结尾,步长为2:za

5. 字符串的常见方法

  • 分割字符串:str.split()
  • 将字符串中的某字符替换成其他字符
    • str.replace(原字符,新字符,替换次数)
    • 注意:可以通过次数来指定替换几次,适用于一个字符出现多次的情况
# 分割字符串 name = "a,b,c,d" print(name.split(","))   # 遇到逗号就分割,返回列表  # 将字符串转为大写 name = "abcd" print(name.upper())  # 将字符串转为小写 name = "ABCD" print(name.lower())  # 替换字符 name = "abcd" print(name.replace("a", "A"))  # 参数:被替换字符,替换后字符
['a', 'b', 'c', 'd'] ABCD abcd Abcd

6. 查找字符串

使用str.find()可以查找字符串中字符串出现的位置

返回字符串的==第一次出现的索引==,找不到则返回-1

格式:str.find(目标字符,开始位置,结束位置)

str = 'abbcdefg' print(str.find('b'))  # 查找a字符出现的位置,返回索引值 print(str.find('b',2))  # 从索引2的位置开始查找a字符,注意返回的索引值还是从0开始的
1 2

第十章 列表

1.列表的定义

  • 列表是Python中的一种基础数据结构之一
  • 列表用[]包围,元素用逗号隔开
  • 元素可是任意数据类型
  • 特点
    • 有序
    • 可变

虽然列表元素可以是任意数据类型,但是通常情况只放入一种类型的数据,这样可以提高程序的可读性

# 定义一个列表 a = [1, 2, 3] print(a)
[1, 2, 3]

list搭配range函数可以快速生成列表

# 快速生成一个偶数列表 l = list(range(2,11,2)) print(l)

2. 列表的循环嵌套取值

  • 将取出的列表作为新的列表继续取值即可
a = [["a", "b"], "c", [1, 2]]  # 取出数字2 print(a[2][1])
2

3. 列表的常见方法

增加

# 添加值 a = [1, 2 ,3] a.append(4) print(a)
[1, 2, 3, 4]
 # 指定位置插入值 # 注意:insert插入值得效率没有append高 a = [1, 2 ,3] a.insert(0, 0)   # 索引,值 print(a)
[0, 1, 2, 3]

删除

 # 删除指定索引位置的值,不填索引删除最后一个 a = [1, 2 ,3] a.pop() print(a)  a = [1, 2 ,3] a.pop(0) print(a)
[1, 2] [2, 3]
# 删除指定值 a = [1, 2, 3] a.remove(3) print(a)
[1, 2]

修改

# 修改指定索引位置的值 a = [1, 2, 3, 4] a[0] = 2 print(a)
[2, 2, 3, 4]

反转

# 反转列表 a = [1, 2, 3, 4] a.reverse() print(a)
[4, 3, 2, 1]

统计

# 求列表最大值 a = [1, 2, 3, 4] print(max(a))
4
# 求列表最小值 a = [1, 2, 3, 4] print(min(a))
1
# 统计值在列表中出现的次数 a = [1, 2, 3, 4, 4, 4] print(a.count(4))
3
# 计算列表的长度 a = [1, 2, 3, 4] print(len(a))
4
# 列表从小到大排序 a = [2,4,1,3] a.sort()            # [1, 2, 3, 4]  # 列表从大到小排序 a = [2,4,1,3] a.sort(reverse=True)    # [4, 3, 2, 1]

第十一章 元祖

1.元祖的定义

  • 元祖由()包围,元素以逗号隔开
  • 特点
    • 有序
    • 不可变
  • 如果元祖只有一个元素,必须加逗号以示区分
# 当元祖只有一个元素时 a =(1)       # 不加逗号类型就不是元祖了 print(a) print(type(a))  b = (1,)     # 只有一个元素时,要加逗号区分 print(b) print(type(b))
1 <class 'int'> (1,) <class 'tuple'>

2. 元祖的常见方法

# 元祖转为列表 a = (1, 2, 3) b = list(a) print(b)
[1, 2, 3]
# 列表转元祖 a = [1, 2, 3] b = tuple(a) print(b)
(1, 2, 3)
# 求元祖的最大值 a = (1, 2, 3) print(max(a))
3
# 求元祖的最小值 a = (1, 2, 3) print(min(a))
1
# 求元祖的长度 a = (1, 2, 3) print(len(a))
3

第十二章 字典

1.字典的定义

  • 字典用{}包围,元素以逗号隔开
  • 字典中的数据必须以键值对的形式存在
  • 键不可重复,值可以重复(若键重复,只会记住该键对应的最后一个值)
  • 特点
    • 无序
    • 可变
# 定义一个字典 student = {"name":"zhangsan", "age":18} print(student) print(type(student))
{'name': 'zhangsan', 'age': 18} <class 'dict'>

2. 字典的常用方法

获取值

# 根据键获取值 student = {"name":"zhangsan", "age":18} print(student["name"])
zhangsan

修改值

# 根据键修改值,如果值不存在则添加 student = {"name":"zhangsan", "age":18} student["age"] = 19 print(student)  student["sex"] = "boy" print(student)
{'name': 'zhangsan', 'age': 19} {'name': 'zhangsan', 'age': 19, 'sex': 'boy'}

删除值

# 根据键删除键值对 student = {"name":"zhangsan", "age":18} student.pop("age") print(student)
{'name': 'zhangsan'}
# 随机删除一组键值对,以元祖形式返回被随机删除的键值对 stu1 = {"name":"zhangsan", "age":18, "sex":"boy"} stu2 = stu1.popitem() print("随机删除的是:") print(stu2) print("元祖中键值对少了一个:") print(stu1)
随机删除的是: ('sex', 'boy') 元祖中键值对少了一个: {'name': 'zhangsan', 'age': 18}

获取键

# 获取键 stu1 = {"name":"zhangsan", "age":18, "sex":"boy"} stu2 = stu1.keys() print(stu2)
dict_keys(['name', 'age', 'sex'])

获取值

# 获取值 stu1 = {"name":"zhangsan", "age":18, "sex":"boy"} stu2 = stu1.values() print(stu2)
dict_values(['zhangsan', 18, 'boy'])

获取键值对

# 获取键值对 stu1 = {"name":"zhangsan", "age":18, "sex":"boy"} stu2 = stu1.items() print(stu2)
dict_items([('name', 'zhangsan'), ('age', 18), ('sex', 'boy')])

第十三章 选择语句

  • 语句格式:
    • if 条件:
      • 条件满足要做的事情1
      • 条件满足要做的事情2
      • ...
    • else:
      • 条件不满足时要做的事情1
      • 条件不满足时要做的事情2
      • ...

1. if-else

#  判断能否进入酒吧,18岁以上能进入,18岁以下禁止进入 age = int(input('请输入您的年龄:'))  if age>=18:      print('欢迎光临魅力四射~') else:      print('抱歉,您不能进入!')

2. elif

  • 格式:
    • if xxx1:
      • 事情1
    • elif xxx2:
      • 事情2
    • elif xxx3:
      • 事情3

elif必须和if一起使用,否则会出错

# 判断成绩等级 # 优秀:90 <= 成绩 <= 100 # 良好:80 <= 成绩 < 90 # 中等:70 <= 成绩 < 80 # 一般:60 <= 成绩 < 70 # 不及格:0 <= 成绩 < 60 score = 95 if score>=90 and score<=100:     print("本次考试,成绩优秀!") elif score>=80 and score<90:     print("本次考试,成绩良好!") elif score>=70 and score<80:     print("本次考试,成绩中等!") elif score>=60 and score<70:     print("本次考试,成绩一般!") elif score>=0 and score<60:     print("本次考试,成绩不及格!")                                        

练习:季节判断

month = int(input('Month:')) if month in [3,4,5]:   print('春季') elif month in [6,7,8]:   print('夏季') elif month in [9,10,11]:   print('秋季') elif month in [12,1,2]:   print('冬季') else:   print('输入不合法')     month = int(input("请输入月份:")) if month >= 3 and month <= 5:     print("你输入的{}月份是春天".format(month)) elif month >= 6 and month <= 8:     print("你输入的{}月份是夏天".format(month)) elif month >= 9 and month <= 11:     print("你输入的{}月份是秋天".format(month)) elif month ==12 or month == 1 or month == 2 :     print("你输入的{}月份是冬天".format(month)) else:     print("月份输入不规范,请重新输入!")

3. if嵌套

  • 格式
    • if 条件1:

      • 满足条件1 做的事情1
      • 满足条件1 做的事情2
      • ...(省略)...
      • if 条件2:
        • 满足条件2 做的事情1
        • 满足条件2 做的事情2
        • ...(省略)...
age = 17 food = 'no' if age>=18:     if food=='yes':         print('您带了酒水,不能进入')     else:         print('欢迎光临')     

4. if应用:猜拳游戏

# 猜拳游戏 import random  player = input("请输入:剪刀(0) 石头(1) 布(2):")  player = int(player)      # 把输入的字符串转为整型  computer = random.randint(0,2)   # 随机生成一个在0-2之间的数  print("玩家输入:{}, 电脑输入:{}".format(player, computer))  # 测试  if (player == 0 and computer == 2) or (player == 1 and computer == 0) or (player == 2 and computer == 1):     print("获胜,哈哈,你太厉害了!") elif player == computer:     print("平局哦,要不要再来一局") else:     print("你输了,不要走,决战到天亮!")

第十四章 循环语句

1. 程序的三大执行

  • 1.顺序执行
  • 2.选择执行
    • if else
  • 3.循环执行

2. while循环

  • 格式
    • while 条件:
      • 满足条件做的事情
  • 先判断再执行

打印1-10之间的数字

# 打印1-10之间的数字  # print(1) # print(2) # ...  # num = 1 # print(num)  # num = num + 1             找出需要重复执行的代码 # print(num)                在上面加上while  # num = num +1 # print(num)  i = 1 while i<=10:     print(i)     i = i + 1           # 这样的程序就叫循环执行
1 2 3 4 5 6 7 8 9 10

# 打印1-20之间的数 i = 1 while i<=20:     print(i)     i = i + 1    # 这句如果忘了写,就会一直打印1,陷入了一个死循环                  # 这句不写,语法没错,但是逻辑错了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

3. while嵌套

  • 格式
    • while 条件:
      • 条件满足时做的事情
      • ...
      • while 条件2:
        • 条件2满足时做的事情
        • ...
# 举例 ''' 给个任务:执行下面的动作10次 1.站起来 2.转5个圈 3.坐下 站起来坐下一共执行10次 转圈一共转了50个  用while来写: while 条件:     1.站起来     while 执行5次:         2.转1个圈     3.坐下 '''
'\n给个任务:执行下面的动作10次\n1.站起来\n2.转5个圈\n3.坐下\n站起来坐下一共执行10次\n转圈一共转了50个\n\n用while来写:\nwhile 条件:\n    1.站起来\n    while 执行5次:\n        2.转1个圈\n    3.坐下\n'

打印一个三角形

''' * ** *** **** *****  分析: 有五行,每行的东西不一样 既要控制行,又要控制列 做不到? 先做一个简单的 先打印一个类似,再去修改,程序不是一次就写好的 先打印出一个矩形  '''
'\n*\n**\n***\n****\n*****\n\n分析:\n有五行,每行的东西不一样\n既要控制行,又要控制列\n做不到?\n先做一个简单的\n先打印一个类似,再去修改,程序不是一次就写好的\n先打印出一个矩形\n\n'

三角形无法一步到位打印出来,先打印矩形

# 打印矩形  # i = 1 # while i<=5: #     print("*****") #     i = i + 1  # i = 1 # while i<=5: #     j = 1 #     while j<=5: #         print("*")            # print打印默认换行了,怎么做到不换行? #         j = j + 1 #     i = i + 1  # i = 1 # while i<=5: #     j = 1 #     while j<=5: #         print("*", end="")       # 加上end=‘’,打印不换行,但是*全在一行里了      #         j = j + 1 #     i = i + 1  i = 1 while i<=5:     j = 1     while j<=5:         print("*", end="")                    j = j + 1     print('')                      # 等到里边的while结束了,也就是打印了一行5个星号后,换行     i = i + 1
***** ***** ***** ***** *****

打印三角形

# 打印三角形 i = 1 while i<=5:     j = 1     while j<=i:             # 第一行一个,第二行两个...正好与i的值一致,并且i的值不受内循环影响         print("*", end="")                    j = j + 1     print('')                          i = i + 1
* ** *** **** *****

打印九九乘法表

# 打印九九乘法表 # i = 1 # while i<=9: #     j = 1 #     while j<=i:              #         print("X*Y=Z ", end="")           # 先把格式换上去 #         j = j + 1 #     print('')                      #     i = i + 1  i = 1 while i<=9:     j = 1     while j<=i:                      print("{}*{}={}\t".format(j,i,j*i), end="")      #加上一个\t对齐              j = j + 1     print('')                          i = i + 1
1*1=1       1*2=2   2*2=4    1*3=3   2*3=6   3*3=9    1*4=4   2*4=8   3*4=12  4*4=16   1*5=5   2*5=10  3*5=15  4*5=20  5*5=25   1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36   1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49   1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64   1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  

4. for循环

  • 格式
    • for 变量 in 序列:
      • 执行语句
  • 作用:遍历对象

遍历字符串

# 遍历字符串 name = 'zhangsan'  for i in name:     print(i)
z h a n g s a n

遍历列表

name = ['zhangsan', 'lisi', 'wangwu']  for i in name:     print(i)
zhangsan lisi wangwu

遍历字典

# 遍历字典 stu = {'name':'zhangsan', 'age':18, 'sex':'man'}  # 遍历建和值 for key, value in stu.items():     print(key, ':', value)      print('-'*50)  # 遍历键 for key in stu.keys():     print('key=', key)  print('-'*50)  # 遍历值 for value in stu.values():     print('value=', value)
name : zhangsan age : 18 sex : man -------------------------------------------------- key= name key= age key= sex -------------------------------------------------- value= zhangsan value= 18 value= man

打印1-10之间的数字

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

打印矩形

# 打印矩形 for i in range(1,9):     for j in range(1,9):         print("*", end="")     print("")

打印三角形

# 打印三角形 for i in range(1,9):     for j in range(1,i+1):         print("*", end="")     print("") for i in range(1,1):     print("开始打印rang1-1")     print(i)   #根本就没有值
* ** *** **** ***** ****** ******* ********

打印九九乘法表

# 打印九九乘法表 for i in range(1,10):     for j in range(1,i+1):         print("{}*{}={}".format(j,i,j*i), end="\t")     print("")    
1*1=1    1*2=2   2*2=4    1*3=3   2*3=6   3*3=9    1*4=4   2*4=8   3*4=12  4*4=16   1*5=5   2*5=10  3*5=15  4*5=20  5*5=25   1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36   1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49   1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64   1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  

for if 嵌套

# for if 嵌套 # 打印列表里的所有姓名 # 如果是wangwu,就提示,他中奖了 name = ["zhangsan", "lisi", "wangwu"] for i in name:     print(i)     if i == "wangwu":         print("恭喜你中奖了!")     else:         print("不好意思,你没中奖!")     
zhangsan 不好意思,你没中奖! lisi 不好意思,你没中奖! wangwu 恭喜你中奖了!

==注意:if while 同样可以嵌套==

for循环练习题

1. 获取任意字符串的长度

s = 'name'  # 定义字符串 num = 0     # 定义长度为0 for i in s:     num += 1 # 每循环一次,num加1 print(num)
4

2. 给出任意一个字符串,打印出该字符串中的字母个数以及数字个数

str = input('请输入需要统计的字符串:') letter = 0 num = 0 for i in str:     if i in 'abcdefghijklmnopqrstuvwxyzABC':         letter += 1     elif i in '1234567890':         num += 1 print('这个字符串中有%d字母,%d个数字' %(letter, num))

3. 生成10个的斐波那契数列

# 从1开始,后面的数是前面两数之和 # 1  1  2  3  5 a, b = 0, 1 nums = [] for i in range(10):     nums.append(b)     a, b = b, a+b print(nums)

4. 求1-100之间的所有偶数和

sum = 0 for i in range(2,101,2):     sum += i print(sum)  sum2 = 0 for i in range(1,101):     if i%2==0:         sum2+=i print(sum2)

5. 计算2-3+4-5+6-7+8....100的值

num = 0 for i in range(2, 101):     if i%2==0:         num += i     else:         num -= i print(num)

第十五章 函数

1. 函数的定义

  • 把具有独立功能的代码块组织成一个小模块

格式

def 函数名():    函数代码

2. 函数的文档注释

  • 函数的文档注释用一对三双引号包围,用来解释说明函数的作用
def GuShi():     '''这个函数用来打印一首古诗'''     print('百日依山尽')     print('黄河入海流')     print('欲穷千里目')     print('更上一层楼')      help(GuShi)
Help on function GuShi in module __main__:  GuShi()     这个函数用来打印一首古诗

3. 函数的参数

  • 需求:定义一个函数,用来计算两个数之和

3.1 函数不带参数

  • 不带参数只能固定计算函数里定义好的值
# 定义一个函数用来计算两个数之和 def add2num():     a = 1     b = 2     c = a + b     print(c)  add2num()
3

3.2 函数的形参和实参

  • a,b叫形参(形式参数):定义函数时的参数
  • 1,2叫实参(实际参数):实际调用时的参数
  • 在调用函数时,用实参(1,2)替换形参(a,b),再去执行函数里面的代码
# 由于需要计算的值不固定,所以定义函数时携带两个参数 def add2num(a,b):      # a,b  形式参数     c = a + b     print(c)      add2num(1,2)           # 1,2  实际参数

3.3 函数参数的传递

3.3.1 位置传递

# 参数按照位置顺序传入 def add2num(a,b):      # a,b  形式参数     c = a + b     print(c)      add2num(1,2)           # 1,2  实际参数

3.3.2 关键字传递

# 指定形参的值,位置可以不按照形参顺序 def add2num(a,b):      # a,b  形式参数     c = a + b     print(c)      add2num(b=1,a=2)           # 1,2  实际参数

3.3.3 函数参数的默认值

  • 函数参数在定义时可以给默认值,如果调用函数时没有传入实参,就使用参数的默认值
  • 注意:拥有默认值的参数一般放在最后一个参数的位置,否则会报错
# 函数参数的默认值 def add2num(b, a=1):      # a,b  形式参数,注意:拥有默认值的参数a,应该放在参数的最后一个位置     c = a + b     print(c)      add2num(2)           # 1,2  实际参数

4. 函数的返回值

  • 函数在执行完成后,一般情况下都会产生一个结果,使用return将这个结果返回给调用者,这就是返回值
  • 函数中如果没有定义return,那么返回值为空(None
  • 函数只要执行到return就不会继续往下执行
# 用return返回结果给调用者 def add2num(a,b):     return a + b  c = add2num(1,2) print(c)
3

函数没有return,返回None

def add2num(a,b):     c = a + b  result = add2num(1,2) print(result)
None

只要执行了return,后续代码将不会执行

def add2num(a,b):     c = a + b          return c          c -= 1            result = add2num(1,2) print(result)
3

5. 局部变量与全局变量

  • 全局变量:定义在函数外部的变量,在整个代码文件都生效
  • 局部变量:定义在函数内部的变量,只在函数内部生效

    全局变量

a = 100          # 全局变量定义在函数外,作用于整个文件  def printNum():     print(a)     # 在函数内也可以调用该变量  printNum() 
100

局部变量

def printNum():     b = 100       # 局部变量定义在函数内部,只作用于函数内     print(b) printNum() print(b)          # 函数外部无法调用局部变量,错误提示为该变量未定义
100

global

  • 使用global可以声明变量为全局变量
def printNum():     global b      # 使用global声明变量为全局变量     b = 100       # 局部变量定义在函数内部,只作用于函数内     print(b) printNum() print(b)          # 函数外部无法调用局部变量,错误提示为该变量未定义
100 100

6. 函数的跨文件使用

  • 函数封装好以后,可以在其他文件导入并使用
  • 导包的方式为:from 文件名 import 函数名
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!