Python入门基础(第3天):基本数据类型

一、基本数据类型

1、数字

 通常的int, long,float,long等等都被支持。而且会看你的具体数字来定义变量的类型。

#  int 类型
#  bit_length()    返回一个数的二进制长度

2、字符串

 单引号,双引号和三引号都可以用来定义字符串。三引号可以定义特别格式的字符串。字符串作为一种序列类型,支持像Matlab一样的索引访问和切片访问。

# str 类型
# 由',",''',"""括起来的内容就是字符串
# 字符串是不可变的数据类型,无论执行任何操作,源字符串都不会改变,每次操作返回新字符串

(1)、索引和切片

# 1.索引
#
索引从0开始,使用[下标]可以获取每一个字符 # 例如: s="基本数据类型" #(下面都使用这个为例) print(s[1]) #结果为:本 print(s[-1]) #结果为:型 # 索引不能超过边界 # 负下标表示倒着数

# 2.切片
# 切片[起始位置:结束位置] 1、不包括结束位置 2、只能从左往右切
# 例如:
print(s[1:4]) #从1开始切到4,但取不到4
#结果为:本数据
print(s[1:]) #结束位置可以任意,超了也没事,从头取到尾也可不写
print(s[:4]) #与上面相反
#结果为:本数据类型

# 三个参数切片来控制方向,第三个参数叫步长
# 切片[起始位置:结束位置:步长]
# print(s[2:4:2]) #从2开始取,到4结束,不包括4,每两个取一个,取前面第一个
#结果为:数
print(s[-1:-5:-2]) #表示反方向,从右往左,每两个取第一个
#结果为:型据

3、布尔型

 布尔类型只有True(真)和False(假)两种值,表判断,加 not 取反。

# 所有的空都是false,所有的非空都是true
# 例如 int  a=0
# 例如 str  a=”“
# 例如 tuple()
# 例如 list[]
# 例如 {}

4、元组

         元组tuple用()来定义。相当于一个可以存储不同类型数据的一个数组。可以用索引来访问,但需要注意的一点是,元祖里面的元素不能被修改

# 元祖
#只能读,不能读写操作
# tu=tuple() #空元祖
tu=(1,245,54,12,2) #如果元祖中只有一个元素,需要在里面加一个逗号
print(tu[1:3])#切片可以用
print(tu[2])#索引可以用
tu=(1,"he","how are you?",[])
tu[3].append("小何")#内部列表元素可变
print(tu)
# range()可迭代对象
#range(m) 表示0~m-1
for i in range(10): #循环输出0-9
    print(i)

# range(m,n) 表示m~~n-1
for i in range(2,10):
    print(i)

#range(m,n,q) 表示m~~n-1,没q个取一个
for i in range(2,10,2):
    print(i)

#获取索引然后拿元素
lst=["dsd","sdsdwed","sdssdsddddd","sdwewew","fdfdf"]
for i in range(len(lst)):
    print(lst[i])

5、列表

         列表list用[]来定义。它和元组的功能一样,不同的一点是,里面的元素可以修改。List是一个类,支持很多该类定义的方法,这些方法可以用来对list进行操作。

(1)列表的增删改查

# 列表的增删改查

# 增加
lst=["张三","李四","王五","赵柳","谷歌","马云"]
lst.append("何东洋")#末尾追加,只能追加一个元素
lst.insert(1,"王力宏")#指定位置插入
# 迭代追加两种形式
lst.extend("马化腾")
lst.extend(["是多少","都是","圣达生物"])
print(lst)

# 删除
lst=["张三","李四","王五","赵柳","谷歌","马云"]
data=lst.pop(2) #返回被删除的数据
print(data)
lst.remove("李四") #指定删除元素,如果没有删除的元素就报错
del lst[1:2]#切片删除1-2个元素
# del lst[3]#切片删除第三个元素
lst.clear()#清空列表
print(lst)

# 修改
lst=["王者荣耀","魔兽世界","地下城","反恐精英","穿越火线"]
lst[3]="扫雷" #指定位置索引修改
lst[1:3]=["QQ飞车"] #先删除后添加,添加一个元素
lst[1::2]=["QQ炫舞","QQ空间"] #切片的时候,如果步长不是1,注意元素个数
print(lst)

