Python之数据转换、列表

Python学习NO.2

一、数据类型转换

1.str():将其他类型转化成str类型的数据
2.int():将其他类型转化成int类型的数据
3.float():将其他类型转化成float类型的数据

age1=10
age2=12.2
age3=True
print(type(age1),type(age2),type(age3))#<class 'int'> <class 'float'> <class 'bool'>
print(type(str(age1)),type(str(age2)),type(str(age3)))#<class 'str'> <class 'str'> <class 'str'>
a1='123'
a2=12.35
a3=False
print(type(a1),type(a2),type(a3))#<class 'str'> <class 'float'> <class 'bool'>
print(int(a1),int(a2),int(a3))#123 12 0
print(type(int(a1)),type(int(a2)),type(int(a3)))#<class 'int'> <class 'int'> <class 'int'>
b1='123.2'
b2=156
b3=True
print(type(b1),type(b2),type(b3))
print(float(b1),float(b2),float(b3))#123.2 156.0 1.0
print(type(float(b1)),type(float(b2)),type(float(b3)))

注意:
1.str类型的数据只能是’123’这种数字串可以转换成int型或float类型的,而‘hello’,‘12.3’这种不能转换
2.而float类型的数据转换后只保留整数部分
3.bool类型转换成int或float类型中,True=1,False=0

二、输入函数input()

在这里插入图片描述
1.input()函数的使用:
变量 = input(“ 问题 ”),输入答案,无参时直接输入数据
2.举例:两个数相加

a1=input("请输入第一个数:")
a2=input("请输入第二个数:")
print(a1+a2,type(a1+a2))
print("两个数的和为:",int(a1)+int(a2))

运行结果:
在这里插入图片描述

三、 运算符

1.算术运算符:+,-,,/(除法运算 ),//(相除取整),%(整除求余),**(幂次方)
注: //(相除取整)一正一负取整,向下取整
 %(整除求余)一正一负用公式 :余数 = 被除数 - 除数

2.赋值运算符:=,+=,- =,*=,/=,//=(执行顺序:右->左)
注:使用/=,//=除法运算后,数据类型转换成float类型
①.支持联试赋值

a=b=c=30
#这种赋值方式所得变量地址值都一样

②支持参数赋值
③支持系列解包赋值

a,b,c="hell",20.3,30
print(a,b,c) 
#要求:等号两边数据数量相等
print("=====交换两个变量的值========")
a,b=2,6
print(a,b)# 2 6
a,b=b,a
print(a,b)# 6 2

3.比较运算符(结果为bool类型):>,<,==,>=,<=,!=

a,b=2,6
print("a>b?",a>b) # False
print("a<b?",a<b) # True
print("a>=b?",a>=b) # False
print("a<=b?",a<=b) # True
print("a==b?",a==b) # False

注:==比较的是两个对象的值,比较地址值用is,not is
4.布尔运算符:and ,or ,not ,in ,not in
①and ,or ,not相当于Java语言中的:&& ,|| , !
②in ,not in表示判断某字符串是否在另一字符串中

a=1
b=2
print(a==1 and b==2 )
print(a==1 or b==0 )
print(not b==1 )
s="helloworld"
print('a' in s)
print('a' not in s)

5.位运算符(二进制的运算): & ,| ,>>,<<

print(4&8)#按位与,同为1时结果为1
print(4|8)#按位或,同为0时结果为0
print(4>>1)#左移一位
#左移:高位溢出,低位补0,左移一位相当于乘以2
print(8<<1)#右移一位
#右移:高位补0,低位截断,右移一位相当于除以2

6.运算符的优先级:
通常情况:算术运算符>位运算符>比较运算符>布尔运算符>赋值运算符

四、内置函数bool()

 Python一切皆对象,所有对象都有一个布尔值,获取对象的布尔值使用内置函数bool()。[False,数值(),None,空字符串,空列表,空元组,空字典,空集合]这些对象的布尔值均为False

#测试对象的bool值
#非0即为真
print(bool(1))#True
print(bool(0))#False
print(bool(4))#True
#空字符串
print(bool(""))#False
#空列表
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

