基础 与 数值计算Basics and Numbers

输入输出I/O

药水商店

1 2 3 4
price = int(input())amount = int(input())total = price * amountprint(total)

输入输出

input输入用户 给 程序
output输出程序 给 用户

API

input()

可以向用户索要信息

print(x)

可以将 x 展示给用户

程序基本功能

输入 处理 输出

注释Comments

被注释的代码,不会被执行,编译时会被删除

样例

1 2 3 4 5 6 7 8 9 10 11 12 13
"""第一个程序""" # 输入price = int(input())amount = int(input()) # 处理total = price * amount # 输出print(total)

单行注释

# 开始往右到这行结尾, 不视为代码

多行注释

""" 开始 到 下一个 """ 之间, 不视为代码

代码规范Code Conventions

规范

不影响程序执行的 行业规则

小提琴的故事

空格

观察

换行

不同的功能区 之间 加 空格

程序要求

Level 1 不犯语法错误

不飘红

Level 2 不犯规范错误

空格 换行 缩进 大小写 命名

Level 3 满足功能要求

完成商业逻辑

Level 4 结构设计合理

内部设计

变量Variables

程序的记忆

使用前
1 2
int(input())print()
使用后
1 2
price = int(input())print(price)

变量的存取

存储
1
<变量名> = <值>v1 = 3
读取
1 2
print(v1)sum = v1 + v2

之后再出现 v1 且 不在 等号 左边

计算机就会去 回忆 v1 之前存的是什么

变量与数据格

变量是数据格,存储数据

1
v1 = 2
开辟

在第一次存储时,自动开辟数据格,之后就可以使用

提前使用

在开辟前使用,将导致报错

1!2
print(v1)v1 = 2

变量的命名

大小写

大小写敏感

valuevaluE 不是一个变量

规范
样例正确解说
player_name全小写,使用下划线区分单词
playername写它就很缺德
PlayerNameJava 式命名,但这里是 Python
playerNameJava 式命名,但这里是 Python
bian_liang🆗还好
clhs🚨全缩写,找骂

数据类型Data Types

字面量Literals

是什么

程序里出现的值

1
v1 = 3
不同种类的字面量
字面量表达
1整数
1.0小数
"1"文字

值有数据类型

每个存到变量里的值 都有数据类型

使用 下面的代码,可以检查 一个字面量的值 或者 一个变量的里的值 的数据类型

print(type(x))
案例
1 2 3 4 < < <
print(type("haha"))print(type(1))v1 = 3.4print(type(v1))class 'str'class 'int'class 'float'

常用数据类型

名称名称用途案例
int整型整数1
float浮点类型小数1.0
str字符串文字"1"

类型对代码的影响

不同的类型,有不同的能力

1 2 3 < < <
print(1 + 1)print("1" + "1")print("hi" + "zzax")211hizzax

数据类型转换

案例

可以使用代码对数据进行转换

1 2 3
v1 = "3"v1 = int(v1)print(type(v1))

同样还有

int(x)
float(x)
str(x)
数据丢失

精度可能会因此丢失

1 2 <
v1 = int(1.7)print(v1)1

挑战

将药水商店支持 小数单价

表达式Expressions

什么是表达式

字面量 运算符 变量 其它

案例
1
result = v1 + v2 ^^ ^^^^^^^^^^^^^^^^^^^^^^^

表达式缩合

定义

计算机如何计算表达式

规则

小学生算数学题,一样

一步一步算

样例
1 2 3
v1 = 3v2 = 4result = v1 + v2 = 3:int + v2 = 3:int + 4:int = 7:int

缩合 与 变量类型

数值计算时,运算符左右两边如果不一致,有时会自动转换,有时不行

案例 1

int 和 float 计算时,会变为 float

1
3 + 4.03:int + 4.0:float 7.0:float
案例 2

str 不能跟 int 或者 float 计算

1!
3 + "4"
练习
1 2 3
v1 = 3v2 = 4result = v1 + v2 * 3.0 - 2
result = 3:int + v2 * 3.0 - 2result = 3:int + 4:int * 3.0 - 2result = 3:int + 12.0:float - 2result = 15.0:float - 2result = 13.0:float

缩合 与 赋值

单纯的计算不会改变变量

改变必须赋值

案例 1
1 2 3 <4 5 <
v1 = 2v1 + 1print(v1)2v1 = v1 + 1print(v1)3
案例 2
1 2 3 <4 5 <
v1 = 2.3int(v1)print(v1)2.3v1 = int(v1)print(v1)2

