# 1 .题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
# 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
list0 = [1, 2, 3, 4]
list1 = [(100 * x + 10 * y + z) for x in list0 for y in list0
if y != x for z in list0 if z != y if z != x]
print('能组成%s个互不相同且无重复数字的三位数,分别是%s' % (len(list1), list1))
# 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,求应发放奖金总数?
# 程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型
profit = [1000000, 600000, 400000, 200000, 100000, 0]
rate = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]
bonus = 0
try:
in_profit = int(input('请输入当月利润:'))
for index in range(6): # 索引是0-5
if in_profit > profit[index]:
bonus += (in_profit - profit[index]) * rate[index]
in_profit = profit[index]
print('应发放奖金总数是%d' % int(bonus))
except Exception as e:
print('请输入正确数字')
# 3.题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#
# 程序分析:
#
# 假设该数为 x。
#
# 1、则:x + 100 = n2, x + 100 + 168 = m2
#
# 2、计算等式:m2 - n2 = (m + n)(m - n) = 168
#
# 3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数
#
# 4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。
#
# 5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。
#
# 6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。
#
# 7、接下来将 i 的所有数字循环计算即可。
list3 = [(int((i + j) / 2) ** 2 - 100 - 168, int((i - j) / 2) ** 2 - 100)
for i in range(2, 85) for j in range(2, 85) if i * j == 168]
# m的平方-100-168 等于x (i+j)/2 等于m n的平分-100 等于x (i-j)/2 等于n
list4 = []
for i in set(list3):
if i[0] == i[1]:
list4.append(i[0])
list4.sort()
print('这个数可以是%s' % '或'.join(str(i) for i in list4))
# 4. 题目:输入某年某月某日,判断这一天是这一年的第几天?
#
# 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,
# 特殊情况,闰年且输入月份大于2时需考虑多加一天:
list_day = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30]
list_month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
date_str = input('Enter the datetime(20170228):')
month = int(date_str[4:6])
year = int(date_str[:4])
day = int(date_str[-2:])
if year % 4 == 0 and year % 100 != 0:
if month > 2:
day += 1
i = 0
sum_day = 0
while month >= list_month[i]:
sum_day += list_day[i]
i += 1
if month == list_month[i - 1]:
sum_day += day
break
print('%d月%d日是%d年的第%d天.' % (month, day, year, sum_day))
# 5. 题目:输入三个整数x,y,z,请把这三个数由小到大输出。
#
# 程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,
# 如果x>z则将x与z的值进行交换,这样能使x最小
x = int(input('请输入第一个数字:'))
y = int(input('请输入第二个数字'))
z = int(input('请输入第三个数字'))
print('你输入的三个数字是', x, y, z)
while True:
if x <= y <= z:
break
if x > y:
x, y = y, x
elif x > z:
x, z = z, x
elif y > z:
y, z = z, y
print('排序后是', x, y, z)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。