python 第七作业

'''
# 求第n项的斐波那契数列的值
def fun(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    return fun(n-1)+fun(n-2)

n = int(input('请输入n:'))
print(f'第{n}项的斐波那契数列的值:{fun(n)}')
'''

'''
# 小明考试非常好,妈妈为了奖励小明,给一对刚刚出生的兔子,
# 	兔子可以经过四个月,可以长大称为成年的兔子,可以生育新的兔子,
# 	假设成年兔子,每个月生一对小兔子,问,第n个月共有多少对兔子(加上兔子不死)
count = [1]
count1 = 1
n = int(input('请输入第n个月的数:'))
for i in range(2, n+1):
    if i <= 4:
        count1 += 1
        count.append(count1)
    else:
        count1 = count1 + count[i-4]
        count.append(count1)
print(f'第{n}个月共有{count1}对兔子')
'''

'''
# 给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),
# 可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数
def find (n):
    ls = list()
    for i in range(0, len(n)):
        for j in range(i+1,len(n)):
            if n[i] == n[j]:
                ls.append(n[i])
    return ls

n = [1, 9, 2, 3, 4, 5, 6, 9, 8, 7, 5, 4, 2, 1]
print(f'重复的数为:{find(n)}')
'''

'''
# 找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
def find ():
    n = list()
    for i in range(1, 10000):
        if i % 5 == 0 or i % 6 == 0:
            if i % 30 !=0:
                n.append(i)
    return n
print(f'10000以内能被5或6整除,但不能被两者同时整除的数有\n{find()}')
'''

'''
# 写一个方法,计算列表所有偶数下标元素的和(注意返回值)
def mun (lst):
    mun = 0
    for i in range(0,len(lst)):
        if lst[i] % 2 == 0:
            mun += i
    return mun

lst = list()
lst.append(list(map(int, input('请输入列表的元素:').split(','))))
lst = lst[0]
print(f'列表所有偶数下标元素的和为{mun(lst)}')
'''


'''
# 请使用函数完成选择、冒泡、插入三种排序
def bubble_sort(array):
    """冒泡"""
    for i in range(len(array)):
        for j in range(len(array)-i-1):
            if array[j] > array[j+1]:
                temp = array[j]
                array[j] = array[j+1]
                array[j+1] = temp

def insertion_sort(array):
    """插入"""
    for i in range(1, len(array)):
        for j in range(i, 0, -1):
            if array[j] < array[j-1]:
                temp = array[j]
                array[j] = array[j-1]
                array[j-1] = temp
            else:
                break

def selection_sort(array):
    """选择"""
    for i in range(len(array)):
        min_one = array[i]
        # 记录最小数的下标
        min_index = i
        for j in range(i+1, len(array)):
            if min_one > array[j]:
                min_one = array[j]
                min_index = j

        temp = array[i]
        array[i] = min_one
        array[min_index] = temp
'''


'''
# 根据完整的路径(C:\ProgramData\Dell\InventoryCollector\Log\ICDebugLog.txt)
# 从路径中分离文件路径、文件名及扩展名
path = 'C:\\ProgramData\\Dell\\InventoryCollector\\Log\\ICDebugLog.txt'
print(path)
lst1 = path.split('\\')
lst2 = lst1[0:len(lst1)-1]
lst3 = '\\'.join(lst2)
print(f'文件路径{lst3}')
lst4 = lst1[len(lst1)-1]
print(f'文件名{lst4}')
lst4 = lst4.split('.')
lst4 = lst4[len(lst4)-1]
print(f'扩展名{lst4}')
'''


'''
# 获取字符串中汉字的个数
import re
str_test = 'abcdefgHABC123456中华民族'
hanzi_regex = re.compile(r'[\u4E00-\u9FA5]')
hanzi_list = hanzi_regex.findall(str_test)
print('包含的汉字个数:',len(hanzi_list))
'''


'''
# 将字母全部转换为大写或小写
ls = 'aAbBcCdDfFgGhH'
print(f'{ls}')
print(f'小写{ls.upper()}')
print(f'大写{ls.lower()}')
'''


'''
# 根据标点符号对字符串进行分行
ls = 'C:\\ProgramData\\Dell\\InventoryCollector\\Log\\ICDebugLog.txt'
ls = ls.split('\\')
for i in range(0, len(ls)):
    print(ls[i])
'''


'''
# 去掉字符串数组中每个字符串的空格
ls = 'l o jngvb jhguhfv o '
ls = ls.split(' ')
ls = ''.join(ls)
print(ls)
'''


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


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

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

str1 = str(input("请输入游戏:"))
str2 = str(input("请输入游戏:"))


def test_11(str1, str2):
    str1 = str1.upper()
    str2 = str2.upper()
    if str1 == str2:
        print(str1)
    else:
        print(str1, str2)


