python-字符串

1.连接操作符和重复操作符

使格式便规范:ctrl + alt + L
查看函数方法源代码和解释说明:ctrl + 鼠标移动点击

1.1 连接操作符和重复操作符

print('hello' + 'westos')
print('hello' + name)
print('hello' + str(1))
print("*" * 50 + "学生管理系统" + “*” * 50)

1.2 成员操作符

s = 'hello westos'
print('westos' in s)		#True
print('westos' not in s)	#False
print('x' in s)				#False

1.3 正向索引和反向索引

s = 'westos'
print(s[0])		# w
print(s[3])		# t
print(s[-3]) 	# t

1.4 切片

回顾:
range(3):[0,1,2]
range(1,4):[1,2,3]
range(1,6,2):[1,3,5]

切片:切出一部分内容s[start:end:step]
s[:end]
s[start:]
总结:
s[:n]:拿出前n个元素
s[n:]:除了前n个元素,其他元素保留
s[:]:拿出全部元素
s[::-1]:倒序输出

s = 'hello westos'
print(s[1:3])	# el
print(s[:3])	# hel
print(s[:5])	# 打印前5个字符
print(s[1:])	# ello westos
print(s[:])		# 拷贝字符串
print(s[::-1])	#倒叙输出

1.5 for 循环访问

s = 'westos'
for item in s:
	print(f"第{}个字符:{item}")

1.7 练习

练习题:
用户输入一个字符串, 判断该字符串是否为回文字符串。

message = input("输入一个字符串:")
conver_mes = message[::-1]
if message == conver_mes:
    print(message + "是回文字符串")
else:
    print(message + "不是回文字符串")

在这里插入图片描述
在这里插入图片描述

s = input()
print("huiwen" if s == s[::-1] else "no huiwen")

2.字符串的判断和转换

2.1 类型判断

s = 'HelloWestos'
print(s.isalnum())	#True
print(s.isdigit())	#False
print(s.isupper())	#False

2.2 类型的转换

print('hello'.upper())
print('Hello'.lower())
print('Hello WOrld'.title())
print('HellO WOrld'.capitalize())
print('Hell) WOrld'.swapcase())

需求:用户输入Y或者y都继续执行代码
yum install httpd

choice = input('是否继续执行安装程序')
if choice.lower() == 'y':
	print("installing")

startswith

url = 'http://www.baidu.com'
if url.startswith('http'):
    # 具体实现爬虫,感兴趣的话可以看request模块。
    print(f'{url}是一个正确的网址,可以爬取网站的代码')

endswith:
常用的场景: 判断文件的类型

filename = 'hello.png'
if filename.endswith('.png'):
    print(f'{filename} 是图片文件')
elif filename.endswith('mp3'):
    print(f'{filename}是音乐文件')
else:
    print(f'{filename}是未知文件')

pycharm常用的快捷键:
如何查看方法的源代码和解释说明: ctrl键按住,
鼠标移动到你想要查看方法的位置,点击即可进入源码及方法说明

3.字符串的数据清洗

数据清洗的思路:
    lstrip: 删除字符串左边的空格(指广义的空格: \n, \t, ' ')
    rstrip: 删除字符串右边的空格(指广义的空格: \n, \t, ' ')
    strip: 删除字符串左边和右边的空格(指广义的空格: \n, \t, ' ')
    replace: 替换函数, 删除中间的空格, 将空格替换为空。replace(" ", )
   >>> " hello ".strip()
   'hello'
   >>> " hello ".lstrip()
   'hello '
   >>> " hello ".rstrip()
   ' hello'
   >>> " hel        lo ".replace(" ", "")
   'hello'

4.字符串的位置调整

>>> "学生管理系统".center(50)
'                      学生管理系统                      '
>>> "学生管理系统".center(50, "*")
'**********************学生管理系统**********************'
>>> "学生管理系统".center(50, "-")
'----------------------学生管理系统----------------------'
>>> "学生管理系统".ljust(50, "-")
'学生管理系统--------------------------------------------'
>>> "学生管理系统".rjust(50, "-")
'--------------------------------------------学生管理系统'
>>>

