刷手感的Python练习题(8-13)

刷手感的Python练习题(8-13),第1张

刷手感的Python练习题(8-13)

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)

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5670649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存