# 查询
lst=["王者荣耀","魔兽世界","地下城","反恐精英","穿越火线"]
#循环查找列表内所有元素
for element in lst:
    print(element)

(2)列表的嵌套

# 列表的嵌套
list=["leil","sd",["大Q吧",["he","100","dsss"],"QQ飞车"]]
# 查询
print(list[2][1][1]) #指定查找元素100
# 修改
list[2][1][0]=list[2][1][0].upper() #修改某个元素为大写
print(list)
# 排序
lst=[1,5,3,47,21,58,1,23,45,21,2]
lst.sort() #排序,默认升序
lst.sort(reverse=True) # reverse=true表示降序

lst=["王者荣耀","魔兽世界","地下城","反恐精英","穿越火线"]
lst.reverse()#在字符串中表示翻转
print(lst)
#列表日常练习
li=["alex","wuseier","HEDY","barry","alex","alex"]
# print(len(li)) #计算长度
# li.append("sever") #最加一个元素
# li.insert(1,"tony") #指定位置插入
# li[3]="kelly" #指定位置修改
# l2=[1,"a",3,4,"hers"]
# li.extend(l2) #将l2添加到li列表中
# s="qwet"
# li.extend(s) #将每个元素添加到列表中
# li.remove("HEDY")# 删除指定元素
# data=li.pop(3)#删除索引元素
# print(data)#打印删除的内容
# del li[2:4] #切片删除第2-4个元素
# li.reverse() #翻转元素内容
# #统计出现的次数
# s="alex"
# sum=0
# for i in li:
#     if(i==s):
#         sum=sum+1
# print(sum)

# list=[2,3,"k",["qwe",23,["kk",["tt",45,"ds"],"1"]]]
# list[3][2][1][0]=list[3][2][1][0].upper() #指定位置变大写
# list[3][2][1][1]="100" #方法1:直接更改某个元素数字为字符串
# list[3][2][1][1]=str(list[3][2][1][1]+55) #方法2:强制转换
# print(list)

# # 利用下划线将每个元素进行拼接
# li=["he","dong","yang"]
# s=''
# for i in li:
#     s=s+i+'_'
#     print(s[:-1])

# # 打印元素索引,内容
# li=["he","dong","yang","cheng","xu","yuan"]
# for i in range(len(li)):
#     print(li[i])

# #利用for循环和range找出100内的偶数并添加到一个新列表
# list=[]
# for i in range(101):
#     if i%2==0:
#         list.append(i)
# print(list)

#利用for循环、while循环和range从100-1,倒序打印
# for i in range(100,0,-1):
#     print(i)
# #while循环
# count=100
# while count>0:
#     count=count-1
#     print(count)

# # 利用for循环和range从100-10倒序将所有偶数添加到新列表中,并将能被4整除的保存下来
# li=[]
# for i in range(100,9,-1):
#     if i%2==0 and i%4==0:
#         li.append(i)
# print(li)

# # 用户输入用户,匹配到敏感词就自动替换为***,并将输入的内容添加到新列表中
# lst=["王者荣耀","魔兽世界","地下城","反恐精英","穿越火线"]
# content=input("请输入内容:")
# li1=[]
# for i in lst:
#     if i in content:
#         content=content.replace(i,'*'*len(i))
# li1.append(content)
# print(li1)

# #将结果打印成如下形式:
# '''
# 1
# 2
# 4
# "hedyang"
# 4
# 78
# 98
# "taobao"
# 88
# "tainan"
# '''
# li=[1,2,4,"heDyang",[4,78,98,"TAoBao"],88,"TAiNan"]
# for i in li:
#     if type(i)==list:
#         for el in i:
#             if type(el)==str:
#                 print(f'"{el.lower()}"') #格式化输出,加引号
#             else:
#                 print(el)
#     else:
#         if type(i)==str:
#             print(f'"{i.lower()}"')
#         else:
#             print(i)

