【千锋Python2205班9.30笔记-day10-字符串和函数基础(一阶段)】

在这里插入图片描述

01-review

# 1. 什么是字符串(str)
"""
容器型; ''、""、''''''、""""""
不可变的;有序的;

元素:引号中的每个符号(字符)。
"""

# 2.转义字符
"""
\t 
\n
\'
\"
\\

r字符串:  r''、R''
"""

# 3.字符编码
"""
ASCII: 'A'-65、'a'-97、'0'-48


Unicode: 4e00 ~ 9fa5
"""
# chr(编码值)
# ord(字符)
# \u4XXXX
str1 = '一\u4e00'
print(str1)

# 3.字符串操作
"""
1)获取字符
2) +、*、>、<、>=、<=、==、!=、in 、not in
4) len、str
5) 字符串.join(序列)、字符串1.split(字符串2, N)、字符串1.replace(字符串2, 字符串3, N)
字符串1.find(字符串2)、字符串1.find(字符串2, 开始下标, 结束下标)、字符串1.rfind(字符串2, 开始下标, 结束下标)
字符串.strip()
"""

'123younsjsmyou卡卡姐you及时反馈you62278'

02-homework

# 1. 输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)
str1 = 'abcd1234'
# 'bd24'
print(str1[1::2])

# 2.输入用户名,判断用户名是否合法(用户名长度6~10位)
# name = input('请输入用户名:')
# if 6 <= len(name) <= 10:
#     print('合法')
# else:
#     print('不合法')

# 3.输入用户名,判断用户名是否合法(用户名中只能由数字和字母组成)
# name = input('请输入用户名:')
# for x in name:
#     if not(x.isdigit() or x.islower() or x.isupper()):
#         print(name, '不合法')
#         break
# else:
#     print(name, '合法')

# 4.输入一个字符串,将字符串中所有的数字字符取出来产生一个新的字符串
str1 = 'abc1shj23kls99+2kkk'
# 方法1:
new_str = ''
for x in str1:
    if x.isdigit():
        new_str += x
print(new_str)

# 方法2:
new_str = ''.join([x for x in str1 if x.isdigit()])
print(new_str)

# 5.输入一个字符串,将字符串中所有的小写字母变成对应的大写字母输出 (用upper方法和自己写算法两种方式实现)
# 例如: 输入'a2h2klm12+'   输出 'A2H2KLM12+'
str1 = 'a2h2klm12+'
# 方法1:
result = str1.upper()
print(result)

# 方法2:
new_str = ''
for x in str1:
    if not 'a' <= x <= 'z':
        new_str += x
    else:
        # 小写字母和对应的大小字母的编码值之差是32
        new_str += chr(ord(x) - 32)

print(new_str)

# 6.输入一个小于1000的数字,产生对应的学号
# # 例如: 输入'23',输出'py1901023'    输入'9', 输出'py1901009'     输入'123',输出'py1901123'
# num = input('请输入一个小于1000的正整数:')
# width = 3
# result = 'py1901' + (width - len(num)) * '0' + num
# print(result)

# 7.输入一个字符串,统计字符串中非数字字母的字符的个数
str1 = 'anc2+93-sj胡说'
count = 0
for x in str1:
    if x.isdigit() or x.isupper() or x.islower():
        continue
    count += 1
print(count)

# 8.输入字符串,将字符串的开头和结尾变成’+',产生一个新的字符串
str1 = 'abc123'
result = '+' + str1[1:-1] + '+'
print(result)