test_11(str1, str2)
'''


'''
# 让用户输入一个日期格式如“2008/08/08”,将 输入的日
# 	期格式转换为“2008年-8月-8日”。
day = input('输入一个日期(xxxx/xx/xx)')
day = day.split('/')
print(f'{day[0]}年-{day[1]}月-{day[2]}日')
'''


'''
# 接收用户输入的字符串,将其中的字符进行排序(升
# 序),并以逆序的顺序输出,“cabed”→"abcde"→“edcba”。
ls1 = 'cabed'
ls2 = list(ls1)
ls2.sort()
ls3 = ''.join(ls2)
print(ls3)
ls2.reverse()
ls4 = ''.join(ls2)
print(ls4)
'''


'''
# 接收用户输入的一句英文,将其中的单词以反序输
# 出,“hello c sharp”→“sharp c hello”。
ls1 = 'hello c sharp'
ls1 = ls1.split(' ')
ls1.reverse()
ls1 = ' '.join(ls1)
print(ls1)
'''


'''
# 从请求地址中提取出用户名和域名
# http://www.163.com?userName=admin&pwd=123456
name = 'http://www.163.com?userName=admin&pwd=123456'
name = name.split('?')
name1 = name[0]
name1 = name1.split('//')
print(f'域名为:{name1[1]}')
name = name[1]
name = name.split('=')
name = name[1]
name = name.split('&')
print(f'用户名为:{name[0]}')
'''


'''
# 有个字符串数组,存储了10个书名,书名有长有短,现
# 在将他们统一处理,若书名长度大于10,则截取长度8的
# 子串并且最后添加“...”,加一个竖线后输出作者的名字。
ls = ["西游记之齐天大圣", "三国演义之义结金兰", "红楼梦之我是贾宝玉", "水浒传之一百零八将"]

dir = {"西游记之齐天大圣": "吴承恩", "三国演义之义结金兰": "罗贯中", "红楼梦之我是贾宝玉": "曹雪芹", "水浒传之一百零八将": "施耐庵"}
for i in range(0, len(ls)):
    s = ls[i]
    if len(s) > 7:
        s = s[0:7] + "...|" + str(dir[ls[i]])
    ls[i] = s
print(ls)
'''


'''
# 让用户输入一句话,找出所有"呵"的位置。
x = input('请输入一句话:')
k = 0
change = True
while k < len(x):
    if x[k] == '呵':
        print(f'位置:{k+1}')
        change = False
    k += 1
if change :
    print('不存在')
'''


'''
# 让用户输入一句话,找出所有"呵呵"的位置。
x = input('请输入一句话:')
k = 0
change = True
while k < len(x):
    if x[k] == '呵呵':
        print(f'位置:{k+1}')
        change = False
    k += 1
if change :
    print('不存在')
'''


'''
# 让用户输入一句话,判断这句话中有没有邪恶,如果有邪
# 恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变
# 成”老牛很**”;
x = input('请输入一句话:')
print(x.replace('邪恶', '**'))
'''


'''
# 如何判断一个字符串是否为另一个字符串的子串
# 	find()
# 	index()
# 	双层循环完成
# 	??
str1 = input("请输入字符串:")
str2 = input("请输入需要判断的字符串:")
flag = True
if str1.find(str2) != -1:
    flag = False
if flag:
    print("字符串{}不是{}的子串".format(str2, str1))
else:
    print("字符串{}是{}的子串".format(str2, str1))
'''


'''
# 如何验证一个字符串中的每一个字符均在另一个字符串中出现过
# 	双层循环
word1 = input("请输入字符串:")
word2 = input("请输入需要判断的字符串:")
flag = True
for i in range(0, len(word2)):
    if word1.find(word2[i]) == -1:
        flag = False
if flag:
    print("字符串{}都在{}中".format(word2, word1))
else:
    print("字符串{}不都在{}中".format(word2, word1))
'''


'''
# 如何随机生成无数字的全字母的字符串
import random
import string
random_str = ''.join(random.sample(string.ascii_lowercase, 10))
print(random_str)
'''


'''
# 如何随机生成带数字和字母的字符串
import random
import string
random_str = ''.join(random.sample(string.ascii_letters + string.digits, 10))
print(random_str)
'''


'''
# 如何判定一个字符串中既有数字又有字母
string = input("请输入数据:\n")
if not (string.isdigit()) and not (string.isalpha()):
    print("该数据中有数字也有字母")
'''


'''
# 字符串内的字符排序(只按字母序不论大小写)
str_list = ['d', 's', 'a', 'i', 'j', 'A', 'S', 'D', 'U', 'N']
new_list = sorted(str_list, key=str.lower)
print(new_list)
'''


'''
# 判断一个字符是否是回文字符串(面试题)
# 	"1234567654321"
# 	"上海自来水来自海上"
def test_27(count):
    for i in range(0, len(count) // 2):
        if count[i] != count[len(count) - i - 1]:
            return False
        return True

word = "1234567654321"
word1 = "上海自来水来自海上"
print(test_27(word))
print(test_27(word1))
'''

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值