1.range的功能
# count = 0
# while count < 3:
# print('='*10)
# print('步骤1')
# print('步骤2')
# print('步骤3')
# count += 1
# for x in "a"*100:
# print('=' * 10)
# print('步骤1')
# print('步骤2')
# print('步骤3')
# range(1,5,2) # 起始位置为1 结束位置为5 步长为2
# [1,3]
# range(1,5) #默认步长为1
# [1,2,3,4]
# range(5) # 默认起始位置为0 步长为1
# [1,2,3,4]
# for i in range(1,10): # 打印99乘法表
# for j in range(1,i+1):
# print('%d * %d = %d'%(i,j,i*j),end=' ')
# print()
# x = 5 # 打印金字塔
# for y in range(1,x):
# for i in range(x-y):
# print(' ',end='')
# for z in range(2*y-1):
# print('*',end='')
# print()
2.可变和不可变类型
#1.可变类型:值改变,但是id不变
#2.不可变类型:值改变,id也改变,证明是产生了新的值
# x=123
# print(id(x))
# x=456
# print(id(x)) # id改变了
#
# l1=[1,1,1]
# print(id(l1))
# l1[0]=12
# print(l1)
# print(id(l1)) # id并没有改变
3.数字类型
# 一:整型int
# ======================================基本使用======================================
# 1、用途:年龄、个数、号码、出生年等
# 2、定义方式
# age = 18 # age = int(18) 一般都不这样定义
# int功能可以把纯数字的字符串转换成int类型
# res = int("18")
# res = int("1.8") # 这样的输出结果会报错 1.8的点不是数字
# print(type(res))
# 了解(***)
# print(bin(11)) # 0b1011 十进制转二进制
# print(oct(11)) # 0o13 十进制转八进制
# print(hex(11)) # 0xb 十进制转十六进制
# 3、常用操作+内置的方法
# 算数运算符与比较运算
# 二:浮点型float
# ======================================基本使用======================================
# 1、用途:薪资、身高、体重等
# 2、定义方式
salary =3.1 # salary = float(3.1)
# float功能可以把浮点数组成的字符串转换成float类型
# res = float("1.8")
# print(type(res))
# 3、常用操作+内置的方法
# 算数运算符与比较运算
# ======================================该类型总结====================================
# 存一个值
# 不可变
4.字符串类型
# ======================================基本使用======================================
# 1、用途:记录描述性质的状态,例如名字、性别、国籍等
# 2、定义方式:在引号('',"",'''''',""""""")内包含一串字符串
s ="hello" # s = str("hello")
# str功能可以把任意类型转换成str类型
# res=str([1,2,3]) # "[1,2,3]"
# print(type(res))
# 3、常用操作+内置的方法
# =======================>优先掌握的操作:
# 1、按索引取值(正向取+反向取) :只能取
s ="hello world"
# print(s[0],type(s[0])) # 把"h"取出,类型还是str
# print(s[-1]) # 取出最后一个
# 非法操作
# s[1] = "E" # 不能修改
# s[11] = "A" # 说明字符串是不可变类型
# 2、切片(顾头不顾尾,步长)=>属于拷贝操作
# s = "hello world"
# new_s=s[1:7] # 输出的是ello w这里连空格也一起输出了
# print(new_s)
# print(s) # 但是原变量名的值并没有改变 再次证明字符串是不可变类型
# new_s=s[1:7:2] #输出的结果是el 注意这里是有空格的 这里的2是步长
# print(new_s)
# print(s)
# new_s=s[:7:2] # 省略了起始位
# new_s=s[::2] # 0 2 4 6 8 10 默认以步长为2进行全部遍历
# h l o w r d
# print(new_s)
# new_s=s[::] # 完整拷贝字符串,只留一个冒号就可以new_s=s[:]
# print(new_s)
# 3、长度len
# s = "hello world"
# print(len(s)) # 输出字符串的长度
# res = print("sfd") #这里print("sfd")并不是一个变量值 而是一个输出操作
# print(res) # 这里res是没有值的
# 4、成员运算in和not in
# s = "hello world"
# # print("hel" in s) # 运算结果为True
# print("egon" not in s) # 语义明确,推荐使用
# # print(not "egon" in s) # 不推荐使用
# 5、移除空白strip
# s = " \n hel lo \t "
# new_s = s.strip()
# print(new_s) # 输出结果为hel lo空格和转义符都没了
# print(s) # 没有改变原字符串
# 应用案例:
# name = input('your name:').strip() # 这个操作的目的是防止用户不小心多打了一个空格,提升了代码的健壮性
# pwd = input(('your pwd:')).strip()
# if name== 'egon' and pwd =='123':
# print('登录成功')
# else:
# print('用户名或者密码错误')
# 去除左右两边的非空白字符
# print("**+=-%^#****he**llo**%^#**+=**".strip("*+=-%^#"))
# 6、切分split:把字符串按照某个分隔符切成一个列表
# userinfo = "egon_dsb:123:18:3.1"
# res = userinfo.split(":") # 以字符串中的:为分隔符 分割成列表
# print(res[0])
# print(res)
# print("-".join(res)) # 以-代替:把原列表合成一个字符串
# 纯字符串组成的列表
# l = ["aaaa", "bbb", "ccc"]
#
# # res=l[0]+":"+l[1]+":"+l[2] # 依次相加列表里的值 合成一个字符串
# res = ":".join(l) # 这是上面做法的升级版
# print(res, type(res))
# =============>需要掌握的操作:
# 1,,strip lstrip rstrip
# print('***hello***'.strip('*')) # 清除指定字符
# print('***hello***'.lstrip('*')) # 清除左边指定字符
# print('***hello***'.rstrip('*')) # 清除右边指定字符
# 2.lower upper
# msg = 'ASDFHJKjkklj'
# res = msg.lower() #全变小写
# res = msg.upper() # 全变大写
# print(res)
# res=msg.swapcase() # 大小写取反
# print(res)
# 3、startswith,endswith
# msg = "sb is lxx sb"
# print(msg.startswith("sb")) # 判断开头是否为sb
# print(msg.endswith("b")) # 判断结尾是否为b
# print(msg.endswith("c")) # 判断结尾是否为c
# 5、split,rsplit
# userinfo="egon:123:18"
# # print(userinfo.split(":")) # 给我全切了
# print(userinfo.split(":",1)) # 给我切一段
# print(userinfo.rsplit(":",1)) # 给我从右切一段
# 6、join # 跟strip的操作相反
# 7、replace
# msg = "***egon hello***"
# res=msg.replace('*','').replace(' ','') # 把字符串里的‘*’和‘ ’都给我灭了
# res=msg.strip('*').replace(' ','') # 这样结合起来使用更加方便快捷
# print(res)
# s="lxx hahah wocale lxx sb 666"
# # res=s.replace('lxx','sb') # 进行了替换操作
# res=s.replace('lxx','sb',1) # 只进行一次替换操作
# print(res)
# print(s)
# 4、format的三种玩法
# 4.1 %s的方式
# name = "egon"
# age = 18
# res1="my name is %s my age is %s" % (name,age)
# print(res1)
# 4.2 format的方式
# name = "egon"
# age = 18
# res1="my name is {} my age is {}".format(name,age) # 这样操作跟%s的操作差不多
# res1="{0}{0}{0}{1}".format(name,age) #利用索引来赋值
# res1="my name is {name} my age is {age}".format(age=18,name="egon") 也可以用key来赋值
# print(res1)
# 4.3 f''
# name = "egon"
# age = 18
# res1 = f"my name is {name} my age is {age}" # 更加简洁的做法
# print(res1)
# 了解:f搭配{}可以执行字符串中的代码
# res=f'{len("hello")}' # 如果要从其他地方读取文本,又正好是一段代码 f搭配{}可以执行字符串中的代码
# print(res)
# f包含的字符串可以放到多行
# name = "egon"
# age = 18
# res1 = f"my name is {name} " \
# f"my age is {age}"
# {}内不能有\以及#
# print(f'my name is {{egon}}') # 要多用一个{}来取消{}的功能
# print('胜率是 %s%%' %70) # 要多用一个%来取消%的功能
# 了解:https://zhuanlan.zhihu.com/p/110406030
# 8、isdigit:判断字符串是否由纯数字组成
# print("adsf123".isdigit())
# print("123".isdigit())
# print("12.3".isdigit())
age =input('>>>: ')# age = " 18 "
if age.isdigit():
age=int(age)
if age >18:
print('猜大了')
elif age <18:
print('猜小了')
else:
print('猜对了')
else:
print('必须输入数字,小垃圾')
# =======================>了解的操作:
# 可以通过关键字or字典方式的方式格式化,打破了位置带来的限制与困扰
print('我的名字是 {name}, 我的年龄是 {age}.'.format(age=18, name='egon'))
kwargs = {'name':'egon', 'age':18}
print('我的名字是 {name}, 我的年龄是 {age}.'.format(**kwargs))# 注意在调用其他字段的字典时要使用**进行解包操作
# 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]
# *<10:左对齐,总共10个字符,不够的用*号填充
print('{0:*<10}'.format('开始执行'))# 开始执行******
# *>10:右对齐,总共10个字符,不够的用*号填充
print('{0:*>10}'.format('开始执行'))# ******开始执行
# *^10:居中显示,总共10个字符,不够的用*号填充
print('{0:*^10}'.format('开始执行'))# ***开始执行***
print('{salary:.3f}'.format(salary=1232132.12351))#精确到小数点后3位,四舍五入,结果为:1232132.124
print('{0:b}'.format(123))# 转成二进制,结果为:1111011 推荐使用此类型转换
print('{0:o}'.format(9))# 转成八进制,结果为:11
print('{0:x}'.format(15))# 转成十六进制,结果为:f
print('{0:,}'.format(99812939393931))# 千分位格式化,结果为:99,812,939,393,931
# ======================================该类型总结====================================
# 存一个值or存多个值
# 有序or无序
# 可变or不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)