Python(5)

1、求第n项的斐波那契数列的值(n>=1)

def fib (n):
    n1,n2,n3=1,1,0
    if n<=2:
        return 1
    while n>2:
        n3=n1+n2
        n1,n2=n2,n3
        n=n-1
    return n3


if __name__=='__main__':

    x=int(input("请输入一个数:"))
    print("斐波那契数列的第{0}项是{1}".format(x, fib(x)))
    

2:小明考试非常好,妈妈为了奖励小明,给一对刚刚出生的兔子,
    兔子可以经过四个月,可以长大称为成年的兔子,可以生育新的兔子,
    假设成年兔子,每个月生一对小兔子,问,第n个月共有多少对兔子(加上兔子不死)

def get_rabbit(num):
	if num < 5:
		return 1
	return get_rabbit(num - 1) + get_rabbit(num - 4)


if __name__ == '__main__':
	# 在python中,main函数的作用,主要是用来书写测试代码
	# 这种测试代码不需要导入其他模块调用,就可以写在main函数中
	print(get_rabbit(8))

3、给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),
    可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数

import os
def get_num_duplicate(nums):
	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(os.path.abspath(os.curdir))

def r_num(n):
    if n == 1 or n == 2:
        return 1
    else:
        return r_num(n-1)+r_num(n-2)

m=int (input("请输入一个数:"))
print("第%d个月有%d 对兔子"%(m,r_num(m)))

  4、  某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),
    问题:共有多少种走法?
    
    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 board (arr):
    if arr is None:
        return 0
    if len(arr) == 1 and len(arr[0])==1:
        return 1
    for i in range(len(arr[0])):
        arr[0][1]=1
    for i in range (len(arr)):
        arr[1][0]=1
    for i in range(1,len(arr)):
        for j in range (1,len(arr[0])):
            arr[i][j]=arr[i-1][j]+arr[i][j-1]
    return arr[len(arr)-1][len(arr[0])-1]
if __name__=='__main__':
    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],
    ]
    count = board(ls)
    print(f"从左上角开始走,到右下角,共有{count}种走法")


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

def get_sum(ls):
    sum=0
    i=0
    while i < len(ls):
        sum += ls[i]
        i += 2
    return sum

ls = [1,2,3,4,5]
print("列表是:{},偶数下标元素和是:{}".format(ls,get_sum(ls)))

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

ls=[1,3,4,24,4,3,7,74,54,24]

def xuanze(ls):
    x = len(ls)
    if x<2:
        return

    for i in range (x):
        a = i
        for j in range(i+1,x):
            if ls[a]>ls[j]:
                a = j
            if i != a:
                ls[i],ls[a]=ls[a],ls[i]
        return ls

xuanze (ls)

def maomao(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
maomao(ls)

def charu(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
charu(ls)


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

ls="F:\菜姬.txt\python\Lib\html\entities.py"
def file(ls):
    way = ls[0:11]
    name=ls[11:15]
    extension=ls[16:]
    print(way,name,extension)
file(ls)

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

ls="F:\菜姬.txt\python\Lib\html\entities.py"
def number(l):
    count = 0
    for item in l:
        if 0X4E00 <= ord(item)<= 0x9Fa5:
            count += 1
    return count
print(number(ls))

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

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

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

13.随意输入你心中想到的一个书名,然后输出它的字符串长度。 (len()属性:可以得字符串的长度)

book = str (input("请输入书名:"))
print(len(book))

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

people1 = str(input("请输入一个数:"))
people2 = str(input("请输入一个数:"))
for i in people1:
    for j in people2:
        if i == j:
            print("你们喜欢相同的游戏!")
        else :
            print("你们喜欢不同的游戏!")

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

people1 = str (input("请输入一个游戏:"))
people2 = str (input("请输入一个游戏:"))
if people1.upper()==people2.upper():
    print("你们的游戏相同")
else:
    print("你们的游戏不相同")

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

time = input("请输入年月日:")
sl = time.split("/")
newtime="{}年-{}月-{}日".format(sl[0],int(sl[1]),int(sl[2]))
print(newtime)

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

ls ='cabed'
l=list(ls)
l.sort()
print(l)
l.reverse()
print(l)

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

english=input("请输入一句英文:")
a = english.split(" ")
b = a[::-1]
wp = " ".join (b)
print (wp)

19.从请求地址中提取出用户名和域名http://www.163.com?userName=admin&pwd=123456

url ='http://www.163.com?userName=admin&pwd=123456'
ls = url.split("/")
s1=ls[2]
ls2 = s1.split("?")
print("域名是:{}".format(ls2[0]))
s1 = ls2[1]
ls3 = s1.split("&")
si = ls3[0]
ls4 = si.split("=")
print("用户名是:{}".format(ls4[1]))


20.有个字符串数组,存储了10个书名,书名有长有短,现在将他们统一处理,若书名长度大于10,则截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字。

ls = ["火影忍者","海贼王","名侦探柯南","死神","斗罗大陆","武庚纪","狐妖小红娘","狂人日记","从百草园到三味书屋","cold brew"]

dir = {"火影忍者":"岸本齐史","海贼王":"尾田荣一郎","名侦探柯南":"青山刚昌","死神":'久保带人',"斗罗大陆":"唐家三少","武庚纪":"郑键合","狐妖小红娘":"小新","狂人日记":'鲁迅',"从百草园到三味书屋":'鲁迅',"cold brew":"xxx"}
for i in range (0,len(ls)):
    s= ls[i]
    if len(s)> 10 :
        s= s[0:9]+"..._"+str(dir(ls[i]))
    ls[i]=s
print(ls)


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

s = input("请输入一段话;")
ls = []
for i in range(0,len(s)):
    if s[i]=="呵":
        ls.append(i)
print("呵的位置是%s",ls)

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

s = input("请输入一段话;")
ls = []
for i in range(0,len(s)):
    if s[i]=="呵"and s[i+1]=="呵":
        ls.append(i)
print("呵呵的位置是%s",ls)

 

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

word = input("请输入您要说的话;")
print("邪恶消失后:",format(word.replace("邪恶","**")))

24.如何判断一个字符串是否为另一个字符串的子串 
    find()  
    index()
    双层循环完成
    ??


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

name = "mkyong is learning python 123 "
if name.find("python") != -1:
    print("found python!")
else:
    print("nothing")

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

import random
import string
random_str =''.join(random.sample(string.ascii_lowercase,10))
print(random_str)

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

import random
import string
 
random_str = ''.join(random.sample(string.ascii_letters + string.digits, 20))
 
print(random_str)

 

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

string=input("请输入数据\n")
if(not(string.isdigit()) and not(string.isalpha())):
        print("该数据中有数字也有字母")

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

import random
import string
 
random_str = ''.join(random.sample(string.ascii_lowercase , 10))
random_str = "".join((lambda x:(x.sort(),x)[1])(list(random_str)))
print(random_str)

 

30.判断一个字符是否是回文字符串(面试题)
    "1234567654321"
    "上海自来水来自海上"

def is_palindrome(count):
    for i in range(0,len(count)//2):
        if count[i] != count[len(count)-i-1]:
            return False
        return True
word="上海自来水来自海上"
print(is_palindrome(word))

 

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

def get_num(n):
    for i in range (1,n+1):
        if (i%5==0 or i%6==0) and not (i%5==0 and i%6==0):
            print(i)

n=int (input("请输入一个数:"))
get_num(n)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值