Python练习题100例

注:题目来自菜鸟教程 https://www.runoob.com/python/python-100-examples.html

练习题001:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

# coding=utf-8
#001:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
def fun():
    count=0
    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)
                    count+=1
    print("一共",count,'个')
    return

fun()

练习题002:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

# coding=utf-8

#题目:
# 企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

def fun(profit):
    if profit<=100000:
        return profit*0.1
    elif profit>100000 and profit<=200000:
        return 10000+(profit-100000)*0.075
    elif profit>200000 and profit<=400000:
        return 17500+(profit-200000)*0.05
    elif profit>400000 and profit<=600000:
        return 27500+(profit-400000)*0.03
    elif profit>600000 and profit<1000000:
        return 33500+(profit-600000)*0.015
    else:
        return 39500+(profit-1000000)*0.01

profit=int(input("please input profit:"))
print("应发放奖金总数:",fun(profit))

练习题003:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

# coding=utf-8

#题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

import math

def fun():
    i=0
    while 1:
        i+=1
        if math.sqrt(i+100)%1==0 and math.sqrt(i+168)%1==0:
            return i

print(fun())

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

# coding=utf-8

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

def judge(year):
    if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0 and year % 3200 != 0) or year % 172800 == 0:
        return True
    else:
        return False

def fun(year,month,day):
    days=[31,28,31,30,31,30,31,31,30,31,30,31]
    count=0
    if judge(year):
        days[1]=29
    for i in range(0,month-1):
        count+=days[i]
    count+=day
    return count

print(fun(int(input("please input year:")),int(input("please input month:")),int(input("please input day:"))))

练习题005:输入三个整数x,y,z,请把这三个数由小到大输出。

# coding=utf-8

#题目:输入三个整数x,y,z,请把这三个数由小到大输出。

def fun(x,y,z):
    lista=[x,y,z]
    for j in range(0,2):
        for i in range(0,2):
            if lista[i]>lista[i+1]:
                node=lista[i]
                lista[i]=lista[i+1]
                lista[i+1]=node
    return lista

a=fun(int(input("please input x:")),int(input("please input y:")),int(input("please input z:")))
for i in range(0,3):
    print(a[i])

练习题006:斐波那契数列(前n项)

# coding=utf-8

#题目:斐波那契数列(前n项)

def fun(n):
    if n==0:
        return 0
    elif n==1:
        return 1
    else:
        return fun(n-1)+fun(n-2)

for i in range(0,int(input("请输入要输出到数列第几项:"))):
    print(fun(i))

练习题007:将一个列表的数据复制到另一个列表中

# coding=utf-8

#题目:将一个列表的数据复制到另一个列表中

def fun():
    l=int(input("请输入列表元素个数:"))
    lista=[]
    for i in range(0,l):
        lista.append(input("请输入元素:"))
    listb=lista[:]
    print(lista)
    print(listb)
    return

fun()

练习题008:输出 9*9 乘法口诀表

# coding=utf-8

#题目:输出 9*9 乘法口诀表

def fun():
    for i in range(1,10):
        for j in range(1,i+1):
            print(i,'*',j,'=',i*j,end="  ")
        print("\n")

fun()

#输出效果:
#1 * 1 = 1  

#2 * 1 = 2  2 * 2 = 4  
    
#3 * 1 = 3  3 * 2 = 6  3 * 3 = 9  

#4 * 1 = 4  4 * 2 = 8  4 * 3 = 12  4 * 4 = 16  

#5 * 1 = 5  5 * 2 = 10  5 * 3 = 15  5 * 4 = 20  5 * 5 = 25  

#6 * 1 = 6  6 * 2 = 12  6 * 3 = 18  6 * 4 = 24  6 * 5 = 30  6 * 6 = 36  

#7 * 1 = 7  7 * 2 = 14  7 * 3 = 21  7 * 4 = 28  7 * 5 = 35  7 * 6 = 42  7 * 7 = 49  

#8 * 1 = 8  8 * 2 = 16  8 * 3 = 24  8 * 4 = 32  8 * 5 = 40  8 * 6 = 48  8 * 7 = 56  8 * 8 = 64  

