Pycharm(十一):字符串练习题

1.输入一个字符串,打印所有偶数位上的字符(下标是0,2,4,6...位上的字符)

python 复制代码
# 练习题1:输入一个字符串,打印所有偶数位上的字符(下标是0,2,4,6...位上的字符)
# 1.键盘录入字符串,并接收.
s1=input('请输入一个字符串:')
# 2. 通过for循环,获取字符串中每个字符的索引。
for i in range(len(s1)):
#3.判断当前的索引值是否是偶数,如果是,就输出该字符。
    if i%2==0:
        print(s1[i])
#简化版:
for i in range(0,len(s1),2):
    print(s1[i])
print(s1[::2])

2:给定一个文件名,判断其尾部是否以".png"结尾

思路1.rfind() 子串在字符串中最后一次出现的位置

思路2.字符串切片

细节:两种极端情况

1)abc.txt.png.xlsx.png,所以不能直接用find

2)文件名为'.png',在某些项目开发中为非法的文件名,所以要判断字符串长度是否大于4

思路1.

python 复制代码
#1.定义变量,记录文件名
file_name='abc.png.txt.png'
file_name='.png'
# 思路1.rfind() 子串在字符串中最后一次出现的位置 abc.png.txx.png
#细节:考虑直接写.png这种情况,它不是合法的文件名
if file_name.rfind('.png')==len(file_name)-4 and len(file_name)>4:
    print(f'文件名{file_name}是以.png结尾的')
else:
    print(f'文件名{file_name}不是以.png结尾的')

思路2.

python 复制代码
file_name='.png'
#思路2.切片实现
if file_name[-4:]=='.png' and len(file_name)>4:
    print(f'文件名{file_name}是以.png结尾的')
else:
    print(f'文件名{file_name}不是以.png结尾的')
print('-'*40)

3.模拟用户登录,只给3次机会

python 复制代码
#1.定义变量,记录正确的账号和密码,注意:这里只是模拟,实际开发中,这样的数据是存储在数据库中的。
user_name,password='adm01','pwd111'
#2.因为不知道用户多少次能录入正确,用循环,因为次数固定,所以用for循环
for i in range(3):
    #3.提示用户录入账号、密码,并接收
    user_input=input("请输入您的账号:")
    pwd_input=input("请输入您的密码:")
    #4. 判断是否登录成功
    if user_input==user_name and password==pwd_input:
        print(f'登录成功,欢迎您:{user_name}')
        break
    else:
        # #走这里,说明登录失败,判断是否还有试错机会
        # if i==2:
        #     print('账号或密码录入错误次数已达上限,请与管理员联系!')
        # else:
        #     print(f'账号或密码错误,您还有{2-i}次机会,请重新录入!')
        print('账号或密码录入错误次数已达上限,请与管理员联系!' if i==2 else f'账号或密码错误,您还有{2-i}次机会,请重新录入!')

4.字符串反转3种实现方法

需求:键盘录入一个字符串,对其内容进行反转,并打印结果。

思路1.切片

python 复制代码
#1.提示用户录入字符串,并接受
s1=input('请输入一个字符串:')
#思路1.使用切片
s2=s1[::-1]
print(f'反转后的字符串为:{s2}')

思路2.把字符串转成列表,然后交换列表交换 列表 可变数据类型,交换次数为列表总长的一半,首尾交换,索引i和列表长度-i交换。

单变量

如图所示,核心就是将索引为i和len(s)-1-i的两个元素进行交换,长度为len(s)//2

若len(s)为奇数,则中位数的元素不动,其它的元素全部交换一遍;

若len(s)为偶数,则所有的元素全部首尾交换一遍

python 复制代码
#思路2.把字符串转成列表,然后交换列表交换  列表 可变数据类型,交换次数为列表总长的一半,首尾交换,索引i和列表长度-i交换
list1=list(s1)
n=len(list1)
for i in range(n//2):
    list1[i],list1[n-1-i]=list1[n-1-i],list1[i]
# s2=str(list1)
s3=''.join(list1)
print(f'反转后的字符串为:{s3}')

思路3.把字符串转成列表,然后交换列表交换 完成列表首尾交换,即start和end交换

引入双变量,对应的start和end,start向后移动,end向前移动,直到start>=end时,跳出循环

python 复制代码
#思路3.把字符串转成列表,然后交换列表交换  完成列表首尾交换,即start和end交换
list2=list(s1)
i=0
j=len(list2)-1
while i<j:
    list2[i],list2[j]=list2[j],list2[i]
    i=i+1
    j=j-1
s4=''.join(list2)
#打印反转后的结果
print(f'反转后的字符串为:{s4}')
相关推荐
一个java开发9 小时前
distributed.client.Client 用户可调用函数分析
大数据·python
eqwaak09 小时前
Matplotlib 动态显示详解:技术深度与创新思考
网络·python·网络协议·tcp/ip·语言模型·matplotlib
007php0079 小时前
某大厂MySQL面试之SQL注入触点发现与SQLMap测试
数据库·python·sql·mysql·面试·职场和发展·golang
CodeCraft Studio9 小时前
Excel处理控件Aspose.Cells教程:使用 Python 将 Pandas DataFrame 转换为 Excel
python·json·excel·pandas·csv·aspose·dataframe
flashlight_hi10 小时前
LeetCode 分类刷题:2563. 统计公平数对的数目
python·算法·leetcode
java1234_小锋10 小时前
Scikit-learn Python机器学习 - 特征预处理 - 归一化 (Normalization):MinMaxScaler
python·机器学习·scikit-learn
星空的资源小屋10 小时前
网易UU远程,免费电脑远程控制软件
人工智能·python·pdf·电脑
IMER SIMPLE10 小时前
人工智能-python-深度学习-神经网络-MobileNet V1&V2
人工智能·python·深度学习
eleqi10 小时前
Python+DRVT 从外部调用 Revit:批量创建楼板
python·系统集成·revit·外部调用·drvt·自动化生产流水线
咖啡Beans11 小时前
Python工具DrissionPage推荐
后端·python