神奇的python系列3:python基础数据类型一
第一步:整型
int 整型
在32位计算机中int的范围是:-2 **31 ~ 2**31-1
在64位计算机中int的范围是:-2 **63 ~ 2**63-1
python2和python3的区别:
python2 中长整型:long
python3 全都是整型
第二步:布尔值
bool转换:
int ==> bool
print(bool(0))
print(bool(-9)) # 使用
bool
转换的时候只要是非
0
的都为
True
str ==> bool
print(bool('你好'))
print(bool('')) #False
#字符串不是空的就是True
print(bool(55)) #True int转bool print(int(True)) #1 bool转int print(int(False)) #0 bool转int msg = str(False) print(msg) print(type(msg)) # bool转str print('True')
第三步:字符串详解
字符串是用来存储部分数据的。
下标:
a = "你好你好" # 0 1 2 3 #下标(索引) 从左往右数,即0~n
# -4-3-2-1 #从右往左数 -1开始 ~ -字符串总长度
切片:顾头不顾腚,即起始位置:结束位置
msg = '今天是个好日子,明天就放假了,咱们可以约着一起去xj'
# 01 2 34 567 89 10
print(msg[15:17]) #顾头不顾腚 15 头 起始位置 17尾 结尾位置
print(msg[-18:-12])
步长:
print(msg[-7:-5:10]) # -7 起始位置 -5 终止位置 10步长 默认不写就是1
总结
print(s[4]) #通过下标(索引)查找 #查找的范围不能超过下标长度 print(s[4:7]) #通过切片查找 查找的范围能超过下标的长度 print(s[5:9:1])# 切片+步长 步长不写默认为 1 通过修改步长来改变查找方向 可以设置每一次走几步 # 起始位置+步长 不管1还-1都好使 print(s[0:5]) # 起始位置如果是0的时候可以不写 print(s[5:7]) # 到终止位置时候要加1 在切片的时候终止位置都比结果的下标多1 print(s[:]) # 从头到尾 可以不写
msg = '今天是个好日子,明天就放假了,咱们可以约着一起去xj' # print(msg[-2:]) # 最后位置不用写 # print(msg[9:5:-1]) # 1表示从左往右 -1表示从右往左 注意:起始位置到结束位置是从左往右时,步长如果设置为从右往左时这是没法找到下标标注的字符的 # print(msg[6:10:1]) # 1表示从左往右 -1表示从右往左
查找步长:起始位置 + 步长
字符串方法:
s = 'alex'
#s1 = 'Alex' s1 = s.capitalize() # 首字母大写 print(s1)
s = 'alex' s2 = s.upper() # 全部大写 print(s2)
s = 'alex' s3 = s.lower() # 全部小写 print(s3)
s = 'aLEkLx'
print(s.count('L')) # 返回的是数量
s = 'aLEkLx'
print(s.endswith('x')) # 以什么结尾
s = 'aLEkLx' print(s.startswith('a')) # 以什么开头
s = 'aLEkLx'
print(s.find('p')) #通过元素查找下标 查找的没有返回-1
s = 'aLEkLx'
print(s.index('p')) #通过元素查找下标 查找的没有就报错
s = 'aLEkLx{},{},{}' print(s.format('你好','啊','少年')) #方法一 字符串格式化
s = 'aLEkLx{0},{1},{2}' print(s.format('你好','啊','少年')) #方法二
s = 'aLEkLx{a},{b},{c}' print(s.format(a='你好',c='啊',b='少年')) #方法三
s = 'aLEkLx{a},{b},{c}' print('_'.join(s)) #每个元素之间用_拼接 ***重要
s = 'aLEkLx{a},{b},{c}' print(s.split('x')) #分割 ***重要
s = ' aLEkLx{a},{b},{c} ' print(s.strip(' a')) #脱 脱头尾两边的空格 换行符\n ***重要
s = 'aLEkLx{a},{b},{c}' print(s.replace('a','s')) #第一个放要被替换的 第二个是替换的内容 ***重要
s = 'aLEkLx{a},{b},{c}' print(s.swapcase()) # 大小写转换
s = 'alEx_sd' print(s.title()) # 特殊符号分割的每个单词首字母大写
is 系列 s = '你好啊u小老弟' print(s.isdigit()) # 判断是不是纯数字 print(s.isalpha()) # 判断是不是汉字和字母
for循环:
# 获取长度 s1 = '阿斯顿发大水发大水发大水发大水发大水发大水发大水发大水发大水发大水发大水发大水发大水' print(len(s1))
for循环基本结构:
for 变量 in 要遍历的对象:
缩进 结构体
s = '你好嗨啊' for n in '1234': # str可迭代 可迭代的: 列表 元祖 字典 集合? # n = '1' # n = '2' print(n)
for循环是可以循环的数据结构:
-
- 字符串(str)
- 列 表(list)
- 元 祖(tuple)
- 字 典(dict)
- 集 合(set)
唯独不能进行循环的就是 整型(int)和布尔值(bool)
format()方法补充:
s = '你好{},{}' # s1 = s.format('少年','我还好') # 按照顺序填充 # ss = '你好{1},{0}' # ss = '你好{好难受},{少年}' # ss1 = ss.format('少年','好难受') # 按照下标填充 # sss = '你好{name},{age}' # ss = '你好{好难受},{少年}'# sss1 = sss.format(age='18',name='meet') # 按照关键字# print(sss1)
回文:
msg1 = '上海自来水来自海上' s1 = '你好' print(s1[::-1]) # 起始位置:终止位置:步长 #######注意:面试题
if msg1 == msg1[::-1]: print('回文') else: print("不是回文")