python的枚举和for循环求一个数的约数_[Python 第二版] 4. 分支循环与枚举

什么是表达式

表达式(Experession)是运算符(operator)和操作数(operand)所构成的序列.

# 作业计算下列结果

>>> a = 1

>>> b = 2

>>> c = 3

>>> print(a + b *c)

7

>>> a or b and c ## 优先级顺序是 a or (b and c) , 因此不是推测的 3.

1

表达式的优先级

# 如何改变优先级举例

()的优先级最高

a =1

b =2

c =3

(a or b) and c

3

(a or b) and (c + 1)

4

## 左结合 - 从左向右计算

### 默认从左向右计算, 赋值运算符是特例,要右结合计算.

a = 1

b = 2

c = a + b ## 这里执行右结合. 就是先执行 a + b, 再执行 c =

## 这个例子不够有力, 因为算数运算符的优先级本来就会高于赋值运算符

## 举例逻辑运算

c = a or b

### 总结:如果一个表达式里有一个 赋值运算等号的符号, 那么执行右执行.

作业:

# 解释运算顺序-优先级

a = 1

b = 2

c = 2

not a or b + 2 == c

## 答案: False

(not a) or ((b + 2) == c) ## 经验:把括号内的东西看成一个变量

## 解析: 1. == 是比较运算符'相等', 不是赋值运算符, 所以执行左结合

2. not 优先级高于 or. 因此最终结果是 False

### 布尔运算优先级 not > and > or

### 建议使用 (not a) or ((b + 2) == c) , 不能对看代码的人要求太高.

在文本文件中编写 python 代码

# 保存文件.py 并运行 python 程序

代码内容:

a = 1

b = 2

c = 3

print('hello python')

## mac 中使用 textEDIT 软件保存为1.py 文件, 注意: Format -> make plain text

x5s-iMac:~ x5$ python3 /Users/x5/Downloads/1.py ## Terminal中运行 py 程序的格式 python3 + 文件名.py

hello python ## 输出结果

几种 python 的 IDE

pycharm vscode sublime

IDE缩写: integrated development environment 集成开发环境有些人认为 pycharm 才是 IDE, 另外二者不是

note: 初学者要尽量使用自动化少的 IDE, 因为前期尽量手动写全部的代码.

VSCODE 的使用 - 略过

安装 linter

每个人的环境都是不同, 因此请跟随当前教程的步骤, 严格一比一安装所需的软件.

查找问题最关键的原理是: 你要保证你安装的 linter 的版本和 python 版本匹配. 比如 3.x 和 2.x 是不同的文件

步骤:右下角点击 python 的版本号切换所需的 python 版本

点击安装

安装 pylint 可以通过库/包 pip命令.

条件控制

编码规范 PE- 8?

末尾不"强制"加分号作为结尾. 也就是说可以加. 不要花括号括起来代码, python 通过缩进区别代码块技巧: 可以使用 tab 键补全文件名或者命令

python 的注释方法

# 单行注释示例:

快捷键: cmd + /

# 多行注释示例:

​```

多行注释 快捷键: alt + shift + a

​```

# 或者

'''???'''

条件循环, 循环控制, 分支

# 举例使用布尔值的条件控制

## if 条件语句示例:

mood = True

if mood :

print("go to left")

## 上面和下面例子的区别

if mood :

print("go to left")

# print("back away")

print("back away")

### python 天生是不能压缩和混淆的, 天然是开源的.其他代码是能加密的, python 不能

## 举例 if else

mood = False

if mood :

print("go to left")

else:

print("go to right")

控制语句还可以是表达式

# 举例使用表达式的控制语句

python 控制语句最多用于判断用户的账号密码是否正确

a = 1

b = 2

c = 2

d = []

mood = False

if d :

print("go to left")

# print("back away")

else:

print("go to right")

用户输入账户密码的流程控制

# 用户输入账号密码示例

account = "qiyue"

password = "123456"

print("please input account")

user_account = input() # 引入 input()函数接收用户的输入

print("please input password")

user_password = input() ## 用户输入密码

if account == user_account and password == user_password : ## 这里使用了比较运算符,比较运算符的优先级大于逻辑运算符, 所以无需加括号.

print("success")

else :

print("fail")

语法规范 07:28 6 - 10

一边写代码, 一边去除波浪线(bi)constant 常量一般是不能更改的. 但 python 并不存在常量. 一般常量尽量大写, 比如 account 写成 ACCOUNT. 登录的用户名一般是不变更的, 应该认为是常量 函数或者类要大写. 零散的变量需要封装起来.

模块: 指一个 py 文件, 一个 python 项目是由多个 py 文件(模块)构成的.

python 中使用 4 个空格进行缩进.

note: pylint 只要监测的部分不是函数,类, 就会认为是一个常量.

# 最终更改结果

## 只更改了 account 到 ACCOUNT

ACCOUNT = "qiyue"

password = "123456"

print("please input account")

user_account = input() # 引入 input()函数接收用户的输入

print("please input password")

user_password = input() ## 用户输入密码

if ACCOUNT == user_account and password == user_password :

print("success")

else :

print("fail")

条件控制 - snippet, 嵌套分支, 代码块

在 VScode中:ide 技巧: 输入关键字以便使用片段 snippet. pass概念: 叫做 空语句/占位语句. 常常用于写 API, 里面需要 pass 作为骨架

# 举例

if condition:

pass

else:

pass ## 空语句/占位语句

if condition:

code1 ## 代码块之三

code2 ## 伪代码

code11 ## 代码块之一

code22

code333 ## 代码块之二

code444代码块, 尽量将长长的代码块, 比如一个 if/else 封装为一个函数, 尽量一行里面是短短的一句.

同一个缩进代表同一个代码块

elif 的优点

elif 可以把 if/else 合并在一起简写, 代码更加简洁, 容易阅读.

# 对比 if/else 以及 elif

a = input()

print("a is " + a)

if a == 1 :

print("apple")

else:

if a==2:

print("orange")

else:

if a==3:

print("banana")

else:

print("shopping")

## 上面的例子使用 elif 的表达简洁很多

a = input()

print("a is " + a)

if a == 1 :

print("apple") ## 不仅减少了多行, 而且 print 的代码块提前了. 整体可读性大大增加

elif a==2:

print("orange")

elif a==3:

print("banana")

else:

print("shopping")

## 官方文档建议使用 elif 代替其他语言里的 switch 功能,

## 更加推荐使用字典的方式实现 elif

作业解答

# 上面的例子会报错

a = input()

print("a is " + a)

## 这两行代码会报错. 因为 a 这个变量接收的是字符串

### python2.76中, input()函数接收的是 int 类型, 和 python3 完全不同.

## 一句话解决: a = int(a)

## inupt()接收的是字符串, 动态语言他们的变量是没有具体类型的.

## 这个例子出现一个现象, 动态语言中, 你写错代码了, 但它不会报错.

# 完整示例:

a = input()

print("a is " + a)

a = int(a) ## 转换 a 为 int 格式, 就可以运行下面的比较运算符 == 了.

if a == 1 :

print("apple")

elif a==2:

print("orange")

elif a==3:

print("banana")

else:

print("shopping")

优雅代码

通过两种编程的方法说明解决问题有多重方式, 选择最优雅的那一种.

# 要求返回两个变量中其中一个为真的变量

## 前提: a 和 b 不可能同时为 False

a = 0

b = 1 ## 仅为示例, 也可能是为 3, 6. 等

## 举例 2, 3 看下 `a or b` 的结果

>>> a = 1

>>> b = []

>>> a or b

1

>>> a = ""

>>> b = (1, 2, 3)

>>> a or b

(1, 2, 3)

更简单的方法:

a or b

发布时间: 2020 年 3 月 24 日

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值