python 字符串对象的使用习题练习一

文章目录

1、求第n项的斐波那契数列的值(n>=1)

def fab(n):
	if n==1 or n==2:
		return 1
	return fab(n-1)+fab(n-2)

print(fab(8))

在这里插入图片描述

2、小明考试非常好,妈妈为了奖励小明,给一对刚刚出生的兔子,

兔子可以经过四个月,可以长大称为成年的兔子,可以生育新的兔子,
假设成年兔子,每个月生一对小兔子,问,第n个月共有多少对兔子(加上兔子不死)
def rubbit(nums):
	if nums<5:
		return 1
	return rubbit(nums-1)+rubbit(nums-4)
print("兔子的个数为:%s"%(rubbit(10)))

在这里插入图片描述

3、给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数

def ls(nums):
	num1=0
	for i in range(0,len(nums)):
		num1 ^=i^nums[i]
	return num1
num2=[1,2,3,4,5,5,6]
a=ls(num2)
print("重复的元素是:%s"%(a))

在这里插入图片描述

4、找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)

def sum():
    for i in range(1,10000):
        if i % 5==0 or i % 6==0:
         print("10000以内能被5或6整除的数为:%s"%(i))
sum()

在这里插入图片描述


## 5、写一个方法,计算列表所有偶数下标元素的和(注意返回值)

