python第五次作业

作业
1: 棋盘问题进行升级(软件方向的学生必须做):
某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),
该棋盘中存在了障碍物(数字1),遇到障碍物,棋盘无法正常通过

0 0 0 0 0 1 0 0

0 0 0 1 0 0 0 0

1 0 0 0 0 0 0 0

0 0 1 0 0 0 0 0

0 0 0 0 0 0 0 0

2 有一对兔子,从出生后的第3个月起,每个月都生一对兔子,
小兔子长到第3个月后每个月又生一对兔子,
假如兔子不死,问第n个月第兔子对数为多少?

def rabbit_num(n):
    if n <= 2:
        return 1
    else:
        return rabbit_num(n - 1) + rabbit_num(n - 2)


numb = int(input('请输入查看的月数:'))
number = rabbit_num(numb)
print(number)

3、假设用户每次上楼梯只能上一个台阶或者两个台阶,请写一个函数,判断用户到第n台阶共有多少种走法

def steps(n):
    if n < 3:
        return 1
    else:
        return steps(n - 1) + steps(n - 2)


numb = int(input('请输入共有多少个台阶:'))
num = steps(numb)
print(f'共有{num}中走法')

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

def math():
    ls = []
    for i in range(0,10001):
        flag = False
        if (i% 5 == 0 or i % 6 == 0) and i % 30 != 0:
            flag = True
        if flag:
            ls.append(i)
    print(ls)


math()

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

def list_sum(ls):
    sum = 0
    i = 0
    while i < len(ls):
        sum += ls[i]
        i += 2
    return sum
    
ls = [1,2,3,4,5,6,7,8,9]
print(f"列表是:{ls},偶数下标元素和是:{list_sum(ls)}")

6、判断一个数是否是质数(素数)?该如何声明方法?