# 9.输入字符串,获取字符串的中间字符
# N // 2
# N //2 - 1, N // 2
str1 = 'abc1234a'
count = len(str1)
if count % 2:
    print(str1[count // 2])
else:
    print(str1[count//2 - 1: count//2+1])

# 10.写程序实现字符串函数find/index的功能(获取字符串1中字符串2第一次出现的位置)
str1 = 'how are you? im fine, Thank you!'
str2 = 'you'
count2 = len(str2)

# 方法1:
for index in range(len(str1)-count2 + 1):
    if str1[index: index+count2] == str2:
        print(index)
        break
else:
    print('找不到!')

# 方法2:
result = str1.split(str2, 1)
if len(result) == 1:
    print('找不到!')
else:
    print(len(result[0]))

# 11.获取两个字符串中公共的字符
str1 = 'abcaa123'
str2 = 'huak3'
# 方法1:
new_str = ''
for x in str1:
    if x in str2 and x not in new_str:
        new_str += x
print(new_str)

# 方法2:
result = ''.join(set(str1) & set(str2))
print(result)


# 12.输入用户名,判断用户名是否合法(用户名必须包含且只能包含数字和字母,并且第一个字符必须是大写字母)
name = input('请输入用户名:')
if name[0].isupper():
    num_count = 0           # 数字字符的个数
    for x in name[1:]:
        if not (x.isdigit() or x.islower() or x.isupper()):
            print('不合法')
            break
        else:
            if x.isdigit():
                num_count += 1
    else:
        if num_count > 0:
            print('合法')
        else:
            print('不合法')
else:
    print('不合法')

03-字符串相关方法

# 1.尽可能记住的字符串相关方法
# 1) 字符串1.count(字符串2)       -       统计字符串1中字符串2出现的次数
str1 = 'how are you? im fine, Thank you! and you?'
print(str1.count('you'))
print(str1.count('a'))

# 2) 字符串.isdigit()      -      判断指定字符串是否是纯数字字符串(数字指的是0~9)
# 字符.isdigit()  -   判断指定的字符是否是数字字符
print('122343'.isdigit())       # True
print('12234a3'.isdigit())      # False

# 字符串.isnumeric()  -  判断指定字符串是否是纯数字字符串(数字指的是单独存在具有数值意义的字符,例如'一'、'万')
print('23422'.isnumeric())      # True
print('12234a3'.isnumeric())    # False


print('2738一'.isdigit())            # False
print('2738一十百千万亿壹ⅢⅤ'.isnumeric())          # True


# 3) islower()、isupper()
# 字符串.islower()  - 判断字符串是否是纯小写字母字符串(是否全部是小写字母)
# 字符.islower() - 判断指定字符是否是小写字母
print('ashfkjah'.islower())

# 4)lower()、upper()
# 字符串.lower()   -  将字符串中所有的大写字母都转换成对应的小写字母
print('jsks2239数据HKN9220kk'.upper())

# 5)maketrans()、translate()
# str.maketrans(字符串1, 字符串2)    -   创建字符串1中每个字符和字符串2中每个字符之间的对应关系表
str1 = '123a89b234a7c9'
# a -> +
# b -> -
# c -> *
table = str.maketrans('abc', '+-*')
result = str1.translate(table)
print(result)

# 案例:
t = '星期6'
table = str.maketrans('0123456', '一二三四五六天')
print(t.translate(table))


# 6)rjust()、ljust()、center()、zfill()
# 字符串.rjust(宽度,字符)
# 字符串.ljust(宽度,字符)
# 字符串.center(宽度,字符)
# 字符串.zfill(宽度)  ==  字符串.rjust(宽度,'0')

# 宽度-7、字符 - '1'
str1 = 'abc'
print(str1.rjust(7, '1'))       # '1111abc'
print(str1.ljust(7, '1'))       # 'abc1111'
print(str1.center(7, '1'))      # '11abc11'
print('23'.zfill(4))            # '0023'

04-字符串格式化

# 问题:字符串的部分内容是动态变化的!
# name = input('请输入名字:')
name = '小明'
# age = int(input('请输入年龄'))
age = 18
score1 = 79
score2 = 89
score3 = 98
# message是 'xxx今年xx岁!'

# 1.使用+做字符串拼接
message = name + '今年' + str(age) + '岁!'
print(message)

# xxx今年xx岁,这次考试的成绩分别是:语文-xxx,数学-xxx,英语-xxx。
message = name+'今年'+str(age)+'岁,这次考试的成绩分别是:语文-'+str(score1)+',数学-'+str(score2)+',英语-'+str(score3)+'。'
print(message)

# 2.使用格式字符串 -   带有格式占位符的字符串就是格式字符串
"""
Python使用格式字符串的语法:带有格式占位符的字符串 % (数据1, 数据2, 数据3, ...)
注意:后面括号中数据必须和前面字符串中的占位符一一对应(数量、位置、类型); 如果数据只有一个,后面的小括号可以不写

常见的格式占位符:
%s      -      字符串占位符(在Python中可以用%s给任何类型的数据占位)
%d      -      整数占位符(在Python中可以用%d给任何数字占位,但是如果提供的数据是小数填充数据的时候会自动转换成整数)
%f      -      浮点数占位符(在Python中可以用%f给任何数字占位, 如果提供的数据是整数填充的时候会自动转换成小数),小数默认保留6位小数
%.Nf    -      (保留N位小数)

使用建议:给数字占位的时候使用%d或者%f,给非数字数据占用%s(特殊情况特殊考虑)
"""
message = '%s今年%d岁,这次考试的成绩分别是:语文-%d,数学-%d,英语-%d。' % (name, age, score1, score2, score3)
print(message)

a = 89
b = 23.98927
print('a:%d, b:%d' % (a, b))        # a:89, b:23
print('a:%f, b:%f' % (a, b))        # a:89.000000, b:23.980000
print('a:%.2f, b:%.3f' % (a, b))    # a:89.00, b:23.989

print('x:%s' % 23.504)
print('x:%s' % [10, 20, 30])        # 'x:[10, 20, 30]'


money = 10000
message = '%s今年%d岁!月薪:%.2f元' % (name, age, money)
print(message)

print('------------------------------------------华丽的分割线------------------------------------------------')
# 3.使用f-string
"""
在字符串的最外面加一个f或者F,就可以在字符串中通过{表达式}给字符串提供内容({}中表达式的结果是什么,填充到字符串中的内容就是什么)
"""

message = f'{name}今年{age}岁,这次考试的成绩分别是:语文-{score1},数学-{score2},英语-{score3}。'
print(message)

# 1)怎么在{}中通过表达式提供数据
# 直接使用变量来提供数据
message = f'{name}今年{age}岁'
print(message)

# 直接使用具体的数据提供数据
message = f'{"你好"}今年{18}岁!'
print(message)

# 可以用运算表达式的结果提供数据
message = f'{name[0]}今年{age + 10}岁!'
print(message)    # '小今年28岁!'

message = f'数字列表:{[x*2 for x in range(5)]}'
print(message)      # '数字列表:[0, 2, 4, 6, 8]'

a = 2.34
message = f'a:{int(a)}'
print(message)

# 2)f-string参数的使用
# {提供数据的表达式:参数}
# a.控制小数位数的参数:  {提供数据的表达式:.Nf}
money = 82992.829
str1 = f'月薪:{money:.2f}元'
print(str1)

str1 = f'年薪:{money * 13:.2f}元'
print(str1)

# b.金额数据逗号分割:{提供数据的表达式:,}
money = 1078906.789
str1 = f'年薪:{money:,}元'
print(str1)

str1 = f'年薪:{money:,.2f}元'
print(str1)

# c.显示百分比:{提供数据的表达式:.N%}
print(f'班级成材率:{20/28:.2%}')

# d.控制填充内容在字符串中所占的宽度: {提供数据的表达式:字符>N}、{提供数据的表达式:字符<N}、{提供数据的表达式:字符^N}
# 注意:没有写字符的时候用空格填充
str1 = 'abc'
message = f'字符串:{str1:1^5}!'
print(message)

message = f'字符串:{str1:>5}!'
print(message)

num = 2
print(f'py1901{num:0>3}')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值