python基础小白题2

题目11:判断101-200之间有多少个素数,并输出所有素数。

 

num=[]

for i in range(100,201):

    j=i//2              

    for k in range(2,j):

        if i%k==0:

            break

    else:

        num.append(i)

print('一共有%d个素数\n这些素数是:' %len(num),num )

输出结果:

一共有21个素数

这些素数是: [101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]

题目12:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数字本身。例如:153=1的三次方+5的三次方+3的三次方。

 

num=[]

def cubic_sum(n):

    return n*n*n

for i in range(100,1000):

    i_hun=i//100                  #百位

    i_ten=(i%100)//10             #十位

    i_bit=i-i_hun*100-i_ten*10    #个位

    i_sum=cubic_sum(i_bit)+cubic_sum(i_ten)+cubic_sum(i_hun)

    if i_sum==i:

        num.append(i)

print(num)

输出结果:

[153, 370, 371, 407]

题目13:讲一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

 

num=[]                  #该数字的所有素数

fac_num=[]              #该数字的因数

def pri_num(val):       #求出该数字的所有素数

    for i in range(2,val):

        if i<=4:

            j=i

        else:

            j=i//2              

        for k in range(2,j):

            if i%k==0:

                break

        else:

            num.append(i)

def sol_factor(val,*k):   #求因数

    for i in k:           #遍历素数

        if val%i==0:

            return i

            break

input_num=int(input('请输入要分解的数:'))

pri_num(input_num)               #求出该数字的所有素数

decom_num=input_num              #要分解的数

while True:

    res=sol_factor(decom_num,*num)

    if res==decom_num:           #遍历结束

        fac_num.append(str(res))

        break

    else:

        fac_num.append(str(res))

        decom_num= decom_num/res

print(input_num,'=','*'.join(fac_num))#分解后的表达式

输出结果:

  请输入要分解的数:180

  180 = 2*2*3*3*5

  请输入要分解的数:900

  900 = 2*2*3*3*5*5

题目14:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

 

score=int(input('请输入分数:').strip())

if score < 0  or score>100:

    print('输入的分数不合理,请重新输入')

elif score >= 90:

    print('该同学得A') 

elif score >=60 and score<90:

    print('该同学得B')

else:

    print('该同学得C')

题目15:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

 

input_str=input('请输入要统计的字符串:')

count_str={}

for i in input_str:

    if i in count_str:

        count_str[i] +=1

    else:

        count_str[i] =1

print(count_str)

输出结果:

  请输入要统计的字符串:kahgasodgh934q455t

{'o': 1, 't': 1, '4': 2, 'q': 1, 'h': 2, '5': 2, 'd': 1, '3': 1, '9': 1, 's': 1, 'a': 2, 'g': 2, 'k': 1}

题目16:求s=a+aa+aaa+aaaa+aa..a的值,其中a是一个数字。例如:2+22+222+2222+22222(此时公有五个数相加),几个数相加由键盘控制。

 

def sum_num(num,dig_num):

    var=0

    for i in range(dig_num):

        var +=int((num*(i+1)))

        if i==(dig_num-1):

            print(int((num*(i+1))),end='=')   #整数乘字符  ,'3'*3='333'

        else:

            print(int((num*(i+1))),end='+')

    return var

         

         

num=input('请输入要计算的数字:')         #字符类型

dig_num=int(input('请输入要计算的次数:'))#整数类型

sum_dig=sum_num(num,dig_num)

print(sum_dig)

输出结果:

  请输入要计算的数字:1

  请输入要计算的次数:3

  1+11+111=123

  请输入要计算的数字:2

  请输入要计算的次数:5

  2+22+222+2222+22222=24690

题目17:一个数如果恰好等于它的因子之和,这个数成为“完数”、例如6=1+2+3.编写程序找出1000以内所有的完数。

 

def pri_num(val):          #求出该数字的所有素数

    for i in range(2,val+1):

        if i<=4:

            j=i

        else:

            j=i//2              

        for k in range(2,j):

            if i%k==0:

                break

        else:

            num.append(i)

def sol_factor(val,*k):    #求因数

    for i in k:             #遍历素数

        if val%i==0:

            return i

            break

    else:

        return 1

