python基础-基本数据类型(int, bool, str)
一.python基本数据类型
- int ==> 整数. 主要用来进行数学运算
- str ==> 字符串, 可以保存少量数据并进行相应的操作
- bool==>判断真假, True, False
- list==> 存储大量数据. 用[ ]表 示
- tuple=> 元组, 不可以发生改变 用( )表 示
- dict==> 字典, 保存键值对, 一样可以保存大量数据
- set==> 集合, 保存大量数据. 不可以重复. 其实就是不保存value的dict
二. 整数(int)
在python3中所有的整数都是int类型,但在python2中如果数据量比较大,会使用long类型.
在python3中不存在long类型
整数可以进行的操作: bit_length(). 计算整数在内存中占用的二进制码的长度
三. 布尔值(bool)
取值只有True, False. bool值没有操作. 转换问题: str => int int(str) int => str str(int) int => bool bool(int). 0是False 非0是True bool=>int int(bool) True是1, False是0 str => bool bool(str) 空字符串串是False, 不空是True bool => str str(bool) 把bool值转换成相应的"值"
四. 字符串(str)
把字符连成串. 在python中 用', ", ''', """引起来的内容被称为字符串.
4.1 切片和索引
- 索引. 索引就是下标. 切记, 下标从0开始
- 切片, 我们可以使 用下标来截取部分字符串的内容
-
-
语法: str[start: end]
规则: 顾头不顾腚, 从start开始截取. 截取到end位置. 但不包括end
-
-
跳着截取
步 长: 如果是整数, 则从左往右取. 如果是负数. 则从右往左取. 默认是1切片语法:
切片语法:
str[start:end:step] start: 起始位置
end: 结束位置
step:步 长
4.2 字符串串的相关操作 方法
切记, 字符串是不可变的对象, 所以任何操作对原字符串是不会有任何影响的
1. 大小写转来转去
2.切来切去
3.格式化输出
4. 查找
5. 条件判断
6. 计算字符串的长度
注意: len()是python的内置函数. 所以访问 方式也不 一样. 你就记着len()和print() 一样就行了
7. 迭代
我们可以使 用for循环来遍历(获取)字符串中的每 一个字符语法:
for 变量 in 可迭代对象:
pass
可迭代对象: 可以 一个 ,一个往外取值的对象
# 练习. 用算法判断某 一个字符串串是否是 小数 s17 = "-123.12"
s17 = s17.replace("-", "") # 替换掉负号 if s17.isdigit():
print("是整数") else:
if s17.count(".") == 1 and not s17.startswith(".") and not s17.endswith("."):
print("是 小数") else:
print("不不是 小数")
6. 计算字符串串的 长度
s18 = "我是你的眼, 我也是a" ret = len(s18) # 计算字符串串的 长度 print(ret)
注意: len()是python的内置函数. 所以访问 方式也不 一样. 你就记着len()和print() 一样就 行行
了了
7. 迭代
我们可以使 用for循环来便便利利(获取)字符串串中的每 一个字符语法:
for 变量量 in 可迭代对象:
pass
可迭代对象: 可以 一个 一个往外取值的对象
s19 = " 大家好, 我是VUE, 前端的 小朋友们. 你们好么?"
# 用while循环 index = 0
while index < len(s19): print(s19[index]) # 利利 用索引切 片来完成字符的查找 index = index + 1
# for循环, 把s19中的每 一个字符拿出来赋值给前 面的c for c in s19:
print(c)
'''
in有两种 用法:
- 在for中. 是把每 一个元素获取到赋值给前 面的变量量.
- 不不在for中. 判断xxx是否出现在str中.
'''
print('VUE' in s19)
# 练习, 计算在字符串串"I am sylar, I'm 14 years old, I have 2 dogs!" s20 = "I am sylar, I'm 14 years old, I have 2 dogs!"
count = 0
for c in s20:
if c.isdigit():
count = count + 1 print(count)
# a = 3
# print(a.bit_length())
#
# #字符串转成数字
# a = '123'
# i = int(a)
# print(i)
# s = str(i)
# print(type(s))
# b = True
# c = int(b)
# print(c)
# int 转换为Bool #零 FLase 非零 True
# a = 0
# b = bool(a)
# print(b)
# while 1: #1的效率比True效率高一点
# print('alex是个小伙子')
# s = '你好啊' #这种为真
# if s:
# print('嘿嘿')
# else:
# print('呵呵')
#
# s = '' #''空字符串表示Flase,非空字符串表示:True
# if s:
# print('嘿嘿')
# else:
# print('呵呵')
#
# #空的东西都是Flase,非空都是True
#
# m = None #空 连空气都不如。真空 也是Flase
# if m:
# print('a')
# else:
# print('b')
# 字符串python独有的切片和索引
# s = '老男孩天下无敌'
# print(s[3])
# print(s[-1])
# print(s[-2])
# print(s[-3])
#通过索引获取的内容还是字符串
#切片可以对字符串进行截取
#语法 S[起始位置:结束位置:步长]
#特点:顾头不顾腚
# s = '大头哥哥你好啊wind'
# a = s[2:7]
# print(a)
# s2 = (s[0:3] + s[4:8])
# print(s2)
# s3 =s[1:] #默认到结尾
# print(s3)
# s4 =s[:10] #从头开始
# print(s4)
# s5 =s[:] #从头到尾切出来
# print(s5)
# s6 =s[-1:-3] #深坑
# print(s6)
# s7 = s[-2:]#从-2切到结尾 默认从左往右切
# print(s7)
#步长
#语法 S[起始位置:结束位置:步长] ;步长可以控制方向如果加 - 号 从右往左走
# s = "我是梅西,我很慌"
# s1 = s[1:5:2] # 从1开始, 到5结束, 每2个取1个
# print(s1)
# s2 = s[::3]
# print(s2)
# s3 = s[6:2:-2] # - 表示反着来. 每两个取1个
# print(s3)
# s = "这个标点符号很蛋疼"
# s1 = s[7::-2]
# print(s1)
#
# s2 = s[-1:-6:-2]
# print(s2)
# s = "alex and wusir and taibai"
# s1 = s.capitalize() # 首字母大写
# print(s) # 原字符串不变
# print(s1)
# s = "Alex is not a Good Man. "
#
# print(s.upper())#upper 全部转换为大写
# print(s.lower())#lower全部转换为小写
#在程序需要判断不区分大小写的时候. 肯定能用上,例如注册时候验证码
# while True:
# content = input("请喷:")
# if content.upper() == 'Q':
# break
# print("你喷了:", content)
# s = "taiBai HenBai feicahngBai"
# print(s.swapcase()) # 大小写转换
#
# s = "al麻花藤ex and wu sir sir se"
# print(s.title())
# s = "麻花藤"
# print(s.center(8)) #center函数主要用于居中
# print(s.center(8, "*")) #居中
# username = input("用户名:").strip() # 去掉空格.
# password = input("密码:").strip() # 去掉空格
# if username == 'alex' and password == '123':
# print("登录成功")
# else:
# print("登录失败")
# s = "*******呵a呵呵呵****************"
# print(s.strip("*")) # strip去掉的是左右两端的内容. 中间的不管
# s = "alex wusir alex sb taibai"
# s1 = s.replace("alex", "晓雪") # 原字符串不变
# print(s1)
# # 去掉上述字符串中的所有空格
# s2 = s.replace(" ", "")
# print(s2)
#replace也可以替换1个、2个等等
# s3 = s.replace("alex", "sb", 1)
# print(s3)
#split切割,切完的东西是列表
# s = "alex_wuse_taibai_bubai"
# lst = s.split("_taibai_") # 刀是_ 切完的东西是列表. 列表装的是字符串
# print(lst)
# s = "alex_wuse_taibai_bubai"
# lst = s.split("_taibai_bubai") # 刀是贴边切会有空字符
# print(lst)
# s = "alex_wuse_taibai_bubai"
# lst = s.split("alex_wuse_taibai_bubai") # 刀是贴边切会有空字符
# print(lst)
# s = "我叫{}, 我今年{}岁了, 我喜欢{}".format("sylar", 18, "周杰伦的老婆")
# print(s)
# format可以指定位置!
# s = "我叫{1}, 我今年{0}岁了, 我喜欢{2}".format("sylar", 18, "周杰伦的老婆")
# print(s)
# s = "我叫{name}, 我今年{age}岁了, 我喜欢{mingxing}".format(name="sylar", mingxing="汪峰的老婆", age=18)
# print(s)
# 你喜欢用哪个就用哪个
s = "汪峰的老婆不爱汪峰"
# print(s.startswith("汪峰")) # 判断字符串是否以xxx开头,是True 不是Flase
# print(s.endswith("爱妃")) # 判断字符串是否以xxx结尾,是True 不是Flase
# print(s.count("国际章")) # 计算xxx在字符串中出现的次数
#print(s.find("老婆")) 计算xxx字符串在原字符串中出现的位置, 如果没出现返回 -1
# print(s.find('汪峰'))
# print(s.find("汪峰", 3)) # 切片式找法,从索引3开始找
# print(s.find("国际章")) #返回 -1
# print(s.index("国际章")) # 索引, index中的内容如果不存在. 直接报错
#因为index找不到会报错,所以我们用find就行
# s = "abc123"
# print(s.isdigit()) # 判断字符串是否由数字组成
# print(s.isalpha()) # 是否由字母组成
# print(s.isalnum()) # 是否由字母和数字组成
# s = "二千136万萬"
# print(s.isnumeric()) # 数字
# s = "你今天喝酒了么"
# i = len(s) # print() input() len() python的内置函数
# print(i)
#
# i = s.__len__() # 也可以求长度 len()函数执行的时候实际执行的就是它
# print(i)
# 把字符串从头到尾进行遍历
# s = "晓雪老师.你好漂亮"
# print(len(s)) # 长度是:8 索引到7
# 1. 使用while循环来进行遍历
# count = 0
# while count < s.__len__():
# print(s[count],end= '')
# count = count + 1
# 2. 用for循环来遍历字符串
# 优势:简单
# 劣势:没有索引
# for c in s: # 把s中的每一个字符交给前面的c 循环
# print(c)
# 语法:
# for bianliang in 可迭代对象:
# 循环体
'''作业
# 1.请输出 name 变量对应的值中 "e" 所在索引位置?
name = "aleX leNb"
count = 0
while count < len(name):
if name[count] == 'e':
print(count)
count += 1
'''
s ='asdsf'
# 3、使用for循环对s ='asdsf'进行循环、分别打印字符串中的每个元素
# for c in s:
# print(c)
# 4、使用for循环对s ='asdsf'进行循环、每次打印的内容都是'asdsf'
# for c in s:
# print(s)
#5、使用for循环对s ='asdsf'进行循环、每次打印的内容加上'sb'
# for c in s:
# print(c +'sb')
#6、使用for循环对s='321'进行循环、打印内容依次是:"倒计时3秒"、"倒计时2秒"、"倒计时1秒"、出发
# s = '321'
# for i in s:
# print('倒计时%s秒' %i)
# else:
# print('出发')
#7、实现一个整数加法计算器(两个数相加)
#如 content =input(请输入内容:)用户输入:5+9然后进行分割再进行计算
# content =input('请输入内容:')
# list = content.split('+')
# s1 =list[0]
# s2 =list[1]
# a1 = int(s1)
# a2 = int(s2)
# print(a1+a2)
#8、实现一个整数加法计算器(多个数相加) --升级题
#如 content =input(请输入内容:)用户输入:5+9+6+12+13然后进行分割再进行计算
#9 计算输入的内容是几位整数(已个位为单位)# content = input("请输⼊内容:") # 如fhdau234slfh98769fjdba
# content = input("请输⼊内容:") # 如fhdau234slfh98769fjdba
# count = 0
# for c in content:
# if c.isdigit():
# count = count + 1
# print(count)
#
# 11、1 - 2 + 3 - 4 ... + 99 去掉88
# count = 1
# sum = 0
# while count < 100:
# if count == 88:
# count = count + 1
# continue
# if count %2 == 0:# 偶数
# sum = sum - count
# else:
# sum = sum + count
# count = count + 1
# print(sum)
# 12 、判断一句话是否是回文.回文:正着念反着念是一样的.例如"明天到操场操到天明
ss = "明天到操场操到天明"
s1 = ss[::-1]
if ss == s1:
print("回文")
else:
print("不是回文")
# 13 输入一个字符串,要求判断这个字符串中大写字母、小写字母、数字,其他
# 字符共出现了多少次,并输出出来
content = input("请输入一个字符串:")
digit_num = 0
upper_c_num = 0
lower_c_num = 0
other = 0
#
for c in content:
if c.isdigit():
digit_num += 1
elif c.isupper():
upper_c_num += 1
elif c.islower():
lower_c_num += 1
else:
other += 1
print(digit_num)
print(upper_c_num)
print(lower_c_num)
print(other)
#14、制作趣味模板程序需求:等待用户输入名字、地点、爱好、根据用户的名字和爱好
#进行任意现实如:敬爱可亲的XXX,最喜欢在XXX地方干XXX
# name = input("请输入你的名字:")
# address = input("请输入你的地点:")
# hobby = input("请输入你的爱好:")
# print("敬爱可亲的{name}, 喜欢在{address}干{hobby}".format(name=name, address=address, hobby=hobby))# name = input("请输入你的名字:")
# # address = input("请输入你的地点:")
# # hobby = input("请输入你的爱好:")
# # print("敬爱可亲的{name}, 喜欢在{address}干{hobby}".format(name=name, address=address, hobby=hobby))# name = input("请输入你的名字:")
# # address = input("请输入你的地点:")
# # hobby = input("请输入你的爱好:")
# # print("敬爱可亲的{name}, 喜欢在{address}干{hobby}".format(name=name, address=address, hobby=hobby))