python第六、七天作业

作业1:求第n项的斐波那契数列的值(n>=1)
def z(a):
    y1 = 1
    y2 = 1
    y3 = 1
    if a == 1 or a == 2:
        return 1
    while a > 2:
        y3 = y1 + y2
        y1 = y2
        y2 = y3
        a =a - 1
    return y3


b=int(input("请输入项数:"))
print(z(b))


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

def z(a):
    if a <= 4:
        return 2
    return z(a - 1) + z(a - 4)


b=int(input("请输入月数:"))
print("兔子有{}对".format(z(b)))
    


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

def z(a):
    b = 0
    for x in range(0,len(a)):
        b ^= x ^ a[x]
    return b 

b=[1,2,3,4,5,5,6,7,8,9]
print(z(b))

(选做题):
    某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),
    问题:共有多少种走法?
    
    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 z(a):
    if a is None:
        return 0
    if len(a) == 1 and len(a[0]) == 1:
        return 1
    for i in range(len(a[0])):
        a[0][i] = 1
    for i in range(len(a)):
        a[i][0] = 1
    for i in range(1, len(a)):
        for j in range(1, len(a[0])):
            a[i][j] = a[i - 1][j] + a[i][j - 1]
    return a[len(a) - 1][len(a[0]) - 1]


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],
    ]
z(ls)
print(f"共有{z(ls)}种走法")

 

4、找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
def z():
    ls=[]
    ls2=[]
    for x in range(1,10000):
        if x % 5 == 0 or x % 6 == 0:
            ls.append(x)    
    b=list(set(ls))    
    b.sort()
    print(b)    

z()    


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

def z():
    ls = [1,2,3,4,5,6,7,8,9,10] 
    x = 0
    sum = 0
    while x < len(ls):
        if x % 2 == 0 :
            sum = sum + ls[x]
        x += 1
    return sum

print(z())  

 

7、请使用函数完成选择、冒泡、插入三种排序
冒泡排序
def z(a):
    n = len(a)
    for i in range(0, n - 1):
        for j in range(0, n - i - 1):
            if a[j] > a[j + 1]:
                a[j], a[j + 1] = a[j + 1], a[j]
 
b = [0,9, 8, 7, 6, 5, 4, 3, 2, 1]
print(b)
z(b)
print(b)


选择排序
def z(a):
    l = len(a)
    for j in range(l):
        m = j
        for i in range(m + 1, l):
            if a[m] > a[i]:
                m = i
        a[j], a[m] = a[m], a[j]
 
b = [0,9, 8, 7, 6, 5, 4, 3, 2, 1]
print(b)
z(b)
print(b)
 
 
# 插入排序
def z(a):
    n = len(a)
    for i in range(n):
        j = i
        while j > 0:
            if a[j] < a[j - 1]:
                a[j], a[j - 1] = a[j - 1], a[j]
            j -= 1
 
 
b = [0,9, 8, 7, 6, 5, 4, 3, 2, 1]
print(b)
z(b)
print(b)
 

 

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

def z(s):
    b=s.split("\\")    
    print(b)
    i = 0
    y=b[-1]
    y=y.split(".")
    print(y)
        
a=input("请输入要切片的路径:")
z(a)


9.获取字符串中汉字的个数  
import string
def z(a):
    county=0
    countz=0

    for s in a:
        if(s in string.ascii_letters):
            county+=1
        elif(s.isalpha()):
            countz+=1
    print("中文字符:", countz)
   

b=input("请输入字符串:")
z(b)

10.将字母全部转换为大写或小写
def z(a):
    c=a.upper()
    d=a.lower()
    print("全大写:",c)  
    print("全小写:",d)
    
b=input("请输入字母:")
z(b)

 

11.根据标点符号对字符串进行分行
def z(a):
    h="https://blog.csdn.net/weixin_59328152/article/details"
    c=h.split(a)
    print(c)
    
s="https://blog.csdn.net/weixin_59328152/article/details"
print("需要分行的字符串:",s)
b = input("请输入你所指定的标点符号:")
z(b)


12.去掉字符串数组中每个字符串的空格
def z(a):
    b=a.replace(" ","")
    print(b)

s=input("请输入一串带空格的字符串:")
z(s)


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


s=input("请输入书名:")
z(s)

 

14.两个学员输入各自最喜欢的游戏名称,判断是否一致,如果相等,则输出你们俩喜欢相同的游戏;如果不相同,则输出你们俩喜欢不相同的游戏。
def z(a1,a2):
    if a1 == a2:
        print("你们俩喜欢相同的游戏")
    elif a1 != a2:
        print("你们俩喜欢不相同的游戏")
    

s1=input("请第一位同学输入游戏名称:")
s2=input("请第二位同学输入游戏名称:")
z(s1,s2)

 

15.上题中两位同学输入 lol和 LOL代表同一游戏,怎么办?
def z(a1,a2):
    a1 = a1.upper()
    a2 = a2.upper()
    if a1 == a2:
        print("你们俩喜欢相同的游戏")
    else:
        print("你们俩喜欢不相同的游戏")
    
    
s1=input("请第一位同学输入游戏名称:")
s2=input("请第二位同学输入游戏名称:")
z(s1,s2)


