python_ 运算符与分支结构

本文详细介绍了Python的基本概念,包括运算符、分支结构、字符串格式化、ASCII、列表、集合、字典的操作,以及如何通过示例解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 运算符与分支结构

### 运算符

- 赋值运算符

  - 用'='表示,左边只能是变量。

- 算术运算符

  - +、-、*:加、减、乘
  - /:除法运算,结果是浮点数
  - //:除法运算,结果是整数
  - %:求余
  - **:求幂

- 复合运算符

  - +=、-=、*=、/=、//=、%=**=
  - 示例:`a += b`等价于`a = a + b`

- 关系运算符

  - `>、>=、<、<=、==、!=`
  - 表达式:由操作数和运算符构成的式子
  - 关系表达式:由操作数和关系运算符构成的式子
  - 关系表达式是有值的:符合数学逻辑值为真(True)、不符合数学逻辑值为假(False)

- 逻辑运算符

  - 与(and):两边的表达式同时为真,结果才为真。

  ```python
  a = 20
  # 通用写法
  # print(a>=10 and a<=100)
  # 特有写法
  print(10 <= a <= 100)

  b = 10
  print(b%3 == 0 and b%5 == 0)
  ```

  - 或(or):两边的表达式一个为真,结果就为真。

  ```python
  year = int(input('请输入一个年份:'))
  print((year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))
  ```

  - 非(not):用于取反表达式,真变假,假变真。
    - 经常伴随着隐式类型转换
    - 使用not是为了简化书写

