1.创建和赋值

字符串或串(String)是由数字、字母、下划线组成的一串字符。Python 里面最常见的
类型。 可以简单地通过在引号间(单引号,双引号和三引号)包含字符的方式创建它。
第一种方式:
"""

str1 = "westos"
str1
'westos'
type(str1)

第二种方式:
str2 = 'westos'
str2
'westos'
type(str2)

第三种方式:
propt = """
... 学生管理系统
... 1). 录入学生信息
... 2). 查找学生信息
... 0). 退出系统
... """
print(propt)

        学生管理系统
1). 录入学生信息
2). 查找学生信息
0). 退出系统

propt
'\n\t\t\t学生管理系统\n\t1). 录入学生信息\n\t2). 查找学生信息\n\t0). 退出系统\n'

#字符串是不可变的数据类型, 我们看到的变化实质上是字符串指向了新的内存空间。原先内存空间的值并不会变化。

s = 'hello'
id(s)
140109418005808
s = 'westos'
id(s)
140109418005872

"""
一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符
python 学习之字符串_第1张图片

2.字符串的基本特性

连接操作符: 从原有字符串获得一个新的字符串
重复操作符: 创建一个包含了原有字符串的多个拷贝的新串
""10 + "学生管理系统" + ""10

  1. 索引(s[i] ): 获取特定偏移的元素
  2. 索引的分类: 正向索引, 反向索引
    python 学习之字符串_第2张图片

  3. 切片S[i:j]提取对应的部分作为一个序列:
  4. 如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;
    扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长;
  5. s[:]获取从偏移量为0到末尾之间的元素,是实现有效拷贝的一种方法;
  6. s[::-1]是实现字符串反转的一种方法;
    成员操作符用于判断一个字符或者一个子串(中的字符)是否出现在另一个字符串中。
    出现则返回 True,否则返回 False.
    string 模块预定义的字符串:
    string.ascii_letters string.ascii_lowercase
    string.ascii_uppercase string.digits
    string.whitespace string.punctuation

编写一个检查 Python 有效标识符的小脚本,名字是 idcheck.py。
要求:Python 标识符必须以字母或下划线开头
1). 只检查长度大于等于 2 的标识符
2). 以字母或者下划线开始
3). 后面要跟字母,下划线或者或数字

#导入string模块
import string
while True:
#name = raw_input("请输入标识符: ")
name = input("请输入标识符: ")

if name == 'exit':
    print("欢迎下次使用表示符检测器....")
    exit(0)   # 退出程序, 0代表的是正常退出 
# 1). 只检查长度大于等于 2 的标识
if len(name) >= 2:
    # pass  # 占位符
    # 2). 以字母或者下划线开始
    if name[0] == '_' or  name[0] in string.ascii_letters:
        # pass  # 占位符
        # 3). 后面要跟字母,下划线或者或数字, hello@hhhh
        for item in name[1:]:
            if not (item == '_' or item in string.ascii_letters+string.digits):
                print('Error: 后面没有跟字母,下划线或者数字')
                break  # 跳出循环
        else:   # 当正常遍历字符串结束,要执行的内容
            print('OK: 正确的变量名')

    else:
        print('Error: 没有以字母或者下划线开始')
else:
    print('Error: 长度小于2')
#encoding=utf-8

"""
判断回文串:
    1.  只考虑字母或者数字字符: 删除非字母或数字
    2.  忽略字母的大小写: 统一转成大写或者小写
"""
#string = 'A man, a plan, a canal: Panama.'
string = raw_input(">>: ")
#string = input(">>: ")

#1.  只考虑字母或者数字字符: 删除非字母或数字
string1 = ''
for item in string:
    if item.isalnum():
        string1 += item
#print("删除非字母或数字:", string1) 

#2.  忽略字母的大小写: 统一转成大写或者小写
string2 = string1.lower()
#print("统一转成大写或者小写:"+string2)

#3. 判断回文
print(string2 == string2[::-1])

3字符串内建方法

python 学习之字符串_第3张图片

python 学习之字符串

python 学习之字符串_第4张图片

python 学习之字符串_第5张图片

python 学习之字符串_第6张图片

python 学习之字符串_第7张图片

编写一个函数来验证输入的字符串是否是有效的 IPv4 ?
1). IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。
比如,172.16.253.1;
2). IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。

#ip = '172.25.254.100'
ip = input('IP: ')
#1). 判断是否为IPv4?是否为4段?
items = ip.split('.')       # ['172', '25', '254', '100']
if len(items) == 4:
    # 2).  IPv4 地址由十进制数, 其范围为 0 - 255
    for item in items:  # item = '172', '25', '254', '100'
        #  IPv4 地址内的数不会以 0 开头。   (item.startswith('0') and len(item)!=1)
        # '08'  '0'
        if not(0 <= int(item) <= 255)  or  (item.startswith('0') and len(item)!=1):
            print('Error')
            break

    else:
        print('OK')
else:
    print('Error')

cmp() 根据字符串的 ASCII 码值进行比较(py3取消)
len() 返回字符串的字符数
max() and min() 返回最大或者最小的字符,(按照 ASCII 码值排列)
enumerate() 枚举对象同时列出数据和数据下标
zip() 将对象中对应的元素打包成一个个元组,
然后返回由这些元组组成的列表

string模块

检测大写字母 detect-capital

word = input(">> ")
if word.isupper() or word.islower() or word.istitle():
    print(True)
else:
    print(False)

机器人能否返回原点 robot-return-to-origin
"""
机器人能否返回原点
"""

moves = input(">> ")
print(moves.count('L') == moves.count('R') and moves.count('U') == moves.count('D'))

小学生计算能力测试系统

设计一个程序,用来实现帮助小学生进行算术运算练习,它具有以下功能:提供基本算术运算
(加减乘)的题目,每道题中的操作数是随机产生的,练习者根据显示的题目输入自己的答案,程
序自动判断输入的答案是否正确并显示出相应的信息。最后显示正确率。

思路:
l 运行程序, 输入测试数字的大小范围
l 输入测试题目数量
l 任意键进入测试
l 系统进行测试并判断对错
l 系统根据得分情况进行总结,退出程序

"""
import random

start = input("输入测试数字的大小范围(start, 默认是1) >> ")
end = input("输入测试数字的大小范围(end, 默认是10) >> ")
count = input("输入测试题目数量(默认为10) >>")

# 1). 给定start, end, count默认值
start = 1 if not start else int(start)
end = 10 if not end else int(end)
count = 10 if not count else int(count)
input("任意键进入测试........")

#print(start, end, count)

#4). 显示正确率。
right_count = 0
#3). 循环count次, 出count道题目
print("小学生计算能力测试系统".center(50, '*'))
for item in range(count):
    while True:
        # 2). 每道题中的操作数是随机产生的,练习者根据显示的题目输入自己的答案
        num1 = random.randint(start, end)
        num2 = random.randint(start, end)
        operator = random.choice('+-*---///')
        # print(num1, num2, operator)
        right_result = eval("%s%s%s" % (num1, operator, num2))
        if right_result >= 0 and type(right_result) == int and num1 != num2:
            break

    user_result = int(input('%s %s %s = ' %(num1,operator,num2)))
    if user_result == right_result:
        print("回答正确")
        right_count += 1
    else:
        print("回答错误")
print("正确率: %.2f %%" %((right_count / count)*100))