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+12

def 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 -9
       n =( (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 = 0
    for 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 list
 
 
a = input("请输入字符串:")
date = change(a)
print(date)
 

 

14.从请求地址中提取出用户名和域名

网易icon-default.png?t=O83Ahttp://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] = s
   print(ls)

a()

 

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

#让用户输入一句话,找出所有"呵"的位置
 
def find_all(string, sub):
    start = 0
    pos = []
    while True:
        start = string.find(sub, start)
        if start == -1:
            return pos
        pos.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("恶","*")
                break
    print(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 random

def 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()