基本概念和基本数据类型

本文详细讲解了变量的定义、命名规则、赋值语句,包括系列解包、链式赋值和参数赋值。深入探讨了数值类型(整型、浮点型、布尔型、复数),以及各种运算符(算术、比较、位运算)的用法。同时介绍了字符串操作、类型转换和逻辑运算,以及Python中常见的数值模块和字符串格式化技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

变量

  • 定义:用来保存数据的“名字”
  • 组成:标识(用id()函数获取),类型(用type()函数获取),值(用print()函数获取)
  • 变量的命名
    • 没有被赋值的变量不能读取出来 NameError
    • 由英文字母,下划线和数字组成,不能以数字开头,不能包含空格
    • 不能把关键字(保留字)当做变量名
    import keyword    
    print(keyword.kwlist)
    
    • 不能把内置函数当做变量名,不小心用了可以用del删除
    dir(__builtins__)
    
    • 见名知意或者使用注释(#)

赋值语句

  • a = 1是赋值语句,赋值语句把右边的值赋值到左边的变量接收
  • 系列解包赋值
x,y,z = 1,2,3
 #交换a,b的值
 a,b = 10,20
 a,b = b,a
  • 链式赋值
 x  = y = z = 20
  • 参数赋值:+=、-=、*=、/=、//=、%=

输入和输出

  • 编辑模式下输出结果需要使用print()函数
  • input输入函数
    • 括号里的字只起提示作用
    in_a = input('请输入一个数字:')
    
    • input接收到的类型都是字符串
    >>>in_a = input('请输入一个数字:')
    请输入一个数字:2
    >>>in_a
    '2'
    

数值类型

  • 整型
>>>type(1)
<class 'int'>
  • 整数的不同进制表示方式
#不同进制转十进制
print('十进制'12) #输出十进制 12
print('二进制',0b1010) #输出二进制 10
print('八进制',0o176) #输出八进制 126
print('十六进制',0x1f) #输出十六进制 31
#十进制转不同进制
num = int(input('请输入一个十进制整数:'))
#十进制转二进制,bin()函数
#type(bin(num)) 类型为str
print(str(num)+'的二进制数为:'+bin(num)) #95的二进制数为0b1011111
print(num,'的二进制数为:',bin(num)) #95 的二进制数为 0b1011111,有空格
#十进制转八进制,oct()函数
print(str(num)+'的八进制数为:'+oct(num))
#十进制转十六进制,hex()函数
print(str(num)+'的十六进制数为:'+hex(num))
  • 浮点型
>>>type(1.2)  
<class 'float'>
  • 布尔型 True(1) False(0)
type(True)  
<class 'bool'>
  • 复数
type(1+2j)  
<class 'complex'>
  • 类型转换
    • str()
    #可以用str()函数转成str类型的有:整型、浮点型、布尔型
    name = '张三'
    age = 18
    #print('我叫'+name+'今年'+age+'岁') #当str类型与int类型进行连接时会报错
    print('我叫'+name+'今年'+str(age)+'岁') #将int类型通过str()函数转成str类型
    print('我叫'+name+'今年'+'18'+'岁') #用引号将int类型转成str类型	
    
    • int()
    #可以用int()函数转成int类型的有:整数型字符串、浮点型(只截取整数部分)、布尔型
    #文字型字符串和浮点型字符串不行
    
    • float()
    a = 1
    print(float(a)) #输出1.0
    #可以用float()函数转成float类型的有:整数型字符串、浮点型字符串(小数位数不变)、整型、布尔型	
    #文字型字符串不行
    

运算符

  • 算术运算符

    • 加+
    • 减-
    • 乘*
    • 除/
    • 幂运算**
    • 整除(取商)//
    • 取余%
    • 一正一负的取整运算:向下取整
    print(9//-4) #-3
    print(-9//4) #-3
    
    • 一正一负的取余运算:余数=被除数-除数*商
    print(9//-4) #9-(-4)*(-3)=-3
    print(-9//4) #-9-4*(-3)=3
    

    整型之间除法的计算结果,都是浮点型。就算刚好整除,也会得到一个浮点型数据。
    浮点型的计算结果是浮点型,只要参与运算的双方有一个是浮点型,那么结果也是浮点型。

  • 比较运算符

    • <、>、<=、>=、!=、==
    • 对象value的比较:==
    • 对象的id的比较:is, is not
    a = 10
    b = 10
    print(a == b) #True
    print(a is b) #True
    print(a is not b) #False
    lst1 = [10,20.30]
    lst2 = [10,20,30]
    print(lst1 == lst2) #True
    print(lst1 is lst2) #False
    
  • 布尔运算符

    • and,只有当and两边为真时,才返回真
    • or,当or两边其一为真,则返回真
    • not,真的变成假的,假的变成真的
    • 优先级:not>and>or,从左到右
    >>>not 1 == 1 and 2 == 2 and 2 == 3 or 3 ==3
    True
    
    • in
    • not in
  • 位运算

    • 位与&:对应数位都是1,结果数位才是1,否则为0
    print(4 & 8) #0,按位&,同为1结果为1,同为0结果为0
    
    • 位或 |:对应数位都是0,结果数位才是0,否则为1
    print(4 | 8) #12,按位|
    
    • 左移位运算符<<:高位溢出舍弃,低位补0
    print(4<<1) #8,向左移动1位,相当于乘2
    print(4<<2) #16,向左移动2位
    
    • 右移位运算符>>:低位溢出舍弃,高位补0
    print(4>>1) #2,向右移动1位,相当于除以2
    
  • 运算符的优先级
    算术运算–>位运算–>比较运算–>布尔运算–>赋值运算

逻辑运算

  • 逻辑短路:通过and连接,当左边为假时,右边的结果对于整体的结果没有影响;通过or连接,当左边为真时,右边的结果对于整体的结果没有影响;not不存在逻辑短路
    >>>1 == 1 and a == 2
    报错 NameError
    >>>1 == 2 and a == 2
    False
    >>>1 == 1 or a == 2
    True
    
  • 以下情况出现了逻辑短路( ‘1’ > ‘2’ > 3相当于’1’ > ‘2’ and ‘2’ > 3)
    >>>'1' > '2' > 3
    False
    >>>'1' > '2' and '2' > 3
    False
    # 字符串不能与数字比较大小
    
  • a and b,如果a是False,则整个结果必定为False,因此返回a的值;如果a是True,则表达式的结果取决于b,因此返回b的值
  • a or b,如果a是True,则整个结果必定为True,因此返回a的值;如果a是False,则表达式的结果取决于b,因此返回b的值

字符串(str)

  • 字符串和数字不能相加 TypeError
  • 字符串定义的方式
    • 单引号
    • 双引号
    • 三引号(三个单引号和三个双引号都可以)可换行
  • 字符串的计算
    • +用于字符串的拼接
    • *字符串乘数字表示把当前的字符串重复几遍
    • 没有减法和加法
  • 字符串的拼接
    • %s相当于占位符,按顺序
    >>>str1 = '2022'
    >>>str2 = '6'
    >>>str3 = '17'
    >>>'%s年%s月%s日'%(str1,str2,str3)
    '2022年6月17日'
    
    • join在统一拼接符时最方便,只能用于字符串拼接
    >>>'-'.join([str1,str2,str3])
    '2022-6-17'
    
    • 默认按顺序,数字表示下标,下标从零开始
    >>>'{}年{}月{}日'.format(str1,str2,str3)
    '2022年6月17日'
    >>>'{1}年{2}月{0}日'.format(str1,str2,str3)
    '6年17月2022日'
    
    • f是format的简写
    >>>f'{str1}{str2}{str3}日'
    '2022年6月17日'
    
  • 字符串的格式化
    • %d或%i表示格式化整数
    >>>'%d'%1.8
    '1'
    >>>#不能写成'%d'%'1.8'
    >>>'%3d'%1.8
    '  1'
    >>>'%03d'%1.8
    '001'
    >>>'%.3d'%1.8
    '001'
    
    • %f表示格式化浮点数,默认保留小数点后6位
    >>>'%f'%1.8
    '1.800000'
    >>>#不能写成'%d'%'1.8'
    >>>'%2f'%1.8
    '1.800000'
    >>>'%.2f'%1.8
    '1.80'
    >>>'%5.2f'%1.8
    ' 1.80'
    >>>'%05.2f'%1.8
    '01.80'
    >>>'%02.2f'%1.8
    '1.80'
    
    • %r表示对象原样输出
    >>>print('%s'%123)
    123
    >>>print('%s'%'123')
    123
    >>>print('%r'%123)
    123
    >>>print('%r'%'123')
    '123'
    
    • %c表示格式化ASCII码
      ord()将字符变成对应ASCII值 ,chr()将ASCII码值变成对应的字符
    >>>'%c'%65
    'A'
    >>>'%c'%97
    'a'
    >>>ord('a')
    97
    >>>chr(97)
    'a'
    
    • 八进制输出
    >>>'%o'%9
    '11'
    >>>'%o'%11
    '13'
    >>>'%o'%7
    '7'
    
    • 十六进制输出,10-15之间的数字用a-f表示
    >>>'%x'%2
    '2'
    >>>'%x'%12
    'c'
    >>>'%x'%15
    'f'
    >>>'%x'%22
    '16'
    
    • format的用法

常见数值模块

  • 高精度模块(decimal)
    decimal.Decimal(字符串类型)
>>>2.2 - 2
0.20000000000000018
>>>import decimal
>>>decimal.Decimal('2.2') - decimal.Decimal('2')
Decimal('0.2')
>>>float(decimal.Decimal('2.2') - decimal.Decimal('2'))
0.2
  • 数学模块(math)
    • math.ceil() 向上取整
    >>>math.ceil(1.2)
    2
    
    • math.floor() 向下取整
    >>>math.floor(1.8)
    1
    
    • math.pi π
    • math.fabs() 绝对值
    • math.sqrt() 开平方
    • math.pow(x,y) x^y
    • 查看math模块里的所有内置函数方法
    dir(math)
    

注释

  • 单行注释 :以”#”开头,直到换行结束
  • 多行注释 :并没有单独的多行注释标记,将一对三引号(‘’'或"“”)之间的代码称为多行注释
  • 中文编码声明注释:在文件开头加上中文声明注释,用以指定源码文件的编码格式 #coding:gbk
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值