基础 与 数值计算Basics and Numbers
输入输出I/O
药水商店
1 2 3 4price = 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 2int(input())print()
使用后
1 2price = int(input())print(price)
变量的存取
存储
1 <变量名> = <值>v1 = 3
读取
1 2print(v1)sum = v1 + v2
之后再出现 v1
且 不在 等号 左边
计算机就会去 回忆 v1
之前存的是什么
变量与数据格
变量是数据格,存储数据
1 v1 = 2

开辟
在第一次存储时,自动开辟数据格,之后就可以使用
提前使用
在开辟前使用,将导致报错
1!2 print(v1)v1 = 2
变量的命名
大小写
大小写敏感
value
和 valuE
不是一个变量
规范
样例 | 正确 | 解说 |
---|---|---|
player_name | ✅ | 全小写,使用下划线区分单词 |
playername | ❌ | 写它就很缺德 |
PlayerName | ❌ | Java 式命名,但这里是 Python |
playerName | ❌ | Java 式命名,但这里是 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
什么是表达式
字面量 运算符 变量 其它
案例
1result = 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,能完成一定的功能。
输入文字
1input()
案例
1 2name = 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,
随机整数
1 2 import randomrandom.randint(a, b)
会得到一个 a - b 之间,包含 a,也包含 b 的 随机整数
也就是 得到一个 x,
多次生成
在一段代码中,需要多次生成随机值时, import 只需要写一次
1 2 3 import random v1 = random.random()v2 = random.randint(0, 9)