五、程序的组织结构

1>顺序结构

2>选择结构
①语法结构:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
举例:

money=2000
put=int(input("请输入取款金额:"))
if money>=put:
    money-=put
    print("已取款",put,"元\n余额为:",money)
else:
    pass#若条件执行体没有,可用pass使代码不报错
    print("余额不足。。")
score=int(input("请输入你的成绩:"))
s=""
if score>=90:
    s='A'
elif score>=80:
    s='B'
elif score>=70:
    s='C'
elif score>=60:
    s='D'
elif score>=0:
    s='E'
else:
    print("该成绩有误")
print('你的成绩等级为'+s)
answer=input("您是会员吗?y/n")
outm = float(input("您的消费金额为:"))
if answer=='y':
    if outm>200:
       print("您的消费可以打八折哦,付款金额为:",outm*0.8)
    elif outm>=100:
        print("您的消费可以打九折哦,付款金额为:",outm*0.9)
    else:
        print("您的消费可以打九九折哦,付款金额为:",outm*0.99)
else:
    if outm>200:
       print("您的消费可以打九五折哦,付款金额为:",outm*0.95)
    else:
       print("不打折哦,付款金额为:",outm)

②使用条件表达式:条件执行体1 if 条件表达式 else 条件执行体2

num1=12
num2=10
print(str(num1)+"大于"+str(num2) if num1>=num2 else str(num2)+"大于"+str(num1))

3>循环结构:whlie;for-in

①语法结构:
在这里插入图片描述

#举例:计算1-100之间的偶数和
a=1
sum=0
while a<=100:
    if not bool(a%2):
    # if a%2==0:
        sum += a
    a+=1
print("1-100之间的偶数和为:",sum)

在这里插入图片描述

for item in 'Python':
    print(item)
#依次输出’P‘,’y‘,’t‘,’h‘,’o‘,’n‘
for i in range(10):
    print(i)

#如果在循环体中不需要使用到自定义变量,可将自定义变量改为“_”
for _ in range(5):#执行5次循环体
    print("hello")

举例:打印100到999之间的水仙花数:153==333+555+111

