8、求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
- 碎碎念:最开始看到这个题,第一反应肯定采用递归,后来做到中间的时候,发现有个思维误区:递归函数求得的结果是一个个独立的数,而这些散点数之间是存在某种规律性关系,即递归关系是自己和自己建立关系。而这道题是以递归函数为基础的散点数之间的和,就需要第二步 *** 作,采用循环添加或列表sum()函数求的最终的解。
n = int(input('n次幂:')) x = int(input('x数:')) def fn(n): if n == 1: return x else: return x * pow(10, n-1) + fn(n-1) fnt = fn total = sum([fnt(i) for i in range(1, n+1)]) print(total)
9、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
- *碎碎念:这个题明显数学函数问题,先拿笔写下来看一下函数规律,第十天的时候只剩一个桃子,说明第九天在完成了x/2-1=1(x是第八天剩下的桃子),即基本的函数关系式是确定了,下面采用反推的形式,从第9天2量 -> 第1天量。数列之间存在明显规律,典型递归。
num = 1 for i in range(1, 10): x = (num+1) * 2 num = x print(num)
10、求1+2!+3!+…+20!的和。
- * 碎碎念:好像题目做的多了之后,第六感来告诉我,递归-循环-叠加这个思路。当然这种简单的题可以不用做函数,不过自己正在锻炼函数的思维,所以希望多多练习函数这一部分
def fn(n): if n == 1: reuturn 1 else: return n * fn(n-1) fn = fn total = sum([fn(i) for i in range(1,21)]) print(total)
11、将所输入的5个字符,以相反顺序打印出来。
- * 碎碎念:扎实基础,对于相反顺序打印字符串,有很多种方式,可以自行反向遍历输出,也可以使用函数处理,如sort()等。基础题都很简单且扎实,大概都是一颗星??
def reverse1(str1): list1 = [] for i in range(len(str1)-1, -1, -1): list1.append(str1[i]) str_new = ''.join(list1) return str_new rev = reverse1 print(rev('asdlkj'))
12、对random模块随机生成的10个数进行降序排序
- * 碎碎念:编程就是在一系列基础上循序渐进,之前练习了排序的方法,本题在此基础上,引入了random模块即可
import random num = range(0,10000) nums = random.sample(num, 10) nums.sort() print(nums)
13、按“-”号分隔列表。
- *碎碎念: 上面说到了函数这个题可就更简单了,考察join()函数的用法
list = ['1','2','3'] str1 = '-'.join(list) print(str1)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)