赋值运算符Assignment Operators

是什么

=

赋值是复制

所有的赋值,都是复制的效果,不是移动

赋值后,原始变量不丢失

1 2 3 4 < <
v1 = 3v2 = v1print(v1)print(v2)33

交换问题

问题

直接交换,会导致丢失数据

1 2 3 4 5 6 < <
v1 = 3v2 = 4v2 = v1v1 = v2print(v1)print(v2)33
解决方案

需要使用另外一个变量帮助交换

1 2 3 4 5 6 7 < <
v1 = 3v2 = 4temp = v1v1 = v2v2 = tempprint(v1)print(v2)43

赋值运算符表达式缩合

赋值也是运算符

赋值语句也是表达式

赋值语句也有表达式结果值, 结果值是赋值

1 2 3
int a, ba = 55b = a = 6b = 66
表达式缩合方向

有等号的运算符:先缩合右边,再缩合左边

其它运算符:先缩合左边,再缩合右边

算术运算符Arithmetic Operators

有哪些

+   -   *   /   **  //  %
+=  -=  *=  /=  **= //= %=

运算优先级

优先级
1 =
a = 2 + 2 * 512

先算 乘除

再算 加减

再 赋值

括号

() 可以提高优先级

1 =
a = (3 + 2) * 530

科学除法 / 运算符

两个 int 相除,会自动变为 float

1 2 3 4 5 < <
v1 = 3v2 = 4result = v1 / v2print(type(result))print(result)class 'float'0.75

倍数除法 // 运算符

两个 int 相除,会保留 int 数据类型,但丢失精度

1 2 3 4 5 < <
v1 = 3v2 = 4result = v1 // v2print(type(result))print(result)class 'int'0

次方运算 ** 运算符

1 <
print(2 ** 3)8

整除求余 % 运算符

案例
1 =2 =3 =4 =
print(7 % 2)1print(7 % 3)1print(7 % 4)3print(8 % 4)0
用法

分析一个递增序列 0, 1, 2, 3, 4, 5 对 固定数 比如 2 求余,你会得到什么?

药水商店案例

对顾客增收 1元 塑料袋环保费

代码
1 2 3 4 5 6 7 8+9 10 11
# 输入price = float(input())amount = int(input()) # 处理total = price * amounttotal = total + 1 # 输出print(total)

算数同时赋值

规则

当出现

案例
x = x ? a

可缩写为

x ?= a
案例
price = price + 1

等效于

price += 1
同样适用于
+=  -=  *=  /=  **= //= %=

运算符Operators

练习

背景

一人从一栋大楼上高空坠落,不幸遇难。

名侦探张大妈,过来调查情况,想知道死者是从哪层跳下来的。

但周围人都自觉没用手机录像,唯独有一个人有录了一段微信语音

语音中听到 死者生前大叫 啊.....

请你写一个程序,帮助张大妈算出 他是从那一层掉下来的

物理知识

自由落体公式是

    1     2
h = - · gt
    2

已知 尖叫时间长达 3.2 秒

假设 g 为 9.8

已知 大楼 每层 高 2米

代码模板
1 2
second = 3.2print(10)

运算优先级

运算符自有优先级。可以使用小括号提高优先级。

下面网址中有个表格,越靠上的越优先

运算符优先级列表

Python 官网

双目运算符空格规范

双目 和 左右两边 加 空格

sum = 4 + 7
sum=4+7

API 补充

什么是 API

类似

int(x)

就是一个 API,能完成一定的功能。

输入文字

1
input()
案例
1 2
name = input()print(name)

打印不换行

1
print(<要打印的>, end="")
案例
1 2 3 4
print("换行")print("不", end="")print("换", end="")print("行", end="")

字符串拼接

可以使用 + 对 字符串 进行拼接

不是字符串的,需要强转成字符串类型

1 2 3 <
value = 1name = "哈哈"print("换行 " + str(value) + " " + name)换行 1 哈哈

随机小数

1 2
import randomrandom.random()

会得到一个 0 - 1 之间,包含 0,但不包含 1 的 随机小数

也就是 得到一个 x,0<=x<10 <= x < 1

随机整数

1 2
import randomrandom.randint(a, b)

会得到一个 a - b 之间,包含 a,也包含 b 的 随机整数

也就是 得到一个 x,a<=x<=ba <= x <= b

多次生成

在一段代码中,需要多次生成随机值时, import 只需要写一次

1 2 3
import random v1 = random.random()v2 = random.randint(0, 9)

ZZAX 微信公众

文档一更新,立刻告诉你