python数据类型之字符串

1.字符串的定义

•第一种方式:(单引号)
str1 = 'our company is westos'
•第二种方式:(双引号)
str2 = "our company is westos"
•第三种方式:(三引号)
str3 = """our company is westos"""

三引号还可以用于以下操作:

• 块注释:多行代码注释
• 函数的doc文档:讲函数时会说到
• 字符串格式化(按照指定的方式打印出字符串)

2.转义符号

一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符
\n: 代表换行符       \": 代表双引号本身
\t: 代表tab符           \': 代表单引号本身

3.字符串的特性

1. 索引

索引(s[i] ):获取特定偏移的元素
给出一个字符串,可输出任意一个字符,如果索引为负数,就是相当于从后向前数。

# 正向索引

>>>s='hello'
>>> s[0]
'h'

# 反向索引

>>> s = "hello world"
>>> s[-1]
'd'

这里要注意,如果单词之间有空格,该空格也占一个位置,占一个索引值


2. 切片

切片S[i:j]提取对应的部分作为一个序列:
•上边界并不包含在内;
•如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长;
s[:]获取从偏移量为0到末尾之间的元素,是实现有效拷贝的一种方法


s[start:end:step]   # 从start开始到end-1结束, 步长为step;
    - 如果start省略, 则从头开始切片;
    - 如果end省略, 一直切片到字符串最后;
s[1:]
s[:-1]
s[::-1]    # 对于字符串进行反转
s[:]         # 对于字符串拷贝

3.成员操作符(判断子串)

>>> 'h' in s
True
>>> 'h' not in s
False

 

4.字符串的类型转换

str(obj) 将其他类型内容转换为字符串
int(obj) 将字符串转换为为整数
float(obj) 将字符串转换为浮点型
long(obj) 将字符串转换为长整型

5. 字符串连接

>>> a = "hello"
>>> b = "python"
>>>print("%s %s" %(a,b))

>>> a + " " +b
'hello python'

6.字符串的重复(*)

>>> print("*"*10 + "学生管理系统" + "*"*10)
**********学生管理系统**********


7.字符串常用操作:

1)str.capitalize()
- 将字符串首字母大写,并返回新的首字母大写后的字符串;
2)str.center(width[,'fillchar'])
- 返回一个长为width的新字符串,在新字符串中原字符居中,其他部分用fillchar指定的符号填充,未指定时通过空格填充。
3)'str'.count(sub[, start[, end]]) -----> int
- 返回sub在str中出现的次数,如果start与end指定,则返回指定范围内的sub出现的次数。


4)str.endswith(suffix[, start[, end]])
- 判断字符串是否以suffix结束,如果start和end指定,则返回str中指定范围内str子串是否以suffix结尾,如果是,返回True;否则返回False
5)str.startswith(prefix[, start[, end]])

- 判断字符串是否以prefix开始,如果start和end指定,则返回str中指定范围内str子串是否以prefix开始,如果是,返回True;否则返回False
6)str.find(sub[,start[,end]])
- 判断sub是否在str中,存在返回索引值,不存在返回-1.


7)str.index(sub[,start[,end]])
- 与find方法函数功能相同,如果sub不存在时抛出ValueError异常
8)判断操作

str.isalnum() //判断是否都是字母或数字
str.isalpha() //判断是否都是字母
str.isdigit() //判断是否都是数字
str.islower() //判断是否都是小写
str.isspace() //判断是否都是英文空格
str.istitle() //判断是不是都是标题(有大小写)
str.isupper() //判断是不是都为大写字母
9)str.join(seq)
- 以str作为分隔符,将序列seq中的所有元素合并为一个新的字符串。


10)str.replace(old,new[,count])
- 将str中的old字符串替换为new字符串,并将替换后的新字符串返回,如果count指定,则只替换前count个
11)str.split([sep[,maxsplit]])
- 以sep字符串作为分割符对str进行切割,默认为空格;- maxsplit代表切割的此处
12)str.strip([chars])
- 返回一字符串,将str中首尾包含指定的chars字符删除的字符串,未指定时,删除首尾的空格。

13)去除左右两边的空格, 空格为广义的空格, 包括: \n, \t, \r
>>> s.lstrip('he')(去除字符串左边的“he”)

>>>s.rstrip('he')(去除字符串右边的“he”)

8.字符串常用内置方法

>>> min(2,4)
2
>>> max(2,5)
5
>>> sum(range(1,101))
5050


2.)枚举: 返回索引值和对应的value值;
>>> for i,v in enumerate('hello'):  
  print(str(i) +" -----> " + v)

 

zip(将两个字符串相同索引对应的值链接起来)

>>> s1 = 'abc'
>>> s2 = "123"
>>> for i in zip(s1,s2):
...     print(i)
...
('a', '1')
('b', '2')
('c', '3')
>>> for i in zip(s1,s2):
...     print("".join(i))

...
a1
b2
c3
>>> for i in zip(s1,s2):
...     print("-".join(i))
...
a-1
b-2
c-3

练习:

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

num=input("请输入一个数:")
if num == (num[::-1]):
        print('是回文数')
else:
        print('不是回文数')
     

2.判断变量名是否合法?

# 1. 变量名的第一个字符是否为字母或者下划线?
# 2. 如果是, 继续判断(****);---参考4
# 3. 如果不是, 报错, 不合法;
# 4. 依次判断除了第一个字符之外的其他字符;
# 5. 判断是否为字母数字或者下划线

# eg: "h@ello@"
while True:
    s=input("变量名")
    if s == 'exit':
        print("欢迎下次使用.......")
        break   
    if s[0].isalpha() or s[0]=="_":
        for i in  s[1:]:  
            if not(i.isalnum() or i=="_"):
                print("%s变量名不合法" %(s))
                break           
        else:   
            print("%s变量名合法" %(s))
                                
    else:
        print("%s变量名不合法" %(s))

3.编写程序, 输出星号组成的菱形

n = int(input('Num:'))
for i in range(1,n):
    print(('* '*i).center(3*n))
for i in range(n,0,-1):    
    print(('* '*i).center(3*n))

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

- 输入描述:
> 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)

- 输出描述:
> 对于每个测试示例,要求输出句子中单词反转后形成的句子

 while True:
        n=input('输入一个句子(space and words):')
        print(' '.join(n.split(' ')[::-1]))          
                          

猜你喜欢

转载自blog.csdn.net/forever_wen/article/details/81583126