Python--字符串

一.字符串的定义
字符串是 Python 中最常用的数据类型,创建字符串只要给变量指定一个字符类型的值即可
1.单引号引用字符串

a = 'honey'

2.双引号引用字符串

a = "sweet"

3.使用""" 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符

a = """
@@@山清水秀
¥¥¥世外桃源
&&&鸟语花香
"""
print(a)
@@@山清水秀
¥¥¥世外桃源
&&&鸟语花香

二.字符串的特性
1.索引
字符串属于字符的有序集合,可以通过其位置来获取具体的元素。在Python中,通过索引的方式获取字符重的具体元素。索引时从0开始

s = 'fail'
print(s[0])
f
print(s[1])
a
print(s[2])
i
print(s[3])
l
print(s[4])
 print(s[4])
IndexError: string index out of range  ##报错,超出范围

2.切片
切片可以提取相应部分数据,通常右边界不包括在提取字符串内
格式为:s[start:stop:step] 从start开始到end -1结束,步长为step

name = 'mike.Angleo'

输出指定的索引从第0个元素到第3个但不包括第三个,相当于前三个元素

print(name[0:3])
mik

从索引0到索引5,步长为2

print(name[0:6:2])
mk.

显示所有字符

print(name[:])
mike.Angleo

显示前5个字符

print(name[:5])
mike.

所有字符进行反转

print(name[::-1])
oelgnA.ekim

显示除第一个字符以外的所有字符

print(name[1:])
ike.Angleo

显示除前两个字符以外的所有字符

print(name[2:])
ke.Angleo

3.重复
格式:变量*重复次数

>>> name = 'mike'
>>> print(name * 5)
mikemikemikemikemike

4.连接

>>> print('hello'+'mike')
hellomike
>>> print('hello'+name)
hellomike
>>> b = 'hello'
>>> print(name + b)
mikehello

5.成员操作符
in ##是成员为真
not in ##不是成员为真
可以判断指定字符是不是包含在字符串中(是否为i组成字符串的成员),输出值为真true和假false

name = 'mike.Angelo'
print('mike' in name)  ##判断mike是否在name中
print('mk' in name)
print('Ao' not in name)  ##判断Ao是否不在name中
True
False
True

6 for遍历循环字符串的每一个字符

name = 'mike'
for i in name:
    print(i)
m
i
k
e

7.判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)
读都是一样的整数。

num = str(input('Please input a number:'))
if num[::-1] == num:
    print('%s是回文数' %(num))
else:
    print('%s不是回文数' % (num))

三.字符串的常用方法
istitle() ##判断字符串是否为标题(标题首字母大写) 输出为True 或者False
isupper() ##判断字符串是否为全部大写 输出为True 或者False
islower() ##判断字符串是否为全部小写 输出为True 或者False
lower() ##将字符串转化成小写
upper() ##将字符串转化成大写
title() # 将字符串转化成标题格式

>>> 'WORLD'.istitle()
False
>>> 'World'.istitle()
True
>>> 'World'.isupper()
False
>>> 'WORLD'.isupper()
True
>>> 'World'.islower()
False
>>> 'world'.islower()
True
>>> 'WORLD'.lower()
'world'
>>> 'world'.upper()
'WORLD'
>>> 'world'.title()
'World'

endswith(‘str’) ##判断是否以str结尾输出结果为True或者False
startswith(‘str’) ##判断是否以str开头输出结果为True或者False
isdigit() ##判断字符串是否全部由数字组成
isalpha() ##判断字符串是否全部由字母组成
isalnum() ##判断字符串是全部由字母和数字组成

>>> name = 'www.183.com'
>>> name.endswith('com')
True
>>> name.startswith('www')
True
>>> name.isdigit()
False
>>> name.isalpha()
False
>>> name.isalnum()
False

strip() ##去除左右两边的空格,空格为广义的空格 包括:\t \n
lstrip() ##去除左边的空格,空格为广义的空格 包括:\t \n
rstrip() ##去除右边的空格,空格为广义的空格 包括:\t \n #同时也可以在括号中指定字符,将左右两边的指定字符串去除

>>> a = '\n\t\t hello westos  \t\t\n'
>>> a.strip()
'hello westos'
>>> a.lstrip()
'hello westos  \t\t\n'
>>> a.rstrip()
'\n\t\t hello westos'

>>> b = 'hehehessshehe'
>>> b.strip('he')
'sss'
>>> b.lstrip('he')
'ssshehe'
>>> b.rstrip('he')
'hehehesss'

字符串的对齐
center(num,’’) ##预留为值num个 指定字符串居中,剩下的以 填充,不指定默认以空格填充
ljust(num,’’) ##预留为值num个 指定字符串居左,剩下的以 填充,不指定默认以空格填充
rjust(num,’’) ##预留为值num个 指定字符串居右,剩下的以 天填充,不指定默认以空格填充

print('luck'.center(20))
print('luck'.center(20,'*'))
print('luck'.ljust(20))
print('luck'.ljust(20,'*'))
print('luck'.rjust(20))
print('luck'.rjust(20,'*'))
        luck        
********luck********
luck                
luck****************
                luck
****************luck

字符串的搜索与替换
find找到子字符串,并返回最小的索引

s = 'successfully fail successfully'
print(s.find('successfully'))
print(s.find('fail'))
print(s.rfind('successfully'))
0  ##分别返回s[0]
13  ##返回s[13]
18  ##返回s[18]

replace ##替换字符

s = 'successfully fail successfully'
print(s.replace('successfully','fail'))
fail fail fail

字符串的统计
count(子字符串) ##统计子字符串出现的次数
len(字符串) ##统计字符串的长度

print('successfully'.count('s'))
print('successfully'.count('ss'))
print(len('successfylly'))
3
1
12

字符串的分离与连接
split(分隔符) ##以指定的分隔符将字符串分隔成几部分
符号.join(分隔后的字符串) ##用符号将分隔后的字符串重新连接起来

P = '172.25.4.105'
IP1 = IP.split('.')  ##以.分隔开
print(IP1)
print(IP1[::-1])
print(IP1[0])  ##分隔后支持索引
print('.'.join(IP1))  ##以.连接
print('/'.join(IP1))  ##以/连接
print('~'.join(IP1))  ##以~连接
print('&'.join(IP1))  ##以&连接
['172', '25', '4', '105']
['105', '4', '25', '172']
172
172.25.4.105
172/25/4/105
172~25~4~105
172&25&4&105

四.练习
1.判断变量名定义是否合法:变量名可以由字母 数字 下划线组成;变量名只能以字母或者下划线开头

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('变量不合格!!')
                break
        else:
            print('变量合格!!')
    else:
        print('变量不合格')

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

sentence = input('Please input a sentence:')
sentence1 = sentence.split(' ')
sentence2 = sentence1[::-1]
print(' '.join(sentence2))
Please input a sentence:hello xiao mi
mi xiao hello

3.设计一个程序,帮助小学生练习10以内的加法
详情: 随机生成加法题目;
学生查看题目并输入答案;
判别学生答题是否正确?
退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点);

n = 0
z = 0
import random
while True:
    num1 = random .randint(1,10)
    num2 = random.randint(1,10)
    print('%d + %d = ' %(num1,num2))
    answer = input('Please input your answer:')
    a = num1 + num2
    if answer == 'exit':
        break
    elif a == int(answer):
        print('YES!!')
        n +=1
    else:
        print('SORRY!!')
    z += 1
p = n/z
print('答题总数为%d,正确数为%d,正确率为%.2f' %(z,n,p))

4.小学生算术能力测试系统:
设计一个程序,用来实现帮助小学生进行百以内的算术练习,
它具有以下功能:提供10道加、减、乘或除四种基本算术运算的题目;
练习者根据显示的题目输入自己的答案,
程序自动判断输入的答案是否正确并显示出相应的信息。

n=0
i=0
import random
while i<10:
    op = ['+','-','*','/']
    action = random.choice(op)
    num1 = random.randint(1,100)
    num2 = random.randint(1,100)
    if action == '+':
        answer = input('%d + %d = ' %(num1,num2))
        if int(answer) == num1+num2:
            print('回答正确')
            n += 1
        else:
            print('回答错误')
    elif action == '-':
        answer = input('%d - %d = ' %(num1,num2))
        if int(answer) == num1-num2:
            print('回答正确')
            n+=1
        else:
            print('回答错误')
    elif action == '*':
        answer =  input('%d * %d = ' %(num1,num2))
        if int(answer) == num1*num2:
            print('回答正确')
            n+=1
        else:
            print('回答错误')
    else:
        answer =  input('%d / %d = ' %(num1,num2))
        if int(answer) == num1/num2:
            print('回答正确')
            n+=1
        else:
            print('回答错误')
    i+=1
p = n/i
print('%d道题,您答对%d道,正确率为%.2f' %(i,n,p))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值