#9 * 1 = 9  9 * 2 = 18  9 * 3 = 27  9 * 4 = 36  9 * 5 = 45  9 * 6 = 54  9 * 7 = 63  9 * 8 = 72  9 * 9 = 81 

练习题009:暂停一秒输出

# coding=utf-8

#题目:暂停一秒输出

def fun():
    import time
    print('a')
    time.sleep(1)
    print('b')
    return

fun()

练习题010:暂停一秒输出,并格式化当前时间

# coding=utf-8

#题目:暂停一秒输出,并格式化当前时间。

import time
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
time.sleep(1)
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))

练习题011:兔子个数(此题尚未解决)

# coding=utf-8

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

练习题012:素数判断101-200

# coding=utf-8

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

def is_prime(n):
    from math import sqrt
    if n == 1:
        return False
    for i in range(2, int(sqrt(n)+1)):
        if n % i == 0:
            return False
    return True
#素数判断原理:正整数n(n>2)不能被2到sqrt(n)之间的整数整除则n为素数(质数)

def fun():
    for i in range(101,201):
        if is_prime(i):
            print(i)
    return

fun()

练习题013:水仙花数

# coding=utf-8

#题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方

def fun():
    for i in range(100,1000):
        single=i%10
        ten=int((i%100-single)/10)
        hundred=(i-i%100)/100
        # print(hundred,ten,single,sep=' ')
        if i==single**3+ten**3+hundred**3:
            print(i)
    return

fun()

练习题014:分解质因数

# coding=utf-8

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

'''
def is_prime(n):
    from math import sqrt
    if n == 1:
        return False
    for i in range(2, int(sqrt(n)+1)):
        if n % i == 0:
            return False
    return True

def fun(num):
    if is_prime(num):
        print(num,"=",num)
        return
    else:
        if num%2==0:
            
'''
            
            
#成功测试⬇️(来源:CSDN):
a=int(input('please input a number'))
i=2
c=a
ls=[]
while i<a:
    if a%i==0:
        a=a/i
        ls.append(i)
        i=2
    else:i=i+1
ls.append(round(a))
o=1
while o<len(ls):
    ls.insert(o,'×')
    o=o+2
print(c,'='," ".join('%s' %id for id in ls))

练习题015:分数级别判断

# coding=utf-8

#题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示

score=int(input("请输入分数:"))
if score >= 90:
    print("级别:A")
elif score <= 89 and score >=60:
    print("级别:B")
else:
    print("级别:C")

练习题016:输出指定格式日期(因不了解time库所以放上标准答案)

#coding=utf-8

#题目:输出指定格式的日期。

import datetime

if __name__ == '__main__':
 
    # 输出今日日期,格式为 dd/mm/yyyy。更多选项可以查看 strftime() 方法
    print(datetime.date.today().strftime('%d/%m/%Y'))
 
    # 创建日期对象
    miyazakiBirthDate = datetime.date(1941, 1, 5)
 
    print(miyazakiBirthDate.strftime('%d/%m/%Y'))
 
    # 日期算术运算
    miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1)
 
    print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))
 
    # 日期替换
    miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)
 
    print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))

练习题017:判断字符串中不同字符个数

#coding=utf-8

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

str1=input("please input a string:")
letter=0
space=0
num=0
other=0
nums=set([0,1,2,3,4,5,6,7,8,9])
for i in range(0,len(str1)):
    if ord(str1[i])>=48 and ord(str1[i])<=57:
        num+=1
    else:
        if (ord(str1[i])>=65 and ord(str1[i])<=90) or (ord(str1[i])>=97 and ord(str1[i])<=122):
            letter+=1
        elif str1[i]==' ':
            space+=1
        else:
            other+=1
    
print("letter:",letter)
print("space:",space)
print("num:",num)
print("other:",other)

练习题018:数字加和

#coding=utf-8

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

a=int(input("请输入a:"))
node=a
times=int(input("请输入相加的次数:"))
sum=0
for i in range(0,times):
    sum+=a
    a=a*10+node
print("sum=",sum)

练习题019:寻找“完数”

#coding=utf-8

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

