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