基础数据类型 总览
int:用于计算,计数,运算等。 1,2,3 100......

str:'这些内容[]' 用户少量数据的存储,便于操作。

bool: True, False,两种状态,机器反馈给用户的对,错。

list: [1,'alex', True,[],(),{} ....] 大量的数据,各种数据类型,操作方便。

tuple: (1,'alex', True,[],(),{} ....),只读列表。

dict: 字典。大量的关联型数据。
{'name':'alex','name_list':[司徒,慈禧,李莲英...],'太白':{'name':'太白','sex':男}}
set:集合。{} 关系测试。

 

 

 

字符串Str 

对字符串的下面这两部分操作,形成的都是一个新的字符串,与原来的字符串没有关系。
第一部分:索引切片步长。 *****
按照索引取值,取出来的都是一个字符串,形成的字符串。

索引取值
s1 = 'python基础属性类型'
s2 = s1[0]
print(s2) #p

s3 = s1[2]
print(s3) #t

s4 = s1[-1]
print(s4) #型   可以从后面往前取
View Code

切片取值,顾头不顾腚
s1 = 'python基础属性类型'
s5 = s1[0:2]
print(s5) #py  虽然t是第三个位置,但是没有取得。因为切片取值顾头不顾腚。

s6 = s1[:2]
s7 = s1[:]  #此处尾如果写-1 那么取不到最后一个元素
print(s6,s7) #py python基础属性类型   如果从头取或者取到尾 ,头和尾都可以省略
View Code

切片+步长
s1 = 'python基础属性类型'
s8 = s1[0:5:2]
print(s8) #pto  从零个位置取到第六个索引位置,步长2.

# #如果想倒叙取值,加一个反向步长(负号),不加不打印内容
s9 = s1[-1:-5:-1]
s10 = s1[-1:-6:-2]
print(s9,s10) #型类性属 型性础,s9步长1,s10步长2
View Code

 

第二部分:字符串的常用方法
capitalize() 首字母大写,其他如果有大写变小写 ***
s1 = 'yigeRen'
#print(s1.capitalize()) #Yigeren

 


center() 字符串居中前后填充自定义字符 **
s1 = 'yigeRen'
print(s1.center(20,'*'))  #******yigeRen*******

 

upper():全大写 lower():全小写   *****
upper() 方法将字符串中的小写字母转为大写字母。

s1 = 'yigeRen'
print(s1.upper()) #YIGEREN
print(s1.lower()) #yigeren

username = input('用户名>>>')
Code = 'adfe'.upper()
yourCode = input('验证码>>>').upper()
if username == 'admin' and Code == yourCode :
    print(Code,yourCode) #
    print('登录成功')
应用举例

 

startswith()  endswith()  *****
startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。
如果参数 beg 和 end 指定值,则在指定范围内检查。
print(s1.startswith('y')) #True
print(s1.startswith('yi')) #True
print(s1.startswith('g',2)) #True,索引为2的开始是不是g开头

 

swapcase() 大小写翻转 **
s1 = 'yigeRen'
print(s1.swapcase()) #YIGErEN

title() 非字母隔开的每个部分的首字母大写  **
s2 = 'yigeren*mianshi#tianqihao'
print(s2.title()) #Yigeren*Mianshi#Tianqihao

find()  通过元素找索引,找到第一个就返回,没有此元素则返回-1  *****
print(s1.find('i')) #1
print(s1.find('yi')) #0,2个挨着一样的取到第一个就返回
print(s1.find('h')) #-1,未找到
print(s1.find('e',2,-1)) #3 ,指定索引区域内查找相关元素,返回元素在当前字符串的索引位置。

 

index() 通过元素找索引,找到第一个就返回,没有此元素则报错 *****

s1 = 'yigeRen'
print(s1.index('h'))  #ValueError: substring not found

strip() 默认去除字符串前后的空格,换行符,制表符  *****
name = '\t    yigeren\n'
print(name) #yigeren

