第2周-python-函数-理论基础

2019-06-26  本文已影响0人  果芽软件

一、铺一条路

1.1 面向过程铺路

  1. 水泥、沙子、搅拌
  2. 用多少搅拌多少
  3. 做了就直接用
  4. 把水泥铺到路面上
面向过程修路

1.2. 面向函数铺路

1.2.1. 预制厂生产水泥砖

image.png image.png

1.2.2. 施工队铺路

image.png

1.3.预制装配式住宅

预制装配式住宅

二、计算机结构

冯诺依曼结构 函数结构 自动化内容

3. 代码量对比

  1. 左边为面向过程编程
  2. 右边为面向函数编程


    代码量对比

三、代码规范

3.1 定义语法

def add(a, b):
    c = a+b
    return c


代码 含义
def 函数代码块的关键字,“定义”的意思(define)
add 函数的名称,类似print(),用add()就可以调用
() 圆括号必须有,里面放参数,参数可为空,表示不需要传任何数据
a 申明一个变量,变量名为a,用来存传入的第1个数据
, 逗号,多个参数用逗号分割,逗号后面+空格
b 申明第二个变量,变量名为b,用来存传入的第2个数据
: 冒号,函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
空行 函数末尾,加空行

3.2 调用语法

sum = add(1,3)
代码 含义
add 调用add函数
() 存放要输入的数据
, 多个输入数据,用逗号分割
= 赋值符,将add(1,3)的返回结果,赋值给变量
sum 变量名,存放add(1,3)的返回结果

四、面向函数编程(预制厂)

1. 面向过程编程

    age = int(input("请输入年龄:"))
    nickname = ''
    if age < 20:
        nickname = '小奶狗'
    elif age in range(20, 30):
        nickname = '男神'
    else:
        nickname = '油腻大叔'
    print("昵称:" + nickname)

五、debug单步调试

  1. 设置断点


    设置断点
  2. debug运行


    debug模式运行
  3. 单步调试


    单步调试
  4. 查看变量


    查看变量值

六、函数的使用

6.1 在同一个.py文件内

def get_nick_name(age):
    name = ''
    if age < 20:
        name = "小奶狗"
    elif age in range(20,30):
        name = '男神'
    else:
        name = '油腻大叔'
    return name



name1 = get_nick_name(18)
print('结果:' + name1)

6.2 不在同一个.py文件内

  1. 新建python file,命名:tools.py
def get_nick_name(age):
    name = ''
    if age < 20:
        name = "小奶狗"
    elif age in range(20,30):
        name = '男神'
    else:
        name = '油腻大叔'
    return name
  1. 新建python file,命名:registry.py
from tools import *

nick_name = get_nick_name(18)
print('结果:' + nick_name)

from tools import *

代码 含义
from 从哪个模块(即.py文件)
tools 即tools.py模块
import 导入
* 代表所有函数(如果想导入指定函数,就写函数名)

注意:import前,得先将代码所在文件夹标记为源文件查找路径,不然会提示函数不存在

image.png

二、技术基础

1. random模块

  1. import模块
  2. random静态对象
  3. random常用方法
建议使用 "import random" 风格而非 "from random import *"。这样可以保证随操作系统不同而有所变化的 os.open() 不会覆盖内置函数 open()。
import random

print(random.random())  # 0-1之间随机浮点数
print(random.randint(2,4))  # 随机整数,最小值、最大值
print(random.randrange(0,100,3))  # 指定范围随机整数,最小值、最大值、步幅
list = ['a','b','c',1,2,3]
print(random.choice(list))  # 从列表中随机选一个数
print(random.sample(list,3))  # 从列表中选一个子集,子集也是列表
random.shuffle(list)  # 将列表随机打乱顺序
print(list)

执行结果:

0.6478421725433702
2
87
1
['c', 1, 3]
[1, 'b', 'a', 2, 3, 'c']

2. 语法简化

简化前

age = 30
mark = ''
if age > 18:
    mark = '成年人'
else:
    mark = '未成年人'

简化后

age = 30
mark = '成年人' if age >18 else '未成年人'

3. string字符对象

  1. string静态对象
  2. 小写字母ascii_lowercase
  3. 大写字母ascii_uppercase
  4. 字母ascii_letters(小写+大写)
  5. 数字digits
  6. 标点符号punctuation
  7. 可打印字符printable(字母+数字+标点符号)
import string
print('小写字母:'+string.ascii_lowercase)
print('大写字母:'+string.ascii_uppercase)
print('字母:'+string.ascii_letters)
print('数字:'+string.digits)
print('标点符号:'+string.punctuation)
print('可打印字符:'+string.printable)

打印结果

小写字母:abcdefghijklmnopqrstuvwxyz
大写字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ
字母:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
数字:0123456789
标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
可打印字符:0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~    

4. 列表常见处理

序号 方法 用途
1 扩展原列表(单值) li.append('dd')
2 扩展原列表(列表) li.append(['kk,vv'])
3 列表转换成字符串 v1=''.join(li)
4 统一列表元素类型 list(map(str,li))
5 列表打乱顺序 random.shuffle(pwd_list)
6 清空列表 list.clear()
7 列表排序 li.sort()
8 列表翻转 li.reverse()

a) 列表打乱顺序

li = ['a','b','c','d']
print(li)

random.shuffle(li)
print(li)

执行结果

['a', 'b', 'c', 'd']
['a', 'c', 'd', 'b']

b) 扩展列表

扩展单个

li = ['a','b','c']
print(li)

li.extend('d')
print(li)

li.extend(['e','f'])
print(li)

执行结果

['a', 'b', 'c']
['a', 'b', 'c', 'd']
['a', 'b', 'c', 'd', 'e', 'f']

c) 列表转字符串:

无数字:

li = ['a','b','c']
print(li)
print(''.join(li))

有数字:

li = ['a','b','c',1,2,3]
print(li)
li2 = list(map(str,li))
print(li2)
print(''.join(li2))

d) 统一列表元素类型:

li = ['1','2','3',4,5,6]
print(li)
print(list(map(str,li)))
print(list(map(int,li)))
['1', '2', '3', 4, 5, 6]
['1', '2', '3', '4', '5', '6']
[1, 2, 3, 4, 5, 6]

5. 字符串截取

a) 字符串截取

str = '0123456789'
print(str[0:3])  #截取第一位到第三位的字符
print(str[:])  #截取字符串的全部字符
print(str[6:])  #截取第七个字符到结尾
print(str[:-3])  #截取从头开始到倒数第三个字符之前
print(str[2])  #截取第三个字符
print(str[-1])  #截取倒数第一个字符
print(str[::-1])  #创造一个与原字符串顺序相反的字符串
print(str[-3:-1])  #截取倒数第三位与倒数第一位之前的字符
print(str[-3:])  #截取倒数第三位到结尾

b) 数字左补0

随机生成4位数,如果小于4位,左补0

num = random.randint(0,9999)+10000
print(num)

print(str(num)[1:])
10039
0039

思路:

  1. 随机数+10的固定位数+1次方
  2. 转换成字符串,去掉最高位1
上一篇 下一篇

猜你喜欢

热点阅读