作业1:求第n项的斐波那契数列的值(n>=1)
n = int(input('请输入项数: '))
'''
斐波那契数列从第三项开始,
每一项都等于前两项之和
'''
def flibsOne(n):
a=0
b=1
c=0 #用于存放前两项之和
i=1
print('斐波那契数列:')
while i<=n :
i+=1
print(a)
c=a+b
a=b
b=c
return
print(flibsOne(n))
作业2:小明考试非常好,妈妈为了奖励小明,给一对刚刚出生的兔子,
兔子可以经过四个月,可以长大称为成年的兔子,可以生育新的兔子,
假设成年兔子,每个月生一对小兔子,问,第n个月共有多少对兔子(加上兔子不死)
'''
1
1
1
1
1 1
1 1 1
1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 2 3 4 5 10 14 19 26
'''
def fib(n):
if n<=5:
return 1
else:
return fib(n-1)+fib(n-4)
i = int(input("输入月:"))
print("%d月后兔子的数量为:%d"%(i,fib(i)))
作业3:给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),
可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数
import os
def get_num_duplicate(nums):
"""xxxxxxxxxx"""
temp = 0
for i in range(0, len(nums)):
temp ^= i ^ nums[i]
return temp
if __name__ == '__main__':
nums = [1,2,8,3,4,5,6,7,8]
d = get_num_duplicate(nums)
print(f"数组中重复的是{d}")
# print(get_num_duplicate.__doc__)
# print(help(get_num_duplicate))
print(os.path.abspath(os.curdir))
(选做题):
某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),
问题:共有多少种走法?
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]
]
4、找数出10000以内能被5或6整除,但不能被两者同时整除的数(函)
def ck():
for i in range(1, 10000):
if i % 5 == 0 or i % 6 == 0 and i%30!=0 :
print(i, end=" ")
ck()
5、写一个方法,计算列表所有偶数下标元素的和(注意返回值)
def print_sum(ls):
sum = 0
i = 0
while i < len(ls):
sum += ls[i]
print(ls[i]) #偶数元素下标
i += 2
return sum
ls = [1,2,3,4,5,6,7,8,9,10]
print("列表:{},偶数下标元素和是:{}".
format(ls,print_sum(ls)))
7、请使用函数完成选择、冒泡、插入三种排序
'''
1>首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2>再从剩余未排序元素中继续寻找最小(大)元素,然后放到未排序序列的起始位置。
3>重复第二步,直到所有元素均排序完毕。
'''
ls=[12,25,49,44,16,3,64,2,54,73]
print(ls)
def Select_sort(list):
n=len(ls)
for i in range(0,n-1):
for j in range(0,n-i-1):
if ls[j]>ls[j+1]:
ls[j],ls[j+1]=ls[j+1],ls[j]
Select_sort(ls)
print(ls)
ls=[12,25,49,44,16,3,64,2,54,73]
print(ls)
'''
1>比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2>每趟从第一对相邻元素开始,对每一对相邻元素作同样的工作,直到最后一对。
3>针对所有的元素重复以上的步骤,除了已排序过的元素(每趟排序后的最后一个元素),直到没有任何一对数字需要比较。
'''
def Bubble_sorting(ls):
x= len(ls)
if x < 2:
return
for i in range(x):
for j in range(x-1-i):
if ls[j] > ls [j+1]:
ls[j],ls[j+1] = ls[j+1],ls[j]
return ls
Bubble_sorting(ls)
print(ls)
ls=[12,25,49,44,16,3,64,2,54,73]
print(ls)
'''
将初始数据分为有序部分和无序部分,
每一步将一个无序部分的数据插入到前面已经排好序的有序部分中,
直到插完所有元素为止。
'''
def Insert_sort(ls):
x= len(ls)
if x < 2:
return
for i in range(x):
a,j = ls[i],i-1
while j >=0 and ls[j] > a:
ls[j+1] = ls[j]
j -= 1
ls[j+1] = a
return ls
Insert_sort(ls)
print(ls)
8.根据完整的路径从路径中分离文件路径、文件名及扩展名
import os
path="D:\\python\\python file\\day05课堂练习.py"
dir,file=os.path.split(path)
dir,ext=os.path.splitext(path)
print(ext)
print(dir)
print(file)
9.获取字符串中汉字的个数
def str_count(char):
count = 0
for item in char:
if 0x4E00 <= ord(item) <= 0x9FA5:
count += 1
return count
print(str_count("来数1数,到D有多少个汉字8"))
10.将字母全部转换为大写或小写
sentence = 'Do U Like Me ?'
print(sentence.upper()) #upper()函数,将所有字母都转换成大写
print(sentence.lower()) #lower()函数,将所有字母都转换成小写
11.根据标点符号对字符串进行分行
import re
ls='爱像一阵风,吹完它就走。这样的节奏,谁都无可奈何。'
ls=re.findall(r"[\w']+",ls)
for i in ls:
print(i)
12.去掉字符串数组中每个字符串的空格
string = ["永 爱 p y t h o n",'r e a l ','talk']
string = ','.join(string)
string = string.replace(" ", "").split(',')
print(string)
13.随意输入你心中想到的一个书名,然后输出它的字符串长度。 (len()属性:可以得字符串的长度)
s = input("你喜欢的书名:")
print("{}的书名长度是{}".format(s,len(s)))
14.两个学员输入各自最喜欢的游戏名称,判断是否一致,如
果相等,则输出你们俩喜欢相同的游戏;如果不相同,则输
出你们俩喜欢不相同的游戏。
game1=input('第一人喜欢的游戏:')
game2=input('第二人喜欢的游戏:')
if game1==game2:
print('你俩喜欢相同的游戏')
else:
print('你俩喜欢不相同的游戏')
15.上题中两位同学输入 lol和 LOL代表同一游戏,怎么办?
game1=input('第一人喜欢的游戏:')
game2=input('第二人喜欢的游戏:')
game1=game1.upper()
game2=game2.upper()
if game1==game2:
print('你俩喜欢相同的游戏')
else:
print('你俩喜欢不相同的游戏')
16.让用户输入一个日期格式如“2008/08/08”,将 输入的日
期格式转换为“2008年-8月-8日”。
time = input("请输入日期:")
S = time.split("/")
timex = "{}年-{}月-{}日".format(S[0], int(S[1]), int(S[2]))
print(timex)
17.接收用户输入的字符串,将其中的字符进行排序(升
序),并以逆序的顺序输出,“cabed”→"abcde"→“edcba”。
s='c,a,b,e,d'
ls = list(s)
ls.sort()
ls.reverse()
s = ""
for i in range(0,len(ls)):
s += ls[i]
print(s)
18.接收用户输入的一句英文,将其中的单词以反序输
出,“hello c sharp”→“sharp c hello”。
s='hello c sharp'
ls = list(s)
ls.reverse()
s=''
for i in range(0,len(ls)):
s+=ls[i]
print(s)
19.从请求地址中提取出用户名和域名
http://www.163.com?userName=admin&pwd=123456
20.有个字符串数组,存储了10个书名,书名有长有短,现
在将他们统一处理,若书名长度大于10,则截取长度8的
子串并且最后添加“...”,加一个竖线后输出作者的名字。
21.让用户输入一句话,找出所有"呵"的位置。
s=str(input("请输入一句话:"))
ls=[]
for i in range(0,len(s)):
if s[i]=="呵":
ls.append(i)
print("该句中所有呵的位置为:%s"%(ls))
22.让用户输入一句话,找出所有"呵呵"的位置。
s=str(input("请输入一句话:"))
ls=[]
for i in range(0,len(s)):
if s[i]=="呵呵":
ls.append(i)
print("该句中所有呵的位置为:%s"%(ls))
23.让用户输入一句话,判断这句话中有没有邪恶,如果有邪
恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变
成”老牛很**”;
s = input('请输入一句话:')
print('{}'.format(s.replace('邪恶','**')))
24.如何判断一个字符串是否为另一个字符串的子串
find()
index()
双层循环完成
??
25.如何验证一个字符串中的每一个字符均在另一个字符串
中出现过
双层循环
str1='喵喵喵'
str2='蒽嘟喵喵喵'
def ck(str1,str2):
n=0
for i in range(len(str1)):
for j in range(len(str2)):
if str1[i]==str2[j]:
n+=1
break
if n==len(str1):
return True
else:
return False
print(ck(str1,str2))
26.如何随机生成无数字的全字母的字符串
import random
import string
s=string.ascii_letters
s1=""
for i in range(1,10):
s1+=random.choice(s)
print("无数字的全字母的字符串为:%s"%(s1))
27.如何随机生成带数字和字母的字符串
import random
import string
s=string.ascii_letters+string.digits
s1=""
for i in range(1,10):
s1+=random.choice(s)
print("数字+字母的字符串为:%s"%(s1))
28.如何判定一个字符串中既有数字又有字母
string = input("请输入数据:\n")
if not (string.isdigit()) and not (string.isalpha()):
print("该字符串中有数字也有字母")
else:
print('该字符串中只有数字或字母:')
29.字符串内的字符排序(只按字母序不论大小写)
str_=str(input("请输入字符串:"))
s1 = str_.upper()
ls = list(s1)
ls.sort()
s2 = " "
for i in range(0,len(ls)):
s2 += ls[i]
print("字符串的排序为:%s"%(s2))
30.判断一个字符是否是回文字符串(面试题)
"1234567654321"
"上海自来水来自海上"