5.字符串的搜索和统计

>>> s = "hello westos"
>>> s.find("llo")
2
>>> s.index("llo")
2
>>> s.find("xxx")
-1
>>> s.index("xxx")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found
>>> # find如果找到子串, 则返回子串开始的索引位置。 否则返回-1
>>> # index如果找到子串,则返回子串开始的索引位置。否则报错(抛出异常).
>>>
>>> s.count("xxx")
0
>>> s.count("l")
2
>>> s.count("o")
2

6.字符串的分离和拼接

>>> ip = "172.25.254.100"
>>> # 需求:IP地址的合法性-将ip的每一位数字拿出, 判断每位数字是否在0-255之间。
>>> ip.split('.')
['172', '25', '254', '100']
>>> items = ip.split('.')
>>> items
['172', '25', '254', '100']
>>> # 拼接
>>> items
['172', '25', '254', '100']
>>> # 需求: 将四个数字用'-'拼接起来
>>> "-".join(items)
'172-25-254-100'
>>>

7.随机生成验证码

需求: 生成100个验证码, 每个验证码由2个数字和2个字母组成

>>> import random
>>> random.choice("0123456789")
'6'
>>> random.choice("0123456789") + random.choice('0123456789')
'84'
>>> random.choice("0123456789") + random.choice('0123456789') + random.choice('abcdef')
'16b'
>>> import string
>>> string.digits
'0123456789'
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> random.sample(string.ascii_letters, 4)
['z', 'N', 'u', 't']
>>> random.sample(string.ascii_letters, 4)
['c', 'q', 'X', 'f']
>>> random.sample(string.ascii_letters, 4)
['D', 'b', 'e', 'A']
>>> "".join(random.sample(string.ascii_letters, 4))
'aMUF'
>>> "".join(random.sample(string.digits, 2)) + "".join(random.sample(string.ascii_letters, 4))
'95sGFj'
>>> "".join(random.sample(string.digits, 2)) + "".join(random.sample(string.ascii_letters, 4))
'17TlIb'
>>> "".join(random.sample(string.digits, 2)) + "".join(random.sample(string.ascii_letters, 4))
'50uvqM'
>>> "".join(random.sample(string.digits, 2)) + "".join(random.sample(string.ascii_letters, 4))
'09MCDW'
>>> "".join(random.sample(string.digits, 2)) + "".join(random.sample(string.ascii_letters, 4))
'83Wntf'
>>> for i in range(100):
...     print("".join(random.sample(string.digits, 2)) + "".join(random.sample(string.ascii_letters, 4)))
...
53SJbP
83dRcm

8.小学生计算能力测试系统

8.1 基础版

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

1+2=?
3*6=?

import random

count = 10
right_count = 0
for i in range(count):
    num1 = random.randint(1, 10)
    num2 = random.randint(1, 10)
    symbol = random.choice(["+", "-", "*"])
    if symbol == "+":
        result = num1 + num2
    elif symbol == "-":
        result = num1 - num2
    elif symbol == "*":
        result = num1 * num2
    question = f"{num1} {symbol} {num2} = ?"
    print(question)
    user_answer = int(input("Answer:"))
    if user_answer == result:
        print("Right")
        right_count += 1
    else:
        print("Error")
print("Right percent: %.2f%%" %(right_count/count*100))

8.2改进版

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

1+2=?
3*6=?

import random

count = 10
right_count = 0
for i in range(count):
    num1 = random.randint(1, 10)
    num2 = random.randint(1, 10)
    symbol = random.choice(["+", "-", "*"])
    result = eval(f"{num1}{symbol}{num2}")
    question = f"{num1} {symbol} {num2} = ?"
    print(question)
    user_answer = int(input("Answer:"))
    if user_answer == result:
        print("Right")
        right_count += 1
    else:
        print("Error")
print("Right percent: %.2f%%" %(right_count/count*100))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值