菜鸟教程100例题的解答,python 3.7及jupyter notebook实现,可能代码并不是最简洁的,但一定通俗易懂,适合新手阅读。
题目及代码如下:
1.题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if(i != j) and (i != k) and(j != k):
print(i,j,k)
2、题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
i = int(input('净利润:'))
arr = [1000000,600000,400000,200000,100000,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for idx in range(0,6):
if i > arr[idx]:
r += (i-arr[idx])*rat[idx]
print((i-arr[idx])*rat[idx])
i = arr[idx]
print(r)
3、题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
for i in range(1,85):
if 168%i ==0:
j = 168/i
if i >j and(i+j)%2 == 0 and (i-j)%2==0:
m = (i+j)/2
n = (i-j)/2
x = n*n -100
print(x)
4、题目:输入某年某月某日,判断这一天是这一年的第几天?
year = int(input('请输入一个年份:'))
month = int(input('请输入一个月份:'))
day = int(input('请输入一个日期:'))
months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0< month<=12:
if ((year%4 ==0) and (year%100 ==0)) or (year %400 ==0):
if month >=2:
num = months[month-1]+day +1
else:
num = months[month-1]+day
else:
num = months[month-1] +day
print('这一天是%s年中的第%s天'%(year,num))
5、题目:输入三个整数x,y,z,请把这三个数由小到大输出。
x = int(input('请输入一个整数:'))
y = int(input('请输入一个整数:'))
z = int(input('请输入一个整数:'))
if x<= y:
if x<=z:
if y<=z:
print(x,y,z)
else:
print(x,z,y)
else:
print(z,x,y)
else:
if x<=z:
if y<=z:
print(y,x,z)
else:
print(y,x,z)
6、题目:斐波那契数列。
def fib(n):
if n==0 or n==1:
return 1
return fib(n-1)+fib(n-2)
fib(8)
def fib2(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a
fib(7)
7、题目:将一个列表的数据复制到另一个列表中。
a = [1,2,3,4,5,6,7,8,8,9]
b = a[:]
b
8、题目:输出 9*9 乘法口诀表。
for i in range(1,10):
print('\n')
for j in range(1,i+1):
sum = j * i
print('%s*%s=%s'%(j,i,sum),end=' ')
9、题目:暂停一秒输出。
import time
mytime = {1:'a',2:'b'}
for key,value in mytime.items():
print(key,value)
time.sleep(1)
10、题目:暂停一秒输出,并格式化当前时间
import time
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
time.sleep(3)
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
11、题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
a = 1
b = 1
print(a)
print(b)
for i in range(10):
a = a+b
print(a)
b = a+b
print(b)
12、题目:判断101-200之间有多少个素数,并输出所有素数。
from math import sqrt
total = 0
leap = 1
for i in range(101,201):
k = int(sqrt(i+1))
for k in range(2,k+1):
if i % k==0:
leap = 0
break
if leap ==1:
print(i)
total +=1
if total %10 == 0:
print('')
leap = 1
print('The total number is %d'%total)
13、题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
for num in range(100,1000):
i = int(num /100)
j = int((num-100*i)/10)
k = int(num-100*i-10*j)
if num == i**3 + j**3 +k**3 :
print(num)
14、题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。
n = int(input('请输入一个整数:'))
print('%d='%n,end='')
while n>1:
for i in range(2,n+1):
if n%i==0:
n=int(n/i)
if n==1:
print('%d'%i,end='')
else:
print('%d*'%i,end='')
break
print()
15、题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
sore = int(input('请输入一个分数:'))
if sore >100 or sore <0:
print('请输入0-100内的合理分数!')
elif sore >= 90:
print('A')
elif sore >=60:
print('B')
else:
print('C')
16、题目:输出指定格式的日期。
import datetime
if __name__ == '__main__':
#直接输出今天的日期
print(datetime.date.today().strftime('%d/%m/%Y'))
#创建日期对象
T = datetime.date(2019,5,3)
print(T.strftime('%d/%m/%Y'))
#日期的算数运算,添加一天
Tadd = T +datetime.timedelta(days = 1)
print(Tadd.strftime('%d/%m/%Y'))
#日期替换
TT = T.replace(year = T.year +1)
print(TT.strftime('%d/%m/%Y'))
17、题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
words = ' my name is xxl and I am 23 years old'
letters = 0
digit = 0
other = 0
space = 0
for word in words:
if word.isalpha():
letters +=1
elif word.isspace():
space +=1
elif word.isdigit():
digit += 1
else:
other += 1
print('letters=%d,space=%d,digit =%d,other=%d'%(letters,space,digit,other))
18、题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
from functools import reduce
n = int(input('请输入需要计算的个数:'))
a = int(input('请输入一个数字:'))
sum = []
t = 0
for i in range(n):
t = t + a
a = a* 10
sum.append(t)
print(t)
s = reduce(lambda x,y: x+y,sum)
print('计算的和为:',s)
19、题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
from sys import stdout
#遍历1000以内的所有数
#k为存放因子的列表;n表示除了本身以为的因子个数;s用来判断可能为因子的数字
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):
stdout.write(str(k[i]))
stdout.write(' ')
print(k[n])
20、题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
height = 100
H = []
M = []
#计算十次落地每次反弹高度
for i in range(1,11):
if i == 1:
M.append(height)
else:
M.append(2*height)
height = 0.5*height
H.append(height)
s = 0
#读取列表中的数字并求和
for i in M:
s += i
print('总米数为:meters= {}'.format(s))
print("第十次的反弹高度为:height={}".format(H[-1]))