# # 把学生成绩录入列表中,并求平均值,要求:带着人名录入,如:张三_88
# list=[]
# while 1:
#     content = input("输入姓名_成绩(输入Q退出):")
#     if content.lower()=='q':
#         break
#     else:
#         s=content.split('_')#以_分割
#         list.append(s[1])
# sum=0
# for j in list:
#     sum+=int(j)
# print(sum/len(list))

6、字典

         字典dictionary用{ }来定义。它的优点是定义像key-value这种键值对数据的结构,就像struct结构体的功能一样。它也支持字典类支持的方法进行创建和操作。

1. 字典
dictionary 用{}来表示     键值对数据 {key : value}    唯一性
键   必须都是可哈希的       不可变的数据类型可当做键
值   没有任何限制

2.增删改查
dic[key]=value
dic.setdefault(key,value)    如果键在字典中存在则不进行操作,否则就添加
                 可以通过key查询,没有这个key就返回None
----------------------------------------------------------------
pop(key)          有返回值  返回的是被删除的value
del dic[key]      指定删除
popitem()         随机删除
clear()           清空字典
-----------------------------------------------------------------
dic[key]= value   直接修改
dic.update(字典)   替换新增
-----------------------------------------------------------------
get(key)          直接查看
dic[key]        
for循环
setdefault(key)
-----------------------------------------------------------------
3. 字典的其他操作
keys     获取到所有的键在一个高仿列表中   
values   获取到所有的值在一个高仿列表中
items    获取所有的键值对应元组的形式存在一个高仿的列表中

解构:
a,b=[1,2] #同a,b=12  a,b='12' a,b=(1,2) //将后面结构打开按位置赋值给前面变量
可以是字符串,元组,列表等
#字典(key,value)——练习
# 增加
dic={'盖聂':'渊虹','卫庄':'鲨齿','高渐离':'水寒剑','白凤':'羽毛','盗跖':'神偷'}
dic['掩日']='火影'  #新增在末尾
dic.setdefault('大铁锤','雷神锤')  #如果key在字典中存在就不进行任何做操作,不存在就添加
dic.setdefault('盖聂','雷神锤')
print(dic)

# 删除
dic={'盖聂':'渊虹','卫庄':'鲨齿','高渐离':'水寒剑','白凤':'羽毛','盗跖':'神偷'}
data=dic.pop('盖聂')  #同过key删除,返回被删除的value
print(data)
del dic['白凤'] #指定删除
dic.clear()  #清空
ret=dic.popitem()  #随机删除  返回值  一个元祖(key,value)
print(ret)

# 修改
dic={'盖聂':'渊虹','卫庄':'鲨齿','高渐离':'水寒剑','白凤':'羽毛'}
dic1={'孙悟空':'大师兄','猪八戒':'二师兄','高渐离':'易水寒'}
dic['盖聂']='大叔'  #强制修改
dic1.update(dic)  #dic1覆盖dic,如果没有就直接在前面添加
print(dic)

# 查看
dic2={'孙悟空':'大师兄','猪八戒':'二师兄','高渐离':'易水寒'}
# for 循环  元组  键  值  键值对
for i in dic2:
    print(i)    #for循环默认获取字典中的键(key)
print(dic2['猪八戒'])    #查看1   没有这个键的时候查询会报错
print(dic2.get('hah','没有你找的内容'))   #查询2  没有就返回默认值None  可以指定返回类容

# 其他操作
dic3={'孙悟空':'大师兄','猪八戒':'二师兄','高渐离':'易水寒'}
print(dic3.keys())    #高仿列表  获取每个键
print(dic3.values())  #高仿列表  获取每个值
print(dic3.items())   #高仿列表  元组

for i in dic3.keys():
    print(i)     #获取到字典中的每一个键

for i in dic3.values():
    print(i)     #获取到字典中的每一个值

for i in dic3.items():
    print(i)     #以元组形式获取[('key','value')]

# 解构(解包)
a,b=[1,2] #同a,b=12  a,b='12' a,b=(1,2) //将后面结构打开按位置赋值给前面变量
print(a)   #实例
print(b)

dic={'孙悟空':'大师兄','猪八戒':'二师兄','高渐离':'易水寒'}
for a,b in dic.items():
    print(a)    #拿出所有数据
    print(b)

