经典案例题1
Posted mswyf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典案例题1相关的知识,希望对你有一定的参考价值。
1.有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
for x in range(0,5): for y in range(0,5): for z in range(0,5): if x != y and y != z and z != x: print(x,y,z)
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,求应发放奖金总数?
# 第一种:太麻烦了 def moNey(num): num = int(num) money = 0 if num <= 10: money += num * 1.1 elif 10 < num < 20: money += 10 * 1.1 + (num-10) * 1.075 print(money) num = int(input(‘利润:‘)) moNey(num) # 第二种 使用循环 num = int(input(‘净利润:‘)) list1 = [100,60,40,20,10,0] list2 = [0.01,0.015,0.03,0.05,0.075,0.1] total = 0 for index in range(len(list1)): if num > list1[index]: total += (num - list1[index]) * list2[index] num = list1[index] print(‘应发奖金为:%.2f万元‘%total)
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.输入三个整数x,y,z,请把这三个数由小到大输出
numList = [] for i in range(3): num = int(input(‘请输入第%d个整数:‘%(i+1))) numList.append(num) numList.sort() print(numList)
5. 输入某年某月某日,判断这一天是这一年的第几天?
def coUnt(year,month,day): months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334) num = 0 a = 0 if 0 < month <= 12: num += months[month-1] else: return ‘日期格式错误‘ num += day # 判断闰年的方法 能被400整除 如果年数是100的整数倍,需要能被4整除和整除100不等于0 if year % 400 == 0 and ((year % 4 == 0) or (year % 100 != 0)): a = 1 if (a == 1) and (month > 2): num += 1 return num year = int(input(‘请输入年份:‘)) month = int(input(‘请输入月份:‘)) day = int(input(‘请输入日期:‘)) result = coUnt(year,month,day) print(r"今天是%d中的第%d天,请珍惜时间"%(year,result))
6.斐波那契数列。
def func(a): i = 0 x,y = 0,1 while i < a: print(y) x,y = y,x+y i += 1 func(5)
7.输出 9*9 乘法口诀表。
# 第一种 for i in range(1,10): print() for j in range(1,i + 1): print(‘%d*%d=%2d ‘%(j,i,i*j),end=‘‘) # 第二种 print(‘ ‘.join([‘ ‘.join([‘%s*%s=%-2s‘ % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))
8.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
f1 = 1 f2 = 1 for i in range(1,22): print(‘%12ld %12ld‘ % (f1,f2),end=‘‘) if (i % 3) == 0: print() f1 = f1 + f2 f2 = f1 + f2
9.题目:判断101-200之间有多少个素数,并输出所有素数(质数)。
h = 0 leap = 1 from math import sqrt for m in range(101,201): k = int(sqrt(m + 1)) for i in range(2,k + 1): if m % i == 0: leap = 0 break if leap == 1: print(‘%-4d‘ % m) h += 1 if h % 10 == 0: print() leap = 1 print(‘The total is %d‘ % h)
10.题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
for i in range(100,1000): x = i // 100 y = i // 10 % 10 z = i % 10 if x ** 3 + y ** 3 + z ** 3 == i: print(i)
11.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
def reduceNum(n): print(‘{} = ‘.format(n),end="") if not isinstance(n, int) or n <= 0 : print(‘请输入一个正确的数字 !‘) exit(0) elif n in [1] : print(‘{}‘.format(n)) while n not in [1] : # 循环保证递归 for index in range(2, int(n) + 1) : if n % index == 0: n /= index # n 等于 n/index if n == 1: print(index) else : # index 一定是素数 print(‘{} * ‘.format(index),end=‘‘) break reduceNum(90) reduceNum(100)
12.题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
def grAde(sroce): if 0 <= sroce <= 100: if sroce >= 90: print(‘学习成绩为:A级‘) elif 60 <= sroce <= 89: print(‘学习成绩为:B级‘) else: print(‘学习成绩为:C级‘) else: print(‘分数超出范围‘) sroce = int(input(‘请输入你的分数:‘)) grAde(sroce)
13.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
def selectNumber(sTring): nuMber = 0 spAce = 0 leTter = 0 reSts = 0 for i in sTring: if i.isalpha(): leTter += 1 elif i.isdigit(): nuMber += 1 elif i.isspace(): spAce += 1 else: reSts += 1 else: print(‘输入的字符为:%s,字母有%d个,数字有%d个,空字符有%d个,其他字符有%d个‘%(sTring,leTter,nuMber,spAce,reSts)) sTring = input(‘请随便输入一句话:‘) selectNumber(sTring)
14.题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制
n=input(‘请输入计算数:‘) m=eval(input(‘请输入层数:‘)) s=0 for i in range(1,m+1): a=n*i s += eval(a) print(s)
15.题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
for i in range(1,1001): s = 0 L = [] for x in range(1,int((i+3)/2)): if i % x == 0: s += x L.append(x) if i == s: print(i) print(L)
16.题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
long = 100 sum = 100 for i in range(2, 11): sum = sum + long long = long / 2 print("第%d次,经过%f米,反弹高度为%f" % (i, sum, long/2))
17.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
x = 1 for i in range(0,9): x = (x + 1) * 2 print(x)
18.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
Team_A = [‘x‘,‘y‘,‘z‘] for a in Team_A: for b in Team_A: for c in Team_A: if (a != b) and (b != c) and (c != a) and (a != ‘x‘) and (c != ‘x‘) and (c != ‘z‘): print(‘a = %s,b = %s,c = %s‘%(a,b,c))
19.输出指定行数的菱形星星
def xingxing(h): for i in range(h): print((h-1-i)*‘ ‘+(i*2-1)*‘*‘) for i in range(h-2): print((i+1)*‘ ‘+(((h-2)*2-1)-2*i)*‘*‘) xingxing(8)
20.题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
sum = 0 a,b = 1,2 for i in range(1,21): sum += b / a a,b = b,a+b print(sum)
以上是关于经典案例题1的主要内容,如果未能解决你的问题,请参考以下文章