16.让用户输入一个日期格式如“2008/08/08”,将 输入的日期格式转换为“2008年-8月-8日”。
def z(a):
    b=a.split("/")
    print("转换后时间为:{}年-{}月-{}日".format(int(b[0]), int(b[1]), int(b[2])))

s="2008/08/08"
print("转换前时间:",s)
z(s)

 

17.接收用户输入的字符串,将其中的字符进行排序(升序),并以逆序的顺序输出,“cabed”→"abcde"→“edcba”。
def z(a):
    b=list(a)
    b.sort()
    l1 = ''.join(b)
    print(l1)
    b.reverse()
    l2=''.join(b)
    print(l2)


s=input("请输入字符串:")
z(s)


18.接收用户输入的一句英文,将其中的单词以反序输出,“hello c sharp”→“sharp c hello”。
def z(a):
    b=a.split(" ")
    c=b[::-1]
    d=" ".join(c)
    print(d)

s=input("请输入一句英文:")
z(s)

 

19.从请求地址中提取出用户名和域名
http://www.163.com?userName=admin&pwd=123456
def z(a):
    yuming = a[:a.find("?")]
    user = a[a.find("=") + 1:a.find("&")]
    print("域名为:",yuming)
    print("用户名为:",user)

    
s=input("请输入网址:")
z(s)

 

20.有个字符串数组,存储了10个书名,书名有长有短,现在将他们统一处理,若书名长度大于10,则截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字。
def z():
    a = ["谁动了我的奶酪","把信送给加西亚","我的世界没能和你在一起","活着"] 
    b = {"谁动了我的奶酪":"斯宾塞·约翰逊","把信送给加西亚":"阿尔伯特·哈伯德","我的世界没能和你在一起":"马利华","活着":"萧红"} 
    for i in range(0,len(a)):
        s = a[i]
        if len(s) > 10:
            s = s[0:9]+"..._"+str(b[a[i]])
            a[i] = s
    print(a)


z()


21.让用户输入一句话,找出所有"呵"的位置。
def z(a):
    b=[]
    for x in range(0,len(a)):
        if a[x]=="呵":
            b.append(x)
    print("呵的位置为:",b)

   
s=input("请输入一句话:")
z(s)

 

22.让用户输入一句话,找出所有"呵呵"的位置。
import string
def z(a):
    b=[]
    for x in range(0,len(a)-1):
        if a[x]=="呵" and a[x+1]=="呵":
            b.append(x)
            b.append(x+1)
    print("呵呵的位置为:",b)

   
s=input("请输入一句话:")
z(s)

 

23.让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变成”老牛很**”;
def z(a):
    b=len(a)
    for x in range(0,b):
        if a[x]=="邪" and a[x+1]=="恶":
            a=a.replace("邪","*")
            a=a.replace("恶","*")
    print(a)

       
s=input("请输入一句话:")
z(s)

 

24.如何判断一个字符串是否为另一个字符串的子串 
    find()  
    index()
    双层循环完成

def z(a1,a2):
    if a1.find(a2) != -1:
        flag = False
    if flag==True:
            print("字符串{}不是{}的子串".format(a2, a1))
    else:
        print("字符串{}是{}的子串".format(a2, a1))


s1 = input("请输入字符串:")
s2 = input("请输入需要判断的字符串:")
z(s1,s2)


25.如何验证一个字符串中的每一个字符均在另一个字符串中出现过
    双层循环
26.如何随机生成无数字的全字母的字符串

import string
import random
def z():
    a = string.ascii_letters
    a1 = ""
    for i in range(1,20):
        a1 += random.choice(a)
    print(a1)

z()

 

27.如何随机生成带数字和字母的字符串
import string
import random
def z():
    a = string.ascii_letters+string.digits
    a1 = ""
    for i in range(1,20):
        a1 += random.choice(a)
    print(a1)

z()


28.如何判定一个字符串中既有数字又有字母
def z(a):
    if(not(a.isdigit()) and not(a.isalpha())):
        print("该字符串中有数字也有字母")
    else:
        print("该字符串中不是有数字也有字母")


s=input("请输入字符串:")
z(s)

 

29.字符串内的字符排序(只按字母序不论大小写)
def z(a):
    a1 = a.lower()
    ls = list(a1)
    ls.sort()
    s2  = ""
    for i in range(0,len(ls)):
        s2 += ls[i]
    print(s2)


s  = input("请输入字符串:")
z(s)

 

30.判断一个字符是否是回文字符串(面试题)
    "1234567654321"
    "上海自来水来自海上"

def z(a):
    if a == a[::-1]:
        print("是回文字符串")
    else:
        print("不是回文字符串")

s = input("请输入一个字符串:")
z(s)


31.磁盘遍历
import os
import sys
from os import path
def scanner_file(url):
    dir_list = os.listdir(url)
    for filename in dir_list:
        real_url = path.join(url, filename)  
        if path.isfile(real_url):
            print(path.abspath(real_url))
        elif path.isdir(real_url):
            scanner_file(real_url)


scanner_file("F:/")


进阶题:
    某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),
    注意:1表示该位置无法同行
    问题:共有多少种走法?
    
    0 0 0 0 0 0 0 0

 

    0 0 0 0 0 0 1 0

    0 0 1 0 0 0 0 0

    1 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值