分享

python——字符串及练习

 天建中林 2020-11-02

一、字符串的定义

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

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

在这里插入图片描述

二、字符串的特性

(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)12345678910111213141516171819202122232425262728293031323334

在这里插入图片描述

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

在这里插入图片描述

三、字符串开头结尾的匹配

1、通过条件匹配文件名
filename = 'hello.loog'
if filename.endswith('.log'):    
    print(filename)
else:
    print('error filename'12345
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('匹配失败')123456789101112131415

在这里插入图片描述

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

如下:

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 '  
123456789

在这里插入图片描述

练习:判断大小写和数字
# 判断字符串里每个元素是什么类型,一旦有一个元素不满足,就返回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是否为字母
12345678910111213141516

在这里插入图片描述

练习:判断变量名是否合法
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;]:   # 第一个字符之后的所有字符123456789101112131415

在这里插入图片描述

练习:字符串的搜索与替换
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'))123456789101112

在这里插入图片描述

练习:字符串的对齐
print('学生管理系统'.center(30))      # 居中
print('学生管理系统'.center(30,'*'))  # 居中
print('学生管理系统'.ljust(30,'*'))   # 左对齐
print('学生管理系统'.rjust(30,'*'))   # 右对齐
print('学生管理系统'.ljust(30,'+'))   # 左对齐12345

在这里插入图片描述

四、统计字符串的个数

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

在这里插入图片描述

五、字符串的分离和连接

# 分离字符串
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))  # 指定用’/‘来连接被分离的变量123456789

在这里插入图片描述

练习:缺勤不超过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)1234567891011

在这里插入图片描述

练习:小米面试

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

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

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

在这里插入图片描述

练习:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
s1=input('请输入第一个字符串:')
s2=input('请输入第二个字符串:')
for i in s1:    
    for i in s2:        
        s1 = s1.replace(i,'')
print(s1)123456

在这里插入图片描述

练习:随机生成加法的运算
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))12345678910111213141516171819

在这里插入图片描述

练习:随机生成加减乘除运算
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))123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960

在这里插入图片描述

练习:快速生成验证码,内推码
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)] )12345678

在这里插入图片描述

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多