【菜鸟教程】Python 100例编程题--适合新手(1)

菜鸟教程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])) 
  • 5
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值