【嵌入式学习4】Python基础知识

目录

1、数据类型

2、 运算符

①算术运算符

②赋值运算符

③比较、逻辑运算符

3、字符串

4、输出输入函数

5、控制语句

①if语句

②if...else...语句

③if...elif...else语句

6、循环语句

①while语句

②while语句嵌套循环:

③for循环

④break和continue

7、补充内容

①eval()

②random.random()

③range()

8、函数基础

①函数的定义

②函数的调用

③多参数、多返回值的函数

④函数的四种类型

⑤局部变量和全局变量

9、list列表

高级数据类型的特点:

列表的定义

访问、增加、删除、修改、查询列表的元素

列表的排序

列表的嵌套

10、tuple元组

元组的定义

元组的特点和作用


1、数据类型

数据类型描述举例
int整型1,-1,100
float浮点型3.14,-0.1,2.0
bool布尔型

True,False

complex复数型1+2j,-3+4j
str字符串“hi”
list列表[1,2,'a',True]
tuple元组(1,2,'a',True)
set集合{1,2,3,4}
dict字典

{

'name': 'Ada',

'age': 25,

'city': 'GZ'

}

2、 运算符

①算术运算符
运算符描述
+
-
*
/
//取整除 [对于负数运算,// 的结果总是向下取整]
%取余数
**
②赋值运算符
运算符描述
=赋值
+=加等于【a+=5 等价于 a=a+5】
-=减等于
*=乘等于
/=除等于
//=整除等于
%=模等于
**=幂等于
③比较、逻辑运算符
运算符描述
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于
and逻辑与
or逻辑或
not逻辑非

3、字符串

①字符串之间可以拼接:str3 = str1+str2

②字符串和整形可以使用*进行重复字符串拼接:s = str * 5

③字符串和变量之间不能进行其他运算

4、输出输入函数

①输出函数:print()

②输入函数:input()【input输入的数据都为str字符串类型】

"""
超市买苹果计算金额
需求:	
●  收银员输入苹果的价格price,单位:元/斤
●  收银员输入用户购买苹果的重量weight,单位:斤
●  计算并输出付款金额:xxx元
"""

price = float(input('请输入苹果单价:'))
weight = float(input('请输入购买苹果重量:'))
all = price * weight
print("付款金额:%。2f元"%money)


"""
● 在控制台依次提示用户输入:姓名name、公司com、职位title、电话telephone、邮箱email
● 按格式输出
"""

name = input('请输入姓名:')
com = input('请输入公司名:')
title = input('请输入职务:')
telephone = input('请输入电话:')
email = input('请输入邮箱:')

# 输入50个*
print('*'*50)
# 公司名称
print('公司名称:%s'%com)
# 输出空行
print()
# 姓名(职位)
print('%s(%s)'%(name,title))
print()
print('电话:%s'%telephone)
print('邮箱:%s'%email)
print('*'*50)

5、控制语句

①if语句
"""
if 条件:
    条件成立时,要做的事情
    ……
"""

age = int(input('请输入你的年纪:'))
# if判断
if age >= 18:
    print('恭喜你,你成年啦')
②if...else...语句
"""
if 要判断的条件:
    条件成立时,要做的事情
    ……
else:
    条件不成立时,要做的事情
    ……

"""

age = int(input('请输入你的年纪:'))
# if判断
if age > =18:
    print('成年人')
else:
    print('小孩子')
③if...elif...else语句
"""
if 条件1:
    条件1满足执行的代码
    ……
elif 条件2:
    条件2满足时,执行的代码
    ……
elif 条件3:
    条件3满足时,执行的代码
    ……
else:
    以上条件都不满足时,执行的代码
    ……

"""
holiday_name = input('请输入节日名称')
if holiday_name == '情人节':
    print('买玫瑰/看电影')
elif holiday_name == '平安夜':
    print('买苹果/吃大餐')
elif holiday_name == '生日':
    print('买蛋糕')
else:
    print('每天都是节日,每天一个红包')