```csharp
ls=[1,2,3,4,5,6,7,8,9,10]
ls2=[]
def nums(ls):
    for i in ls:
        if i % 2 == 0:
            ls2.append(i)
    return sum(ls2)
print("所有偶数下标元素的和为:%s"%(nums(ls)))

在这里插入图片描述

7、请使用函数完成选择、冒泡、插入三种排序

def select_sort(List1):
    ls1 = len(List1)
 
    for j in range(ls1):
        min_index = j
        for i in range(min_index , ls1):
            if List1[min_index] > List1[i]:
                min_index = i
        List1[j], List1[min_index] = List1[min_index], List1[j]
if __name__ == "__main__":
    ls = [9 , 16, 17, 15, 11]
    select_sort(ls)
    print("选择排序后的元素为:%s"%(ls))


# 冒泡
def bubble_sort(List2):
    n = len(List2)
    for i in range(0, n - 1):
        for j in range(0, n - i - 1):
            if List2[j] > List2[j + 1]:
                List2[j], List2[j + 1] = List2[j + 1], List2[j]
 
if __name__ == "__main__":
    ls2 = [9 , 16, 17, 15, 11]
    bubble_sort(ls2)
    print("冒泡排序后的元素为:%s"%(ls2))
        

# 插入
def insert_sort(List3):
    n = len(List3)
    for i in range(n):
        j = i
        while j > 0:
            if List3[j] < List3[j - 1]:
                List3[j], List3[j - 1] = List3[j - 1], List3[j]
            j -= 1
if __name__ == "__main__":
    ls3=[9 , 16, 17, 15, 11]
    insert_sort(ls3)
    print("插入排序后的元素为:%s"%(ls3))

在这里插入图片描述

8.根据完整的路径从路径中分离文件路径、文件名及扩展名

import os
path="G:\Python\练习.txt"
dir,file=os.path.split(path)
dir,ext=os.path.splitext(path)
print("路径为:%s"%(dir))
print("文件名为:%s"%(file))
print("文件扩展名为:%s"%(ext))

在这里插入图片描述

9.获取字符串中汉字的个数

import string
hanzi=str(input("请输入您想要输入的汉字:"))
hanzi_number=num_number=char_number=space_number=other_number=0 
for i in hanzi:
	if i in  string.ascii_letters:#中文字符
		hanzi_number+=1
	elif i.isdigit():#数字字符
		num_number+=1
	elif i.isspace():#空格
		space_number+=1
	elif i.isalpha():#英文单词
		char_number+=1
	else:
		other_number+=1
print("英文字符有{},汉字字符有:{} 数字字符有:{} 空格有:{} 特殊字符有:{}".format(hanzi_number,char_number,num_number,space_number,other_number))

在这里插入图片描述

10.将字母全部转换为大写或小写

en=str(input("请输入英文:"))
en1=en.upper()
en2=en.lower()
print('转换成大写字母为%s'%(en1))
print('转换成小写字母为%s'%(en2))

在这里插入图片描述

11.根据标点符号对字符串进行分行

en="我想出去玩:但是我的作业!!真的,好多、好多,呜呜呜呜。。。。怎么办!!"
en1=en.split(":")
print(en1)

在这里插入图片描述

12.去掉字符串数组中每个字符串的空格

ls=["好好学习""天天向上""good good study""day day up"]
ls2=str(ls)
ls2.strip()
print("去掉字符串数组中每个字符串的空格为:%s"%(ls2))

在这里插入图片描述

13.随意输入你心中想到的一个书名,然后输出它的字符串长度。 (len()属性:可以得字符串的长度)

bookname=str(input('请输入您喜欢的书籍名称:'))
sums=0
for i in bookname:
	sums+=1
	print("这本书的字符串长度为%s"%(len(bookname)))

在这里插入图片描述

14.两个学员输入各自最喜欢的游戏名称,判断是否一致,如果相等,则输出你们俩喜欢相同的游戏;如果不相同,则输出你们俩喜欢不相同的游戏。

user1=str(input('user1请输入您最喜欢的游戏名称:'))
user2=str(input('user2请输入您最喜欢的游戏名称:'))
game=[]
if user1==user2:
	game=user1=user2
	print("user1和user2最喜欢的游戏名称为:%s"%(game))
else:
	print("user1最喜欢的游戏名称为:%s"%(user1))
	print("user2最喜欢的游戏名称为:%s"%(user2))

在这里插入图片描述

15.上题中两位同学输入 lol和 LOL代表同一游戏,怎么办?

user1=str(input('user1请输入您最喜欢的游戏名称:'))
user2=str(input('user2请输入您最喜欢的游戏名称:'))
user3=user1.upper()
user4=user2.upper()
if user1.isalpha() or user2.isalpha():
	if user3==user4:
            print("user1和user2最喜欢的游戏名称为:%s"%(user3))
else:
	print("user1最喜欢的游戏名称为:%s"%(user1))
	print("user2最喜欢的游戏名称为:%s"%(user2))

在这里插入图片描述

16.让用户输入一个日期格式如“2008/08/08”,将 输入的日期格式转换为“2008年-8月-8日”。

datetimes=input("请输入日期:格式如下:xx/xx/xx:")
dt1=datetimes.split("/")
print("您输入的时间为:%s"%(dt1))
y="{}年-{}月-{}日".format(dt1[0],int(dt1[1]),int(dt1[2]))
print("转换后的日期格式为:%s"%(y))

在这里插入图片描述

17.接收用户输入的字符串,将其中的字符进行排序(升序),并以逆序的顺序输出,“cabed”→"abcde"→“edcba”。

en=str(input("请输入英文:"))
ls=list(en)
print("转换后的顺序为:%s"%(ls))
ls.sort()
en1=''.join(ls)
en3=en1[::-1]
ls.reverse()
print("输出的顺序为:%s"%(en1))
print("输出的顺序为:%s"%(en3))

在这里插入图片描述

18.接收用户输入的一句英文,将其中的单词以反序输出,“hello c sharp”→“sharp c hello”。

en=str(input("请输入英文:"))
en1=en.split(" ")
en2=en1[::-1]
en1.reverse()
print('倒序后输出为:{}'.format(en1))
en3=" "
for i in range(len(en2)):
	en3+=(en2[i]+" ")
print('倒序后输出为:{}'.format(en3))

在这里插入图片描述

19.从请求地址中提取出用户名和域名http://www.163.com?userName=admin&pwd=123456

http://www.163.com?userName=admin&pwd=123456
url="http://www.163.com?userName=admin&pwd=123456"
url[28:33]
url[0:18]

在这里插入图片描述

20.有个字符串数组,存储了10个书名,书名有长有短,现在将他们统一处理,若书名长度大于10,则截取长度8的子串并且最后添加“…”,加一个竖线后输出作者的名字。

ls=["法警队","世纪大和解","第三季度","实践活动","SDSSD","神鼎飞丹砂","大发发大发发发发阿发罚单收费","阿道夫","发哈东方航空","生地会考的还是"]
dir={"法警队":"123","世纪大和解":"456","第三季度":"789","实践活动":"1123","SDSSD":"11123","神鼎飞丹砂":"111213","大发发大发发发发阿发罚单收费":"xxxx","阿道夫":"zza123","发哈东方航空":"xas123","生地会考的还是":"dwqerew123"}
for i in range(0,len(ls)):
	s=ls[i]
	if len(s)>10:
		s = s[0:9]+"..._"+str(dir[ls[i]])
	ls[i]=s
print(ls)

在这里插入图片描述

21.让用户输入一句话,找出所有"呵"的位置。

user=str(input("请输入一句话并且带呵:"))
ls=[]
for i in range(0,len(user)):
    if user[i]=="呵":
        ls.append(i)
print("该句中所有呵的位置为:%s"%(ls))

在这里插入图片描述

22.让用户输入一句话,找出所有"呵呵"的位置。

user = input("请输入一句话并且带呵呵:")
ls = []
for i in range(0,len(user)-1):
    if user[i] == "呵" and user[i+1] =="呵":
        ls.append(i)
print("呵呵的位置是:{}".format(ls))  

在这里插入图片描述

23.让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变成”老牛很**”;

user = input("请输入一句话:")
for i in range(0,len(user)):
	print("替换后的句子为:{}".format(user.replace("邪恶","**")))

在这里插入图片描述

24.如何判断一个字符串是否为另一个字符串的子串

find()  
index()
双层循环完成
??
from sys import flags
ls1=str(input("请输入字符串:"))
ls2=str(input("请输入字符串:"))
flag=True
if ls1.find(ls2)!=-1:
	flag=False
if flag:
	print("字符串ls2在ls1内!!")
else:
	print("字符串ls2不在ls1内!!")

在这里插入图片描述

25.如何验证一个字符串中的每一个字符均在另一个字符串

中出现过
双层循环

from sys import flags
ls1=str(input("请输入字符串:"))
ls2=str(input("请输入需要判断的字符串:"))
flag=True
for i in range(0,len(ls2)):
   if ls1.find(ls2)!=-1:
	   flag=False
if flag:
	print("字符串ls2在ls1内!!{}".format(ls2,ls1))
else:
	print("字符串ls2不在ls1内!!{}".format(ls2,ls1))

在这里插入图片描述

26.如何随机生成无数字的全字母的字符串

import random
import string
s=string.ascii_letters
s1=""
for i in range(1,10):
	s1+=random.choice(s)
print("无数字的全字母的字符串为:%s"%(s1))

在这里插入图片描述

27.如何随机生成带数字和字母的字符串

import random
import string
s=string.ascii_letters+string.digits
s1=""
for i in range(1,10):
	s1+=random.choice(s)
print("无数字的全字母的字符串为:%s"%(s1))

在这里插入图片描述

28.如何判定一个字符串中既有数字又有字母

import string
user= input("输入一串字符串:")
if (user.isalnum()and not user.isalpha()) and not user.isdigit():
    print("字符串{}里包含数字和字母".format(user))
else:
    print("字符串{}里并不是既包含字母又包含数字".format(user))

在这里插入图片描述

29.字符串内的字符排序(只按字母序不论大小写)

user=str(input("请输入字符串:"))
s1 = user.lower()
ls = list(s1)
ls.sort()
s2  = " "
for i in range(0,len(ls)):
    s2 += ls[i]
print("字符串的排序为:%s"%(s2))

在这里插入图片描述

30.判断一个字符是否是回文字符串(面试题)

"1234567654321"
"上海自来水来自海上"
# 回文:就是正着读和倒着读是一模一样的
s = input('请输入一个字符串:')
if not s:
    print('请不要输入空字符串!')
    s = input('请重新输入一个字符串:')
a = reversed(list(s))
if list(a) == list(s):
    print('您所输入的字符串是回文')
else:
    print('您所输入的字符串不是回文')

在这里插入图片描述

31.磁盘遍历

import os
def get_files(path):
  # 判断路径是否存在,如果不存在,函数直接结束
  if not os.path.exists(path):
    print('路径不存在')
    return
  # 判断路径是否为文件夹
  if not os.path.isdir(path):
    print('路径是一个文件')
    return
  # 这时候,路径是一个文件夹
  # 获取文件夹中文件或文件夹的名称
  file_list = os.listdir(path)
  # 遍历文件夹
  for filename in file_list:
    # 拼接路径,获取每个次级目录下的文件路径
    subpath = os.path.join(path,filename)
    if os.path.isfile(subpath):
      if os.path.splitext(subpath)[1] == '.py':
        print('python文件:{}'.format(subpath))
    else:
      # 如果filename是文件夹,则调用函数继续遍历
      get_files(subpath)
get_files("G:\Python")

在这里插入图片描述

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值