Python学习笔记(一)

目录

1.浮点数不精确问题

2.字符串类型定义

3.数据类型转换

4.中文编码声明注释

5.python的输入:input()函数

6.python中的运算符

7.程序的组织结构

8.对象的布尔值

9.pass语句

10.内置函数range()

11.与else语句搭配使用的三种情况

12.循环的嵌套

13.列表


1.浮点数不精确问题

  •   在使用浮点数计算时,会出现小数位数不确定的情况。
a=1.1
b=2.2
print(a+b)      #输出3.3000000000000003
  •   这种情况下,我们需要导入decimal包来解决。
from decimal import Decimal
print(Decimal('1.1')+Decimal('2.2'))    #输出3.3

2.字符串类型定义

  • 单引号和双引号定义的字符串必须在一行
  • 三引号定义的字符串可以分布在连续的多行
str1='hello world!'
str2="hello world!"
str3='''hello
       world!'''     #单引号的三引号
str4="""hello
       world!"""     #双引号的三引号

3.数据类型转换

  • int(),从str、float类型转换到int类型
  • float(),从int、str类型转换到float类型
  • str(),从int、float类型转换到str类型

4.中文编码声明注释

#coding:gbk

  注意:要写在开头,标识本py文件的存储格式。python3默认utf-8

5.python的输入:input()函数

  •   input函数的返回值类型为str,当需要读入整数时,需要用int()进行类型强转