def fun(a):
    i=2
    c=a
    ls=[1]
    while i<a:
        if a%i==0:
            a=a/i
            ls.append(i)
            i=2
        else:i=i+1
    ls.append(round(a))
    # o=1
    # while o<len(ls):
    #     ls.insert(o,'×')
    #     o=o+2
    # print(c,'='," ".join('%s' %id for id in ls))
    if c==sum(ls):
        print(c,'= ',end='')
        for i in range(0,len(ls)-1):
            print(ls[i],'× ',end='')
        print(ls[len(ls)-1],'=',end='')
        for i in range(0,len(ls)-1):
            print(ls[i],'+ ',end='')
        print(ls[len(ls)-1])
    return

for i in range(1,1001):
    fun(i)
    
#仅做到分解质因数,未做到分解因数

#示例程序如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
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):
            stdout.write(str(k[i]))
            stdout.write(' ')
        print k[n]

#示例程序所使用的为python2的语法,请自行修改

练习题020:小球反弹高度及路程

#coding=utf-8

#题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

height=100
length=0
for i in range(1,11):
    if i==1:
        length+=height
    else:
        length+=height*2
    height/=2
print('height=',height)
print('length=',length)

练习题021:猴子吃桃

#coding=utf-8

#题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
#第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
#以后每天早上都吃了前一天剩下的一半零一个。
#到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

count=1
for i in range(0,9):
    count=2*(count+1)
print(count)

练习题022:选手对战名单

# coding=utf-8

# 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。
# 已抽签决定比赛名单。有人向队员打听比赛的名单。
# a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

jia=['a','b','c']
yi=['x','y','z']
vs_a=['x','y','z']
vs_b=['x','y','z']
vs_c=['x','y','z']
vs_c.remove('x')
vs_c.remove('z')
vs_a.remove('x')
vs_a.remove(vs_c[0])
vs_b.remove(vs_a[0])
vs_b.remove(vs_c[0])
print('a vs',vs_a[0])
print('b vs',vs_b[0])
print('c vs',vs_c[0])

练习题023:打印图形

# coding=utf-8

# 题目:打印出如下图案(菱形):
#    *
#   ***
#  *****
# *******
#  *****
#   ***
#    *

for i in range(5,0,-1):
    for j in range(0,i-1):
        print(' ',end='')
    for j in range(2*i,9):
        print('*',end='')
    print('\n')
for i in range(4,0,-1):
    for j in range(0,5-i):
        print(' ',end='')
    for j in range(10-2*i,7):
        print('*',end='')
    print('\n')

练习题024:分数数列前20项和

# coding=utf-8

# 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

# 斐波那契数列
def fibonacci(n):
    if n==0:
        return 0
    elif n==1:
        return 1
    else:
        return fibonacci(n-1)+fibonacci(n-2)

Denominator=0
numerator=0
count=0
for i in range(3,23):
    Denominator=fibonacci(i-1)
    numerator=fibonacci(i)
    count+=numerator/Denominator
print(count)

练习题025:求1+2!+3!+…+20!的和

# coding=utf-8

# 题目:求1+2!+3!+...+20!的和

# 求阶乘
def factorial(x):
    result=1
    while x>0:
        result*=x
        x-=1
    return result

sum=0
for i in range(1,21):
    sum+=factorial(i)
print("1! + 2! + 3! + ... + 20! =",sum)

练习题026:利用递归方法求5!

# coding=utf-8

# 题目:利用递归方法求5!

def factorial(x):
    if x==1:
        return 1
    else:
        return x*factorial(x-1)

print(factorial(5))

练习题027:递归逆向打印字符串

# coding=utf-8

# 题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来

def fun(string,l):
    if l==0:
        return
    else:
        print(string[l-1],end='')
        fun(string,l-1)

string=input("please input a string:")
fun(string,len(string))

练习题028:岁数计算

# coding=utf-8

# 题目:有5个人坐在一起,问第五个人多少岁?
# 他说比第4个人大2岁。
# 问第4个人岁数,他说比第3个人大2岁。
# 问第三个人,又说比第2人大两岁。
# 问第2个人,说比第一个人大两岁。
# 最后问第一个人,他说是10岁。请问第五个人多大?