n=100
while n>=100 and n<1000:
    ge=n%10
    shi=(n//10)%10
    bai=n//100
    if n==ge*ge*ge+shi*shi*shi+bai*bai*bai:
        print(n)
    n+=1

for num in range(100,1000):
    ge = num % 10
    shi = (num // 10) % 10
    bai = num // 100
    if num == ge * ge * ge + shi * shi * shi + bai * bai * bai:
        print(num)
    num += 1

②嵌套循环
举例:打印九九乘法表

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

1.break 用于结束循环

qwd=input("你的密码:")
for a in range(3):
    if(qwd=="1111"):
        print("密码正确!")
        break
    else:
        print("密码错误")
        qwd = input("你的密码:")

2.continue 用于结束本次循环

for a in range(3):
    qwd = input("你的密码:")
    if(qwd!="1111"):
        print("密码错误!")
        continue
    else: print("密码正确")

注:若存在嵌套循环,流程控制语句控制其所在内层循环

七、 含else语句

1.if …else

2.while …else

3.for …else

for item in range(3):
    pwd=input("请输入密码:")
    if pwd=="1111":
        print("密码正确!")
        break;
    else:
        print("密码错误,请重新输入:")
else:
    print("对不起,三次输入错误")

注:if条件表达式不成立时执行else,while,for:没有碰到break时执行else

八、列表

First:列表(相当于Java中的数组):一个大容器存储多个元素,使程序可以方便地对这些数组进行整体操作
Second:列表创建方式
1.使用中括号:列表名 = [元素1,元素2…]。
2.调用内置函数list([元素1,元素2…])

lis=['hello',156,45.6]
print(id(lis))
print(type(lis)) #<class 'list'>
print(lis)

print(list(["lll",156,12.6,"lll"]))

①列表的特点:
1.列表元素按顺序也许排序
2.索引映射唯一数据(索引可以从列表右边到左边依次从-1,-2开始接连减小;也可以与Java一样)
3.列表可以存储重复数据
4.任意数据类型混存
5.根据需要动态分配和回收内存

②获取列表元素的索引:列表名.index(列表元素)
若列表中有多个相同元素,获取的索引只有第一元素的索引
如果查询的元素不存在,则会出现ValueError
还可以在指定的start和stop之间进行查找:列表名.index(列表元素,start,stop):俩索引之间进行查找

print(lis.index('hello'))
#print(lis.index(156,0,1))  #ValueError: 156 is not in list
print(lis.index(156,1,2))

③获取列表当中的单个元素:若列表有N个元素
正向索引从0到N-1,例:lis[0]
逆向索引从-N到-1,例:lis[-N]
指定索引不存在,抛出IndexError

print(lis[0])
print(lis[-2])

④获取列表中的多个元素(切片):列表名 start: stop: step
切片的结果:原列表片段的拷贝
切片的范围:[start:stop]
step默认为1:简写为[start:stop(:)]
step为正数:切片的第一个元素默认是列表的第一个元素,切片的最后一个元素默认为列表的最后一个元素,从start开始往后计算切片
step为负数:切片的第一个元素默认是列表的最后一个元素,切片的最后一个元素默认为列表的第一个元素,从start开始往前计算切片

#切片将会产生一个新的列表对象
lst=[10,20,30,40,50,60,70]
print(lst[1:6:2])
print(lst)
print(lst[6:0:-2])
#判断元素是否在列表中用  in  ,not in
print(20 in lst)
print(0 not in lst)

#列表元素的遍历:for 迭代变量  in 列表名:操作
for i in lis:
    print(i,end='\t')
print()

⑥列表元素的增加:
append():在列表末尾添加一个元素.且列表地址值不变
extend():在列表末尾至少添加一个元素
insert():在列表的任意位置添加一个元素
切片:在列表任意位置至少添加一个元素

lis.append(100)
print(lis)
lis.append(lst)#将lst=[10,20,30,40,50,60,70]作为一个元素添加到列表lis中
print(lis)
lis.extend(lst)#将lst中元素添加到lis列表中
print(lis)
l=["hei",155,12.6]
l.insert(1,20)#在索引为1的位置上添加一元素20
print(l)
l[1:]=lst#把列表l从索引为1的位置开始切掉后面的元素,再把lst的元素添加进去
print(l)

⑦列表元素的删除操作:
remove():一次删除一个元素,重复元素只删除第一个元素,元素不存在抛出异常ValueError
pop():删除一个指定索引位置上的元素,指定不存在抛出异常IndexError,不指定索引,删除列表的最后一个元素
切片:一次至少删除一个元素
clear():清空列表
del:删除列表

l1=[10,20,'jj',20,1.22,"444"]
l1.remove(20)
print(l1)
l1.pop(1)
print(l1)
l1[1:2]=[]#用空列表替代索引为1到2的元素,此时没有产生新列表
print(l1)
l1.clear()
print(l1)#返回空列表
del l1#此后列表不存在

⑧列表的修改操作:
为指定索引的元素赋予一个新值
为指定切片赋予一个新值

arr=[10,20,'jj',20,1.22,"444"]
arr[-2]=10.00
print(arr)
arr[1:5]=[10,10]
print(arr)

⑩列表元素的排序操作:
调用sort()方法,且列表地址值不改变,是对原列表进行改变,默认将列表中所有元素从小到大的顺序排序,可以指定reverse=True时进行降序排序,reverse=False时升序
调用内置函数sorted(list),可以指定reserve=True时进行降序排序,reverse=False时升序,创建一个新的列表对象

a=[2,6,3,1,21,16,80,42,66,24]
print(id(a))
a.sort(reverse=True)
print(a,id(a))
a1=sorted(a)
print(a1,id(a1))
a2=sorted(a,reverse=True)
print(a2,id(a2))

拓:列表生成式:[ii for i in range(1,10)]
i
i表示列表元素的表达式,其中通常包含自定义变量

list1=[i for i in range(1,10)]
print(list1)
list2=[2*i for i in range(1,6)]
print(list2)
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值