作业"/>
Python学习——第六七天作业
目录
作业1:求第n项的斐波那契数列的值(n>=1)
作业2:不死的兔子
作业3:找出重复的整数
作业4:写一个方法,计算列表所有偶数下标元素的和(注意返回值)
作业5:请使用函数完成选择、冒泡、插入三种排序
作业6:根据完整的路径从路径中分离文件路径、文件名及扩展名
作业7:获取字符串中汉字的个数
作业8:将字母全部转换为大写或小写
作业9:根据标点符号对字符串进行分行
作业10:去掉字符串数组中每个字符串的空格
作业11:日期格式转换
作业12:字符串的逆排序并输出
作业13:一句英文的逆序输出
作业14:从如下请求地址中提取出用户名和域名
作业15:敏感词替换
作业16:判断一个字符串是否为另一个字符串的子串【分别使用find() 、index()方法】
作业17:随机生成无数字的全字母的字符串
作业19:判定一个字符串中既有数字又有字母
作业20:字符串内的字符排序(只按字母序不论大小写)
作业21:判断一个字符是否是回文字符串(面试题)
作业1:求第n项的斐波那契数列的值(n>=1)
def fibonacci(n):'''返回第n个斐波那契数列值'''if n < 1:print('n必须是大于等于1的整数!')returnelif n == 1 or n == 2:return 1return fibonacci(n-1) + fibonacci(n-2)if __name__ == '__main__':n = int(input('请输入整数n(n>=1):'))print(f'第{n}项斐波那契数列的值为:{fibonacci(n)}')
结果:
作业2:不死的兔子
有一对刚刚出生的兔子,兔子可以经过四个月,可以长大称为成年的兔子,可以生育新的兔子,假设成年兔子,每个月生一对小兔子,问,第n个月共有多少对兔子(假设兔子不死)
def rabbit(n):'''该函数用于求解如下问题:有一对刚刚出生的兔子,兔子可以经过四个月,可以长大称为成年的兔子,可以生育新的兔子,假设成年兔子,每个月生一对小兔子,问,第n个月共有多少对兔子(假设兔子不死)'''if n < 0:print('n必须大于等于0!')returnelif n >= 0 and n <= 3:return 1return rabbit(n-1) + rabbit(n-4)if __name__ == '__main__':n = int(input('请输入月份n:'))print(f'第{n}个月共有{rabbit(n)}对兔子')
结果:
作业3:找出重复的整数
给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数
def repeat(ls):'''该函数用于求解如下问题:给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数'''temp = 0for i in range(len(ls)):temp ^= i ^ ls[i]return tempif __name__ == '__main__':ls = [1,2,3,4,5,6,7,4]print(f'{ls}中重复的数为:{repeat(ls)}')
结果:
作业4:写一个方法,计算列表所有偶数下标元素的和(注意返回值)
def sum_even(ls):'''计算列表所有偶数下标元素的和'''sum_even = 0for i in range(0,len(ls),2):sum_even += ls[i]return sum_evenif __name__ == '__main__':ls = [1,2,3,4,5,6,7,8,9]print(f'{ls}中所有偶数下标元素的和为:{sum_even(ls)}')
结果:
作业5:请使用函数完成选择、冒泡、插入三种排序
def selection_sort(ls):'''选择排序法'''for i in range(len(ls)):index_min = ifor j in range(i+1,len(ls)):if ls[index_min] > ls[j]:index_min = jls[index_min],ls[i] = ls[i],ls[index_min]return lsdef bubbling_sort(ls):'''冒泡排序法'''for i in range(len(ls)):for j in range(len(ls)-i-1):if ls[j] > ls[j+1]:ls[j],ls[j+1] = ls[j+1],ls[j]return lsdef insert_sort(ls):'''插入排序法'''for i in range(1,len(ls)):key = ls[i]j = i - 1while j >= 0 and key < ls[j]:ls[j+1] = ls[j]j -= 1ls[j+1] = keyreturn lsls = [23,5,12,67,64,87,3,1,2,28] print(f'原列表为:{ls}') print(f'选择排序法排序后的列表为:{selection_sort(ls)}') print(f'冒泡排序法排序后的列表为:{bubbling_sort(ls)}') print(f'插入排序法排序后的列表为:{insert_sort(ls)}')
结果:
作业6:根据完整的路径从路径中分离文件路径、文件名及扩展名
import os.pathdef separate_path(path):'''该函数用于将完整路径分离为文件路径、文件名及其扩展名并输出打印'''tmp = os.path.basename(path)ls = tmp.rsplit(".",1)print(f'文件路径:{os.path.dirname(path)}')print(f'文件名:{ls[0]}')print(f'文件扩展名:{ls[1]}')if __name__ == "__main__":path = input('请输入要分离的完整文件路径:')separate_path(path)
结果:
作业7:获取字符串中汉字的个数
def isChinese(strings):'''该函数用于统计一个字符串中的汉字个数'''count_ch = 0for ch in strings:if '\u4e00' <= ch <= '\u9fa5':count_ch += 1return count_chif __name__ == "__main__":strings = input('请输入一个字符串以统计其汉字个数:')print(f'\'{strings}\'中的汉字个数有{isChinese(strings)}个')
结果:
作业8:将字母全部转换为大写或小写
def shift(string):'''该函数用于将字符串中的字母全部转换为大写或小写'''string_up = string.upper()string_low = string.lower()print(f'字符串:{string}')print(f'全部转换为大写:{string_up}')print(f'全部转换为小写:{string_low}')if __name__ == '__main__':string = input('请输入一个字符串:')shift(string)
结果:
作业9:根据标点符号对字符串进行分行
def enter(fh,string):'''该函数用于根据指定的标点符号对指定字符串进行换行并输出'''tmp = string.split(f'{fh}')for i in range(len(tmp)):print(tmp[i])if __name__ == '__main__':string = input('请输入一段带有标点符号的字符串:')fh = input('请输入换行标志符号:')enter(fh,string)
结果:
作业10:去掉字符串数组中每个字符串的空格
def cls_space(strings):'''该函数用于清除字符串数组中每个字符串的空格'''for i in range(len(strings)):strings[i] = strings[i].replace(' ','')return stringsif __name__ == '__main__':strings = input('请输入多个字符串(用英文逗号间隔):').split(',')print(f'您输入的字符串数组:{strings}')print(f'清除空格后的字符串数组:{cls_space(strings)}')
结果:
作业11:日期格式转换
让用户输入一个日期格式如“2008/08/08”,将 输入的日期格式转换为“2008年-8月-8日”
def swich_date(one_date):'''将输入的日期格式“年/月/日”转换为“xx年-xx月-xx日”'''tmp = one_date.split('/')print(f'{tmp[0]}年-{int(tmp[1])}月-{int(tmp[2])}日')if __name__ == '__main__':one_date = input('请输入“年/月/日”格式的日期:')swich_date(one_date)
结果:
作业12:字符串的逆排序并输出
接收用户输入的字符串,将其中的字符进行逆序排序并输出,如“cabed”→“edcba”
def sort_reverse(str_0):'''该函数用于将字符串逆序排序'''tmp = list(str_0)tmp.sort(reverse=True)str_1 = ''.join(tmp)return str_1if __name__ == '__main__':str_0 = input('请输入一个英文字符串:')print(f'您输入的字符串为:{str_0}')print(f'逆序排序后的字符串为:{sort_reverse(str_0)}')
结果:
作业13:一句英文的逆序输出
接收用户输入的一句英文,将其中的单词以逆序输出,“hello c sharp”→“sharp c hello”
def sentence_reverse(sentence):'''该函数用于将一句英文逆序输出,如“hello c sharp”→“sharp c hello”'''tmp = sentence.split(' ')tmp.reverse()senrence = ' '.join(tmp)return senrenceif __name__ == '__main__':sentence = input('请输入一句英文:')print(f'逆序输出:{sentence_reverse(sentence)}')
结果:
作业14:从如下请求地址中提取出用户名和域名
=admin&pwd=123456
# 从url地址中提取出用户名和域名url = '=admin&pwd=123456'ls = url.split('?') domain = ls[0].split('/')[2] ls_1 = ls[1].split('&') username = ls_1[0].split('=')[1] print(f'域名:{domain}') print(f'域名:{username}')
结果:
作业15:敏感词替换
让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变成”老牛很**”
sentence = input('请输入一句话(‘邪恶’是敏感词汇):') ls = sentence.split('邪恶') if len(ls) == 1:print('该句中没有敏感词‘邪恶’') else:print('**'.join(ls))
结果:
作业16:判断一个字符串是否为另一个字符串的子串【分别使用find() 、index()方法】
str_a = input('请输入字符串a:') str_b = input('请输入字符串b:')# 使用find()方法: flag = str_a.find(str_b) if flag == -1:print('字符串b不是字符串a的子串') else:print('字符串b是字符串a的子串')# 使用index()方法: try:flag = str_a.index(str_b) except ValueError:print('字符串b不是字符串a的子串') else:print('字符串b是字符串a的子串')
结果:
作业17:随机生成无数字的全字母的字符串
import randomdef random_letter():'''随机生成无数字的全字母的字符串'''ls = []str_max = int(input('请输入随机字符串长度的最大值:'))str_len = random.randint(1,str_max)for i in range(str_len):ls.append(chr(random.randint(ord('a'),ord('z'))))strs = ''.join(ls)return strsif __name__ == '__main__':print(random_letter())
结果:
作业18:随机生成带数字和字母的字符串
import randomdef random_letter():'''随机生成字母a-z'''letter = chr(random.randint(ord('a'),ord('z')))return letterdef random_num09():'''随机生成数字0-9'''num = random.randint(0,9)return numif __name__ == '__main__':ls = []str_max = int(input('请输入随机字符串长度的最大值:'))str_len = random.randint(1,str_max)for i in range(str_len):flag = random.randint(0,1)if flag == 0:ls.append(str(random_num09()))else:ls.append(random_letter())strs = ''.join(ls)print(strs)
结果:
作业19:判定一个字符串中既有数字又有字母
def num_alpha(strs):'''判定一个字符串中既有数字又有字母'''flag_num = 0flag_alpha = 0for i in strs:if i.isdigit() == True:flag_num = 1breakfor i in strs:if i.isalpha() == True:flag_alpha = 1breakif flag_num == 1 and flag_alpha == 1:return Trueelse:return Falseif __name__ == '__main__':strs = input('请输入一个字符串:')if num_alpha(strs) == True:print('该字符串中既有数字又有字母')else:print('该字符串不满足既有数字又有字母')
结果:
作业20:字符串内的字符排序(只按字母序不论大小写)
def alp_sort(strs):'''该函数将字符串内的字符排序(不论字母大小写)'''ls = list(strs)ls_upper = []for i in range(len(strs)):if ls[i].isalpha:if ls[i].isupper():ls_upper.append(ls[i])ls[i] = ls[i].lower()ls.sort()for i in ls_upper:flag = ls.index(i.lower())ls[flag] = ls[flag].upper() strs = ''.join(ls)return strsif __name__ == '__main__':strs = input('请输入一段字符串:')print(f'排序后的字符串(不论字母大小写):{alp_sort(strs)}')
结果:
作业21:判断一个字符是否是回文字符串(面试题)
如:"1234567654321"、 "上海自来水来自海上"
def isHuiWen(strs):'''该函数用于判断一个字符是否是回文字符串'''ls_1 = list(strs)ls_2 = list(strs)ls_2.reverse()if ls_1 == ls_2:print('该函数是回文字符串')else:print('该函数不是回文字符串')if __name__ == '__main__':strs = input('请输入一个字符串:')isHuiWen(strs)
结果:
更多推荐
Python学习——第六七天作业
发布评论