age=10
for i in range(0,4):
    age+=2
print(age)

练习题029:求解数字位数&逆序打印

# coding=utf-8

# 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

# 递归逆向打印
def fun(string,l):
    if l==0:
        return
    else:
        print(string[l-1],end='')
        fun(string,l-1)

num=int(input("pleae input a number:"))
print(num,"is a",len(str(num)),'digits number')
print("Reverse order:",end=' ')
fun(str(num),len(str(num)))

练习题030:回文数判断

# coding=utf-8

# 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同

num=input("please input a 5 digits number:")
if num[0]==num[4] and num[1]==num[3]:
    print(num,'is a number of tracts')
else:
    print(num,'is not a number of tracts')

练习题031:判断星期

# coding=utf-8

# 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母

'''
星期日 SUNDAY
星期一 MONDAY
星期二 TUESDAY
星期三 WEDNESDAY
星期四 THUSDAY
星期五 FRIDAY
星期六 SATURDAY
'''

string=input("please input the day of the week:")
if string[0] == 'M' or string[0] == 'm':
    print(string,"是星期一")
elif string[0] == 'W' or string[0] == 'w':
    print(string,"是星期三")
elif string[0] == 'S' or string[0] == 's':
    if string[1] == 'U' or string[1] == 'u':
        print(string,"是星期日")
    else:
        print(string,"是星期六")
elif string[0] == 'T' or string[0] == 't':
    if string[1] == 'U' or string[1] == 'u':
        print(string,"是星期二")
    else:
        print(string,"是星期四")
else:
    print("Input errors")

练习题032:反向输出列表

# coding=utf-8

# 题目:按相反的顺序输出列表的值

num = int(input("please input how many elements you want to input:"))
my_list=list([input("please input No.1 element:")])
for i in range(2,num+1):
    print("please input No.",i,sep='',end='')
    my_list.append(input(" element:"))
for i in range(num-1,-1,-1):
    print(my_list[i])

练习题033:逗号分隔列表

# coding=utf-8

# 题目:按逗号分隔列表

my_list=[1,2,3,4,5]
lista=','.join(str(n) for n in my_list)
print(lista)

练习题034:练习函数调用

# coding=utf-8

# 题目:练习函数调用

def hello():
    print("hello")
    return

hello()

练习题035:文本颜色设置

# coding=utf-8

# 题目:文本颜色设置

class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'
print(bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC)

# 此程序为示例答案

练习题036:求100内素数

# coding=utf-8

# 题目:求100之内的素数

count = 0
for i in range(2,101):
    for j in range(2,i+1):
        if i%j == 0:
            count+=1
    if count == 1:
        print(i)
    count=0

练习题037:数字排序

# coding=utf-8

# 题目:对10个数进行排序

num_list=[]
flag=True
for i in range(1,11):
    print("please input No.",i,sep='',end='')
    num_list.append(int(input(" element:")))
while flag:
    flag=False
    for i in range(0,9):
        for j in range(i,9):
            if num_list[j] > num_list[j+1]:
                node = num_list[j]
                num_list[j] = num_list[j+1]
                num_list[j+1] = node
                flag=True
                
print(num_list)

练习题038:矩阵主对角线元素之和

# coding=utf-8

# 题目:求一个3*3矩阵主对角线元素之和

Matrix=[[],[],[]]
for i in range(3):
    for j in range(3):
        print("Please enter the elements in row ",i+1,",column ",j+1,sep='',end='')
        Matrix[i].append(float(input(":")))
Matrix_sum=sum(Matrix[i][i] for i in range(3))
print(Matrix_sum)

练习题039:数组元素插入

# coding=utf-8

# 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中

lista=[1,3,5,7,9,11,13,15,17,19]
num=int(input("please input a number:"))
i = 0
for i in range(len(lista)-1):
    if num<=lista[i]:
        lista.insert(i,num)
        break
print(lista)

练习题040:数组逆序输出

# coding=utf-8

# 题目:将一个数组逆序输出

lista=[1,2,3,4,5]
print(lista[len(lista)-1::-1])

持续更新中...

点赞
  1. dyf说道:
    Google Chrome Windows 10

    前排强势吃瓜

发表评论