目录
16、判断一个字符串是否为另一个字符串的子串【分别使用find() 、index()方法】
1、求第n项的斐波那契数列的值(n>=1)
def fibonacci(n): ''' 返回第n个斐波那契数列值 ''' if n < 1: print('n必须是大于等于1的整数!') return elif n == 1 or n == 2: return 1 return 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!') return elif n >= 0 and n <= 3: return 1 return 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 = 0 for i in range(len(ls)): temp ^= i ^ ls[i] return temp if __name__ == '__main__': ls = [1,2,3,4,5,6,7,4] print(f'{ls}中重复的数为:{repeat(ls)}')
结果:
4、写一个方法,计算列表所有偶数下标元素的和(注意返回值)
def sum_even(ls): ''' 计算列表所有偶数下标元素的和 ''' sum_even = 0 for i in range(0,len(ls),2): sum_even += ls[i] return sum_even if __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 = i for j in range(i+1,len(ls)): if ls[index_min] > ls[j]: index_min = j ls[index_min],ls[i] = ls[i],ls[index_min] return ls def 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 ls def insert_sort(ls): ''' 插入排序法 ''' for i in range(1,len(ls)): key = ls[i] j = i - 1 while j >= 0 and key < ls[j]: ls[j+1] = ls[j] j -= 1 ls[j+1] = key return ls ls = [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.path def 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 = 0 for ch in strings: if '\u4e00' <= ch <= '\u9fa5': count_ch += 1 return count_ch if __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 strings if __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_1 if __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 senrence if __name__ == '__main__': sentence = input('请输入一句英文:') print(f'逆序输出:{sentence_reverse(sentence)}')
结果:
14、从如下请求地址中提取出用户名和域名
http://www.163.com?userName=admin&pwd=123456
# 从url地址中提取出用户名和域名 url = 'http://www.163.com?userName=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 random def 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 strs if __name__ == '__main__': print(random_letter())
结果:
作业18:随机生成带数字和字母的字符串
import random def random_letter(): ''' 随机生成字母a-z ''' letter = chr(random.randint(ord('a'),ord('z'))) return letter def random_num09(): ''' 随机生成数字0-9 ''' num = random.randint(0,9) return num if __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)
结果:
18、判定一个字符串中既有数字又有字母
def num_alpha(strs): ''' 判定一个字符串中既有数字又有字母 ''' flag_num = 0 flag_alpha = 0 for i in strs: if i.isdigit() == True: flag_num = 1 break for i in strs: if i.isalpha() == True: flag_alpha = 1 break if flag_num == 1 and flag_alpha == 1: return True else: return False if __name__ == '__main__': strs = input('请输入一个字符串:') if num_alpha(strs) == True: print('该字符串中既有数字又有字母') else: print('该字符串不满足既有数字又有字母')
结果:
19、字符串内的字符排序(只按字母序不论大小写)
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 strs if __name__ == '__main__': strs = input('请输入一段字符串:') print(f'排序后的字符串(不论字母大小写):{alp_sort(strs)}')
结果:
20、判断一个字符是否是回文字符串(面试题)
如:"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)
结果: