1. 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
# -*- coding: UTF-8 -*-
# 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
# 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
months=int(input("请输入一共经过了几个月"))
tuzi=1
a=0
p=0
for i in range(1,months+1):
p=a+tuzi
print(i,":",tuzi)
a=tuzi
tuzi =p
# f1 = 1
# f2 = 1
# for i in range(1,21):
# print('%12d %12d' % (f1,f2))
# if (i % 2) == 0:
# print('')
# f1 = f1 + f2
# f2 = f1 + f2
2. 题目:判断101-200之间有多少个素数,并输出所有素数。
# -*- coding: UTF-8 -*-
# 【程序】
# 题目:判断101-200之间有多少个素数,并输出所有素数。
count=0
for i in range(101,201):
flag = 1
for j in range(2,i):
if i%j==0:
flag=0
break
if flag==1:
print(i)
count+=1
print(count)
3. 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
# -*- coding: UTF-8 -*-
# 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
# 本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
for i in range(100,1000):
百=i//100
个=i%10
十=i//10%10
if i==个**3+十**3+百**3:
print(i)
4.题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。
# -*- coding: UTF-8 -*-
# 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
num=int(input("请输入一个正整数"))
if num<=0:
print("输入错误,程序结束")
else:
a=num
print(num,'=',end='')
for i in range(2,num):
while 1:
if a%i==0:
a=a/i
print(i,end='')
print('*',end='')
else: break
print(a)
5. 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
# -*- coding: UTF-8 -*-
# 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
# 60分以下的用C表示。
score=int(input("请输入学生成绩:"))
if score>=90:
print("A")
elif score>=60:
print("B")
elif score>=0:
print("C")
else:print("成绩输入有误")
6.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
# -*- coding: UTF-8 -*-
# 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
str=input("请输入一行字符:")
english=0
space=0
number=0
others=0
for each in str:
if each==" ":
space+=1
elif each.isdigit()==True:
number+=1
elif each.isalpha()==True:
english+=1
else:others+=1
print(english,";",space,";",number,";",others)
7.题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
# -*- coding: UTF-8 -*-
# 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时
# 共有5个数相加),几个数相加有键盘控制。
x=int(input("请输入未知量x:"))
a=int(input("请输入是几个数相加:"))
#y是用来
y=0
z=x
for i in range(1,a+1):
print(z)
y+=z
z=x*10**i+z
print(y)
#这是另一种方法
# from functools import reduce
#
# Tn = 0
# Sn = []
# n = int(input('n = :\n'))
# a = int(input('a = :\n'))
# for count in range(n):
# Tn = Tn + a
# a = a * 10
# Sn.append(Tn)
# print(Tn)
# Sn = reduce(lambda x,y : x + y,Sn)
# print(Sn)
8题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
# -*- coding: UTF-8 -*-
# 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
# 找出1000以内的所有完数。
for i in range(1,1000):
k=[]
sum=0
#查看这个数相对应的因子
for j in range(1,i):
if i%j==0:
k.append(j)
for each in k:
sum+=each
if sum==i:
print(" ")
print(i)
#这是另一个方法
# from sys import stdout
# for j in range(2, 1001):
# k = []
# n = -1
# s = j
# for i in range(1, j):
# if j % i == 0:
# n += 1
# s -= i
# k.append(i)
#
# if s == 0:
# print(j)
#
# for i in range(n):
# print(k[i])
# print(' ')
# print(k[n])
#
9题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
# -*- coding: UTF-8 -*-
# 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
# 第10次落地时,共经过多少米?第10次反弹多高?
h=100
sum=h
x=int(input("请输入经过多少次"))
for i in range(1,x+1):
h/=2
sum=sum+h*2
print("第%d次落地时,共经过%f米"%(x,sum))
print("第%d次反弹%f米"%(x,h))
#
# Sn = 100.0
# Hn = Sn / 2
#
# for n in range(2,11):
# Sn += 2 * Hn
# Hn /= 2
#
# print('Total of road is %f' % Sn)
# print('The tenth is %f meter' % Hn)
10题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
# -*- coding: UTF-8 -*-
# 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
# 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
# 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
x=1
for i in range(9):
x=(x+1)*2
print(x)
# 另一种方法
# x2 = 1
# for day in range(9,0,-1):
# x1 = (x2 + 1) * 2
# x2 = x1
# print(x1)
11.题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
# -*- coding: UTF-8 -*-
# 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定
# 比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
# 三队赛手的名单。
for i in range(ord('x'),ord('z') + 1):
for j in range(ord('x'),ord('z') + 1):
if i != j:
for k in range(ord('x'),ord('z') + 1):
if (i != k) and (j != k):
if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):
print('order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k)))
12.题目:打印出如下图案(菱形)
# -*- coding: UTF-8 -*-
# 题目:打印出如下图案(菱形)
#
# *
# ***
# *****
# *******
# *****
# ***
# *
for i in range(1,5):
print(" "*(4-i),"*"*(2*i-1))
for i in range(1,4):
print(" "*i,"*"*(7-2*i))
# 另一种方法
# from sys import stdout
# for i in range(4):
# for j in range(2 - i + 1):
# stdout.write(' ')
# for k in range(2 * i + 1):
# stdout.write('*')
# print()
#
# for i in range(3):
# for j in range(i + 1):
# stdout.write(' ')
# for k in range(4 - 2 * i + 1):
# stdout.write('*')
# print()
13. 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
# '''
# 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
# 1.程序分析:请抓住分子与分母的变化规律。
# 2.程序源代码:
# '''
a=1.0
b=2.0
count=1
sum=0
while count<=20:
sum=sum+b/a
count+=1
a,b=b,a+b
print(sum)
14. 题目:求1+2!+3!+…+20!的和
# coding=gbk
# '''
# 题目:求1+2!+3!+...+20!的和
# 1.程序分析:此程序只是把累加变成了累乘。
# 2.程序源代码:
# '''
sum=0
for i in range(1,21):
a=1
for j in range(1,i+1):
a=a*j
print(a)
sum+=a
print(sum)
15. 题目:利用递归方法求5!。
# coding=gbk
# '''
# 题目:利用递归方法求5!。
# 1.程序分析:递归公式:fn=fn_1*4!
# 2.程序源代码:
# '''
def digui(n):
s=0
if n==0:
s=1
else:
s=n*digui(n-1)
return s
print(digui(5))
16.题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
# '''
# 题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
# 1.程序分析:
# 2.程序源代码:
# '''
def a(n):
x=[]
if n<=1:
x=input()
else:
x=input()
a(n-1)
i=len(x)
while i:
print(x[i-1])
i-=1
a(5)
# 另一个方法
# def palin(n):
# next = 0
# if n <= 1:
# next = input()
# print()
# print (next)
# else:
# next = input()
# palin(n - 1)
# print(next)
#
# i = 5
# palin(i)
# print()
17. 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
# '''
# 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
# 3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
# 问第一个人,他说是10岁。请问第五个人多大?
# 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
# 第四人的岁数,依次类推,推到第一人(10岁),再往回推。
# '''
def age(n):
if n==1:
x=10
else:
x=age(n-1)+2
return x
print(age(5))
18. 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
# '''
# 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
# 1. 程序分析:学会分解出每一位数,如下解释:
# 2.程序源代码:
# '''
x = int(input("input a number:\n"))
a = int(x / 10000)
b = int(x % 10000 / 1000)
c = int(x % 1000 / 100)
d = int(x % 100 / 10)
e = int(x % 10)
if a != 0:
print("there are 5 ",e,' ',d,' ',c,' ',b,' ',a)
elif b != 0:
print("there are 4 ",d,' ',c,' ',b,' ',a)
elif c != 0:
print("there are 3 ",e,' ',d,' ',c)
elif d != 0:
print("there are 2 ",e,' ',d)
else:
print("there are 1",e )