name1 = '***yigeren**'
print(name1.strip('*'))  #yigeren
name2 = 'weerkangwqewr'
print(name2.strip('erw')) #kangwq,从前后分别开始检索字符串,如果有不能去除的就停止后面的检索
#lstrip(),从左侧去空格。 rstrip(),从右侧去空格
username = input('请输入用户名:').strip()  # 'kang '
if username == 'kang':
    print('登陆成功...')
举例:

 

split()  # 将字符串分割成列表(str---> list),默认是以空格为分隔符,可以具体指定。

s1 = 'tianjin beijing shanghai'
print(s1.split()) #['tianjin', 'beijing', 'shanghai']

s2 = 'tianjin*beijing*shanghai'
print(s2.split('*')) #['tianjin', 'beijing', 'shanghai']
s3 = '*tianjin*beijing*shanghai'
print(s3.split('*')) #['', 'tianjin', 'beijing', 'shanghai'] ,保留了*分割的第一个空列表。
s4 = ' tianjin beijing shanghai'
print(s4.split()) #['tianjin', 'beijing', 'shanghai'],默认空格的去除了第一个空元素,指定其他分隔符的则不会去除。

s5 = ' tianjin beijing shanghai'
print(s5.split(' '))  #['', 'tianjin', 'beijing', 'shanghai']  如果写上条件空格,则第一个空格正常分隔

s6 = ' tianjin beijing shanghai'
print(s6.split(' ',1))   #['', 'tianjin beijing shanghai']  指定参数,分隔几次

 


rsplit()

join() 自定制连接符,将可迭代对象中的元素连接起来 *****
s5 = 'yigeren'
print('_'.join(s5)) #y_i_g_e_r_e_n

replace() 字符串替换 *****
s6 = 'yi很不错,yi要努力,yi要加油'
print(s6.replace('yi','你')) #你很不错,你要努力,你要加油
print(s6.replace('yi','你',1)) #后面的1,替换次数。#你很不错,yi要努力,yi要加油

格式化输出:format()
s7 = '我是{},今年{},性别{}'
# 三种方式
# #第一种
print(s7.format('kang',19,'男')) #我是kang,今年19,性别男
# #第二种,可以指定的索引重复使用
# s3 = '我叫{0},今年{1},性别{2},我依然叫{0}'.format('kang', '28', '男')
# print(s3)  #我叫kang,今年28,性别男,我依然叫kang
# #第三种,键值对方式替换,不用考虑位置对应问题。
s4 = '我叫{name},今年{age},性别{sex}'.format(age='28', name='太白', sex='男')
print(s4) #我叫太白,今年28,性别男

 

is 系列
name = 'kang'
name1 = 'a123'
print(name.isalnum())  #True # 数字或字母组成
print(name1.isdigit())  #False # 判断全部是由整数组成
print(name.isalpha())  #True # 全部由字母组成

# 公共方法
name = 'taitaiaaa'
print(name.count('a'))  #5 有切片
print(len(name))  #9

 

 
 
数据类型之间的相互转换
'''
int str bool 三者转换
str <---> bytes
str <---> list
dict.keys() dict.values() dict.items()  list()
tuple <---> list
dict ---> list
'''

int
i = 4
# print(i.bit_length()) # 查询十进制转化成二进制占用的最小位数  *
'''
十进制         二进制
1              0000 0001
2              0000 0010
3              0000 0011
4              0000 0100
....
'''

bool
数据类型之间的转化。 *****
int ---> str   str(int)   int(str)
int ----> bool : 非零及True,零即为False, True ---> 1 False ----> 0

bool <---> str:
print(bool('a'))
print(bool('asb'))

str ---> bool 空字符串 bool False ,非空即True
s1 = ' '
print(bool(s1))
name = input(">>>")
if name:
    print('666')
else:
    print('无内容')


bool ---> str
print(str(True),type(str(True)))
#True <class 'str'>

 

str ---> list
s1 = 'alex wusir taibai'
l1 = s1.split()
print(l1)

list ---> str 此list中的元素全部是str类型
l1 = ['alex', 'wusir', 'taibai', 100]  #100的整数不行。
s2 = ' '.join(l1)
print(s2)  #TypeError: sequence item 3: expected str instance, int found

 