for input_num in range(2,1000):

    sum_num=1

    num=[]                  #该数字范围内的所有素数

    fac_num=[]              #该数字的因数

    pri_num(input_num)      #求出该数字的所有素数

    decom_num=input_num     #要分解的数

    while True:

        res=sol_factor(decom_num,*num)

        if res==decom_num:           #遍历结束

            sum_num +=res

            fac_num.append(str(res))

            break

        else:

            sum_num +=res

            fac_num.append(str(res))

            decom_num= decom_num/res

    if sum_num==input_num:

        print(input_num,'=1+','+'.join(fac_num)) #分解后的表达式

输出结果:

  6 =1+ 2+3

题目18:一个球从100米高度自由下落,每次落地后跳回原高度的一半;再落地,求它在第10次落地时,共经过过少米?第10次反弹多高?

 

high=100

sum_meter=0

for i in range(10):

    if i==0:        #第一次落地

        sum_meter +=high

        high /=2

    else:

        sum_meter += (2*high)

        high /=2

#     print('第%d次落地可以反弹的高度: %f' %((i+1),high))

#     print('第%d次落地经过了%f米' %((i+1),sum_meter))

print('----------------------------------')

print('第10次落地可以反弹的高度: %f米' %(high))

print('一共经过了%f米' %(sum_meter))

输出结果:

  第1次落地可以反弹的高度: 50.000000

  第1次落地经过了100.000000米

  第2次落地可以反弹的高度: 25.000000

  第2次落地经过了200.000000米

  第3次落地可以反弹的高度: 12.500000

  第3次落地经过了250.000000米

  第4次落地可以反弹的高度: 6.250000

  第4次落地经过了275.000000米

  第5次落地可以反弹的高度: 3.125000

  第5次落地经过了287.500000米

  第6次落地可以反弹的高度: 1.562500

  第6次落地经过了293.750000米

  第7次落地可以反弹的高度: 0.781250

  第7次落地经过了296.875000米

  第8次落地可以反弹的高度: 0.390625

  第8次落地经过了298.437500米

  第9次落地可以反弹的高度: 0.195312

  第9次落地经过了299.218750米

  第10次落地可以反弹的高度: 0.097656

  第10次落地经过了299.609375米

  ----------------------------------

  第10次落地可以反弹的高度: 0.097656米

  一共经过了299.609375米

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

 

def factorial_sum(num):

    if num==1:

        return 1

    else:

        return num*factorial_sum(num-1)

res=0

for i in range(1,21):

    res +=factorial_sum(i)

    if i ==20 :

        print(i,end='!=')

    else :

        print(i,end='!+')

print(res)   

输出结果:

  1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+11!+12!+13!+14!+15!+16!+17!+18!+19!+20!=2561327494111820313

题目20:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃前一天剩下的一半多一个。到第十天早上想吃桃子时,只剩下了一个。求第一天共摘了多少。

 

peach_num=0   #可以整除2,一定是偶数个桃子

Flages=True

while Flages:

    peach_num +=2

    temp=peach_num

    for i in range(3):         #遍历次数,检验

        temp=temp/2

        if temp==int(temp): #当中有一次无法整除就退出

            temp -=1

            if temp==0:        #不能为0

                break

        else:

            break

    else:

        if temp==1:

            Flages = False

print('第一天摘了%d个桃子' %peach_num)

输出结果:

  假设第二天只剩一个桃子时:第一天摘了4个桃子。

  假设第三天只剩一个桃子时:第一天摘了10个桃子.

  假设第四天只剩一个桃子时:第一天摘了22个桃子.

  假设第五天只剩一个桃子时:第一天摘了46个桃子.

  ...

  假设第十天只剩一个桃子时:第一天摘了1534个桃子.

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

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

相关文章

python基础小白题3

题目021&#xff1a;猴子吃桃问题 猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不瘾&#xff0c;又多吃了一个 第二天早上又将剩下的桃子吃掉一半&#xff0c;又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时&#x…

python基础小白题4

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

python基础小白题5

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

快排-荷兰国旗

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

快排-前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]…