python学习之路☞9.Comment, Primitive Data Types and Branch / Conditional Structure if … else …
#python,#Comment,#data type,#branch/conditional structure,#input(),#int,#float,#complex,#boolean,#if … else …,
- 注释(Comment)
- 内置函数input()(input() Function)
- 基本数据类型整数(Primitive Data Types int)
- 基本数据类型小数(Primitive Data Types float)
- 基本数据类型复数(Primitive Data Types complex)
- 基本数据类型布尔(Primitive Data Types boolean)
- 分支结构if … else …(Branch / Conditional Structure if … else …)
- 参考
Comment
'''
注释: 给人看的说明文字,Python 解释器完全忽略
要点
# 让该行 # 之后的内容全部失效,解释器跳过。
行尾注释与代码在同一行,通常用于简短说明。
docstring(三引号字符串)放在函数/类/模块第一行时,可被 help() 和文档工具读取,有特殊意义。
好的注释解释"为什么",而不是"做了什么"(代码本身已经说明了做了什么):
# ✗ i = i + 1 # i 加 1
# ✓ i += 1 # 跳过表头行
'''
# 这是单行注释,# 号后面全部忽略
x = 10 # 行尾注释,代码照常执行
# 多行注释:每行都加 #
# 第一行说明
# 第二行说明
# 第三行说明
"""
这是多行字符串(docstring)
虽然常被当注释用,
但本质是字符串字面量,不是注释。
通常用于函数/类的文档说明。
"""
def add(a, b):
"""返回 a 与 b 的和。""" # ← 函数文档字符串
return a + b
# 临时屏蔽代码(调试常用):
# print("这行不会执行")
print("这行正常执行")
input() Function
'''
input(): 从终端读取用户输入,永远返回 str 类型
返回类型
input() 只返回 str,这是最常见的错误来源。
"18" + 1 → TypeError(str 不能和 int 相加)
int("18") + 1 → 19 ✓
标准三步模式:
1. 用 input() 读取 → str
2. 用 int() 或 float() 转换
3. 再进行运算
安全做法(用 try/except 防止输入非数字):
try:
n = int(input("输入整数:"))
except ValueError:
print("输入不是整数!")
'''
# 基本用法:括号内是提示语
name = input("请输入姓名:")
# 用户输入 Alice → name = "Alice"(str)
# 无提示语也可以:
x = input()
# 永远返回 str,即使用户输入数字:
age = input("请输入年龄:")
# 用户输入 18 → age = "18"(str,不是int!)
print(type(age)) # <class 'str'>
# 必须手动转换类型才能做数学运算:
age = int(input("请输入年龄:"))
price = float(input("请输入价格:"))
# 多个值一次输入(用 split):
a, b = input("输入两个数(空格分隔):").split()
a, b = int(a), int(b)
print(a + b)
Primitive Data Types int
'''
int: 没有小数点的数,Python 中精度无限制
要点
无精度限制:Python 的 int 可以是任意大的整数,不像 C/Java 有 32/64 位上限。
int() 截断而非四舍五入:int(3.9) = 3,想四舍五入用 round(3.9)。
bool 是 int 的子类:True == 1,False == 0,bool 值可以直接参与整数运算:True + True = 2。
整除结果:10 / 3 = 3.333…(float),10 // 3 = 3(int)。
常用内置函数
abs(-5) → 5(绝对值)
pow(2, 10) → 1024
max(3, 7, 2) → 7
min(3, 7, 2) → 2
round(3.5) → 4(四舍五入)
bin(10) → '0b1010'
hex(255) → '0xff'
'''
# 字面量(直接写):
x = 42
y = -7
z = 0
# 其他进制字面量:
b = 0b1010 # 二进制 → 10
o = 0o17 # 八进制 → 15
h = 0xFF # 十六进制 → 255
# 大数可加下划线提高可读性:
population = 1_400_000_000 # 14亿
# 类型转换 → int:
print(int("42")) # → 42 (字符串转整数)
print(int(3.99)) # → 3 (截断,不是四舍五入)
print(int(True)) # → 1
print(int(False)) # → 0
print(int("FF", 16)) # → 255 (16进制字符串)
# 查看类型:
print(type(42)) # <class 'int'>
print(isinstance(42, int)) # True
# Python int 无溢出:
print(2 ** 100) # → 一个很大的正确结果
Primitive Data Types float
'''
float: 带小数点的数,底层是 64 位 IEEE 754 双精度
要点
float vs double:Python 没有 double 类型,float 本身就是 64 位双精度(等价于其他语言的 double)。
精度问题:0.1 + 0.2 ≠ 0.3 是所有语言的通病,因为十进制小数在二进制中大多无法精确表示。
解决精度问题:
· round(x, n) 保留 n 位小数
· decimal.Decimal 模块做精确十进制计算(财务场景)
/ 总返回 float:10 / 2 = 5.0,即使整除也是 float。
float vs int 混合运算
1 + 2 # → 3 (int)
1 + 2.0 # → 3.0 (float,自动提升)
1.0 + 2.0 # → 3.0 (float)
10 / 2 # → 5.0 (float,/ 总是)
10 // 2 # → 5 (int)
10 // 2.0 # → 5.0 (float)
'''
Primitive Data Types complex
'''
complex: 实部 + 虚部,数学中的 a + bi,Python 用 j 表示虚部
要点
虚数单位是 j,不是数学里的 i(工程领域惯例,Python 沿用)。
实部和虚部都是 float:z.real 和 z.imag 返回的是 float,即使看起来是整数。
日常编程很少用到,主要场景:信号处理(FFT)、电路分析、物理模拟、数学计算。
与 double 的区别:
· float(double)= 64位小数,只有一个数轴上的值
· complex = 两个 float 组合(实部+虚部),在二维平面上的值
cmath 模块提供复数版本的数学函数:
import cmath
cmath.sqrt(-1) # → 1j(虚数单位)
cmath.sqrt(-4) # → 2j
cmath.phase(1+1j)# → 0.785…(辐角,弧度)
'''
# 字面量(虚部用 j,不是 i):
z1 = 3 + 2j # 实部 3,虚部 2
z2 = 1 - 4j # 实部 1,虚部 -4
z3 = 5j # 纯虚数(实部为 0)
z4 = complex(3, 2) # 等价于 3+2j
# 访问实部和虚部:
z1.real # → 3.0
z1.imag # → 2.0
# 共轭复数:
z1.conjugate() # → (3-2j)
# 模(到原点的距离):
abs(z1) # → 3.605...(√(3²+2²))
# 四则运算:
z1 + z2 # → (4-2j)
z1 * z2 # → (11-10j)
z1 / z2 # → (-0.294...+0.823...j)
# 类型转换:
complex(3) # → (3+0j)
complex("3+2j")# → (3+2j)
Primitive Data Types boolean
'''
boolean: 只有 True 和 False,是 int 的子类
要点
只有两个值:True 和 False,首字母大写,这是语法规定(true 会报错)。
bool 是 int 的子类:True = 1,False = 0,这是 Python 的设计决策,bool 可以参与所有整数运算。
假值(Falsy)完整列表:
False、0、0.0、0j
""、[]、()、{}、set()
None
以上之外的所有值都是真值(Truthy)。
实用技巧:用 sum() 统计列表中 True 的数量,因为 True == 1:
sum(x > 0 for x in nums) → 正数的个数
'''
# 字面量(首字母必须大写):
a = True
b = False
# 比较运算产生 bool:
print(5 > 3) # → True
print(5 == 3) # → False
print("hi" == "hi") # → True
# bool() 转换——"真值判断":
print(bool(1)) # → True
print(bool(0)) # → False
print(bool(3.14)) # → True
print(bool(0.0)) # → False
print(bool("hello")) # → True
print(bool("")) # → False ← 空字符串为假
print(bool([1,2,3])) # → True
print(bool([])) # → False ← 空列表为假
print(bool(None)) # → False
# bool 是 int 子类(可参与运算):
print(True == 1) # → True
print(False == 0) # → True
print(True + True) # → 2
print(True * 5) # → 5
print(sum([True, False, True, True])) # → 3(统计True数量)
# type() 验证:
print(type(True)) # → <class 'bool'>
print(isinstance(True, int)) # → True !
Branch / Conditional Structure if … else …
'''
if: 判断条件真假执行语句块
条件: 能返回布尔值的表达式或布尔值
语句块: 具有缩进的多行代码语句
分类:单分支 多分支 和 嵌套分支
单分支:
或
if False: | if False:
pass | pass
| else:
| pass
多分支:
或
if False: | if False:
pass | pass
elif: | elif:
pass | pass
| else
| pass
嵌套分支:
或
if False: | if False:
pass | pass
else: | else:
if False: | if False:
pass | pass
| else:
| pass
'''
单分支猜数字
print('-------单分支测试-------')
guess_num = int(input('请输入你想猜的数字1~3以内:'))
'''
一个猜数字函数
传参:guess_num 数字类型
作用:判断数字并打印结果
'''
def guess_result(guess_num):
flag = (guess_num == 2)
if flag:
print('你猜对了!')
else:
print('大侠重新来过!')
guess_result(guess_num) # 执行猜数字函数
多分支练习
print('-------多分支测试-------')
score_num = float(input('请输入你的分数,满分100分:'))
'''
这是个判断分数是否合格的函数
传参:分数 数字类型
作用:判断分数并打印结果
'''
def score_result(score_num):
if score_num >= 80:
print('大侠很优秀!')
elif score_num > 60:
print('大侠及格了!')
else:
print('大侠你不及格!')
score_result(score_num) # 使用函数判断分数
嵌套支练习
print('-------嵌套分支测试-------')
salary_num = float(input('请输入你的每月薪资:'))
'''
这是个判断薪资是否符期望的函数
传参:薪资 数字类型
作用:判断薪资并打印结果
'''
def salary_reesult(salary_num):
if salary_num >= 10000:
print('月薪过万,不做人类,安乐离世,永恒自由!')
else:
if salary_num >= 5000:
print('牛马苦,牛马累,薪资低,活受罪!')
else:
print('丸!辣!重!开!')
salary_reesult(salary_num) # 使用函数判断薪资
参考
comment
input()
data-type
int
float
numeric-types-int-float-complex
boolean if
if
Comments
Post a Comment