tuple <---> list
tu2 = (0,2,3)
l1 = list(tu2)
print(l1)
l1 = [1,2,3]
tu1 = tuple(l1)
print(tu1)

 

dict ---> list
dic1 = {'name': 'alex', 'age': 1000}
l1 = list(dic1)
print(l1) #

# 有问题
l2 = ['name', 'age']
dic2 = dict(l2)
print(dic2) #ValueError: dictionary update sequence element #0 has length 4; 2 is required

 

0 "  [] () {} set() ---> bool False

 

#day3作业及默写
#
# 1,有变量name = "aleX leNb" 完成如下操作:
name = "aleX leNb"
# 1)    移除 name 变量对应的值两边的空格,并输出处理结果
# 2)    移除name变量左边的"al"并输出处理结果
# 3)    移除name变量右面的"Nb",并输出处理结果
# 4)    移除name变量开头的a"与最后的"b",并输出处理结果
# 5)    判断 name 变量是否以 "al" 开头,并输出结果
# 6)    判断name变量是否以"Nb"结尾,并输出结果
# 7)    将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
# 8)    将name变量对应的值中的第一个"l"替换成"p",并输出结果
# 9)    将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
# 10)    将name变量对应的值根据第一个"l"分割,并输出结果。
# 11)    将 name 变量对应的值变大写,并输出结果
# 12)    将 name 变量对应的值变小写,并输出结果
# 13)    将name变量对应的值首字母"a"大写,并输出结果
# 14)    判断name变量对应的值字母"l"出现几次,并输出结果
# 15)    如果判断name变量对应的值前四位"l"出现几次,并输出结果
# 16)    从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果
# 17)    从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果
# 18)    从name变量对应的值中找到"X le"对应的索引,并输出结果
# 19)    请输出 name 变量对应的值的第 2 个字符?
# 20)    请输出 name 变量对应的值的前 3 个字符?
# 21)    请输出 name 变量对应的值的后 2 个字符?
# 22)    请输出 name 变量对应的值中 "e" 所在索引位置?


# 2,有字符串s = "123a4b5c"
#
# 1)通过对s切片形成新的字符串s1,s1 = "123"
# 2)通过对s切片形成新的字符串s2,s2 = "a4b"
# 3)通过对s切片形成新的字符串s3,s3 = "1345"
# 4)通过对s切片形成字符串s4,s4 = "2ab"
# 5)通过对s切片形成字符串s5,s5 = "c"
# 6)通过对s切片形成字符串s6,s6 = "ba2"
#
# 3,使用while和for循环分别打印字符串s="asdfer"中每个元素。
#
# 4,使用for循环对s="asdfer"进行循环,但是每次打印的内容都是"asdfer"。
#
# 5,使用for循环对s="abcdefg"进行循环,每次打印的内容是每个字符加上sb,    例如:asb, bsb,csb,...gsb。
# 6,使用for循环对s="321"进行循环,打印的内容依次是:"倒计时3秒","倒计时2秒","倒计时1秒","出发!"。
#
#
# 7,实现一个整数加法计算器(两个数相加):
# 如:content = input("请输入内容:") 用户输入:5+9或5+ 9或5 + 9,然后进行分割再进行计算。


# 8,升级题:实现一个整数加法计算器(多个数相加):
# 如:content = input("请输入内容:") 用户输入:5+9+6 +12+  13,然后进行分割再进行计算。
#
# 9,计算用户输入的内容中有几个整数(以个位数为单位)。
# 如:content = input("请输入内容:")   # 如 fhda234slfh9




# 10、写代码,完成下列需求:
# 用户可持续输入(用while循环),用户使用的情况:
# 输入A,则显示走大路回家,然后在让用户进一步选择:
# 是选择公交车,还是步行?
# 选择公交车,显示10分钟到家,并退出整个程序。
# 选择步行,显示20分钟到家,并退出整个程序。
# 输入B,则显示走小路回家,并退出整个程序。
# 输入C,则显示绕道回家,然后在让用户进一步选择:
# 是选择游戏厅玩会,还是网吧?
# 选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。
# 选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C选项。
#
# 11、写代码:计算 1 - 2 + 3 ... + 99 中除了-88以外所有数的总和?

