python之字符串

1.字符串的定义

# 定义一个字符串
a = 'hello'
# 有特殊字符时,需要转译
c = 'I\'m a student'
# 或者特殊字符用双引号引起来
d = "I'm a student"

print(a)
print(c)
print(d)

在这里插入图片描述

2.字符串的特性

(1)索引:通过字符串的下标来打印元素
(2)切片:
(3)重复
(4)连接
(5)成员操作符
(6)for循环(迭代)

# 1.索引
print('1.索引')
a = 'hello'# a[0] 表示a中的第一个元素
print(a[0])
# a[1] 表示a中的第二个元素
print(a[1])

print('2.切片')
# 2.切片
# 切片的规则:s[start:end:step] 从start开始到end-1结束,步长:stepprint(a[:3])   
 
# 下标为3的元素之前的所有元素
print(a[0:3])    # 第0个元素到第一个元素
print(a[::-1])   # 倒序输出
print(a[0:4:2])  # 第0个和第四个之间, 步长为2,输出a中元素
print(a[1:])     # 除了第一个元素,其他元素全部输出

# 3.重复
print('3.重复')
print(a*2)   # 把a中元素重复输出两次 

# 4.连接
print('4.连接')
print(a+' python') 

# 5.成员操作符
print('5.成员操作符')
print('h' in a)    # 判断h是否在a中,如果在,就输出True
print('p' in a)    # 判断p是否在a中,如果不在,就输出False

# 6.for循环(迭代)
print('6.for循环(迭代)')
for i in a:    
    print(i)

在这里插入图片描述

练习1:回文数判断

num = input('Num:')
if num == num[::-1]:    
    print('这是一个回文数')
else:
    print('这不是一个回文数')

在这里插入图片描述
在这里插入图片描述

3.字符串开头结尾的匹配

(1)通过条件匹配文件名
filename = 'hello.loog'
if filename.endswith('.log'):    
    print(filename)
