【题目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 双精度值