# 1 - 2 + 3 ... + 99





# 16、制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名字和爱好进⾏任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx
#
# 17、等待⽤户输⼊内容,检测⽤户输⼊内容中是否包含敏感字符?如果存在敏感字符提示“存在敏感字符请重新输⼊”,并允许⽤户重新输⼊并打印。敏感字符:“⼩粉嫩”、“⼤铁锤”
#
#
# 明日默写内容:
# 分别用while,for循环输出字符串s = input("你想输入的内容")的每一个字符。
作业习题

 

#day3作业及默写
#
# 1,有变量name = "aleX leNb" 完成如下操作:
# name = "aleX leNb"
# 1)    移除 name 变量对应的值两边的空格,并输出处理结果
#print(name.strip())

# 2)    移除name变量左边的"al"并输出处理结果
#print(name[2:])

# 3)    移除name变量右面的"Nb",并输出处理结果
#print(name[:-2])

# 4)    移除name变量开头的a"与最后的"b",并输出处理结果
#print(name[1:-1])

# 5)    判断 name 变量是否以 "al" 开头,并输出结果
#print(name.startswith('al'))

# 6)    判断name变量是否以"Nb"结尾,并输出结果
#print(name.endswith('Nb'))

name = "aleX leNb"
# 7)    将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
#print(name.replace('l','p'))

# 8)    将name变量对应的值中的第一个"l"替换成"p",并输出结果
#print(name.replace('l','p',1))

# 9)    将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
#print(name.split('l'))

# 10)    将name变量对应的值根据第一个"l"分割,并输出结果。
#print(name.split('l',1))

# 11)    将 name 变量对应的值变大写,并输出结果
#print(name.upper())

# 12)    将 name 变量对应的值变小写,并输出结果
#print(name.lower())

# 13)    将name变量对应的值首字母"a"大写,并输出结果
#print(name.capitalize())

# 14)    判断name变量对应的值字母"l"出现几次,并输出结果
# sum =0
# for i in name:
#     if i == 'l':
#         sum += 1
# print(sum)

# 15)    如果判断name变量对应的值前四位"l"出现几次,并输出结果
# sum =0
# for i in name[0:5]:
#     if i == 'l':
#         sum += 1
# print(sum)

# 16)    从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果
#print(name.index('N'))

# 17)    从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果
#print(name.find('N'))

# 18)    从name变量对应的值中找到"X le"对应的索引,并输出结果
#print(name.find("X le"))

# 19)    请输出 name 变量对应的值的第 2 个字符?
#print(name[1])

# 20)    请输出 name 变量对应的值的前 3 个字符?
#print(name[:3])

# 21)    请输出 name 变量对应的值的后 2 个字符?
#print(name[-2:])
# 22)    请输出 name 变量对应的值中 "e" 所在索引位置?
#print(name.index('e'))

# 2,有字符串s = "123a4b5c"
s = "123a4b5c"
# 1)通过对s切片形成新的字符串s1,s1 = "123"
# s1=s[:3]
# print(s1)
# 2)通过对s切片形成新的字符串s2,s2 = "a4b"
# s2=s[3:6]
# print(s2)
# 3)通过对s切片形成新的字符串s3,s3 = "1345"
# s3 = s[::2]
# print(s3)
# 4)通过对s切片形成字符串s4,s4 = "2ab"
# s4 =s[1:-1:2]
# print(s4)
# 5)通过对s切片形成字符串s5,s5 = "c"
# s5 = s[-1:]
# print(s5)
# 6)通过对s切片形成字符串s6,s6 = "ba2"
# s6 = s[-3:0:-2]
# print(s6)
# 3,使用while和for循环分别打印字符串s="asdfer"中每个元素。
#while
# s="asdfer"
# i =0
# while i < len(s):
#     print(s[i])
#     i +=1