- 成员运算符

  - in、not in:判断一个值是否在另一个变量中
  - 说明:通常用在字符串、列表、元组、集合、字典等成员的判断
  - 示例:

  ```python
  lt = [1, 2, 3]
  print(8 in lt)
  print(8 not in lt)
  d = {'name': 'ergou', 'age': 18}
  ```


  # 字典成员判断的是键
  print('name' in d)
  ```python

- 位运算符(了解)

  - &:按位与,对应的数据位同时为1,结果上对应的位才为1
  - |:按位或,对应的数据位一个为1,结果上对应的位就为1
  - ^:按位异或,对应的数据位相同时结果上的位为0,不同时结果上位为1
  - ~:按位取反,数据的每一位,0变1,1变0
  - <<:按位左移,左移一位相当于乘以2
  - >>:按位右移,右移一位相当于除以2

- 优先级与结合性

  - 语法中没有明确规定运算符的优先级与结合性,即使明确说了你也不一定能记得住。
  - 建议:使用时不用刻意记录优先级与结合性,当需要明确指定时添加括号即可。


### 流程控制

- 说明:

  - 按照程序的执行流程,程序可以分为三种结构:顺序结构、分支结构、循环结构
  - 顺序结构:代码按照从上到下的顺序依次执行,没有语法要求。
  - 代码层次:python中的代码块不是通过大括号表示的,而是通过缩进来表示。

- 分支结构(if-else)

  - 格式1:适合于生活中的条件执行问题

  ```python
  if 表达式:
    语句块
  ```

  > 执行流程:当程序执行到if语句时,首先判断表达式的真假。若表达式的值为真,则指定缩进的语句块;若表达式的值为假,则跳过语句块执行后面的内容。

  - 格式2:适合于解决生活非此即彼的问题

  ```python
  if 表达式:
    语句块1
  else:
    语句块2
  ```

  > 执行流程:当程序执行到if-else语句时,首先判断表达式的值真假。若表达式的值为真,则执行语句块1;若表达式的值为假,则执行语句块2.

  - 格式3:适合于解决生活中多种选择的问题

  ```python
  if 表达式1:
    语句块1
  elif 表达式2:
    语句块2
  elif 表达式n:
    语句块n
  else:
    语句块
  ```

  > 1. elif的个数没有限制
  > 2. else可以省略
  > 3. 所有的语句块最多只能执行一个

### 字符串格式化

- 示例:

  ```python
  name = '二狗'
  like = '王大花'
  age = 18
  # 格式化
  # %s:字符串
  # %d:整数
  # %f:浮点
  # %c:字符
  print('俺叫%s,暗恋%s,她今年%d岁' % (name, like, age))

  # python特有的格式化方案,推荐使用
  print('俺叫{},暗恋{},她今年{}岁'.format(name, like, age))
  print('俺叫{2},暗恋{1},她今年{0}岁'.format(name, like, age))
  print('俺叫{l},暗恋{n},她今年{a}岁'.format(n=name, l=like, a=age))
  ```

### ASCII

- 说明:美国信息交换标准代码,就是用一个数字代表一个字符的表示形式。

- 函数:

  ```python
  # 根据字符获取ASCII码
  print(ord('A'))
  # 根据ASCII码的值获取字符
  print(chr(97))
  ```

### 列表操作

- 示例:

  ```python
  lt = [1, 2, 3, 4, 5]

  print(lt[0])
  print(lt[-1])
  print(lt[1:3])
  print(len(lt))

  # 修改
  lt[0] = 100

  # 追加,在列表的末尾添加
  # lt.append(200)
  # 整体作为一个元素添加
  # lt.append([200, 300])
  # 将可迭代对象中的每一个元素依次添加到列表
  lt.extend([200, 300])

  # 在指定位置插入元素
  lt.insert(2, 250)

  # 删除
  # 根据下标删除元素
  del lt[0]
  # 根据值进行删除
  lt.remove(250)
  # 返回并删除执行下标的元素,默认最后一个
  last = lt.pop(3)
  print(last)

  lt = [1, 2, 3, 4, 5, 1]
  # 根据元素,查找下标(第一个)
  print(lt.index(1))
  # 统计元素出现的次数
  print(lt.count(1))

  # 逆序
  lt.reverse()
  print(lt)

  lt = [5, 8, 3, 1, 9]
  # 排序,默认升序,可以通过reverse参数指定倒序排
  lt.sort(reverse=True)
  print(lt)
  ```

### 集合操作

- 示例

  ```python
  s = {'生辉', '学轩', '俊峰', '鹏基', '二狗'}

  # 添加元素
  s.add('晓富')

  # 删除
  # s.remove('二狗')
  # 删除不存在的元素时会报KeyError错
  # s.remove('狗蛋')
  # 有就删除,没有也不报错
  # s.discard('狗蛋')

  # 返回并删除
  # print(s.pop())

  # 清空元素
  s.clear()

  # print(s)

  s1 = {'小马', '小芳', '小敏'}
  s2 = {'小杜', '小王', '小敏'}

  # 并集,捕获改变原集合
  # print(s1.union(s2))

  # 交集,不会改变原集合
  # print(s1.intersection(s2))
  # 交集,然后覆盖原集合
  # s1.intersection_update(s2)

  # 差集,不会改变原集合
  # print(s1.difference(s2))
  # 差集,然后覆盖原集合
  # s1.difference_update(s2)

  # print(s1)

  # 判断是否没有交集
  print(s1.isdisjoint(s2))

  # 判断是否是另一集合的子集
  print(s1.issubset(s2))

  # 判断是否是另一集合的父集/超集
  print(s1.issuperset(s2))
  ```

### 字典操作

- 示例

  ```python
  d = {'name':'ergou','age':18}

  #获取成员
  print(d.get('name','默认'))

  #修改元素
  #元素存在直接更改
  #d['name'] = '二狗'
  #元素不存在则添加
  #d['height'] = 180

  #更新,存在的覆盖,不存在的添加
  #d.update({'name':'二狗','height': 180})

  #删除
  #del d['age']
  #返回后删除
  #print(d.pop('age'))

  #清空
  #d.clear()

  print(d)
  ```

### 练习:

- 从终端获取一个年份,判断是否是闰年,是就打印'xxx年是闰年',不是就打印'xxx年不是闰年'

- ```python
  s = int(input("请输入一个年份:"))
  if s % 100 !=0 and s%4 ==0 or s % 400 == 0  :
       print(s,"年是闰年")
  else:
       print(s,"年不是闰年")
  ```

- 输入两个整数,打印较大值

- ```python
  i = int(input("请输入一个整数:"))
  j = int(input("请输入一个整数:"))
  if  i > j :
       print(i)
  else:
       print(j)b
  ```

- 输入三个整数,按照从小到大的顺序打印

- ```python
  i = int(input("请输入一个整数:"))
  j = int(input("请输入一个整数:"))
  b = int(input("请输入一个整数:"))
  lt = []
  lt.append(i)
  lt.append(j)
  lt.append(b)
  lt1 = sorted(lt)
  print(lt1[0],lt1[1],lt1[2])
  ```

- 输入一个三位数,顺序打印个位、十位、百位上的数

- ```python
  i = int(input("请输入一个整数:"))
  print(int(i%10,),int(i%100//10,),int(i//100,))
  ```

- 输入一个整数,判断是否既能被3整除,又能被7整除

- ```python
  i = int(input("请输入一个整数:"))
  print()
  if i % 3 ==0 and i % 7 ==0 :
      print(i,"既能被3整除,也能被7整除")
  else:
      print(i,"不能即被3整除,又被7整除")
  ```

- 输入一个字符,是大写转换为小写,是小写转换为大写,其它字符原样输出

- ```
  i = input("请输入一个字符:")
  print(i.swapcase())
  ```

  ​



posted on 2018-09-08 16:57 liangzhiwen 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lzw19951020/p/9650033.html

基于数据挖掘的音乐推荐系统设计实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值