1、数字组合
题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
首先我们利用for循环列出所有的组合方式,然后再利用if剔除重复的组合就得以实现。
total = 0
for i in range(1, 5):
for j in range(1, 5):
for k in range(1, 5):
if((i != j)and(j != k)and(k != i)):
print(i, j, k)
total += 1
print(total)
如果想延申一下,随机列一些数进行组合那我们可以将range(1, 5)换成元组就得以实现。
当然我们还可以利用itertools的permutations()实现该题
import itertools
sum2=0
a=[1,2,3,4]
for i in itertools.permutations(a,3):
print(i)
sum2 += 1
print(sum2)
2、个税计算
题目:企业发放的奖金根据利润提成。低于或等于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,求应发放奖金总数?
profit = int(input("请输入利润:"))
bonus = 0
thresholds = [100000, 100000, 200000, 200000, 400000]
rates = [0.1, 0.075, 0.05, 0.03, 0.015, 0.01]
for i in range(len(thresholds)):
if profit <= thresholds[i]:
bonus += profit * rates[i]
profit = 0
break
else:
bonus += thresholds[i]*rates[i]
profit -= thresholds[i]
print(bonus)
3、完全平方数
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问 #该数是多少?
用while获取该数的最大值,然后通过for循环将该范围的数值一一列举再通过if语句判断出正确的打印出来。
n = 0
while(n+1)**2-n*n<168:
n+=1
for i in range((n+1)**2):
if i**0.5==int(i**0.5)and(i+168)**0.5==int((i+168)**0.5):
print(i-100)
输出结果:
补:x**y 相当于求x的y次方 即:x^y
4、这天第几天
题目:输入某年某月某日,判断这一天是这一年的第几天?
判断这天是今年的第几天,我们要考虑闰年和平年
可以运用%判断该年份是平年还是闰年,按照平闰年的不同将每个月相加再加上该月天数即得到是该年的第几天。
year = 0
month = 0
day = 0
year = int(input("请输入年份:"))
if (year%4 == 0):
month = int(input("请输入月份:"))
while month > 12 or month < 1:
print("输入出错")
month = int(input("请重新输入月份:"))
day = int(input("请输入几号:"))
if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12:
while day > 31 or day < 1:
print("输入出错")
day = int(input("请重新输入几号:"))
elif day == 2:
while day > 29 or day < 1:
print("输入出错")
day = int(input("请重新输入几号:"))
else:
while day > 30 or day < 1:
print("输入出错")
day = int(input("请重新输入几号:"))
if month == 1:
print(f"这年第{day}天")
elif month == 2:
print(f"这年第{31+day}天")
elif month == 3:
print(f"这年第{31+29+day}天")
elif month == 4:
print(f"这年第{31+29+31+day}天")
elif month == 5:
print(f"这年第{31+29+31+30+day}天")
elif month == 6:
print(f"这年第{31+29+31+30+31+day}天")
elif month == 7:
print(f"这年第{31+29+31+30+31+30+day}天")
elif month == 8:
print(f"这年第{31+29+31+30+31+30+31+day}天")
elif month == 9:
print(f"这年第{31+29+31+30+31+30+31+31+day}天")
elif month == 10:
print(f"这年第{31+29+31+30+31+30+31+31+30+day}天")
elif month == 11:
print(f"这年第{31+29+31+30+31+30+31+31+30+31+day}天")
else:
print(f"这年第{31+29+31+30+31+30+31+31+30+31+30+day}天")
else:
month = int(input("请输入月份:"))
while month > 12 or month < 1:
print("输入出错")
month = int(input("请重新输入月份:"))
day = int(input("请输入几号:"))
if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12:
while day > 31 or day < 1:
print("输入出错")
day = int(input("请重新输入几号:"))
elif day == 2:
while day > 28 or day < 1:
print("输入出错")
day = int(input("请重新输入几号:"))
else:
while day > 30 or day < 1:
print("输入出错")
day = int(input("请重新输入几号:"))
if month == 1:
print(f"这年第{day}天")
elif month == 2:
print(f"这年第{31+day}天")
elif month == 3:
print(f"这年第{31+28+day}天")
elif month == 4:
print(f"这年第{31+28+31+day}天")
elif month == 5:
print(f"这年第{31+28+31+30+day}天")
elif month == 6:
print(f"这年第{31+28+31+30+31+day}天")
elif month == 7:
print(f"这年第{31+28+31+30+31+30+day}天")
elif month == 8:
print(f"这年第{31+28+31+30+31+30+31+day}天")
elif month == 9:
print(f"这年第{31+28+31+30+31+30+31+31+day}天")
elif month == 10:
print(f"这年第{31+28+31+30+31+30+31+31+30+day}天")
elif month == 11:
print(f"这年第{31+28+31+30+31+30+31+31+30+31+day}天")
else:
print(f"这年第{31+28+31+30+31+30+31+31+30+31+30+day}天")
当然还可以利用元组和for循环的配合实现该题
def isLeapYear(y):
return (y%400==0 or (y%4==0 and y%100!=0))
DofM=[0,31,28,31,30,31,30,31,31,30,31,30]
res=0
year=int(input('Year:'))
month=int(input('Month:'))
day=int(input('day:'))
if isLeapYear(year):
DofM[2]+=1
for i in range(month):
res+=DofM[i]
print(res+day)
5、三数排序
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
这种方法比较麻烦,通过将数进行一个一个比较然后再输出。
num = [0, 0, 0]
for i in range(3):
num[i] = int(input(f"请输入第{i+1}个数:"))
if num[0] < num[1]:
if num[1] < num[2]:
num[0],num[2] = num[2],num[0]
else:
if num[0] > num[2]:
num[0],num[1],num[2] = num[1],num[0],num[2]
else:
num[0],num[1],num[2] = num[1],num[2],num[0]
else:
if num[0]<num[2]:
num[0],num[1],num[2] = num[2],num[0],num[1]
else:
if num[1] > num[2]:
num[0],num[1],num[2] = num[0],num[1],num[2]
else:
num[0],num[1],num[2] = num[0],num[2],num[1]
print(num[2], num[1], num[0])
这个方法利用了sort()函数将元组的数从大到小排列好之后,我们依次输出就行
num = [0,0,0]
for i in range(3):
num[i] = int(input(f"请输入第{i+1}个数:"))
num.sort()
print(num)
print(num[2], num[1], num[0])
6、斐波那契数列
题目:斐波那契数列。
斐波那契数列(Fibonacci sequence),从1,1开始,后面每一项等于前面两项之和。
输入数值就是打印出几个斐波那契数
n = input("请输入输出多少个斐波那契数:")
a, b = 0, 1
for i in range(int(n)):
a, b = b, a+b
print(a)
7、Copy
题目:将一个列表的数据复制到另一个列表中。
程序分析使用列表[:],拿不准可以调用copy模块。
import copy
a = [“刘备”, “关羽”,“张飞”, [‘曹冲’, ‘孙权’]]
b = a #赋值
c = a[:] #浅拷贝
d = copy.copy(a) #浅拷贝
e = copy.deepcopy(a) #深拷贝
a.append(5)
a[3].append(‘诸葛亮’)
print(“a=”,a)
print(“b=”,b)
print(“c=”,c)
print(“d=”,d)
print(“e=”,e)
这里具体分析了拷贝!
8、九九乘法表
题目:输出9*9乘法口诀表
for n in range(1,10):
for i in range(1,n+1):
print("%d*%d=%d" %(i, n, n*i), end=" ")
print()
9、暂停一秒输出
题目:暂停一秒输出。
import time
for i in range(10):
print(i+1)
time.sleep(1)
time库函数具体在这里
10、给人看的时间
题目:暂停一秒输出,并格式化当前时间。
隔一秒打印出一次当前日期
import time
while 1:
print(time.strftime("%Z %Y-%m-%d %X ", time.localtime()))
print(time.strftime("%a"))
time.sleep(1)
time库函数具体在这里