python学习日记day06作业

作业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"
    "上海自来水来自海上"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值