6、循环语句

①while语句
# 1.定义循环变量
i = 1
# 2.使用while判断条件
while i <= 10000:
    # 要重复执行的代码
    print('我要玩铲铲')
    # 3.修改循环变量,如果忘记修改循环变量值会陷入死循环
    i += 1

"""
死循环写法:
while True:
    pass (空语句,保证语法完整无实际意义)
"""

"""
打印倒三角:
"""
n = int(input("请输入打印的行数: "))
while n >= 0:
    print("*" * n)
    n -= 1
②while语句嵌套循环:
# 外层循环
i = 0
while i < 5:
    # 内层循环
    j = 0
    while j < 3:
        print(j)
        j += 1
    i += 1

"""
实现正序九九乘法表:
"""
row = 1
while row < 10:
    # 这一行,需要操作n次 定义循环
    # 列循环:操作的次数
    col = 1
    while col <= row:
        # 不需要换行
        # 列*行=数据
        print('%d * %d = %d'%(col,row,col*row),end='\t') # 默认会有换行
        col += 1
    # 换行
    print()
    row += 1

"""
倒序九九乘法表
"""
row = 9
while row > 0:
    # 这一行,需要操作n次 定义循环
    # 列循环:操作的次数
    col = 1
    while col <= row:
        # 不需要换行
        # 列*行=数据
        print('%d * %d = %d'%(col,row,col*row),end='\t') # 默认会有换行
        col += 1
    # 换行
    print()
    row -= 1
③for循环
"""
for 临时变量 (not)in 列表或字符串等可迭代对象:
	执行的代码
"""
str = 'hello world'
# ele普通变量  接收容器中的元素
for s in str:
    print(s)


"""
水仙花数
"""

for a in range(100,1000):
    m = a//100;
    n = a//10%10
    t = a%10
    if(m*m*m + n*n*n + t*t*t) == a:
        print(a)


"""
for、while循环也可以加else

for 变量 in 容器:
	循环体代码
else:
    没有通过break退出循环, 循环结束后, 会执行的代码
"""

str = 'hello world'

for ele in str:
    print(ele)
else:
    print('执行了else语句')


"""
判断登录密码hhew2383dW_fkf&E@^是否合法。
1. 密码必须是数字、字母(大小写都可以)、和下划线,否则不合法
2. 如果密码合法,就输出"密码合法"
"""

psw = 'hhew2383dW_fkf&E@^'
container = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_'
for i in psw:
    if i not in container:
        print('密码不合法,不可包含%s' % ele)
        break
else:
    print('密码合法')
④break和continue
  • break:某一条件满足时,不再执行循环体中后续代码,并退出循环
  • continue:某一条件满足时,不再执行本次循环体中后续代码,但进入下一次循环判断

7、补充内容

①eval()

        将一个字符串作为 Python 表达式进行解析和执行,然后返回表达式的值。它通常用于动态地执行代码,但使用时需要非常谨慎,因为它可能会带来安全风险。

"""
eval(expression, globals=None, locals=None)
"""

# 简单的数学表达式
result = eval("2 + 3 * 4")
print(result)  # 输出:14

# 使用变量
x = 5
y = 10
result = eval("x + y")
print(result)  # 输出:15

# 使用自定义函数
def add(a, b):
    return a + b

result = eval("add(x, y)")
print(result)  # 输出:15
②random.random()

        Python 的一个内置模块,用于生成随机数和执行随机操作。它提供了多种函数,可以生成随机整数、浮点数、随机选择序列中的元素等

import random
print(random.random())  # 输出类似 0.4795411116451254

print(random.randint(1, 10))  # 输出 1 到 10 之间的随机整数

print(random.randrange(1, 10, 2))  # 输出 1 到 10 之间的奇数

print(random.uniform(1.0, 5.0))  # 输出 1.0 到 5.0 之间的随机浮点数

my_list = [1, 2, 3, 4, 5]
print(random.choice(my_list))  # 输出列表中的一个随机元素

