注:题目来自菜鸟教程 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])
持续更新中...
前排强势吃瓜