python基础小白题3

题目021:猴子吃桃问题

猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个

第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少。

'''

def tm021():

    '''

第十天num=1个,第九天必然是4个:4/2-1=1,也就是(num+1)*2=4。

    做这种题,先用算数式列出来,然后用代码描述就行了。

    '''

    num = 1

    for i in range(10-1):

        num = (num+1)*2

    print(num)

 

 

'''

题目022:两个乒乓球队进行比赛,各出三人。

甲队为a,b,c三人,乙队为x,y,z三人。

已抽签决定比赛名单。有人向队员打听比赛的名单。

a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

'''

 

def tm022():

    '''

    【个人备注】:关键是将抽象化,将问题抽象成代码方式。

    我的解题思路,是用排列组合函数,列出方案,然后排除。

    而官方解答里面有一个纯粹的for循环加if的求解方式,

    更抽象一些,用了一个很常用固定范式,直接拿来解题了。

    稍微对其抽象的方法注释了一下。

    '''

    import itertools

    jia = ['a','b','c']

    yi = ['x','y','z']

    arr = list(itertools.permutations(yi,3)) # 面对甲队a,b,c时,乙队所有排列 [('x', 'y', 'z'), ('x', 'z', 'y'), ('y', 'x', 'z'), ('y', 'z', 'x'), ('z', 'x', 'y'), ('z', 'y', 'x')]

    arr = [[jia[i]+a[i] for i in range(3)] for a in arr] #将a,b,c写上,得到所有对阵组合 [['ax', 'by', 'cz'], ['ax', 'bz', 'cy'], ['ay', 'bx', 'cz'], ['ay', 'bz', 'cx'], ['az', 'bx', 'cy'], ['az', 'by', 'cx']]

    for i in arr:

        if 'ax' in i:

            pass

        elif 'cx' in i or 'cz' in i:

            pass

        else:

            print(i) # 得到 ['az', 'bx', 'cy']

 

 

def tm022_1():

    for a in ['x','y','z']:                             # a在x,y,z中挑一个打

        for b in ['x', 'y', 'z']:                       # b在x,y,z中挑一个打

            for c in ['x', 'y', 'z']:                   # c在x,y,z中挑一个打 三层总计27种打法

                if a!=b and b!=c and c!=a:              # a,b,c不能挑同一个人 缩减到6种打法

                    if a!='x' and c!='x' and c!='z':    # 依据题意不能ax,cx,cz 缩减到1种打法

                        print('a'+a,'b'+b,'c'+c)

 

 

'''

题目023:

打印出如下图案(菱形):

   *

  ***

 *****

*******

 *****

  ***

   *

'''

def tm023():

    '''

    【个人备注】:想到了绝对值,

    然后将[0,1,2,3,4,5,6]变成了[3,2,1,0,1,2,3],也就是每行左边空格数。

    '''

    num = 7

    for i in range(num):

        blank = abs(num//2-i)

        print(' '*blank+'*'*(num-2*blank)+' '*blank)

 

 

'''

题目024:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

'''

def tm024():

    # 没啥好说的

    a,b,num = 2,1,0

    for i in range(20):

        num+=a/b

        a=a+b

        b=a-b

    print(num)

 

 

'''

题目025:求1+2!+3!+...+20!的和。

'''

def tm025():

    '''

    【个人备注】:实现起来很简单。

    下面官方的代码,比我写的更简洁。

    '''

    s,t=0,1

    for n in range(1,21):

        t*=n

        s+=t

    print(s)

 

 

'''

题目026:利用递归方法求5!。

'''

def fac(x):

    if x>1:

        return x*fac(x-1)

    else:

        return x

 

def tm026():

    '''

    【个人备注】:按题目要求,公式f(n)=n*f(n-1),递归调用求解。

    '''

    print(fac(5))

 

 

'''

题目027:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

'''

def output(s,l):

    if l==0:

       return

    print (s[l-1])

    output(s,l-1)

 

def tm027():

    '''

    【个人备注】:直接从官网复制,不喜欢递归。

    '''

    s = input('Input a string:')

    l = len(s)

    output(s,l)

 

 

'''

