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