# 批量创建字典key
dic={}
date=dic.fromkeys([1,2,3,4],'指定内容')  #批量创建字典key,value默认为None,可指定内容
print(date)

# 字典嵌套
dict={'name':'He','age':'22','aa':[{'hobby':'coed'}, {'stu':'332017'}],'bb':[{'成绩':'88','时间':'2020'}],'salary':'100000'}
a=dict['aa'][1][0]=20200227    #强制修改332017,没有会报错
b=dict.get('bb')[0].get('成绩') #没有这个键会提示none,不会报错
print(a)
print(b)

(1)作业1:有字符串"k:1|k1:2|k2:3|k3:4",处理成字典{‘k’:1,'k1':2,'k2':3,'k3':4}

s="k:1|k1:2|k2:3|k3:4"
new_li=s.split("|")  #以|为分割
dict={}
print(new_li)
for i in new_li:
    k,y=i.split(":")
    dic[k]=int(v)
print(dic)

(2)作业2:有下值li=[11,22,94,44,55,66,77,88,48,90],将所有大于66的值保存至字典第一个key中,将小于66的值保存至第二个key中,即:{'k1':大于66的所有值,'k2':小于66的所有值}

li=[11,22,94,44,55,66,77,88,48,90]
dic={'k1':[],'k2':[]}
for i in li:
    if i==66:
        continue
    elif i>66:
        dic.setdefault('k1').append(i)#setdefault存在不做任何操作,append追加在末尾
    else:
        dic.setdefault('k2').append(i)
print(dic)

(3)输出商品列表,用户输入序号,显示用户选中的商品

'''
要求:
1,显示页面:  序号   商品名称   商品价格
2,用户输入选择的商品序号,然后显示商品名称和价格
3,用户输的商品序号有误,进行提示
4,用户输入Q或者q,退出程序
'''
goods=[{'name':"电脑",'price':1999},
{'name':"鼠标",'price':99},
{'name':"键盘",'price':599},
{'name':"显示器",'price':999}] while 1: for i in goods: print(goods.index(i)+1,i['name'],i['price']) content=input("请输入商品序号,输入Q/q退出:") if content.upper()=='Q': break elif content.isdigit() and 0<int(content)<len(goods): i_index=int(content)-1 print(goods.[i_index]['name'],goods.[i_index]['price']) else: print("输入有误")

7、range()可迭代对象

# range()可迭代对象
#range(m) 表示0~m-1
for i in range(10): #循环输出0-9
    print(i)

# range(m,n) 表示m~~n-1
for i in range(2,10):
    print(i)

#range(m,n,q) 表示m~~n-1,每q个取一个
for i in range(2,10,2):
    print(i)

#获取索引然后拿元素
lst=["dsd","sdsdwed","sdssdsddddd","sdwewew","fdfdf"]
for i in range(len(lst)):
    print(lst[i])

二、常用基本属性用法

a="  heLLo wOrlD funk "  #以下均以次为例
#大小写转换
a1=a.capitalize() #首个单词字母变大写
a1=a.title()  #把每一个单词的首字母变大写

a2=a.lower()  #全部变成小写
a2.casefold() #全部变成小写(能转换特殊字母)
a3=a.upper()  #全部变成大写
a4=a.swapcase() #大小写互换,即大写变小写,小写变大写

#居中
a5=a.center(20,"-") #居中,没有-默认空格

#去空格
a6=a.strip()  #去除左边和右边的多余空格
a7=a.strip("w") #去掉其中某些字符
a8=a.lstrip() #去掉左边的空格
a9=a.rstrip() #去掉右边的空格
s="heLLo_hello_hesdaa_hewOrlD_hefunk"
s1=s.replace("he","XXX",2) #(源字符,需要替换内容,次数) #替换字符串中某个字符
s2=s.split("_") #切完的结果是一个列表,列表中装的是字符串,用什么切就会损失什么
#如果全部切完,会产生两个空字符串,如果超出源字符,不切

#格式化输出
s="我叫{1},今年{0},喜欢{2}".format("hh","20","shu") #和%s功能一样,括号内加数字制定顺序,不加数字默认顺序
s1="我叫{name},今年{age},喜欢{hobby}".format(name="hh",age="20",hobby="shu") #指定输出

