1008day1:列表-字符串基础知识、正则提取字符串小数、python数据类型、判断为假的方法、格式判断if elif elif else、字符串遍、计算器、提取str字母、斐波那契数列、水仙花数

一、提取字符串里面的小数:正则

import re
strs = '1344556gfgg3.4bdhhdhh5.6GHHHJ'
demo = re.compile('\d+\.\d+')
lists = demo.findall(strs)
print(lists)

结果:['3.4', '5.6']

二、Python数据类型

可变
set  list  dict
不可变
tuple int float bool str
除过上面3个,剩下的就是不可变的

三、== 字符串:str基础知识 ==

三引号:可以注释,或者某些展示格式
1 大小写转换
str4 = """
hello
woRld
"""
print(str4.upper())   #str.upper()转换字符串中所有字母为大写
print(str4.lower())
print(str4.swapcase())   #对字符串进行大小字母转换
print(str4.title())

2 找位置
str3 = "[3,4,5]"
print(str3[3])
# 结果:4
str3 = "[3,4,5]"
a = str3.find('3')   #找一个字符在字符串中的位置
b = str3.index('5')   #找不到报错
print(a,b)
# 结果:1 5

# 需要注意的地方
str3 = "[3,4,5]"
a = str3.find('6')   #找不到输出:-1
b = str3.index('6')   #找不到:报错
print(a,b)


3 替换
str3 = "[3,4,5,6]"
print(str3.replace(',','|'))    #把逗号替换成|
结果:[3|4|5|6]

4 去左右字符   Python strip方法用于移除字符串首尾指定的字符串;当没有参数时,默认为空格和换行符。
str1 = '++123--'
str3 = "     [3,4,5]     "
print(str3.strip())
print(str3.lstrip())
print(str3.rstrip())
print(str1.lstrip('+').rstrip('-'))

5 判断是否在 其中
print('hes' in 'hello')    #返回的是布尔值

6 字符串取值
str3 = "     [3,4,5]     "   #[3,4,5]想取里面的345
print(str3.index(']'))  #确定右边]的值是11
print(str3.index('['))  #确定左边[的值是5
print(str3[6:11][::-1])  #所以我们要的范围是5~11,现在就是想该怎么样切片了,[::-1]倒序

只取出人名,不要逗号,打印的时候只打印人名
data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
print(data[::])    #想办法怎么能跳三个值去一下,跳三个取一下
while True:  #死循环
        print(data[:data.index(',')])   #data.index(',')逗号的位置是3,咋们先切一下,从头切到逗号之前
        print(data[data.index(',') + 1:])    #下一次从data.index(',')往后切,不包括这个,就+1
        break  #跳出死循环
以上是做题思路


data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
#print(data[::])    #想办法怎么能跳三个值去一下,跳三个取一下
while True:  #死循环
    try:
        print(data[:data.index(',')])   #data.index(',')逗号的位置是3,咋们先切一下,从头切到逗号之前
        data = data[data.index(',') + 1:]    #把之前的data顶替掉,用这个值给data赋值
    except:
        print(data)
        break
#当找不到最后的逗号就结束这个循环

7字符串拆分  划分
data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
for i in data.split(','):
    print(i)
结果:
刘晓庆
王晨晨
马天宇
张茯苓
柳灵儿

8遍历字符串
data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
for i in data:
    print(i)

9字符串合并
data = "刘晓庆|王晨晨|马天宇|张茯苓|柳灵儿"
print(data)
结果:刘晓庆|王晨晨|马天宇|张茯苓|柳灵儿
d = data.split('|')   #根据|拆分字符串
print(d)
结果:['刘晓庆', '王晨晨', '马天宇', '张茯苓', '柳灵儿']
print(''.join(d))    #拆分之后合并
结果:刘晓庆王晨晨马天宇张茯苓柳灵儿
print('|'.join(d))    #给字符串添加|
结果:刘晓庆|王晨晨|马天宇|张茯苓|柳灵儿

10判断以什么开头
data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
print(data.startswith('大'))

11统计长度len()
data1 = '王灵芝|南天香'
print(len(data1))
结果:7

12编码
strs = '中国'
print(str)
结果:<class 'str'>

13查看当前字符串在ascii码表里的位置
print(ord('a'))   #a在ascii表里面第97位
print(chr(97))  #在ascii表里面第97位是a
遍历前100000for i in range(100000):
    print(chr(i))

gbk中文编码
utf8万国码
strs = '中国'
print(strs.encode('utf8').decode('utf8'))   //utf8转的,转过去还是用utf8
print(strs.encode('gbk').decode('gbk'))      //gbk转的,转过去还是用gbk
print(strs.encode('gbk'))
print(strs.encode('utf8'))

str2 = b'\xd6\xd0\xb9'.decode('gbk','ignore')  //破坏一下再转,报错,可以写ignore忽略掉,删除残的就可以转
print(str2)

