Python基础保姆级讲解(2)

Python 数字操作

Python 数字数据类型用于存储数值。

数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。

1.Python 数字类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

  • int(x) 将x转换为十进制整数
  • float(x) 将x转换到一个浮点数。
  • **bin(x)**将x转换为二进制
  • **oct(x)**将x转换为八进制
  • **hex(x)**将x转换为十六进制
  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字.
  • **bool(x)**将 x 转化为布尔值
print(int(20.5))#20
print(float(20))#20.0
print(bin(3))#0b11
print(oct(20))#0o24
print(hex(29))#0x1d
print(complex(29))#(29+0j)
print(complex(10,3))#(10+3j)
补充知识点
表达式和语句的概念
  • 表达式

    是由数字,字符串(文字), 运算符,函数调用等组成,通常用于计算并得到一个结果

    表达式是语文中的字或短语

  • 语句

    语句是计算机执行程序的最小单位

    • 示例
    a = 100      # 赋值语句
    print(a)     # 表达式语句
    del a        # del 语句
    

    表达式和语句的区别:

    表达式 (Expression)

    • 定义:表达式是一个可以求值的代码片段,它会返回一个值。
    • 作用:用来计算一个值。
    • 举例
      • 数学运算:2 + 3是一个表达式,求值结果是5`。
      • 函数调用:len("hello") 是一个表达式,求值结果是 5
      • 变量引用:x 是一个表达式,返回变量 x 的值。
      • 复合表达式:x + y * z 是一个表达式,返回计算结果。

    语句 (Statement)

    • 定义:语句是完整的执行单元,它执行某种操作,但不一定返回值。

    • 作用:用来执行某种操作。

    • 举例

      • 赋值语句:x = 5 是一个语句,它给变量 x 赋值,但不返回任何值。

      • 控制流语句:

        if x > 0:
            print("x is positive")
        
      • 函数定义:定义一个函数也是一个语句。

        def greet():
            print("Hello, world!")
        
      • 复合语句:包含多个子语句。

        for i in range(5):
            print(i)
        
  • 函数调用是表达式

    学过的函数

    input(‘xxxx’) 返回字符串

    print(“xxxx”) 返回 None

    函数调用语法规则

    函数名(传入的参数)
    

    None 是表示空值的一个对象

数据类型转换相关的函数
函数说明
str(x)把传入的x 转化成字符串并返回
int(x)把 x 转化为整数并返回
float(x)把 x 转化为浮点数并返回
bool(x)把 x 转化为布尔类型的数并返回
  • 示例:

    >>> age = input('请输入年龄: ')  # 输入 35
    >>> int(age)
    35
    >>> int("35")
    35
    >>> int(3.14)
    3
    >>> int('3.14')  # 报错
    >>> f = 3.14
    >>> str(f)
    '3.14'
    >>> int(f)
    3
    >>> bool(f)
    True
    
    
  • python 中假值对象

    None   # 空值对象
    False  # 布尔类型的假值
    0      # 整数的0
    0.0    # 浮点数的0
    ''     # 字符串的空字符串
    []     # 空列表
    {}     # 空字典
    ...
    
  • 课后练习

    写程序,输入您的年龄, 打印出去年你几岁,明年你几岁
    用 str(x) , int(x), float(x), bool(x)
    

    参考答案

    age = int(input('请输入您的年龄: '))
    
    print('去年您', age-1, '岁')
    print('明年您', age+1, '岁')
    

2.Python 运算符

a). 算术运算符

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:取模(取余数)
  • **:幂运算
  • //:整除(向下取整数部分)

除法 / 总是返回一个浮点数

整除// 得到的并不一定是整数类型的数,它与分母分子的数据类型有关系。

不同类型的数混合运算时会将整数转换为浮点数:

print(10+20.3)#加法运算:30.3
print(17 / 3)  # 整数除法返回浮点型:5.666666666666667
print(17 // 3)  # 整数除法返回向下取整后的结果:5
print(17.0 // 3)  # 整数除法返回向下取整后的结果:5.0
print(17 // 3.0)  # 整数除法返回向下取整后的结果:5.0
print(17 % 3)  # %操作符返回除法的余数:2
print(2**3) #幂运算2的3次方: 8

课后练习1

超市的西瓜 13 元一个, 问 你拿100 元可以买几个西瓜,剩余 几元

参考答案

print('可以买', 100 // 13 , '个西瓜,剩余', 100 % 13, '元')

课后练习2

现在是 18:02:31 秒 请问现在距离 凌晨 0:0:0 过了多少秒?
写程序打印出来

参考答案

second = 18 * 60 * 60 + 2 * 60 + 31
print('距离凌晨 0:0:0 过了', second, '秒')

课后练习3:

已知从凌晨 0:0:0 到现在已经过了 63320 秒, 请问现在是 几时几分几秒?

用地板除法和求余数实现

参考答案

s = 63320
hour = s // 60 // 60
minute = s % 3600 // 60
second = s % 60
print('现在是:', hour, ':', minute, ':', second)

b). 比较运算符

  • ==:等于
  • !=:不等于
  • <:小于
  • >:大于
  • <=:小于等于
  • >=:大于等于

比较运算符的运算结果为布尔值比较运算符通常返回布尔类型的数, True, False

print(10==10.0)#只比较值是否相等:True
print(3.14!=3.1415)#True
print(255>170)#True
print(255<170)#False
print(255>=255)#True
print(255<=255)#True
x=15
print(5<x<20)#注意:两个符号同时参与比较  相当于 (5 < x) and (x < 20)

x=100
y=200
z=-10
a=True
print(a is not x is not y < z)#a和x判定 然后和y判定 然后和z判定
# False

在Python中,is not 是一种身份运算符,用于判断两个对象是否不是同一个对象。它与 is 运算符相对,后者用于判断两个对象是否是同一个对象。

具体来说:

  • a is b 返回 True 当且仅当 ab 是同一个对象(即它们的身份相同)。
  • a is not b 返回 True 当且仅当 ab 不是同一个对象(即它们的身份不同)
a = [1, 2, 3]
b = a
c = [1, 2, 3]

print(a is b)      # True,因为 a 和 b 是同一个对象
print(a is c)      # False,因为 a 和 c 是不同的对象,即使它们的内容相同
print(a is not c)  # True,因为 a 和 c 不是同一个对象

c). 逻辑运算符

  • and:与(逻辑与)
  • or:或(逻辑或)
  • not:非(逻辑非)

A and B表达式的结果: 如果A表达式的布尔判定为真则B表达式的结果作为整个表达式的结果,如果A表达式的布尔判定为假则A表达式的结果作为整个表达式的结果

注意: 如果A判定为假 B将不会执行

or和not跟and一样

  • and 与运算

    两者(两个元素同时为真,结果才为真)

    • 语法
    x and y   # x, y代表表达式
    
    • 示例
    >>> 3 + 4 > 5 and 6 + 7 > 100
    False
    
    • 真值表
    x的值y的值x and y的值
    TrueTrueTrue
    TrueFalseFalse
    FalseTrueFalse
    FalseFalseFalse

    优先返回假值对象, 如果x 为假值,返回x, 否则返回y

  • or 或运算

    两者(两个元素只要有一个为真,结果就为真)

    x or y   # x, y代表表达式
    
  • 真值表

    x的值y的值x or y的值
    TrueTrueTrue
    TrueFalseTrue
    FalseTrueTrue
    FalseFalseFalse

    优先返回真值对象, 如果x 为真值,返回x, 否则返回y

  • not 非运算

    not 运算符是一元运算符

    作用

    将表达式的结果取 操作

    语法

    not 表达式
    

    示例

    not True    # False
    not False   # True
    not 3.14    # False
    not ''      # True
    not 1 + 2   # False
    
  • 示例

>>> True and True    # True
>>> True and False   # False
>>> False and True   # False
>>> False and False  # False
>>> True or True    # True
>>> True or False   # Ture
>>> False or True   # Ture
>>> False or False  # False
>>> not False       # True
>>> not True        # Flase
>>> 3.14 and 5      # 5
>>> 0.0 and 5       # 0.0
>>> 3.14 or 5       # 3.14
>>> 0.0 or 0        # 0
>>> not 3.14        # False
>>> not 0.0         # True
  • 问题

    写一个程序,输入一个整数, 判断这个整数是奇数还是偶数
    奇数: 1 3 5 7 9
    偶数: 2 4 6 8 10    
    x % 2 == 1   结果为True,x 一定是奇数
    x % 2 == 1   结果为False,x 一定是偶数
    

d). 位运算符

Python中的位运算符主要用于处理整数类型的二进制位操作。以下是Python中的6种主要位运算符:

  • &:按位与
  • |:按位或
  • ^:按位异或
  • ~:按位取反
  • <<:左移位
  • >>:右移位
  1. 按位与(&)

    • 表达式:a & b
    • 功能:对于每一位,如果a和b的相应位都是1,则结果位为1,否则为0。
    # 示例:计算两个二进制数的按位与
    a = 0b1011  # 二进制表示的11
    b = 0b1101  # 二进制表示的13
    result_and = a & b  # 计算两者之间的按位与
    print(bin(result_and))  # 输出:0b1001 (十进制为9)
    
  2. 按位或(|)

    • 表达式:a | b
    • 功能:对于每一位,只要a和b中至少有一位是1,则结果位为1,否则为0。
    # 示例:计算两个二进制数的按位或
    a = 0b1011
    b = 0b1101
    result_or = a | b  # 计算两者之间的按位或
    print(bin(result_or))  # 输出:0b1111 (十进制为15)
    
  3. 按位异或(^)

    • 表达式:a ^ b
    • 功能:对于每一位,如果a和b的相应位不同(一个为1,另一个为0),则结果位为1,否则为0。
    # 示例:计算两个二进制数的按位异或
    a = 0b1011
    b = 0b1101
    result_xor = a ^ b  # 计算两者之间的按位异或
    print(bin(result_xor))  # 输出:0b110 (十进制为6)
    
  4. 按位取反(~)

    • 表达式:~a
    • 功能:对操作数a的每一个二进制位进行取反,即将1变为0,0变为1。
    # 示例:计算一个二进制数的按位取反
    a = 0b1011
    result_not = ~a  # 计算a的按位取反
    print(bin(result_not))  # 输出:-0b1100
    
  5. 左移运算符(<<)

    • 表达式:a << b
    • 功能:将a的二进制表示向左移动b位,左边移出的部分会被丢弃,右边空出的位置补零。相当于乘以2^n次方
    # 示例:将一个二进制数向左移动两位
    a = 0b1011
    result_left_shift = a << 2  # 将a向左移动两位
    print(bin(result_left_shift))  # 输出:0b101100 (十进制为44)
    
  6. 右移运算符(>>)

    • 表达式:a >> b
    • 功能:将a的二进制表示向右移动b位,对于无符号整数,右边移出的部分会被丢弃,左边空出的位置补零(通常补0);对于有符号整数,右移时取决于具体实现,可能是算术右移(符号位扩展)或者逻辑右移(补0)。同理,相当于除以2^n
# 示例:将一个有符号二进制数向右移动一位
a = -0b1000  # 十进制为-8
result_right_shift = a >> 1  # 将a向右移动一位
print(bin(result_right_shift))  # 输出:-0b100 (十进制为-4)

# 对于无符号数的例子
unsigned_a = 0b1000
unsigned_result_right_shift = unsigned_a >> 1
print(bin(unsigned_result_right_shift))  # 输出:0b100 (十进制为4)

e). 赋值运算符

  • =:赋值

  • +=:加法赋值

  • -=:减法赋值

  • *=:乘法赋值

  • /=:除法赋值

  • %=:取余赋值

  • **=:幂运算赋值

  • //=:整除赋值

    注意:

    ​ 没有 a++、 a-- 这种自增自减运算符;

x=100
x%=3
print(x)#1

f)运算符的优先级

1 + 3 * 3 ** 2  + 4 // 2
1 + 3 * 9 + 4 // 2
1 + 27 + 4 // 2
1 + 27 + 2
28 + 2
30
  • 运算符优先级表
运算符描述
(expressions...),[expressions...], {key: value...}, {expressions...}绑定或加圆括号的表达式,列表显示,字典显示,集合显示
x[index], x[index:index], x(arguments...), x.attribute抽取,切片,调用,属性引用
**乘方
+x, -x, ~x正,负,按位非 NOT
*, /, //, %乘,除,整除,取余
+, -加和减
<<, >>移位
&按位与 AND
^按位异或 XOR
``
in, not in, is, is not, <, <=, >, >=, !=, ==比较运算,包括成员检测和标识号检测
not x布尔逻辑非 NOT
and布尔逻辑与 AND
or布尔逻辑或 OR
ifelse条件表达式
lambdalambda 表达式
:=赋值表达式

3.数学函数

部分函数是python环境自带的,部分是math模块带的,部分是公共的

先引入math模块:

import math

  • math模块中定义的函数
函数返回值 ( 描述 )
abs(x)返回数字的绝对值,如abs(-10) 返回 10
math.ceil(x)返回数字的上入整数,如math.ceil(4.1) 返回 5
cmp(x, y)如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x<y) 替换
math.exp(x)返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
math.fabs(x)以浮点数形式返回数字的绝对值,如math.fabs(-10) 返回10.0
math.floor(x)返回数字的下舍整数,如math.floor(4.9)返回 4
math.log(x)如math.log(math.e)返回1.0,math.log(100,10)返回2.0
math.log10(x)返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1, x2,…)返回给定参数的最大值,参数可以为序列。
min(x1, x2,…)返回给定参数的最小值,参数可以为序列。
math.modf(x)返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
math.pow(x, y)x**y 运算后的值。
round(x ,n)返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。其实准确的说是保留值将保留到离上一位更近的一端。 1.保留整数只有一个小数时:4舍6入5看齐,奇进偶不进 2.保留整数或小数超过一个小数时:看保留位的下下位是否存在
math.sqrt(x)返回数字x的平方根。
1. math.sqrt(x)
计算 x 的平方根。
import math
result = math.sqrt(16)
print(result)  # 输出: 4.0

2. math.pow(x, y)
计算 x 的 y 次方。
import math
result = math.pow(2, 3)
print(result)  # 输出: 8.0

3. math.exp(x)
计算 e 的 x 次方。
import math
result = math.exp(2)
print(result)  # 输出: 7.3890560989306495

4. math.log(value,base)
计算以 base 为底的 value 的对数。如果没有指定 base,则计算e为底数的值。

import math
result = math.log(8, 2)
print(result)  # 输出: 3.0
result = math.log(10)
print(result)  # 输出: 2.302585092994046 (自然对数)

5. math.sin(x)
计算 x 的正弦值,x 以弧度表示。

import math
result = math.sin(math.pi / 2)
print(result)  # 输出: 1.0

6. math.cos(x)
计算 x 的余弦值,x 以弧度表示。

import math
result = math.cos(0)
print(result)  # 输出: 1.0

7. math.tan(x)

import math
result = math.tan(math.pi / 4)
print(result)  # 输出: 0.9999999999999999 (接近于 1)

3.1 三角函数

先引入math库基础库:

import math
函数描述
math.acos(x)返回x的反余弦弧度值。
math.asin(x)返回x的反正弦弧度值。
math.atan(x)返回x的反正切弧度值。
math.atan2(y, x)返回给定的 X 及 Y 坐标值的反正切值。
math.cos(x)返回x的弧度的余弦值。
math.sin(x)返回的x弧度的正弦值。
math.tan(x)返回x弧度的正切值。
math.degrees(x)将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
math.radians(x)将角度转换为弧度

3.2 数学常量

先引入math库基础库:

import math
常量描述
math.pi数学常量 pi(圆周率,一般以π来表示)约等于 3.141592653589793
math.e数学常量 e,e即自然常数(自然常数) 2.718281828459045
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值