Python简单试题
程序员文章站
2022-05-14 12:03:42
1,相乘次数 2,筛选出四个字母的字符串。 3,斐波那锲数列的问题 4,求多项式的和 5,求重复次数字母的数量 ......
1,相乘次数
题目要求描述: 一个整数每一位上的数字相乘,判断是否为个位数,若是则程序结束 ,不是则继续相乘,要求返回相乘次数。 例:39 > 3*9=27 > 2*7=14 > 1*4=4 返回 3 105 > 1*0*5=0 返回0 4 返回0
def multiplicative_times(num): i = 0 #用来计算相乘次数 while num // 10 > 0 : # 注意要用 // 这是向下取整除法 num1 = 1 while num != 0: # 循环,直到 num=0 num1 = (num%10)*num1 # 取出个位然后相乘 num = num // 10 # 除以十,不要小数部分 i += 1 # i = i+ 1 num = num1 # 循环继续 return i
2,筛选出四个字母的字符串。
给定一个列表,其中包含都是字符串,但字符串长度不相同,让你写一个函数,找出长度为四 的字符串。
def friend(x): y = [] # 定义一个空列表 for i in x: # 循环给定的列表 if len(i) == 4: # 判断字符串长度是否为4 y.append(i) # 将长度为4的字符串加入到列表中 return y
3,斐波那锲数列的问题
类似于斐波那锲数列的算法,给定一个列表,其中包含三个数字,每一个元素为前面三个元素的和(前三个元素除外),你写一个函数
,参数为一个列表,一个整数。列表包含三个参数,数字表示返回生成列表的前n项。 例:tribonacci([1.1.1], 5) >>> 5 tribonacci([0,0,1],4) >>> 1
def tribonacci(signature, n): for i in range(3,n): # 3 到 n-1循环 signature.append(signature[i-1] + signature[i-2] + signature[i-3]) # 根据算法写公式 return signature[0:n] # 注意:最后返回值不可以写成return signature这样当n为1,2,时不符合题意
4,求多项式的和
1 + 1/4 + 1/7 +1/10 + 1/13...形如这样的多项式计算前几项的和, 写一个函数返回计算的和值,传入参数为自然数,返回值保留两位小数,以字符串形式返回 例: 1 1.00 2 1.25 3 1.39 4 1.49
def series_sum(n): sum = 1 if n == 1 : return ('%.2f' % sum) # 格式化输出,将浮点数转化为字符串并保留两位小数 elif n == 0 : return ('%.2f' % 0) else : for i in range(1,n): sum += 1/(i*3+1) return ('%.2f' % sum) # 注意自然数中包括零
5,求重复次数字母的数量
写一个函数,参数为字符串,用来求出字符串中出现重复字符的个数,
假定字符串只包含字母和数字,字母不区分大小写 "abcde" -> 0 # 没有出现重复的字符 "aabbcde" -> 2 # 'a' 和 'b' "aabbcde" -> 2 # 'a' 出现两次 'b' 出现两次 (`b` 和 `b`) "indivisibility" -> 1 # 'i' 出现六次 "indivisibilities" -> 2 # 'i' 出现七次 's' 出现两次 "aa11" -> 2 # 'a' 和 '1' "abba" -> 2 # 'a' 和 ‘b'都出响两次
def duplicate_count(text): text = text.upper() # 将字符串字母都大写 #不能写成 text,upper() 因为字符串是不可变得 #或者 text = text.lower 将字符串字母小写 x = set(text) # 创建一个集合 集合具有无序性,不重复性,会去掉重复的字母 count = 0 # 用来计算出现重复字母的次数 x = list(x) # 将集合转化为列表,因为集合无法按照位置进行存取 for i in x: if text.count(i) > 1: count+=1 return count