diff --git a/docs/开发/Python/分支、循环结构.md b/docs/开发/Python/分支、循环结构.md new file mode 100644 index 00000000..fe66d30b --- /dev/null +++ b/docs/开发/Python/分支、循环结构.md @@ -0,0 +1,190 @@ +--- +id: 分支、循环结构 +title: 分支、循环结构 +sidebar_position: 2 +data: 2022年1月26日 +--- + +## if 语句 + +在Python中,要构造分支结构可以使用`if`、`elif`和`else`关键字。所谓**关键字**就是有特殊含义的单词,像`if`和`else`就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他的标识符也是不可以)。下面的例子中演示了如何构造一个分支结构。 + +```python +""" +用户身份验证 + +Version: 0.1 +Author: 骆昊 +""" +username = input('请输入用户名: ') +password = input('请输入口令: ') +# 用户名是admin且密码是123456则身份验证成功否则身份验证失败 +if username == 'admin' and password == '123456': + print('身份验证成功!') +else: + print('身份验证失败!') +``` + +需要说明的是和 C/C++、Java 等语言不同,Python 中没有用花括号来构造代码块而是**使用了缩进的方式来表示代码的层次结构**,如果`if`条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。换句话说**连续的代码如果又保持了相同的缩进那么它们属于同一个代码块**,相当于是一个执行的整体。**缩进**可以使用任意数量的空格,但**通常使用4个空格**,建议大家**不要使用制表键**或者**设置你的代码编辑工具自动将制表键变成4个空格**。 + +当然如果要构造出更多的分支,可以使用`if...elif...else...`结构或者嵌套的`if...else...`结构。 + +## range 队列 + +`range(1, 101)`可以用来构造一个从1到100的范围,当我们把这样一个范围放到`for-in`循环中,就可以通过前面的循环变量`x`依次取出从1到100的整数。当然,`range`的用法非常灵活,下面给出了一个例子: + +- `range(101)`:可以用来产生0到100范围的整数,需要注意的是取不到101。 +- `range(1, 101)`:可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。 +- `range(1, 101, 2)`:可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。 +- `range(100, 0, -2)`:可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。 + +## for-in 循环 + +**如果明确的知道循环执行的次数或者要对一个容器进行迭代**,那么我们推荐使用`for-in`循环,例如下面代码中计算1~100求和的结果 + +```python +""" +用for循环实现1~100求和 + +Version: 0.1 +Author: 骆昊 +""" + +sum = 0 +for x in range(101): + sum += x +print(sum) +``` + +## while 循环 + +如果要构造不知道具体循环次数的循环结构,我们推荐使用`while`循环。`while`循环通过一个能够产生或转换出`bool`值的表达式来控制循环,表达式的值为`True`则继续循环;表达式的值为`False`则结束循环。 + +```python +""" +猜数字游戏 + +Version: 0.1 +Author: 骆昊 +""" +import random + +answer = random.randint(1, 100) +counter = 0 +while True: + counter += 1 + number = int(input('请输入: ')) + if number < answer: + print('大一点') + elif number > answer: + print('小一点') + else: + print('恭喜你猜对了!') + break +print('你总共猜了%d次' % counter) +if counter > 7: + print('你的智商余额明显不足') +``` + +上面的代码中使用了`break`关键字来提前终止循环,需要注意的是`break`只能终止它所在的那个循环,这一点在使用嵌套的循环结构(下面会讲到)需要引起注意。除了`break`之外,还有另一个关键字是`continue`,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。 + +## 常见循环示例 + +### 九九乘法表 + +``` +""" +输出乘法口诀表(九九表) + +Version: 0.1 +Author: 骆昊 +""" + +for i in range(1, 10): + for j in range(1, i + 1): + print('%d*%d=%d' % (i, j, i * j), end='\t') + print() +``` + +### 判断是不是素数 + +``` +""" +输入一个正整数判断它是不是素数 + +Version: 0.1 +Author: 骆昊 +Date: 2018-03-01 +""" +from math import sqrt + +num = int(input('请输入一个正整数: ')) +end = int(sqrt(num)) +is_prime = True +for x in range(2, end + 1): + if num % x == 0: + is_prime = False + break +if is_prime and num != 1: + print('%d是素数' % num) +else: + print('%d不是素数' % num) +``` + +### 打印三角形图案 + +``` +* +** +*** +**** +***** +``` + +``` + * + ** + *** + **** +***** +``` + +``` + * + *** + ***** + ******* +********* +``` + +``` +""" +打印三角形图案 + +Version: 0.1 +Author: 骆昊 +""" + +row = int(input('请输入行数: ')) +for i in range(row): + for _ in range(i + 1): + print('*', end='') + print() + + +for i in range(row): + for j in range(row): + if j < row - i - 1: + print(' ', end='') + else: + print('*', end='') + print() + +for i in range(row): + for _ in range(row - i - 1): + print(' ', end='') + for _ in range(2 * i + 1): + print('*', end='') + print() +``` + diff --git a/docs/开发/Python/初识 Python.md b/docs/开发/Python/语言元素.md similarity index 97% rename from docs/开发/Python/初识 Python.md rename to docs/开发/Python/语言元素.md index 778e2262..53b2ded8 100644 --- a/docs/开发/Python/初识 Python.md +++ b/docs/开发/Python/语言元素.md @@ -1,12 +1,11 @@ --- -id: 初识 Python -title: 初识 Python +id: 语言元素 +title: 语言元素 sidebar_position: 1 data: 2022年1月26日 --- -## 语言元素 -### 注释 +## 注释 - 单行注释:以 # 和空格开头的部分 @@ -24,7 +23,7 @@ print('hello, world!') print("你好, 世界!") ``` -### 变量和类型 +## 变量和类型 - 整型:Python中可以处理任意大小的整数(Python 2.x中有`int`和`long`两种类型的整数,但这种区分对Python来说意义不大,因此在Python 3.x中整数只有int这一种了),而且支持二进制(如`0b100`,换算成十进制是4)、八进制(如`0o100`,换算成十进制是64)、十进制(`100`)和十六进制(`0x100`,换算成十进制是256)的表示法。 @@ -36,7 +35,7 @@ print("你好, 世界!") - 复数型:形如`3+5j`,跟数学上的复数表示一样,唯一不同的是虚部的`i`换成了`j`。实际上,这个类型并不常用,大家了解一下就可以了。 -#### 变量命名 +### 变量命名 **硬性规则:** - 变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。