python刷小题

【题目1】

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

def fun(n):
    if n<=2:
        return 1
    else:
        return fun(n-1)+fun(n-2)
num=int(input("输入月份"))
print(fun(num))

【题目2】

判断101-200之间有多少个素数,并输出所有素数

list=[]
sum=0
for i in range(101,201):
    for j in range(2,i):
        if(i%j!=0):
            flag=True
        else:
            flag=False
            
        if flag==False:
            sum+=1
            list.append(i)
print(list)
print(sum)

【程序3】

打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

for i in range(100,1000):
    ge=i%10
    shi=i//10%10   #  //是整除的意思
    bai=i//100
    if ge**3+shi**3+bai**3==i:
        print(i,end=" ")

个:取10的余

十:除10后取余

百:除100

【程序4】

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

import math
number = int(input("Enter a number: "))
list = []
def getChildren(num):
  isZhishu = True
  for i in range(2, int(math.sqrt(1 + num)) + 1): #多加个1
    if num % i == 0 and i != num :
      list.append(i)
      getChildren(num / i)
      isZhishu = False
      break
  if isZhishu:
    list.append(num)
getChildren(number)
print(list)

为什么是  int(math.sqrt(1 + num)) + 1 ???

 以下是自己的写法

n=int(input("请输入正整数"))#输入的数
list=[]
for i in range(2,n):
    while n!=i:
        if n%i==0:
            list.append(i)
            n=n/i
        else:
            break
list.append(int(n))
print(list)
sum=0
str='*'.join(str(i) for i in list)
print(str)

程序5:

输入两个正整数m和n,求其最大公约数和最小公倍数。

m=int(input("请输入m"))
n=int(input("请输入n"))
# x最大公因数,y最小公倍数
if m<n:   #默认m大
    m,n=n,m

if m%n==0:#成比例的情况
    x=n
    y=m
else:     #不成比例
    # 先求最大公因数x
    for i in range(1,n):
        if m%i==0 and n%i==0:
            x=i
    #求最小公倍数y,先设为m
    y=m
    while True:
        if y%m==y%n==0:
            break
        else:
            y+=1
print("最大公因数为:{},最小公倍数为:{}".format(int(x),int(y)))

 程序6

问题描述:

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

第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

num=1
for i in range(0,10):
    num=(1+num)*2
print(num)

【程序7】

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

import re
str='ASDgfrf   %%%%@#'
str_list=re.findall('[a-za-z]',str)
print("字符串长度为%d"%len(str_list))

space_list=re.findall(' ',str)
print("空格长度为%d"%len(space_list))
other_list=re.findall('[^a-zA-Z]',str)

print("其他长度为%d"%len(other_list))

正则表达,没什么好讲的

findall返回的是列表

程序8

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

a=int(input("输入数字"))
b=int(input("输入次数"))
num=a#将固定的a储存起来
sum=0
for i in range(1,b+1):
    if i==b:
        print("%d="%a,end="=")
    else:
        print("%d+"%a,end="")

    sum=a+sum
    a=a+num*(10**i)#表示各项:i+i*10+i*100+...+加到i*10的i次方
print(sum)

【程序9】

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

for num in range(2,1001):
    list=[]
    for i in range(1,num):
        if num%i==0:
            list.append(i)
    if num==sum(list):
        print("{}是完数,{}".format(num,list))

【程序10】

题目:输入某年某月某日,判断这一天是这一年的第几天? 

year = int(input('请输入年份:'))
mouth = int(input('请输入月份:'))
day = int(input('请输入日期: '))
sum=0
num=0
run1 = [31,29,31,30,31,30,31,31,30,30,31,30]
burun = [31,28,31,30,31,30,31,31,30,30,31,30]
for i in range(0,mouth):
    if mouth>=2:
        if  year% 4 == 0 and year % 100 != 0 or year % 400 == 0:
            num+=run1[i]
        else:
            num+=burun[i]
        sum = num + day
    else:
        sum=day
print(sum)

【程序11】

计算1+2!+3!+4!+…+10!的结果。

n=int(input("输入正整数"))
sum=0
for i in range(1,n+1):
    sum+=i*i
print(sum)

printf()用%f输出double型,而scanf却用%lf

scanf:

%d指示整数值,%c指示字符,%lf  双精度值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值