my_list = [1, 2, 3, 4, 5]
weights = [1, 1, 1, 1, 10]  # 数字 5 的权重更高
print(random.choices(my_list, weights, k=3))  # 输出 3 个随机元素,数字 5 更容易被选中

my_list = [1, 2, 3, 4, 5]
print(random.sample(my_list, 3))  # 输出 3 个不重复的随机元素

my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list)  # 输出类似 [3, 5, 1, 4, 2]

random.seed(42)  # 设置固定种子
print(random.randint(1, 10))  # 每次运行结果相同
③range()

        创建整数列表,相当于左闭右开区间,[1,10) 包含1不包含10

# 定义0到10的区间(包含0,不包含10)
arr = range(0, 10)

# 定义0到10的区间(包含0,不包含10)
arr = range(10)

# 定义从10到1的区间,参数分别代表 start开始, stop结束, step步长
arr = range(10, 0, -1)

8、函数基础

①函数的定义
def 函数名():
    函数封装的代码
②函数的调用
函数名()
③多参数、多返回值的函数
def calc(a, b):
    '''
    求a+b以及a-b的结果
    :param a:
    :param b:
    :return: 结果的元组
    '''
    sum = a + b
    sub = a-b
    return sum, sub

# 分别接收和以及差
sum, sub = calc(10, 20)
④函数的四种类型
#无参数无返回值
def say_hello():
    print('hello')

#无参数有返回值
import random
def get_temp():
    return random.randint(0,100)

#有参数无返回值
def say_hello(name):
    print('hello %s'%name)

#有参数有返回值
def sum(a, b):
    return a + b
⑤局部变量和全局变量
def func1():
    # 局部变量
    b = 20
    print('hello%d' % b)


# 全局变量
m = 10
n = 20

def func():
    # 函数内访问全局变量
    print(m)

# 定义全局变量
m = 10

def func():
    # 使用global声明全局变量,函数内修改全局变量
    global m
    # 将m修改成20
    m = 30
    print("函数内部 m=", m)

9、list列表

        python中的高级数据类型:str、list、tuple、set、dict

高级数据类型的特点:
  • 都是一个序列 sequence,也可以理解为 容器
  • 获取某一个元素 数据集[index] (集合除外,无序的)
  • 通过for循环遍历
  • 都可以计算长度、最大/最小值、比较、删除
  • 连接 + 和 重复 *
  • 切片,获取容器一部分
列表的定义
namesList = ['孙颖莎','王楚钦','薯条派']
访问、增加、删除、修改、查询列表的元素

        索引值从0开始,元素在list中的位置编号,又可以被称为下标

namesList = ['孙颖莎','王楚钦','薯条派']

# 获取第二个人
name = namesList[1]
print(name)

# 遍历列表
for name in namesList:
    print(name)

# 通过append增加新元素
namesList.append('番茄酱')
print(namesList)
# ['孙颖莎','王楚钦','薯条派','番茄酱']

# 删除番茄酱
namesList.pop(3)
print(namesList)
# ['孙颖莎','王楚钦','薯条派']

# 删除薯条派
namesList.remove('薯条派')
print(namesList)
# namesList = ['孙颖莎','王楚钦']

namesList = ['孙颖莎','王楚钦','番茄酱']
# 将番茄酱修改成薯条派
namesList[2] = '薯条派'
print(namesList)
## ['孙颖莎','王楚钦','薯条派']

namesList = ['孙颖莎','王楚钦','薯条派']
# 查找第二个元素
ele = namesList[1]
print(ele)

namesList = ['孙颖莎','王楚钦','薯条派']
# 查找元素孙颖莎的索引
index = namesList.index('孙颖莎')
print(index)
列表的排序
ageList = [90,10,30,20,50,70]
# 从小到大 升序
ageList.sort()
print(ageList)

ageList = [90,10,30,20,50,70]
# 从大到小 降序排序
ageList.sort(reverse=True)
print(ageList)

