python第六七天作业

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

def fbnq(n):
    if n < 1:
        return -1
    if (1 == n) or (2 == n):
        return 1
    return fbnq(n-1) + fbnq(n-2)
def main():
    n = int(input("请输入求解第几项: "))
    result = fbnq(n)
    print("结果为%d"%result)
if __name__=='__main__':
    main()

在这里插入图片描述
作业2:小明考试非常好,妈妈为了奖励小明,给一对刚刚出生的兔子,
兔子可以经过四个月,可以长大称为成年的兔子,可以生育新的兔子,
假设成年兔子,每个月生一对小兔子,问,第n个月共有多少对兔子(加上兔子不死)

def rubbit(nums):
	if nums<5:
		return 1
	return rubbit(nums-1)+rubbit(nums-4)
def main():
    nums = int(input("请输入共养几个月: "))
    result = rubbit(nums)
    print("结果为%d"%result)
if __name__=='__main__':
    main()

在这里插入图片描述
作业3:给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),
可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数

def get_num_duplicate(nums):
	temp = 0
	for i in range(0, len(nums)):
		temp ^= i ^ nums[i]
	return temp
if __name__ == '__main__':
	nums = [1,2,8,3,4,5,6,7,8]
	d = get_num_duplicate(nums)
	print(f"数组中重复的是{d}")

在这里插入图片描述
(选做题):
某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),
问题:共有多少种走法?

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

checkerboard = [
	[0, 0, 0, 0, 0, 0, 0, 0]
	[0, 0, 0, 0, 0, 0, 0, 0]
	[0, 0, 0, 0, 0, 0, 0, 0]
	[0, 0, 0, 0, 0, 0, 0, 0]
	[0, 0, 0, 0, 0, 0, 0, 0]
	[0, 0, 0, 0, 0, 0, 0, 0]
]
def board(arr):
	if arr is None:
		return 0
	if len(arr) == 1 and len(arr[0]) == 1:
		return 1
	for i in range(len(arr[0])):
		arr[0][i] = 1
	for i in range(len(arr)):
		arr[i][0] = 1
	for i in range(1, len(arr)):
		for j in range(1, len(arr[0])):
			arr[i][j] = arr[i - 1][j] + arr[i][j - 1]
 
	return arr[len(arr) - 1][len(arr[0]) - 1]
if __name__ == '__main__':
	ls = [
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
	]
	count = board(ls)
	print(f"从左上角开始走,到右下角,共有{count}种走法")

在这里插入图片描述
4、找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)

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

在这里插入图片描述
5、写一个方法,计算列表所有偶数下标元素的和(注意返回值)

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

在这里插入图片描述
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 = [5, 10, 16, 18, 7]
    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 = [5, 10, 16, 18, 7]
    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=[5, 10, 16, 18, 7]
    insert_sort(ls3)
    print("插入排序后的元素为:%s"%(ls3))

在这里插入图片描述
8.根据完整的路径从路径中分离文件路径、文件名及扩展名

import os
path="E:\Python\练习.py"
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=char_number=0 
for i in hanzi:
	if i in  string.ascii_letters:
		hanzi_number+=1
	elif i.isalpha():
		char_number+=1
print("汉字字符有:{}".format(char_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=["好好学习" "天天向上"]
ls1=str(ls)
ls1.strip()
print("去掉字符串数组中每个字符串的空格为:%s"%(ls1))

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

bookname=str(input('请输入您喜欢的书籍名称:'))
nums=0
for i in bookname:
	nums+=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请输入您最喜欢的游戏名称:'))
game=[]
user3=user1.upper()
user4=user2.upper()
if user3==user4:
	game=user3=user4
	print("user1和user2最喜欢的游戏名称为:%s"%(game))
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))
dt2="{}年-{}月-{}日".format(dt1[0],int(dt1[1]),int(dt1[2]))
print("转换后的日期格式为:%s"%(dt2))

在这里插入图片描述
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
s = "http://www.163.com?userName=admin&pwd=123456"
ls = s.split("/")
s1 = ls[2]
ls2 = s1.split("?")
print("域名是:{}".format(ls2[0]))
s1 = ls2[1]
ls3 = s1.split("&")
s1 = ls3[0]
ls4 = s1.split("=")
print("用户名是:{}".format(ls4[1]))
print("域名是:{},用户名是:{}".format(s[s.rfind("/")+1:s.find("?")],s[s.find("=")+1:s.find("&")]))

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

ls=["西游记","三国演义","水浒传","红楼梦","LOL","CF","啊啊啊啊啊啊啊啊啊啊啊啊啊啊","高数","面向对象程序设计语言py","聊斋"]
dir={"西游记":"123","三国演义":"123","水浒传":"123","红楼梦":"123","LOL":"123","CF":"123","啊啊啊啊啊啊啊啊啊啊啊啊啊啊":"123","高数":"123","面向对象程序设计语言py":"123","聊斋":"123"}
for i in range(0,len(ls)):
	s=ls[i]
	if len(s)>10:
		s = s[0:8]+"...|"+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("请输入一句话:")
print("替换后的句子为:{}".format(user.replace("邪恶","**")))

在这里插入图片描述
24.如何判断一个字符串是否为另一个字符串的子串
find()
index()
双层循环完成
??

ls1=str(input("请输入字符串:"))
ls2=str(input("请输入字符串:"))
def find_zfc(ls1,ls2):
	if ls1.find(ls2) >= 0:
		print(f"{ls2}{ls1}的子串")
	else:
		print("不是字串")
find_zfc(ls1,ls2)

在这里插入图片描述
25.如何验证一个字符串中的每一个字符均在另一个字符串
中出现过
双层循环

ls1=str(input("请输入字符串ls1:"))
ls2=str(input("请输入需要判断的字符串ls2:"))
def find_zfc(ls1):
	list_ls = list(ls1)
	for index in range(0,len(ls1)):
		for i in range(0,len(list_ls)):
			if ls1[index] == list_ls[i]:
				print(f"{ls1[index]}存在{ls1}中")
			else:
				pass
find_zfc(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
from os import path


def scanner_file(url):
	"""
		指定path路径,遍历该路径下所有文件和文件夹
		将所有文件都打印显示出来(显示绝对路径)
	"""
	dir_list = os.listdir(url)
	for filename in dir_list:
		# real_url = url + os.sep + filename
		real_url = path.join(url, filename)
		
		if path.isfile(real_url):
			print(path.abspath(real_url)) and real_url.endswith(".py")
		elif path.isdir(real_url):
			scanner_file(real_url)
if __name__ == '__main__':
	scanner_file("E:/")
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值