def prime_numbers(n):
    ls = []
    index = 2
    flag = True
    for i in range(2,n + 1):
        while index < (i // 2):
            if i % index == 0:
                flag = False
                break
            index += 1
        if flag: 
            ls.append(i)
    print(ls)
                

numb = int (input('请输入末尾数:')) 
prime_numbers(numb)

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

'''
冒泡
'''
def bubble_sort(aList):
    n = len(aList)
    for i in range(0, n - 1):
        for j in range(0, n - i - 1):
            if aList[j] > aList[j + 1]:
                aList[j], aList[j + 1] = aList[j + 1], aList[j]

 
if __name__ == "__main__":
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(li)
    bubble_sort(li)
    print(li)
   
'''
选择排序
'''
def select_sort(aList):
    l = len(aList) 
    for j in range(l):
        min_index = j
        for i in range(min_index + 1, l):
            if aList[min_index] > aList[i]:
                min_index = i
        aList[j], aList[min_index] = aList[min_index], aList[j]
 
 
if __name__ == "__main__":
    li = [9 , 16, 17, 15, 11]
    print(li)
    select_sort(li)
    print(li)


'''
插入排序
'''
def insert_sort(aList):
    n = len(aList)
    for i in range(n):
        j = i
        while j > 0:
            if aList[j] < aList[j - 1]:
                aList[j], aList[j - 1] = aList[j - 1], aList[j]
            j -= 1
 
 
if __name__ == "__main__":
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(li)
    insert_sort(li)
    print(li)


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

ce = 'www.bilibili.com&up主的小日常&app'
cc = ce.split('&')
print(cc)

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

def get_number(char):
    count = 0
    for item in char:
        if 0x4E00 <= ord(item) <= 0x9FA5:
            count += 1
    return count
 

n = input('请输入一串字符串:') 
print(get_number(n))

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

def case(n):
    nn = n.lower()
    print(nn)


n = input('请输入一串大小写不限的字母:')
case(n)

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

def get_replace(n):
    mm = n.replace('。','\n')
    print(mm)


n = input('请输入一串带‘。’的字符串:')
get_replace(n)

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

def delete_space(n):
    nn = n.replace(' ','')
    print(nn)


n = input('请输入一个带空格的字符串:')
delete_space(n)

13.随意输入你心中想到的一个书名,然后输出它的字符串长度。

str=input()
print(len(str))

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

def get_game():
    perple1=str(input("请输入游戏:"))
    perple2=str(input("请输入游戏:"))
    for i in perple1 :
        for y in perple2 :
            if i == y :
                print("游戏一样")
            else:
                print("游戏不一样")


get_game()

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

def judge_change():
    a = 'LOL'
    b = 'lol'
    if a.lower() == b and b.upper() == a:
        print('无异常')

    
judge_change()

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

nate=input("请输入日期:")
s1=nate.split("/")
print(s1)
y="{}年-{}月-{}日".format(s1[0],int(s1[1]),int(s1[2]))
print(y)

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

def get_str(n):
    ls = list(n)
    ls.sort()
    #排序
    ls.reverse()
    #反序
    n = ''
    for i in range(0,len(ls)):
        n += ls[i]
    return n



date = input('请输入一串字符串:')
n =  get_str(date)
print(n)

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

def change(s):
    ls = s.split(" ")
    ls.reverse()
    list = ""
    for i in range(0,len(ls)) :
        list += ls[i] + " " 
    return list


s = input("请输入字符串:")
date = change(s)
print(date)

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 = ["斗破苍穹","我在秋斩刑场当缝尸人那些年","全球掠夺:开局融合暗夜之心","轮回乐园","星门","我只想安静的做个苟道中人"] ##10个书名太多了,我只存了几个
dir = {"斗破苍穹":"天蚕土豆","我在秋斩刑场当缝尸人那些年":"南腔北调","全球掠夺:开局融合暗夜之心":"爱搓汤圆","轮回乐园":"那一只蚊子","星门":"老鹰吃小鸡","我只想安静的做个苟道中人":"爆炸小拿铁"} 
for i in range(0,len(ls)):
    s = ls[i]
    if len(s) > 10:
        s = s[0:9]+"..._"+str(dir[ls[i]])
    else:
    	s = s+"_"+str(dir[ls[i]])
    ls[i] = s
print(ls)


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

def find_page(n, m):
    ls = []
    for i in range(0,len(n)):
        if n[i] == m:
            ls.append(i)
    print(f"{m}的位置是:{ls}")  


n = input("请输入一段话!")
m = input("请输入要查找的字:")
find_page(n,m)

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

def find_hehe(n,m,nm):
    ls = []
    for i in range(0,len(n)-1):
        if n[i] == m and n[i+1] == nm:
            ls.append(i)
    print(f"{m}{nm}的位置是:{ls}")  

n = input("请输入一段话!")
m = input("清输入要查找的字符串的第一个字:")
nm= input("清输入要查找的字符串的第二个字:")
find_hehe(n,m,nm)

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

s = input("请输入字符串:")
print("邪恶消失后:{}".format(s.replace("邪恶","**")))


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

s = input("请输入字符串A:")
s1 = input("请输入需要判断的字符串B:")
flag = True
if s.find(s1) != -1:
    flag = False
if flag:
    print("字符串B{}不在A{}内".format(s1,s))
else:
     print("字符串B{}在A{}内".format(s1,s))

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

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

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

import string
import random
s = string.ascii_letters
s1 = ""
for i in range(1,20):
    s1 += random.choice(s)
print(s1)

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

import string
import random
s = string.ascii_letters + string.digits
s1 = ""
for i in range(1,20):
    s1 += random.choice(s)
print(s1)

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

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

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

s  = input("请输入字符串")
s1 = s.upper()
ls = list(s1)
ls.sort()
s2  = ""
for i in range(0,len(ls)):
    s2 += ls[i]
print(s2)

30.判断一个字符是否是回文字符串

def palindrome(alist):
    n=int(len(alist)/2)
    ispalindrome=0
    for i in range(1,n):
        if alist[i]==alist[-(i+1)]:
            ispalindrome=1
        else:
            ispalindrome=0
            break
    if ispalindrome==1:
        print("{}是回文数".format(alist))
    else:
        print("{}不是回文数".format(alist))

a=input("请输入字符串:")
palindrome(a)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值