ageList = [90,10,30,20,50,70]
# reverse 将列表进行反转
ageList.reverse()
print(ageList)
列表的嵌套
students = [
    ['Ada','Bob','Cindy'],
    ['Momo','Sunny']
]

# 查询Cindy
student = students[0][2]

# 修改Momo为Lion
students[1][0] = 'Lion'

10、tuple元组

        元组与列表类似,也是容器的一种,不同之处在于元组的元素不能修改

元组的定义
names_tuple = ('Ada','Lion','Sunny')

注意:一个元素的元组定义需要在元素后加上,

# 错误定义方式 ❌
names_tuple = ('Ada')
# 正确定义方式 ✅
names_tuple = ('Ada',)
元组的特点和作用
"""
自动组包:t的类型是元组类型

"""
t = 'Ada','Lion','Sunny'


"""
自动解包:元组t会自动解包分别赋值给name1、name2、name3三个变量
注意:左边变量的个数一定要和元组的元素个数保持一致
"""
# 定义元组
t = ('Ada','Lion','Sunny')
# 变量赋值
name1,name2,name3 = t


"""
交换数据:利用元组的组包和解包特点,快速交换两个数据
"""
a = 10
b = 20
# 交换a和b
a,b = b,a


"""
让列表不可修改:希望别人不要修改列表可以把列表转换成元组,这样就变成了不可变的数据
"""
lst = [10, 20, 30]
# 将列表转换成元组
tp = tuple(lst)

# 不可执行如下类似操作
tp[0] = 111
tp.append(222)

运行执行会报出如下错误:TypeError: 'tuple' object does not support item assignment

11、名片管理系统

需求:

  1. 程序启动,显示名片管理系统欢迎界面,并显示功能菜单
  2. 用户用数字选择不同的功能:新建名片、显示名片、查询名片、退出系统
    1. 用户名片需要记录用户的姓名、电话、QQ、邮件
    2. 显示名片可以列举出所有已经保存的名片
    3. 如果查询到指定的名片,用户可以选择修改、删除名片

代码实现:

def menu():
    print('*' * 50)
    print('欢迎使用【名片管理系统】V1.0')
    print()
    print('1.新建名片')
    print('2.显示全部')
    print('3.查询名片')
    print()
    print('0.退出系统')
    print('*' * 50)
    choice = input('请输入选择:')

def add():
    print('您选择的功能是: 1.新建名片')
    name = input('请输入名字:')
    phone = input('请输入手机号:')
    QQ = input('请输入QQ号:')
    Email = input('请输入邮箱:')
    card = [name, phone, QQ, Email]
    cardList.append(card)

def showAll():
    print('您选择的功能: 2.显示全部')
    print('姓名\t电话\tQQ\t邮件')
    print('-' * 50)
    for card in cardList:
        print('%s\t%s\t%s\t%s' % tuple(card))
    print('-' * 50)

def search():
    print('您选择的功能是: 3查询名片')
    name = input('请输入查询的姓名:')
    for card in cardList:
        if card[0] == name:
            handleCard(card)
            break
    else:
        print('没有找到对应的用户:%s' % name)

def handleCard(card):
    while True:
        type = int(input('请输入对名片的操作: 1.修改/ 2.删除/ 0.返回上一级:'))
        if type == 1:
            modifyCard(card)
            break
        elif type == 2:
            deleteCard(card)
            break
        elif type == 0:
            break
        else:
            print('输入错误,请重新输入')

def modifyCard(card):
    card[0] = input('请输入姓名:')
    card[1] = input('请输入电话:')
    card[2] = input('请输入QQ:')
    card[3] = input('请输入邮箱:')

def deleteCard(card):
    cardList.remove(card)

def main():
    global cardList
    cardList = []  # 名片数据列表
    while True:
        menu()
        type = int(input('请输入执行的操作:'))
        if type == 1:
            add()
        elif type == 2:
            showAll()
        elif type == 3:
            search()
        elif type == 0:
            break

if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值