python——字符串

1、字符串的创建

字符串是 Python 中最常用的数据类型,创建字符串只要给变量指定一个字符类型的值即可。可以使用以下方法:
使用单引号定义字符串

a = 'sums'

使用双引号定义字符串

a = “warriors”

使用""" 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符
[root@localhost mnt]# /usr/local/python3/bin/python3 
Python 3.6.4 (default, May 24 2019, 04:41:57) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> c= """
... zhenre  
... resiren
... """

效果展示

>>> a= 'sums'
>>> b ="warriors"
>>> a
'sums'
>>> b
'warriors'
>>> c
'\nzhenre\nresiren\n'

2、字符串的特性
1、索引
* ###### 字符串是字符的有序集合,可以通过其位置来获得具体的元素。在 python 中,字符串中的字符是通过索引来提取的,索引从 0 开始。

* ###### python 可以取负值,表示从末尾提取,最后一个为 -1,倒数第二个为 -2,即程序认为可以从结束处反向计数

###### 索引是从0开始,使用:变量名称[索引] 来得到字符串中的字符

>>> name = 'shang'  # 定义字符串,共有5个字符,其索引为0 1 2 3 4 5
>>> print(name[0])   # 输出第一个字符
s
>>> print(name[2])    # 输出第三个字符
a
>>> print(name[-1])  # 输出第最以后一个字符
g
>>> print(name[5])   # 该字符串中没有索引 5 出现报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

2、切片

切片可以提取相应部分数据,通常右边界不包括在提取字符串内。
格式: 变量名称[start:stop:step] 从start开始到stop结束,步长为stop
print(name[0:3]) #输出提取的从索引0 到索引2 的所有字符(不包括右边界3)
print(name[0:4:2]) #输出提取的从索引0 到索引3 的所有字符,步长为2
print(name[:]) # 左右边界都为空,默认提取所有的字符
print(name[2:]) # 右边界为空,表示提取从索引2到结束的字符
print(name[:3]) # 左边界为空,表示提取从头开始到索引2 为止的字符
print(name[::-1]) # 字符串反转

效果展示

>>> s = 'hello'
>>> print(s[0])
h
>>> print(s[:])
hello
>>> print(s[::-1])
olleh
>>> print(s[1:])
ello
>>> print(s[:3])
hel
>>> print(s[0:3])
hel
>>> print(s[0:4:2])
hl
>>> 

3、重复

格式 : 变量 * 重复次数

>>> name = 'liu'
>>> name * 5
'liuliuliuliuliu'
>>> 
4 连接

格式 : 变量1 + 变量2

>>> name = 'liu'
>>> adress = 'xian'
>>> name + adress
'liu   xian'
>>> 
5 成员操作符

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

>>> name = 'chuang'
>>> 'ch' in name
True
>>> 'hhh' in name
False
>>> 'ch' not in name
False
>>> 'hhh' not  in name
True

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

使用for 语句可以循环输出字符串中的每一个字符

[root@localhost mnt]# vim name.py
[root@localhost mnt]# python name.py 
c
h
u
a
n
g
[root@localhost mnt]# cat name.py 
name = 'chuang'
for i in name:
 print(i)
[root@localhost mnt
练习

题目要求:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)

读都是一样的整数。

1 字符串特性:

num = input('Num:')
print(num == num[::-1])

*测试:**
[kiosk@foundation47 day 02]$ python3 2.5.py 
please input : 12345
False
[kiosk@foundation47 day 02]$ python3 2.5.py 
please input : 1234321
True

shell脚本实现

#!/bin/bash
read -p '请输入数字 :  ' NUM
num=$NUM
MUN=0
while [ "$num" -gt "0" ]
do
 ((MUN=$MUN*10+$num%10)) 
 ((num=$num/10))
done
if
 [ "$MUN" -eq "$NUM" ]
then
 echo "$NUM 是回文数 !!"
else
 echo "$NUM 不是回文数 !!"
fi

实验展示:

[root@foundation47 shell]# sh huiwenshu.sh 
请输入数字 :  123
123 不是回文数 !!
[root@foundation47 shell]# sh huiwenshu.sh 
请输入数字 :  1234321
1234321 是回文数 !
7 字符串的常用方法
istitle()         #判断字符串是否为标题(标题首字母大写)  输出为True 或者False
isupper()         #判断字符串是否为全部大写   输出为True 或者False
islower()         #判断字符串是否为全部小写   输出为True 或者False
lower()           #将字符串转化成小写
upper()           #将字符串转化成大写
title()           # 将字符串转化成标题格式

示例:

>>> 'chuang'.istitle()
False
>>> 'Chuang'.istitle()
True
>>> 'chuang'.isupper()
False
>>> 'Chuang'.islower()
True
>>> 'CHUANG'.islower()
False
>>> 'CHUANG'.isupper()
True
>>> 'chuang'.title()
'chuang'
>>> 'chuang'.upper()
'CHUANG'
>>> 'SHANG'.lower()
'shang'
>>> 
endswith('str')      #判断是否以str结尾输出结果为True或者False
startswith('str')    #判断是否以str开头输出结果为True或者False
isdigit()            #判断字符串是否全部由数字组成
isalpha()            #判断字符串是否全部由字母组成
isalnum()          #判断字符串是全部由字母和数字组成

示例:

>>> filename = 'daojishui.sh'
>>> filename.endswith('.sh')
True
>>> filename.startswith('dao')
True
>>> filename.isdigit()
False
>>> '1234'.isdigit()
True
>>> filename.isalpha()
False
>>> 'hahahah'.isalpha()
True
>>> 'hahahah'.isalnum()
True
strip()       #去除左右两边的空格,空格为广义的空格 包括:\t \n
lstrip()      #去除左边的空格,空格为广义的空格 包括:\t \n
rstrip()   #去除右边的空格,空格为广义的空格 包括:\t \n
#同时也可以在括号中指定字符,将左右两边的指定字符串去除

示例:


>>> s = '      \t\t  sehahahase  \n\n\t'    #定义字符串变量
>>> s.strip()   #去除左右两边的空格
'sehahahase'
>>> s.lstrip()   #去除左边的空格
'sehahahase  \n\n\t'
>>> s.rstrip()   #去除右边的空格
'      \t\t  sehahahase'
>>> ss='sehahahase'   # 定义变量
>>> ss.strip('se')  #去除两边的指定字符
'hahaha'
>>> ss.lstrip('se')  #去除左边的指定字符
'hahahase'
>>> ss.rstrip('se')   #去除右边的指定字符
'sehahaha' 
>>> 

练习

变量名定义是否合法:

1.变量名可以由字母 数字 下划线组成

2.变量名只能以字母和或者下划线开头

while True:
    name=input('NUM :  ')
    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('变量不合法')
字符串的对齐:
center(num,'*')   #预留为值num个 指定字符串居中,剩下的以* 填充,不指定默认以空格填充
ljust(num,'*')  #预留为值num个 指定字符串居左,剩下的以* 填充,不指定默认以空格填充
rjust(num,'*')  #预留为值num个 指定字符串居右,剩下的以* 填充,不指定默认以空格填充

示例

>>> 'chuang'.center(40)
'                 chuang                 '
>>> 'chuang'.center(40,'*')
'*****************chuang*****************'
>>> 'chuang'.ljust(40,'*')
'chuang**********************************'
>>> 'chuang'.rjust(40,'*')
'**********************************chuang'

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

>>> s = 'chuanghello'  #定义字符串
>>> s.find('c')   #搜索s并返回最小索引
0
>>> s.find('h')   #搜索s并返回最小索引,存在两个h 返回的是最小的索引
1
>>> s.find('h',5,7)   # 指定索引范围内搜索h 并返回最小索引
5
replace(old,new) 替换字符串中的old内容为new
>>> s = 'shang'
>>> s.replace('s','f')
'fhang'
>>> 
字符串的统计:
count(子字符串)    #统计子字符串出现的次数
len(字符串)        #统计字符串的长度

示例:

>>> s = 'shanxixianyang'
>>> s.count('x')
2
>>> s.count('a')
3
>>> len(s)
14
>>> len('hahaha')
6
字符串的分离和连接:
split(分隔符)  #以指定的分隔符将字符串分隔成几部分
符号.join(分隔后的字符串)  #用符号将分隔后的字符串重新连接起来

示例:

>>> date = '2019.05.24'   # 定义字符串
>>> date1 = date.split('.')  # 以.为分隔符进行分离
>>> date1
['2019', '05', '24']     # 分离后的结果
>>> date1[1]    #分离后支持索引
'05'
>>> date1[:]
['2019', '05', '24']
>>> date1[::-1]
['24', '05', '2019']
>>> '-'.join(date1)    #用-进行连接分离后的字符串
'2019-05-24'
>>> '/'.join(date1)   # 用/进行连接分离后的字符串
'2019/05/24'
>>> 
练习:

1 题目描述:

给定一个句子(只包含字母和空格), 将句子中的单词位置反转,

单词用空格分割, 单词之间只有一个空格,前后没有空格。

“hello xiao mi”-> “mi xiao hello”

在这里插入图片描述
2 设计一个程序,帮助小学生练习10以内的加法

  • 随机生成加法题目;

  • 学生查看题目并输入答案;

  • 判别学生答题是否正确?

  • 退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点);

i = 0
m = 0
import random
print('如果要退出请输入 q')
while True:
    num1 = random.randint(0, 10)
    num2 = random.randint(0, 10)
    print('%d + %d =  ' % (num1, num2))
    anwser = input('答案是:')
    if anwser == 'q':
        break
    if int(anwser) == num1 + num2:
        m += 1
        print('回答正确')
    else:
        print('回答错误')
            i += 1
if i == 0:
    print('还未开始答题')
else :
    p = m / i
    print('共计答题%d ,正确%d , 正确率%.2f%%' % (i, m, p * 100))

3 小学生算术能力测试系统:

设计一个程序,用来实现帮助小学生进行百以内的算术练习,

它具有以下功能:提供10道加、减、乘或除四种基本算术运算的题目;

练习者根据显示的题目输入自己的答案,

程序自动判断输入的答案是否正确并显示出相应的信息。

i = 0
m = 0
import random
while i < 10:
    op = ['+', '-', '*', '/']
    act = random.choice(op)
    num1 = random.randint(0, 100)
    num2 = random.randint(0, 100)
    if act == '+' :
        anwser = input('%d + %d =  ' % (num1, num2))
        if int(anwser) == num1 + num2:
            m += 1
            print('回答正确')
        else:
            print('回答错误')
    elif act == '-' :
        anwser = input('%d - %d =  ' % (num1, num2))
        if int(anwser) == num1 - num2:
            m += 1
            print('回答正确')
        else:
            print('回答错误')
    elif act == '*' :
        anwser = input('%d * %d =  ' % (num1, num2))
        if int(anwser) == num1 * num2:
            m += 1
            print('回答正确')
        else:
            print('回答错误')
    else:
        anwser = input('%d / %d =  ' % (num1, num2))
        if int(anwser) == num1 / num2:
            m += 1
            print('回答正确')
        else:
            print('回答错误')
    i+=1
p = m / 10
print(' 正确%d , 正确率%.2f%%' % (m, p * 100))


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值