# #for
# s="asdfer"
# for i in s:
#     print(i)

# 4,使用for循环对s="asdfer"进行循环,但是每次打印的内容都是"asdfer"。
# s="asdfer"
# for i in s:
#     print(s)

# 5,使用for循环对s="abcdefg"进行循环,每次打印的内容是每个字符加上sb,    例如:asb, bsb,csb,...gsb。
# s="abcdefg"
# for i in s:
#     print(i+'sb')

# 6,使用for循环对s="321"进行循环,打印的内容依次是:"倒计时3秒","倒计时2秒","倒计时1秒","出发!"。
#
# s="321"
# for i in s:
#     print('倒计时'+i+'秒')
# print('出发')

# 7,实现一个整数加法计算器(两个数相加):
# 如:content = input("请输入内容:") 用户输入:5+9或5+ 9或5 + 9,然后进行分割再进行计算。
# content = input("请输入内容:").strip()
# num1 = content[:content.find('+')]
# num2 = content[content.find('+')+1:]
# result = int(num1)+int(num2)
# print(result)

# 8,升级题:实现一个整数加法计算器(多个数相加):
# 如:content = input("请输入内容:") 用户输入:5+9+6 +12+  13,然后进行分割再进行计算。
# content = input("请输入内容:").strip()
# lst = content.split('+')
# sum = 0
# for i in lst:
#     sum += int(i.strip())
# print(sum)

# 9,计算用户输入的内容中有几个整数(以个位数为单位)。
# 如:content = input("请输入内容:")   # 如 fhda234slfh9
# sum1 = 0
# content = input("请输入内容:").strip()
# for i in content:
#     if i.isdigit():
#         sum1 += 1
# print(sum1)



# 10、写代码,完成下列需求:
# 用户可持续输入(用while循环),用户使用的情况:
# 输入A,则显示走大路回家,然后在让用户进一步选择:
# 是选择公交车,还是步行?
# 选择公交车,显示10分钟到家,并退出整个程序。
# 选择步行,显示20分钟到家,并退出整个程序。
# 输入B,则显示走小路回家,并退出整个程序。
# 输入C,则显示绕道回家,然后在让用户进一步选择:
# 是选择游戏厅玩会,还是网吧?
# 选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。
# 选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C选项。
# while True:
#     msg = input('请选择回家方式,A,B,C').strip()
#     if msg == 'A':
#         msg_a = input('是选择公交车,还是步行?')
#         if msg_a == '公交车':
#             print('10分钟到家')
#             break
#         else:
#             print('20分钟到家')
#             break
#     elif msg == 'B':
#         print('走小路回家')
#         break
#     else:
#         print('显示绕道回家')
#         msg_c = input('是选择游戏厅玩会,还是网吧')
#         if msg_c =='游戏厅':
#             print('一个半小时到家,爸爸在家,拿棍等你。')
#             continue
#         else:
#             print('两个小时到家,妈妈已做好了战斗准备。')
#             continue


# 11、写代码:计算 1 - 2 + 3 ... + 99 中除了-88以外所有数的总和?

# 1 - 2 + 3 ... + 99





# 16、制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名字和爱好进⾏任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx
#
# name = input('请输入姓名')
# address = input('请输入地点')
# love = input('请输入爱好')
# print('敬爱可亲的{name1},最喜欢在{address1}地⽅⼲{love1}'.format(name1=name,address1=address,love1=love))

# 17、等待⽤户输⼊内容,检测⽤户输⼊内容中是否包含敏感字符?如果存在敏感字符提示“存在敏感字符请重新输⼊”,并允许⽤户重新输⼊并打印。
# 敏感字符:“⼩粉嫩”、“⼤铁锤”


#
# 明日默写内容:
# 分别用while,for循环输出字符串s = input("你想输入的内容")的每一个字符。
答案

 车牌摇号小程序

 

 posted on 2022-02-26 09:48  编程之路任重道远  阅读(178)  评论(0)    收藏  举报