name=input("请输入您的姓名:")    #输入的str类型的值直接赋给变量name
age=int(input("请输入您的年龄:")    #输入的str类型的值经过int()赋给变量age

6.python中的运算符

  • 算术运算符:+、-、*、/、%、**(幂运算符)
print(11//2)    #5,整除运算
print(11/2)     #5.5,除法运算
print(11%2)     #1,求余运算
print(3**2)     #9,3的2次方,幂运算

  难点:(一正一负整除,向下取整;一正一负取余要公式,余数=被除数-除数*商)

  • 赋值运算符:+=、-=、*=、/=、//=、%=
a,b,c=20,30,40    #支持系列赋值,指向不同块内存空间
a=b=c=20          #支持链式赋值,指向同一块内存空间

  交换两个变量的值,不需要中间变量(tql)

a,b=b,a
  • 比较运算符:>、<、>=、<=、!=、==、is、is not(对象的id比较)
a,b=10,20
print('a>b吗?',a>b)    #False
a=10
b=10
print(a==b)       #True
print(a is b)     #True
list1=[11,22,33,44]
list2=[11,22,33,44]
print(list1==list2)        #True
print(list1 is list2)      #False
  • 布尔运算符:and、or、not、in、not in
s='hello world'
print('w' in s)         #True
print('k' not in s)     #True
  • 位运算符:&、|、<<(左移位运算符:高位溢出舍弃,低位补0)、>>(右移位运算符:低位溢出舍弃,高位补0)
print(4&8)     #按位与,0
print(4|8)     #按位或,12
print(4<<1)    #左移移位,8,相当于乘以2
print(4>>1)    #右移一位,2,相当于除以2
  • 运算符优先级:算术运算>位运算>比较运算>布尔运算

7.程序的组织结构

  • 顺序结构
  • 选择结构
#多分支结构
score=int(input('请输入一个成绩'))
#判断
if 90<=score<=100:       #在python中可以这样写,tql
    print('A级')
elif score>=80 and score<=89:
    print('B级')
else:
    print('C级')
#条件表达式
num_a=int(input('请输入第一个整数'))
num_b=int(input('请输入第二个整数'))
print(str(num_a)+'大于等于'+str(num_b) if num_a>=num_b else str(num_a)+'小于'+str(num_b))
  • 循环结构:while 和 for -in
#如果在循环体中不需要使用到自定义变量,可将自定义变量写为"_"
for _ in range(5):
    print('人生苦短,我用Python')
#练习题
#输出100到999之间的水仙花数
#举例:153=1*1*1+5*5*5+3*3*3
for i in range(100,999):
    if i==(i//100)**3+((i%100)//10)**3+(i%100%10)**3:
        print(i)         #最终输出153、370、371、407

8.对象的布尔值

  •   python一切皆对象,所有对象都有一个布尔值
  • 获得对象的布尔值,使用内置函数bool()
  • 布尔值为False的对象:Fasle、数值0、None、空字符串、空列表、空元组、空字典、空集
  • 其他对象的布尔值均为True
print(bool([]))       #空列表,False
print(bool(list()))   #空列表,False
print(bool(()))       #空元组,False
print(bool(tuple()))  #空元组,False
print(bool({}))       #空字典,False
print(bool(dict()))   #空字典,False
print(bool(set()))    #空集合,False

9.pass语句

  •   什么都不做,只是一个占位符,用到需要写语句的地方

10.内置函数range()

  • 用于生成一个整数序列
  • 创建range对象的三种方式
range(stop)              #创建一个(0,stop)之间的整数序列,步长为1
range(start,stop)        #创建一个(start,stop)之间的整数序列,步长为1
range(start,stop,step)   #创建一个(start,stop)之间的整数序列,步长为step
r=range(10)
print(r)          #range(0,10)
print(list(r))    #用于查看range对象中的整数序列
  • 返回值是一个迭代器对象
  • range()函数优点:不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start、stop、step,只有当用到range对象时,才会去计算序列中的相关元素
  • in与not in判断整数序列中是否存在(不存在)指定的数

11.与else语句搭配使用的三种情况

  • 与 if 搭配,if 条件表达式不成立时执行 else
  • 与 while 搭配,没有碰到 break 时执行 else
  • 与 for 搭配,没有碰到 break 时执行 else
for item in range(3):
    pwd=input('请输入密码:')
    if pwd=='8888':
        print('密码正确')
        break
    else:
        print('密码不正确')
else:
    print('对不起,三次密码均输入错误')

12.循环的嵌套

  • 输出一个三行四列的矩形
#输出一个三行四列的矩形
for i in range(1,4):
    for h in range(1,5):
        print('*',end='\t')    #不换行输出
    print()   #打行
  • 输出九九乘法表
#输出九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print(str(i)+'*'+str(j)+'='+str(i*j),end='\t')
    print()
  • 二重循环中的 break 和 continue 用于控制本层循环

13.列表

  • python中的列表相当于其他语言中的数组
  • index():获得列表中指定元素的索引,如果列表中存在N个相同元素,只返回相同元素中的第一个元素的索引;不存在,则抛出ValueError
lst=['hello','world','98','hello']
print(lst.index('hello'))    #输出0
#指定起始和结束位置进行查找
print(lst.index('hello',1,4))    #输出3
  • 可以正向索引和逆向索引:正向索引从0到N-1,逆向索引从-N到-1,指定索引不存在,抛出IndexError
  • 获取列表中的部分数据(切片)
lst=[10,20,30,40,50,60,70,80]
#start=1,stop=6,step=1
print(lst[1:6:1])
print(lst[1:6])       #输出结果同上,默认步长为1
print(lst[1:6:])      #同上
print(lst[1:6:2])     #步长为2
print(lst[:6:2])      #默认start为0
print(lst[1::2])      #默认stop到最后一个元素

#step也可以是负数,此时从start开始往前计算切片
#此时start默认是列表的最后一个元素
#stop默认是列表我的第一个元素
print(lst[::-1])      #相当于列表逆序,tql
  • 遍历列表中的对象
lst=[90,80,70,60,50,40,30,20,10]
for item in lst:
    print(item)
  • 列表元素的增加操作:append()、extend()、insert()、切片(覆盖)
lst=[]
lst.append(100)           #在列表的末尾添加一个元素
lst2=[90,80]
lst.extend(lst2)          #在列表的末尾至少添加一个元素,可以用于两个列表合并
lst.insert(1,30)          #在列表的任意位置添加一个元素

lst3=[10,20,30,40]
lst[1:]=lst3              #把lst从第二个元素到最后一个元素替换为了lst3
  • 列表元素的删除操作:remove()、pop()、切片、clear()、del
lst=[10,20,30,40,50,60,30]
lst.remove(30)    #从列表中移除一个元素,如果有重复元素只移第一个
#lst.remove(100)  #不存在,抛出ValueError异常
lst.pop(1)         #删除一个指定索引位置上的元素,指定索引不存在,抛出IndexError,不指定默认删除列表中最后一个元素

#切片操作,删除至少一个元素,将产生一个新的列表对象
new_lst=lst[1:3]

#不产生新的列表对象,而是删除原列表中的内容
lst[1:3]=[]

#clear()清除列表
lst.clear()
#del删除列表
del lst

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

biu~!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值