题目028:有5个人坐在一起,

问第五个人多少岁?他说比第4个人大两岁。

问第4个人,他说比第3个人大两岁。

问第3个人,又说比第2个人大两岁。

问第2个人,说比第1个人大两岁。

最后问第一个人,他说是10岁。

请问第五个人多大?

'''

def age(x):

    if x>1:

        return 2+age(x-1)

    else:

        return 10

 

def tm028():

    '''

    【个人备注】:官网给的还是递归方法,因为不用递归的话就是个口算题。

    '''

    print(age(5))

 

 

'''

题目029:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

'''

def tm029():

    '''

    【个人备注】:用Python,So Easy~

    list倒序可以用list.reverse();

    字符串就只能用步长=-1的方式来倒序了。

    '''

    num = 12345

    s = str(num)

    print(len(s))

    print(s[::-1])

 

 

 

'''

题目030:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

'''

def tm030():

    '''

    【个人备注】:没啥可说的。

    '''

    num = 12321

    s = str(num)

    for i in range(len(s)//2):

        if s[i]!=s[-i-1]:

            print(False)

            break

    else:

        print(True)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python基础小白题4

题目031:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。 def tm031(): 【个人备注】:按照题意要求实现了就行 week [monday,tuesday,wednesday,thursday,friday,saturday,sunday] inp…

python基础小白题5

题目045:统计 1 到 100 之和。 def tm045(): 【个人备注】:简单,但官网有人写的更简单 s 0 for i in range(1,101): si print(s) # 更简洁的方法 print(sum(range(1,101))) 题目046:求输入数字的平方,如果平方运算…

快排-荷兰国旗

在使用partition-exchange排序算法时,如快速排序算法,我们会遇到一些问题,比如重复元素太多,降低了效率,在每次递归中,左边部分是空的(没有元素比关键元素小),而右边部分只能一个一个递减移动。…

快排-前m大元素

描述 给定一个数组包含n个元素&#xff0c;统计前m大的数并且把这m个数从大到小输 出。 输入 第一行包含一个整数n&#xff0c;表示数组的大小。n < 100000。 第二行包含n个整数&#xff0c;表示数组的元素&#xff0c;整数之间以一个空格分开 。每个整数的绝对值不超过…

归并-求逆序数

考虑1,2,…,n (n < 100000)的排列i1&#xff0c;i2&#xff0c;…&#xff0c;in&#xff0c;如果其中存在j,k&#xff0c;满足 j < k 且 ij > ik&#xff0c; 那么就称(ij,ik)是这个排列的一个逆序。 一个排列含有逆序的个数称为这个排列的逆序数。例如排列 26345…

动态规划概述

注&#xff1a;第一次看不需要全理解&#xff0c;以后动态规划做多了&#xff0c;再回来看看&#xff0c;会有更深的理解 先符上其它文章&#xff0c;看完这篇就可以开始看这些咯。 萌新&#xff1a; …

动态规划-背包是否装满

很简单但是需要特别注意的&#xff0c;一定不要错。 背包&#xff1a; 有n 种不同的物品&#xff0c;每个物品有两个属性&#xff0c;v体积&#xff0c;c价值&#xff0c;现在给一个体积为 m 的背包&#xff0c;问最多可带走多少价值的物品。 状态转移方程 dp[i][j]max…

dp打开思路3:HDU1069 POJ3616 POJ1088

HDU 1069 题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1069 题意&#xff1a;把给定的长方体&#xff08;不限&#xff09;叠加在一起&#xff0c;叠加的条件是&#xff0c;上面一个长方体的长和宽都比下面长方体的长 和宽短&#xff1b;求这些长方体能…

输入输出外挂

板子不解释 //适用于正负整数 template <class T> inline bool scan_d(T &ret) {char c; int sgn;if(cgetchar(),cEOF) return 0; //EOFwhile(c!−&&(c<0||c>9)) cgetchar();sgn(c−)?−1:1;ret(c−)?0:(c−0);while(cgetchar(),c>0&&c&…

dp打开思路4:POJ1189 UVA12511 HDU2845 HBCPC K

POJ1189 http://poj.org/problem?id1189 怎么说呢&#xff0c;不算难&#xff0c;但是容易出问题 我一开始的思路是&#xff0c;第一个钉子只有一种情况&#xff0c;然后下面每个钉子&#xff1a;左边有钉子就加左边的情况数&#xff0c;右边有钉子就加右边的情况数&#x…

第五次课 课上代码

第五次 双重循环——排序&#xff08;复习&#xff09; While循环 Break continue 字符串&#xff08;len&#xff0c;取值改值&#xff0c;格式化&#xff09; 列表生成式 >>> for i in range(4): for j in range(4): print(i,j) 0 0 0 1 0 2 0 3 1…

第六次课 课上代码

oj的使用 Python Split 函数&#xff08;优点&#xff1a;抽象、简洁。 举例&#xff1a;str\int\float\abs 具体实现&#xff09; ninput().split(" ") 3 4 >>> print(int(n[0])int(n[1])) 7 >>> print(12345) 15 l[1,2,3,4,5] >>&g…

橙白oj18训练作业1-题解、代码

学习资料和oj如何使用加软件官方qq群739979255 oj网址&#xff1a;http://oj.acm-icpc.top/ a题&#xff1a;原题为输入两个数&#xff0c;一行&#xff0c;用空格隔开&#xff0c;因为python操作对萌新来说略难&#xff0c;改为一行一个数&#xff0c;算出ab。 思路&#x…

橙白oj18训练作业2-题解、代码

http://oj.acm-icpc.top/ a题&#xff1a;三个数字排序 可以利用sort函数排序&#xff0c;或者自己想清楚逻辑自己写&#xff0c;我给出一个正确逻辑 &#xff08;拓展冒泡和其他排序参考https://blog.csdn.net/hebtu666/article/details/81434236&#xff09; a,b,cinput(…

时间空间复杂度概述

找个时间写一写时间复杂度和一些问题分类&#xff0c;也普及一下这方面知识。 如何衡量一个算法好坏 很显然&#xff0c;最重要的两个指标&#xff1a;需要多久可以解决问题、解决问题耗费了多少资源 那我们首先说第一个问题&#xff0c;要多长时间来解决某个问题。那我们可…

二叉树遍历算法总结

文章目录前提要素深度优先搜索DFS经典遍历算法前序遍历递归版迭代版中序遍历递归版迭代版后序遍历递归版迭代版Morris遍历算法中序遍历前序遍历后序遍历广度优先搜索BFS按层遍历参考资料前提要素 本文代码用Java实现。 //二叉树节点结构 public static class TreeNode {publi…

时间复杂度 P/NP/NPC

你会经常看到网上出现“这怎么做&#xff0c;这不是NP问题吗”、“这个只有搜了&#xff0c;这已经被证明是NP问题了”之类的话。你要知道&#xff0c;大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问…

kmp1-HDU1711 HDU1686 HDU2087 HDU3746

HDU 1711 kmp模板题 http://acm.hdu.edu.cn/showproblem.php?pid1711 #include<stdio.h> #include<string.h> #define N 1000005 int s[N]; int p[N]; int next[N]; int m,n; void getnext(){int j0,k-1;next[0]-1;while(j<m){if(k-1||p[j]p[k]){j;k;next[j]…

kmp2-HDU1358 HUST1010 POJ2406 POJ2752

HDU1358 http://acm.hdu.edu.cn/showproblem.php?pid1358 先构造出 next[] 数组&#xff0c;下标为 i&#xff0c;定义一个变量 j i - next[i] 就是next数组下标和下标对应值的差&#xff0c;如果这个差能整除下标 i&#xff0c;即 i%j0 ,则说明下标i之前的字符串&#xff0…