Python学习-Day

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)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容