1.有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
list = [1,2,3,4]
sum=0
for i in list:
for j in list:
for z in list: #分别从百位,十位,个位中取数
if i != j and j!=z and i!=z: #满足互不相同条件
print(i*100+j*10+z)
sum+=1
print("可以组成这样的数字有",sum,"个")
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,求
应发放奖金总数?
p = int(input("请输入当月利润(万元):"))
m = 0
if p<=10:
m = p*0.1
elif p>10 and p<=20:
m=10*0.1+(p-10)*0.075
elif p>20 and p<=40:
m=10*0.1+10*0.075+(p-20)*0.05
elif p>40 and p<=60:
m=10*0.1+10*0.075+20*0.05+(p-40)*0.03
elif p>60 and p<=100:
m=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015
else:
m=10*0.1+10*0.075+20*0.005+20*0.03+40*0.015+(p-100)*0.01
print("应发放奖金数为:",m)
3.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
m = n = 0
for i in range(2,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
if(m**2-268) == (n**2-100):
print(m**2-268)
4.输入某年某月某日,判断这一天是这一年的第几天?
list1=[0,31,29,31,30,31,30,31,31,30,31,30,31]
list2=[0,31,28,31,30,31,30,31,31,30,31,30,31] #建立闰年平年每月的天数列表
sum = 0
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
if (year %4==0 and year %100!=0) or year % 400==0:
for i in range(1,month):
sum = sum +list1[i]
sum += day #累计循环加入天数
else:
for i in range(1,month):
sum = sum +list2[i]
sum += day
print("这天是一年中的第",sum,"天")
5.输入三个整数x,y,z,请把这三个数由小到大输出。
x = int(input("请输入x的值"))
y = int(input("请输入y的值"))
z = int(input("请输入z的值"))
if x>=y:
if x>=z and y>=z:
print("由小到大输出为:",z,y,x)
elif x>=z and z>=y:
print("由小到大输出为:",y,z,x)
else:
print("由小到大输出为:",y,x,z)
else:
if y>=z and x>=z:
print("由小到大输出为:",z,x,y)
elif y>=z and z>=x:
print("由小到大输出为:",x,z,y)
else:
print("由小到大输出为:",x,y,z)
6.斐波那契数列
n =int (input("请输入需求数:"))
def f(n):
if n==0:
return 0
elif n==1:
return 1
else:
return f(n-1)+f(n-2) #递归调用原函数
print("对应的斐波那契数列为:",f(n))
7.将一个列表的数据复制到另一个列表中。
list1=[1,2,3,4]
list2=list1
print(list1)
8.输出 9*9 乘法口诀表。
for i in range(1,10):
print(" ")
for j in range(1,10):
print("%d*%d=%d "%(i,j,i*j))
9.暂停一秒输出。
import time
time.sleep(1)
print("暂停了一秒偶")
10.暂停一秒输出,并格式化当前时间。
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())))
11.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生
一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
m =int(input("请输入值:"))
def func(n):
if n==1:
return 1
if n==2:
return 1
else:
return func(n-1)+func(n-2)
print("该月份兔子有",func(m),"只")
12.判断101-200之间有多少个素数,并输出所有素数。
di = 2
for i in range(101, 201):
while (i % di != 0 and di < i-1):
di += 1
if i == di + 1:
print(i)
di = 2
13.打印出所有水仙花数
for i in range(100,1000):
b=i//100
s=i//10%10
g=i%100 #取百位,十位,个位数字
if(b**3+s**3+g**3 == i): #判断该数字是否满足条件
print(i)
14.将一个正整数分解质因数。例如:输入90,打印出90=233*5
n = int(input("请输入数字:"))
i = 2
while(n>=2):
if n%i==0:
n=n/i
print(i)
i=2
else:
i +=1
15.利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示
score = int(input("请输入成绩:"))
if score >= 90:
grade = "A"
elif score >=60 and score <=89:
grade = "B"
else:
grade ="C"
print("%d属于%s"%(score,grade))
16.输出指定格式的日期。
import datetime
if __name__ == '__main__':
print(datetime.date.today().strftime("%d %m %Y")) #格式化输出当前日期
oneday = datetime.date(2018,1,2) #创建时间日期对象
print(oneday.strftime("%d %m %Y"))
nextday = oneday + datetime.timedelta(days=1)
print(nextday.strftime("%d %m %Y")) #日期算术运算
oneday = oneday.replace(year=oneday.year+1)
print(oneday.strftime("%d %m %Y")) #日期替换
17.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
str= input("请输入字符串:")
english = 0
space = 0
number = 0
char1 = 0 #建立每种字符的统计器
for i in range(0,len(str)): #判断每个字符的类型
if str[i]>'0' and str[i]<'9':
number+=1
elif str[i]>'A' and str[i]<'z':
english+=1
elif str[i] ==' ':
space+=1
else:
char1+=1
print("数字有",number,"个","英文字母有",english,"个","空格有",space,"个","其他字符有",char1,"个")
18.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
n = int(input("请输入数字:"))
a = int(input("请输入a的值:"))
sum = a
var = a
for i in range(1,n):
var = var + a*(10**i) #var变量存储每个值
sum = sum+ var #sum累计求和
print(sum)
19.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
for i in range(1,1000):
t =i #记下变量
sum = 0 #统计和
var = 2
while var < i: #找出该数的因子
if i%var == 0:
sum += var
var += 1
else:
var += 1
if sum+1 == t:
print(t)
20.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
sum = 0
var = 100
for i in range(1,11):
var = var/2
sum = sum+var+var*2
print("共经过",sum,"第10次反弹",var)
21.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
sum = 1
for i in range(1,10):
sum =(sum+1)*2
print(sum)
22.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
for i in range(ord('x'),ord('z') + 1):
for j in range(ord('x'),ord('z') + 1):
if i != j:
for k in range(ord('x'),ord('z') + 1):
if (i != k) and (j != k):
if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):
print 'order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k))
23.打印出如下图案(菱形):
*
from sys import stdout #控制流程输出
for i in range(4):
for j in range(2 - i + 1):
stdout.write(' ')
for k in range(2 * i + 1):
stdout.write('*')
print("\n") #打印前四行
for i in range(3):
for j in range(i + 1):
stdout.write(' ')
for k in range(4 - 2 * i + 1):
stdout.write('*')
print("\n") #打印后三行
24.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
def fen(n):
if n==1:
return 1
if n==2:
return 2
else:
return fen(n-1)+fen(n-2) #定义求分母的函数
sum = 0
for i in range(1,21):
sum = sum + fen(i+1) / fen(i) #累加前20项的和
print(sum)
25.求1+2!+3!+…+20!的和。
def j(n):
if n == 1:
return 1
else:
return n*j(n-1) #定义求阶乘的函数
sum =0
for i in range(1,21):
sum+=j(i) #累加1到20的阶乘
print(sum)
26.利用递归方法求5!。
def j(n):
if n == 1:
return 1
else:
return n*j(n-1) #定义求阶乘的方法
print(j(5))
27.利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来
def pr(str,l):
if l == 0:
return
print(str[l-1])
pr(str,l-1) #定义反向输出函数,两个参数控制
str1 =input("请输入5个字符:")
l = len(str1)
pr(str1,l) #输入字符串,调用反向输出函数
28.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
def func(n):
if n == 1:
return 10
else:
return func(n-1)+2 #定义递归函数
print(func(5)) #调用递归函数输出结果
29.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
n = int(input("请输入一个不多于5位的正整数"))
a =n//10000
b =n//1000%10
c =n//100%10
d =n%100//10
e =n%10 #取个十百千万位的数字
if n >=10000:
print("该数是5位数")
print(e,d,c,b,a)
elif n>=1000:
print("该数是4位数")
print(e,d,c,b)
elif n>=100:
print("该数是三位数")
print(e,d,c)
elif n>=10:
print("该数是两位数")
print(e,d)
else:
print("该数是两位数")
print(e) #判断位数,并逆序输出
30一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
n =int(input("请输入一个五位数:"))
a = n//10000
b = n//1000%10
c = n//100%10
d=n%100//10
e =n%10 #取个十百千万位数字
if a==e and b==d:
print("该数是回文数")
else:
print("该数不是回文数") #判断逻辑条件是否为回文数
31请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母
monday tuesday Wednesday thursday friday saturday sunday
str1 = input("请输入第一个字母:")
if str1 =='m':
print("这天是星期一")
elif str1 == 'w':
print("这天是星期三")
elif str1 == 'f':
print("这天是星期五")
elif str1 =='t':
str2= input("请输入第二个字母:")
if str2 =='u':
print("这天是星期二")
elif str2== 'h':
print("这天是星期四")
else:
print("输入有误")
elif str1 =='s':
str2= input("请输入第二个字母:")
if str2 =='u':
print("这天是星期天")
elif str2== 'a':
print("这天是星期六")
else:
print("输入有误")
32.按相反的顺序输出列表的值。
list = [1,2,3,4,5]
l =len(list) #取列表长度
while l :
print(list[l-1]) #依次从后位向前位打印
l = l-1
33.按逗号分隔列表。
L = [1,2,3,4,5]
s1 = ','.join(str(n) for n in L) # join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串
print s1
34.练习函数调用。
def func1():
print("我是第一个函数")
def func2():
func1()
print("我是第二个函数")
if __name__=='__main__':
func2()
35.文本颜色设置。
class bcolors:
HEADER = '\033[95m' #书写格式:\033[显示方式;前景色;背景色m+结尾部分:\033[0m
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)
36.求100之内的素数。
for i in range(1,100):
div = 2
while(div
37.对10个数进行排序。
list=[0,0,0,0,0,0,0,0,0,0] #初始化列表
for i in range(10):
list[i]=int(input("请输入数字:"))
list.sort() #调用列表排序算法
print(list)
38.求一个3*3矩阵主对角线元素之和。
list =[]
sum =0
for i in range(3):
list.append([])
for j in range(3):
list[i].append(int(input("请输入数字:"))) #双重循环输入二维矩阵的值
for i in range(3):
sum +=list[i][i] #累加对角线元素和
print(sum)
39.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
a =[1,3,5,7,9,11,13,15,17,19,0] #设置0标志位
number = int(input("请输入要插入的数字:"))
if number>a[9]:
a[10]=number #大于最高位,直接放在最后面
else:
for i in range(10):
if(number
40.将一个数组逆序输出。
list =[1,3,5,7,9]
l=len(list)
while l:
print(list[l-1])
l-=1
41.模仿静态变量的用法。
class Static:
StaticVar = 0
def varfunc(self):
self.StaticVar += 1
print (self.StaticVar)
print (Static.StaticVar)
a = Static()
for i in range(3):
a.varfunc()
42.学习使用变量作用域的用法:
num =0
def func():
num=1
print("调用函数后",num)
num+=1
for i in range(3):
print("主程序",num)
num+=1
func()
43.学习使用变量作用域的用法2:
class S:
snum=1
def func(self):
self.snum+=1
print("调用类的函数后:",self.snum)
snum = 0
s = S()
for i in range(3):
snum+=1
print("主程序的数字:",snum)
s.func()
44.两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:
a = []
for i in range(3):
a.append([])
for j in range(3):
a[i].append(int(input("请输入第一个矩阵的值"))) #第一个矩阵赋值
b = []
for i in range(3):
b.append([])
for j in range(3):
b[i].append(int(input("请输入第二个矩阵的值"))) #第二个矩阵赋值
c=[]
for i in range(3):
c.append([])
for j in range(3):
c[i].append(a[i][j]+b[i][j]) #两个矩阵对应位置相加
print(c)
45.统计 1 到 100 之和。
sum = 0
for i in range(101):
sum+=i
print(sum)
46.求输入数字的平方,如果平方运算后小于 50 则退出。
while True:
n = int(input("请输入数字:"))
n2 = n**2
print(n2)
if n2<50:
break
47.两个变量值互换。
n1=1
n2=2
temp =n1
n1 = n2
n2 = temp
print(n1,n2)
48.数字比较。
a = int(input("请输入A的值:"))
b = int(input("请输入B的值:"))
if a>b:
print("a大于b")
elif a==b:
print("a等于b")
else:
print("a小于b")
49.使用lambda来创建匿名函数
MAX = lambda x,y:(x>y)*x+(xy)*y+(x
50.输出一个随机数
import random
n=random.choice(range(100))
print(n)