else:
    print('error filename'
(2)通过字符串的首尾来匹配
url1=input('请输入yum源路径:')
url2=input('请输入ftp服务的路径:')
url3=input('请输入http服务的路径:')
if url3.startswith('http://'):    
    print('来自网页')
else:    
    print('未找到网页')
if url1.endswith('rhel'):    
    print('yum源已经配置好')
else:    
    print('没有yum源')
if url2.startswith('ftp'):    
    print('匹配正确')
else:
    print('匹配失败')

在这里插入图片描述

(3)去除两边空格
标题:首字母大写,其他字母必须小写
upper    # 转换成大写
isupper  # 判断是否大写
rstrip    # 去除右边的空格,空格是广义的空格,不仅仅是空格键按出来的空格
lstrip    # 去除左边的空格

In [1]: s='   hello   ' 
In [2]: s
Out[2]: '   hello   ' 
In [3]: s.strip()
Out[3]: 'hello' 
In [4]: s.rstrip()
Out[4]: '   hello' 
In [5]: s.lstrip()
Out[5]: 'hello   '

在这里插入图片描述

练习2:判断大小写和数字

# 判断字符串里每个元素是什么类型,一旦有一个元素不满足,就返回False
print('123'.isdigit())
print('123abs'.isdigit()) 

# title(标题),判断某个字符串是否为标题
# 标题:第一个字母大写,其余位置为小写 
print('Akdsf'.istitle())print('AdsdaDS'.istitle())  

# 判断某个字符串是否是大写或者小写 
print('hello'.upper())         # 把hello以大写输出
print('hello'.isupper())       # 判断hello是否为大写
print('HELLO'.islower())       # 判断HELLO是否为小写
print('HELLO'.lower())         # 把HELLO以小写输出 
print('hello123'.isalnum())    # 判断hello123是否为字母或数字
print('123'.isalpha())         # 判断123是否为字母
print('qqq'.isalpha())         # 判断qqq是否为字母	

在这里插入图片描述

练习3:判断变量名是否合法

while True:    
    name = input('请输入变量名:')    
    if name == 'exit':        
        print('欢迎下次使用')        
        break    
    if name[0].isalpha() or name[0] == '_':        
        for i in name[1:]:            
            if not(i.isalnum() or i == '_'):                
                print('%s变量名不合法' %name)                
                 break        
         else:            
             print('%s变量名合法' %name)    
     else:       
         print('%s变量名不合法' %name)
 注:s[1;]:   # 第一个字符之后的所有字符

在这里插入图片描述

练习4.字符串的搜索与替换

s = 'hello world hello' 

# find:找到子串,并返回最小的索引
print(s.find('hello'))
print(s.find('world')) 

# rfind:找到子串,并返回最大索引
print(s.rfind('hello'))
print(s.rfind('world')) 

# 替换字符串中的所有’hello‘为’westos‘
print(s.replace('hello','redhat'))

在这里插入图片描述

练习5.字符串的对齐

print('学生管理系统'.center(30))      # 居中
print('学生管理系统'.center(30,'*'))  # 居中
print('学生管理系统'.ljust(30,'*'))   # 左对齐
print('学生管理系统'.rjust(30,'*'))   # 右对齐
print('学生管理系统'.ljust(30,'+'))   # 左对齐

在这里插入图片描述

6.统计字符串的个数

print('hello'.count('l'))    # 统计hello中l的个数
print('hello'.count('ll'))   # 统计hello中ll的个数
print(len('hello'))          # 查看hello的长度	

在这里插入图片描述

7.字符串的分离和连接

# 分离字符串
a='172.25.254.1'b=a.split('.')   # 以 . 为分隔符分离a字符串,并保存在b变量中
print(b)         # 输出b变量
print(b[::-1])   # 逆序输出b变量 
date = '2019-1-16'
date1=date.split('-')
print(date1) # 连接字符串
print(' '.join(date1))  # 指定用' '来连接被分离的变量
print('/'.join(date1))  # 指定用’/‘来连接被分离的变量

在这里插入图片描述

练习6:缺勤不超过1次,连续不迟到3次以上,输出True

'A' : Absent,缺勤
'L' : Late,迟到
'P' : Present,到场
chuqin = input('请输入出勤情况:') 
if chuqin.count('A') <= 1 and chuqin.count('LL') <= 1:    
    print('True')
else:    
    print('False')
    
# 另外一种方法
    print(chuqin.count('A') <= 1 and chuqin.count('LLL') == 0)

在这里插入图片描述

练习7:小米面试

  给定一个句子(只包含字母和空格), 将句子中的单词位置反转,>单词用空格分割, 
单词之间只有一个空格,前>后没有空格。
比如: 
(1) “hello xiao mi”-> “mi xiao hello” 

s = input('请输入:')
b = s.split(' ')[::-1]
print(' '.join(b))

# 第二种方法
print(' '.join(s.split()[::-1]))

在这里插入图片描述

练习8:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符

s1=input('请输入第一个字符串:')
s2=input('请输入第二个字符串:')
for i in s1:    
    for i in s2:        
        s1 = s1.replace(i,'')
print(s1)

在这里插入图片描述

练习9:随机生成加法的运算

import random
count = 0
right = 0
while True:    
    a=random.randint(0,10)    
    b=random.randint(0,10)    p
    rint('%d + %d = ' %(a,b))    
    player = input('请输入答案:')    
    if str(a + b) == player:        
        print('回答正确')        
        right+=1        
        count+=1    
    elif player == 'q':        
        break    
    else:        
        print('回答错误')        
        count+=1
percent = (right / count)*100
print('您一共答了%d道题,答对%d道题,正确率为%d%%' %(count,right,percent))

在这里插入图片描述

练习10:随机生成加减乘除运算

import random
count = 0
right = 0
op = ['+','-','*','/']
while True:    
    a=random.randint(1,10)    
    b=random.randint(1,10)    
    s = random.choice(op)    
    print ('%d %s %d = '  %(a,s,b) )    
    question = input('请输入您的答案(q退出):')    
    if s=='+':        
        result =str( a + b)        
        print(result)        
        if question == result:            
            print ('回答正确')            
            right+=1            
            count+=1        
        elif question == 'q':            
            break        
        else:            
            print('回答错误')            
            count+=1    
    if s=='-':        
        result =str( a - b)        
        print(result)       
        if question == result:            
            print ('回答正确')            
            right+=1            
            count+=1        
        elif question == 'q':            
            break        
        else:            
            print('回答错误')            
            count+=1   
    if s=='*':        
        result = str( a * b)        
        print(result)        
        if question == result:            
            print ('回答正确')            
            right+=1            
            count+=1        
        elif question == 'q':            
            break        
        else:            
            print('回答错误')            
            count+=1    
    if s=='/':        
        result = str( a / b)        
        print(result)        
        if question == result:            
            print ('回答正确')            
            right+=1            
            count+=1        
        elif question == 'q':            
            break        
        else:            
            print('回答错误')            
            count+=1
percent = right / count
print('测试结束,共回答%d道题,正确个数为%d,正确率为%.2f%%' %(count,right,percent * 100))

在这里插入图片描述

练习11:快速生成验证码,内推码

import random
import string 
code_str = string.ascii_letters + string.digits
print('生成的随机数字和字母为(包括大写字母,小写字母和数字):',code_str)
def gen_code(len=4):    
    return ''.join(random.sample(code_str,len))
print('截取以4为步长的字符串为::',gen_code())
print('生成10个以4为步长的字符串为:',[gen_code() for i in range(10)] )

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值