01-homework
1.输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)
1.
str1 = 'abcd1234'
str2 = ''
index_ = 1
for index_ in range(1,len(str1),2):
str2 = str2 + str1[index_]
print(str2)
2.
str1 = 'abcd1234'
print(str1[1::2])
2.输入用户名,判断用户名是否合法(用户名长度6~10位)
1.
while True:
str1 = input('请输入用户名:')
length = len(str1)
print(len(str1))
if 6 <= length <= 10:
print('输入正确!')
break
else:
print('输入错误,请重新输入!')
2.
name = 'fdgh8765'
if 6 <= len(name) <= 10:
print('用户名合法')
else:
print('用户名非法')
3.输入用户名,判断用户名是否合法(用户名中只能由数字和字母组成)
str1 = input('请输入一个字符串:')
for i in str1:
if not ('0' <= i <= '9' or 'a' <= i <= 'z' or 'A' <= i <= 'Z') :
print('不合法')
break
else:
print('合法')
4.输入用户名,判断用户名是否合法(用户名必须包含且只能包含数字和字母,并且第一个字符必须是大写字母)
1.
username = input('用户名:')
for i in username:
if not (('A' <= username[0] <= 'Z') and ('0' <= i <= '9') or ('a' <= i <= 'z' or 'A' <= i <= 'Z')):
print('不合法')
break
else:
print('合法')
2.
name = 'A4567.'
count_ = 0
if 'A' <= name[0] <= 'Z':
for i in name[1:]:
if 'A' <= i <= 'Z' or 'a' <= i <= 'z':
continue
elif '0' <= i <= '9':
count_ += 1
else:
print('用户名非法')
break
else:
result = '用户名合法' if count_ else '用户名非法'
print(result)
else:
print('用户名非法')
3.
admin = input('请输入用户名:')
if 'A' <= admin[0] <= 'Z':
for i in admin[1 : ]:
'0' < i < '9'
continue
print('合法')
else:
print('不合法')
else:
print('不合法')
5.输入一个字符串,将字符串中所有的数字字符取出来产生一个新的字符串
str1 = 'abc1shj23kls99+2kkk'
str2 = ''
for i in str1:
if '0' <= i <= '9':
str2 += i
print(str2)
6.输入一个字符串,将字符串中所有的小写字母变成对应的大写字母输出 (用upper方法和自己写算法两种方式实现)
例如: 输入’a2h2klm12+’ 输出 ‘A2H2KLM12+’
1.
str1 = input('请输入一个字符串:')
str2 = str1.upper()
print(str2)
2.
str1 = input('请输入一个字符串:')
str2 =''
for i in str1:
if 'a' <= i <='z':
i = chr(ord(i) - 32)
str2 += i
else:
str2 += i
print(str2)
7.输入一个字符串,统计字符串中非数字非字母的字符的个数
例如: 输入’anc2+93-sj胡说’ 输出:4 输入’===’ 输出:3
1.
str1 = input('请输入一个字符串:')
num = 0
for i in str1:
if '1' <= i <= '9' or 'a' <= i <= 'z' or 'A' <= i <= 'Z':
pass
else:
num += 1
print(f'字符串非数字非字母的个数为{num}')
2.
str1 = 'anc2+93-sj胡说'
count_ = 0
for i in str1:
if not ('0' <= i <= '9' or 'A' <= i <= 'Z' or 'a' <= i <= 'z'):
count_ += 1
print(count_)
9.输入字符串,获取字符串的中间字符
例如: 输入**‘abc1234’** 输出:‘1’ 输入**‘abc123’** 输出**‘c1’**
1.
str1 = input('请输入一个字符串:')
str2 = ''
if len(str1) % 2 == 0:
str2 = str1[len(str1) // 2 - 1] + str1[len(str1) // 2]
print(str2)
else:
print(str1[len(str1)//2],type(str1[len(str1)//2]))
2.
str1 = 'abc1234'
str1 = 'abc123'
lenght = len(str1)
if lenght % 2 == 0:
right = lenght // 2
left = right - 1
print(str1[left] + str1[right])
else:
print(str1[lenght // 2])
11.获取两个字符串中公共的字符
1.
str1 = 'abcaaa123'
str1_ = ''
str2 = 'huak3'
str2_ = ''
str3 = ''
for i in str1:
if i not in str1_
str1_ += i
print(str1_)
for j in str2:
if j not in str2_
str2_ += j
print(str2_)
for x in str1_:
for y in str2_:
if x == y:
str3 += x
print(str3)
2.
str1 = 'abcaaa123'
str2 = 'huak3'
str3 = ''
for i in str2:
if i in str1:
str3 += i
print(str3)
02-review
1.冒泡排序。四条规则。
2.字符串性质、概念、组成。
3.字符串的拼接、重复、成员运算、比较大小
ASCII码表和Unicode码表。
chr()、ord()
4.循环遍历、下标、切片。
5.大小写转换四个方法
03-字符串相关方法
str1 = '12345'
str2 = 'abcde'
str3 = 'abc123'
str4 = 'abc123...'
isdigit:判断字符串是不是一个数字字符串,返回True或False
print(str1.isdigit(), str2.isdigit(), str3.isdigit(), str4.isdigit())
isalpha:判断字符串是不是一个字母字符串,返回True或False
print(str1.isalpha(), str2.isalpha(), str3.isalpha(), str4.isalpha())
isalnum:判断字符串是否是数字字符串或字母字符串或数字-字母字符串,返回True或False
print(str1.isalnum(), str2.isalnum(), str3.isalnum(), str4.isalnum())
对齐:ljust、rjust、center等价于<、>、^
str5 = '分隔符'
print(str5.center(10, '*'))
print(str5.ljust(10, '*'))
print(str5.rjust(10, '*'))
验证字符串开头或结尾是否符合要求:startswith\endswith
tel = '135456789076'
print(tel.startswith('135'))
print(tel.endswith('1111'))
if '/cj/2022/08-30/9840009.shtml'.startswith('https://www.chinanews.com.cn') == False:
print('https://www.chinanews.com.cn' + '/cj/2022/08-30/9840009.shtml')
print('/cj/2022/08-30/9840009.shtml')
str():构造器语法:将其他数据类型转为字符串
for i in range(1, 1000):
# print(str(i),type(str(i)))
lenght = len(str(i))
# print(lenght)
numSum = 0
for j in str(i):
numSum += int(j) ** lenght
if numSum == i:
print(f'{i}是阿姆斯特朗数')
split:切割,将字符串按照指定的符号进行切割,没有被切掉的元素被添加到一个列表中。
str1 = '123,000'
list1 = str1.split(',')
print(list1)
join():按照指定的间隔符将容器中的字符串拼接到一起(前提:容器中所有元素必须都是字符串)
str2 = '+'.join(list1)
print(str2)
str3 = ''.join(list1)
print(str3)
replace:替换,将新字符串替换到旧字符串的位置
字符串.replace(oldStr, newStr, 替换次数(不写表示全部))
str1 = '123,000'
print(str1.replace(',', ''))
print(str1.replace('0', '+', 1))
print('*' * 20)
strip():默认将字符串两端中的空白符号去掉(空白符号包括:空格、换行等)
strip():可以指定去除字符串两端的哪些符号
str1 = '\n ab\tcd \n'
print(str1)
print('*' * 20)
print(str1.strip())
print('*' * 20)
print(str1.strip(' '))
print('*' * 20)
手机号、身份证号、银行卡号等不需要参与计算的数字符号作为字符串存储。
tel = '13556789012'
print(tel.replace(tel[3:7], len(tel[3:7]) * '*'))
王者荣耀屏蔽不文明用语原理。
1.人为收集不文明用语。“卧槽”、“臣卜木曹”
2.根据玩家输入的一句话去识别。
3.检测到,进行*替换,将替换完的结果输出
list1 = ['卧槽', '臣卜木曹', '菜鸡', '辣鸡', '垃圾']
content = '卧槽,你可真菜,菜鸡!!!'
for i in list1:
content = content.replace(i, '*' * len(i))
print(content)
count:判断某个元素在字符串中出现次数。
index、rindex
index:从左向右在字符串中查找某个符号第一次出现的位置(下标);可以指定从哪个位置开始查找。找不到报错。
rindex:从右向左查找元素第一次出现的位置,返回正向下标。找不到报错。
find、rfind
find:从左向右在字符串中查找某个符号第一次出现的位置(下标);可以指定从哪个位置开始查找。找不到返回-1
rfind:从右向左查找元素第一次出现的位置,返回正向下标。找不到返回-1
content = '卧槽,你可真菜,菜鸡!!!'
print(content.index('菜'))
print(content.index('菜', 7))
print(content.rindex('菜'))
print(content.find('菜'))
print(content.find('菜', 7))
print(content.rfind('菜'))
for i in range(50):
string = '*' * i
print(f'\r{string}',end='')
04-转义字符
是字符串的一种,是具有特殊含义的字符串。
1.概念
在很久之前,转义字符是反斜杠\加上ASCII码表中的数字(一般是八进制数字)组成的有特殊含义的字符。
在C语言中规定反斜杠\加上ASCII码表中部分符号组成有特殊含义的字符,python使用的是C语言对应的形式。
2.常见的转义字符
\n:换行,将鼠标光标移动到下一行开头。
\t:制表符tab键,能够对齐字符串,\t的宽度不一定为四个空格,\t的长度 = 8 - 字符串长度 % 8
\r:将鼠标光标移动到本行开头
‘、"、\表示没有特殊含义的’、"、\自身
str1 = 'ab\'cd'
3.转义字符的长度
转义字符的长度为1
print(len(‘\n\t’))
4.操作系统:
mac、linux、windows三大操作系统的换行符号各不相同。
windows换行为\r\n
mac换行为\r
linux换行为\n
5.反斜杠\
str1 = 'ab\ncd'
print(str1)
str2 = 'ab\tcd'
str3 = 'abc\tde'
str4 = 'abc\tdef'
print(str2)
print(str3)
print(str4)
for i in range(10):
print(f'\r{i}', end='')
使用\r实现进度条
from time import sleep
lenght = 50
for i in range(lenght):
# 进度条的空白槽
a = (lenght - i) * ' '
# 进度条的进度
b = '*' * i
print(f'\r|{b}{a}|', end='')
sleep(0.5)
05-原始字符串
1.概念
在字符串前面添加r或者R,就被叫做原始字符串。
2.作用
将字符串中具有特殊含义的符号变得没有意义。
str1 = 'D:\\n\\t\\r......'
str2 = r'D:\n\t\r......'
print(str1)
print(str2)
应用场景:正则表达式、代码中引入文件路径等
06-如何安装三方模块
Python安装三方模块三种方式:
1.可视化安装。
windows操作系统:File -> settings -> Project:项目名 -> Python Interpreter
Mac系统:PyCharm -> Preferences -> Project:项目名 -> Python Interpreter
2.根据提示自动安装
import requests
3.使用命令安装
(1).打开Terminal终端
(2).仅对Windwos而言:激活虚拟环境
cd 命令:切换文件夹
A.使用cd命令进行文件夹切换,直到路径下子文件夹为venv为止
B.使用命令 ./venv/Scripts/activate 激活虚拟环境
Windows默认会报错,因为微软仅用了策略组,使用链接https:/go.microsoft.com/fwlink/?Link ID=135170中的
命令Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser解除禁用(一次修改,永久生效)
再次重新输入./venv/Scripts/activate
(3).使用pip/pip3安装模块
手动修改镜像源。
windwos系统:pip config set global.index-url https://pypi.douban.com/simple
mac系统:pip3 config set global.index-url https://pypi.douban.com/simple
pip install selenium
pip3 install selenium
07-进度条模块
from tqdm import tqdm
for i in tqdm(range(1, 100000001), desc='这是一个进度条'):
pass
有进度条不能有输出,有输出不能有进度条。