#判断开头结尾
s="heLLo_hello_hesdaa_hewOrlD_hefunk"
s1=s.startswith("he")  #是否以XXX开头
s2=s.endswith("funk")  #是否以XXX结尾

#统计次数
s3=s.count("h")  #统计XX在字符串中出现的次数
s4=s.find("f")  #查找XX首次在字符串中出现的位置,没有就返回-1
s5=s.index("k") #查找XX出现的位置,没有就报错

#字符串组成
s6=s.isdigit()  #判断是否由数字组成
s7=s.isalnum()  #判断是否由数字和字母组成
s8=s.isalpha()  #判断是否由字母组成
s9=s.isnumeric() #判断是否由中文数字组成

#字符串长度
print(len(s)) #字符串长度

#迭代
  for 变量 in 可迭代对象:

作业1:

1 # #1.去除两边空格
2 name=" heLlowoRlD "
3 s1=name.strip()
4 print(s1)
5 
6 #2.去除字符串中的w
7 s2=name.lstrip("w")
8 print(s2)

作业2:

#切片
name="123a4b5cheLlowoRlD"
print(name[:3])
print(name[3:6])
print(name[::2])
print(name[-1::-3])

作业3:

#用while、for循环输出每个元素
name="123a4b5cheLlowoRlD"
n=0
while n<len(name):
    print(name[n])
    n=n+1

#for循环
for c in name:
    print(c)

作业4:

#循环输出每个字符并每个字符结尾加sb
name="123a4b5cheLlowoRlD"
for c in name:
    print(c+"sb")

作业5:

#使用for循环对s="321"进行循环,并依次打印内容
s="321"
for c in s:
    print("倒计时%s秒" % c)
print("计时开始!")

作业6:

#实现两个整数的加法计算并去用户除空格
content=input("请输入两个数(X + X):")
content=content.replace(" ","") #去空格
s=content.split("+") #用+号切割,切割结果是list类型
sum=int(s[0])+int(s[1])
print(sum)

作业7:

#用户持续输入内容,选择正确即可退出循环
while 1:
    content=input("请选择(A,B,C):")
    if content=='A':
        print("你选择走大路回家!")
        content1=input("请选择公交车还是步行?")
        if content1=="公交车":
            print("10分钟后到家!")
            break
        elif content1=="步行":
            print("20分钟后到家!")
            break
    elif content=='B':
        print("走小路回家!")
        break
    elif content =='C':
        print("绕道回家!")
        content2 = input("游戏厅or网吧?")
        if content2=="游戏厅":
            print("你想等着挨打吧,再选择一次!")
            continue
        elif content2 == "网吧":
            print("滚犊子,给你一次改正的机会!")
            continue

作业8:

 1 #计算1-2+3-4……+99除了88以外的所有数总和
 2 num=1;sum=0;
 3 while num<=99:
 4     if num==88:
 5         pass
 6         num = num + 1
 7     if num%2==0:
 8         sum=sum-num
 9     else:
10         sum=sum+num
11     num=num+1
12 print(sum)

作业9:

#判断用户输入的数或者字符串是否为回文数
content=input("请输入数字或字符串:")
if content==content[::-1]:
    print("是回文数")
else:
    print("不是回文数")

作业10:

#输入一个字符串,判断有多少大写字母和小写字母等
daxie=0
xiaoxie=0
number=0
other=0
content=input("请输入一段字符串:")
for s in content:
    if s.isupper():
        daxie=daxie+1
    elif s.isupper():
        xiaoxie=xiaoxie+1
    elif s.isdigit():
        number=number+1
    else:
        other=other+1
print(daxie,xiaoxie,number,other)

作业11

#判断是否在百家姓中
first_name="百家姓省略……"
sum=""
name=input("请输入一个姓名:")
for s in name:
    sum=sum+s#累加
    if sum in first_name:
        print("在百家姓中")
        break
else:
    print("不在百家姓中")
posted @ 2020-01-08 17:21  全村的希望、  阅读(391)  评论(0编辑  收藏  举报