14字符串转义
print('hello\nwor\'ld')
print(r'hello\nworld')

15字符串格式化
(1)format
username = input('请输入你的名字')
score = float(input('请输入你的成绩'))
print('你好,{0},你的成绩是{1:.2f}'.format(username,float(score)))

(2)%s
print('你好,%s,你的成绩是%.2f'%(username,float(score)))

(3)f-string
print(f'你好,{username},你的成绩是{score:.2f}')


输出对应的最大值
max = 0
max_name = ''
strs = "王大头-1|王小明-5|王三毛-3|张二蛋-7|大地瓜-6"
for i in strs.split('|'):
    d = i.split('-')
    name = d[0]
    num = int(d[1])
    if num>max:
        max = num
        max_name = name
print(max,max_name)

四、整型及浮点型

print(11.22+12.5432)

五、判断为假的方法

if '':
    print(1)
# keyi

if None:
    print(2)
# no

if 0:
    print(3)
# no

if []:
    print(4)
# keyi

六、判断格式

if 3>3:
    print(1)
elif 2>3:
    print(2)
elif 3>4:
    print(3)
else:
    print('error')

七、循环:字符串遍历

strs = '12345'
for i in strs:
    print(i)

for i in range(1,6,2):
    print(i)
print(len(strs))

for i in range(len(strs)):
    print(strs[i])
    
结果:
1
2
3
4
5

六、循环1~100

import time
n = 0
while n<100:
    n = n+1
    print(n)

七、计算器

1.可不可以连续计算
while True:
    c = float(input('请输入第一个数字'))
    print("""
    1 +
    2 -
    3 *
    4 /
    """)
    f = input('请输入符号的序号')
    c1 = float(input('请输入第二个数字'))

    if f=='1':
        print(c+c1)
    elif f=='2':
        print(c - c1)
    elif f=='3':
        print(c * c1)
    elif f=='4':
        print(c / c1)
    else:
        print('error')


2.功能好的计算器
strs=''
while True:
    c = input('请输入数字')
    strs = strs + c
    if c!=strs:
        print(strs,'=',eval(strs))
    f = input('请输入符号,按q清零')
    if f=='q':
        strs=''
        continue
    strs=strs+f
    print(strs)

八、== 列表:list基础知识 ==

lists = [1,2,3,4,5,6]
print(id(lists))
1.修改
lists[0] = 'hello'
print(lists,id(lists))

2.增加
(1)append
lists = [1,2,3,4,5,6]
lists.append(123)
print(lists)
(2)+  会创建新的内存空间
lists = [1,2,3,4,5,6]
print(id(lists))
a = lists+[123]
print(a,id(a))
(3)extend
lists = [1,2,3,4,5,6]
lists.extend([123])
print(lists)
(4)insert
lists = [1,2,3,4,5,6]
lists.insert(1,'hello')
print(lists)

3.删除
(1)pop
lists = [1,2,3,4,5,6]
a = lists.pop(-2)
print(lists,a)

(2)remove
lists = [1,2,3,4,5,6]
lists.remove(lists[-2])
print(lists)

(3)del
lists = [1,2,3,4,5,6]
del lists[-2]
print(lists)

(4)clear
lists = [1,2,3,4,5,6]
lists.clear()
print(lists)

4.查询
lists = [1,2,3,4,5,6]
for i in lists:
    print(i)

for i in range(len(lists)):        #要填长度
    print(lists[i])                #注意i要加[]

九、课后题:提取列表里面的字母

方法一
lists = ['hello',123,'wo','#er%wew$','1231sgtwe$@#']
strs = ''
for i in range(65,91):
    strs= strs+chr(i)
words = strs+strs.lower()
ll = []
for i in lists:
    i =str(i)
    print('++++++++++++++++++')
    flag = 1
    for ii in i:
        if ii not in words:
            flag=0
            break
    if flag:
        ll.append(i)
print(ll)

结果:['hello', 'wo']

方法二
import re
lists = ['hello',123,'wo','#er%wew$','1231sgtwe$@#']
ll = ' '.join(map(lambda x:re.search('^([a-zA-Z]+)$',x).groups(0)[0] if re.search('^[a-zA-Z]+$',x) else '',[str(x) for x in lists]))
print(ll)

结果:lists = ['hello',123,'wo','#er%wew$','1231sgtwe$@#']

十、课后题斐波那契数列

lists = [0,1,1,2,3,5,8]
x1 = 0
y1 = 1
for i in range(20):

    # 实现原理、两两互换
    # x = y1
    # y = x1 + y1
    # print(y)
    # x1 = x
    # y1 = y

   x1,y1 = y1,x1+y1
   print(y1)

十一、课后题水仙花数

for x in range(100,1000):
    s = str(x)
    bai = int(s[0])
    shi = int(s[1])
    ge = int(s[2])
    if x == bai**3 + shi**3 + ge**3:
        print(x)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ゆきな

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值