Python第六次作业
01.求第n项的斐波那契数列值
#求第n项的斐波那契数列值
#1、1、2、3、5、8、13、21、34……
#F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)def shulie ():print("求第n项的斐波那契数列值:",end="")x=eval(input("")) list = [1,1]if x ==1 or x == 2:print(1)else:for i in range(3,x+1):F = list[i-3] + list[i-2]list.append(F)print(F)def call ():while True:shulie()call()
02.青蛙跳楼梯,每一次只能跳一个台阶或者两个台阶,注意,不允许倒退, 如果第N个台阶,请问有多少种跳法:
#青蛙跳楼梯,每一次只能跳一个台阶或者两个台阶,注意,不允许倒退,如果第N个台阶,请问有多少种跳法:
# 0个台阶 : 0种跳法 0--0
# 1个台阶 : 1种跳法 1--1
# 2个台阶 : 2种跳法 2--2
# 3个台阶 : 4种跳法 3--3
# 4个台阶 : 6种跳法 4--5
# 5个台阶 : 8种跳法 5--8
# F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
# 1、1、2、3、5、8、13、21、34……def jump ():list_1 = [1,1,2]print("青蛙跳楼梯,每一次只能跳一个台阶或者两个台阶,注意,不允许倒退,如果第N个台阶,请问有多少种跳法")num = int(input("请输入台阶数:"))if num == 0 or num == 1 or num == 2:print(f"{num}级台阶有{num}种跳法")else:for i in range(3,num+1):F = list_1[i-1] + list_1[i-2]list_1.append(F)print(f"{num}级台阶有{F}种跳法")print()def call ():while True:jump()call()
03.小明高考结束,成绩非常理想,父母为了奖励他,为他买了一对刚刚出生的兔子, 刚刚出生的兔子经过4个月成长为成年的兔子,就可以生小兔子, 假设成年兔子每月出生一对小兔子,问,第N月,共有多少对兔子, 假设所有不会死亡。
"""
小明高考结束,成绩非常理想,父母为了奖励他,为他买了一对刚刚出生的兔子,刚刚出生的兔子经过4个月成长为成年的兔子,就可以生小兔子,假设成年兔子每月出生一对小兔子,问,第N月,共有多少对兔子,假设所有不会死亡。
"""#第01个月:2-----------------------------------------2
#第02个月:2-----------------------------------------2
#第03个月:2-----------------------------------------2
#第04个月:2-----------------------------------------2
#第05个月:2 2---------------------------------------4
#第06个月:2 2 2-------------------------------------6
#第07个月:2 2 2 2-----------------------------------8
#第08个月:2 2 2 2 2---------------------------------10
#第09个月:2 2 2 2 2 2-------------------------------12
#
#第10个月:2 2 2 2 2 2 2 2---------------------------16
#第11个月:2 2 2 2 2 2 2 2 2 2 2---------------------22
#第12个月:2 2 2 2 2 2 2 2 2 2 2 2 2 2 2-------------30
#第13个月:2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2---40
#第14个月: 52
#n*2+3n+12def rabbit ():i = int(input("请输入月份:"))if 1 <= i <= 4:print(f"第{i}月共有1对兔子")print()if 4 < i < 10 :print(f"第{i}月共有{i-3}对兔子")print()if i >= 10:j = i -9n =( (j**2)+3*j+12)print(f"第{i}月共有{n}对兔子")print()def call ():while True:rabbit()call()
04.找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
#找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)def change ():list_1 = []list_2 = []list_3 = []for i in range(1,10001):if i % 5 == 0:list_1.append(i)if i % 6 == 0:list_2.append(i)list_1.extend(list_2)for j in list_1:if j % 5 == 0 and j % 6 != 0:list_3.append(j)if j % 5 != 0 and j % 6 == 0:list_3.append(j)list_3.sort()print(list_3)change()
05.写一个方法,计算列表所有偶数下标元素的和(注意返回值)
根据完整的路径从路径中分离文件路径、文件名及扩展名
#写一个方法,计算列表所有偶数下标元素的和(注意返回值) a = [1,2,3,4,5,6,7,8,9,10,11]
print(a)
print("列表所有偶数下标元素的和为:")def change ():num1 = 0for i in range(0,len(a)):if i % 2 == 0 :num1 += a[i]print(num1-1)def call ():change()path_separation()#根据完整的路径从路径中分离文件路径、文件名及扩展名
def path_separation ():path = input("请输入完整的路径:")file_path = path[0:path.rfind("\\")+1]file_name = path[path.rfind("\\")+1:]file_extension=path[path.rfind(".")+1:]print(f"文件的路径是:{file_path},文件名字是:{file_name},扩展名是:{file_extension}")call()
06.根据标点符号对字符串进行分行
#根据标点符号对字符串进行分行def separate ():a = input("请输入字符串:")punctuation = input("请输入要分行的标点符号:")a = a.split(f'{punctuation}')print(a)for i in range(0,len(a)):print(a[i])def call ():while True:separate()call()
07.去掉字符串数组中每个字符串的空格
#去掉字符串数组中每个字符串的空格def delete_space(n):a = n.replace(' ','')print(a)n = input('请输入一个带空格的字符串:')
delete_space(n)
08.随意输入你心中想到的一个书名,然后输出它的字符串长度。 (len()属性:可以得字符串的长度)
#随意输入你心中想到的一个书名,然后输出它的字符串长度。 (len()属性:可以得字符串的长度)def book_name ():book_name = input("随意输入你心中想到的一个书名:")print(f"{book_name}的字符串长度为:{len(book_name)}")print()def call ():while True:book_name()call()
09.两个学员输入各自最喜欢的游戏名称,判断是否一致,如 果相等,则输出你们俩喜欢相同的游戏;如果不相同,则输 出你们俩喜欢不相同的游戏。
#两个学员输入各自最喜欢的游戏名称,判断是否一致,如
#果相等,则输出你们俩喜欢相同的游戏;如果不相同,则输
#出你们俩喜欢不相同的游戏。game_name_a1 = list()
game_name_a2 = list()
def a1_input ():game_name_a1.append(input("请学员一输入游戏名:"))def a2_input ():game_name_a2.append(input("请学员二输入游戏名:"))def comparison ():if game_name_a2[0] == game_name_a1[0]:print("你们俩喜欢相同的游戏")else:print("你们俩喜欢不相同的游戏")def call ():a1_input()a2_input()comparison()call()
10.上题中两位同学输入 lol和 LOL代表同一游戏,怎么办?
#上题中两位同学输入 lol和 LOL代表同一游戏,怎么办?game_name_a1 = list()
game_name_a2 = list()
def a1_input ():game_name_a1.append(input("请学员一输入游戏名:"))def a2_input ():game_name_a2.append(input("请学员二输入游戏名:"))def comparison ():if game_name_a2[0].upper() == game_name_a1[0].upper():print("你们俩喜欢相同的游戏")else:print("你们俩喜欢不相同的游戏")def call ():a1_input()a2_input()comparison()call()
11.让用户输入一个日期格式如“2008/08/08”,将 输入的日 期格式转换为“2008年-8月-8日”。
#让用户输入一个日期格式如“2008/08/08”,将输入的日期格式转换为“2008年-8月-8日”。data_0 = input("请输入日期(格式如“2008/08/08):")
data_1 = data_0.split('/')
print(f"{data_1[0]}年-{data_1[1]}月-{data_1[2]}日")
12.接收用户输入的字符串,将其中的字符进行排序(升 序),并以逆序的顺序输出,“cabed”→"abcde"→“edcba”。
#接收用户输入的字符串,将其中的字符进行排序(升序),并以逆序的顺序输出,“cabed”→"abcde"→“edcba”。
def paixu ():string=str(input("请输入字符串:"))ls=list(string)ls.sort()ls1=''.join(ls)ls2=ls1[::-1]ls.reverse()print(f"升序输出的顺序为:{ls1}")print(f"逆序输出的顺序为:{ls2}")paixu()
13.接收用户输入的一句英文,将其中的单词以反序输 出,“hello c sharp”→“sharp c hello”。
#接收用户输入的一句英文,将其中的单词以反序输出,“hello c sharp”→“sharp c hello”。
def change(a):ls = a.split(" ")ls.reverse()list = ""for i in range(0,len(ls)) :list += ls[i] + " " return lista = input("请输入字符串:")
date = change(a)
print(date)
14.从请求地址中提取出用户名和域名
网易http://www.163.com?userName=admin&pwd=123456
#从请求地址中提取出用户名和域名http://www.163.com?userName=admin&pwd=123456
s = "http://www.163.com?userName=admin&pwd=123456"
ls = s.split("/")
s1 = ls[2]
print(s1)
ls2 = s1.split("?")
print("域名是:{}".format(ls2[0]))
s1 = ls2[1]
ls3 = s1.split("&")
s1 = ls3[0]
ls4 = s1.split("=")
print("用户名是:{}".format(ls4[1]))
15.有个字符串数组,存储了10个书名,书名有长有短,现 在将他们统一处理,若书名长度大于10,则截取长度8的 子串并且最后添加“...”,加一个竖线后输出作者的名字。
#有个字符串数组,存储了10个书名,书名有长有短,现在将他们统一处理,若书名长度大于10,则截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字。def a ():ls = ["马克思主义原理","高等数学","算法与数据结构","大学英语","离散数学66666666"]dir = {"马克思主义原理":"高等教育出版社","高等数学":"同济大学数学系","算法与数据结构":"严蔚敏","大学英语":"鲜瑞杰","离散数学66666666":"高等教育出版社"}for i in range(0,len(ls)):s = ls[i]if len(s) > 8:s = s[0:8]+"...|"+str(dir[ls[i]])ls[i] = sprint(ls)a()
16.让用户输入一句话,找出所有"呵"的位置。
#让用户输入一句话,找出所有"呵"的位置def find_all(string, sub):start = 0pos = []while True:start = string.find(sub, start)if start == -1:return pospos.append(start)start += len(sub)print(find_all(f'{input("请输入一段话:")}', f'{input("请输入要找的字:")}'))
17.让用户输入一句话,判断这句话中有没有邪恶,如果有邪 恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变 成”老牛很**”;
#让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变成”老牛很**”;def a ():b = input("请输入一段话:")for i in range(0,len(b)-1):if b[i] == '邪':if b[i+1] == '恶':b = b.replace("邪","*")b = b.replace("恶","*")breakprint(b)a()
18.如何判断一个字符串是否为另一个字符串的子串
"""
如何判断一个字符串是否为另一个字符串的子串 find()
index()
双层循环完成
??"""ss=input("请输入一个短的字符串:")
ls=input("请输入一个长的字符串:")
print (ss in ls)
19.如何验证一个字符串中的每一个字符均在另一个字符串中出现过
#如何验证一个字符串中的每一个字符均在另一个字符串中出现过s = input("请输入字符串A:")
s1 = input("请输入需要判断的字符串B:")
flag = True
for i in range(0,len(s1)):if s.find(s1[i]) == -1:flag = False
if flag:print("字符串B:{}的所有元素在A:{}内".format(s1,s))
else:print("字符串B:{}不是所有元素都在A:{}内".format(s1,s))
20.如何随机生成无数字的全字母的字符串
#如何随机生成无数字的全字母的字符串import string
import random
a = string.ascii_letters
a1 = ""
for i in range(1,11):a1 += random.choice(a)
print(a1)
21.如何随机生成带数字和字母的字符串
#如何随机生成带数字和字母的字符串import string
import randomdef create_string_number(n):m = random.randint(1, n)a = "".join([str(random.randint(0, 9)) for _ in range(m)])b = "".join([random.choice(string.ascii_letters) for _ in range(n - m)])return ''.join(random.sample(list(a + b), n))print(create_string_number(9))
22.判断一个字符是否是回文字符串(面试题) "1234567654321" "上海自来水来自海上"
#判断一个字符是否是回文字符串(面试题)
# "123456 7 654321"
# "上海自来 水 来自海上"def huiwen ():a = input("请输入一段字符串:")b = a[::-1]if a == b :print("是回文字符串")print()else :print("不是回文字符串")print()def call ():while True:huiwen()call()