公鸡一只5元,母鸡一只3元,小鸡3只1元。如何用100元买100只鸡。其中公鸡,母鸡,小鸡的数量各是多少?
Demo1:
for x in range(0,21): #公鸡最多买20只
for y in range(0,34): #母鸡最多买33只
z = 100 - x -y #小鸡个数等于100只-公鸡与母鸡的个数
if (5*x + 3*y + z/3)==100: #如果共计100元
print("公鸡{}只,母鸡{}只,小鸡{}只".format(x,y,z))
8个教师随机分到3个教室
Demo2:
import random #调用random函数包
teachers = ['A','B','C','D','E','F','G','H']
offices = ['101教室','102教室','103教室']
d = {}
for i in range(3): #i=0,1,2
d[i] = [] #分配三个办公室
for t in teachers:
d[random.randint(0,2)].append(t) #随机选一个办公室将8个老师依次添加进去
#randint函数来自于random函数包
#randint(a,b)随机产生a-b之间的整数,包括a和b。
for k,v in d.items():
print("{}有老师:{}".format(offices[k],v)) #第k个办公室有v位老师
'''print(d[0])
print(d[1])
print(d[2])'''
输入三个数字,判断是否构成三角形?如果构成三角形,则计算该三角形的面积。
Demo3:
import math #调用math函数包
nums = input("请输入构成三角形的3个数字,以空格分隔:") #input用于输入字符,空格分隔,回车结束,并存放与列表nums中
nums = [float(x) for x in nums.split(" ")] #用空格切片,并将输入的字符依次转化为浮点型参与运算
if nums[0] + nums[1] > nums[2] and nums[1] + nums[2] > nums[0] and nums[0] + nums[2] > nums[1]: #判断条件:任意两边之和大于第三边
s = sum(nums) / 2 #海伦公式根据边长求面积S=√p(p-a)(p-b)(p-c)
area=math.sqrt(s*(s - nums[0])*(s - nums[1])*(s - nums[2]))
print("{}, {}, {}能构成三角形,面积为:{}".format(*nums,area))
else:
print("{}, {}, {}不能构成三角形".format(*nums))
编写函数并调用:采用冒泡排序方法对列表[ 4, 7, 6, 8, 2]进行从小到大排序处理
Demo4:
def bubble_sort(lst):
lst_len = len(lst) #获取数组长度
for i in range(1,lst_len-1): #外层共遍历
for j in range(0,lst_len-i):
if lst[j]>lst[j+1]: #如果前一个比后一个大
lst[j],lst[j+1]=lst[j+1],lst[j] #交换位置,从小到大排列
#if lst[j]
编写函数并调用:采用直接排序方法对列表[ 4, 7, 6, 8, 2]进行从小到大排序处理
Demo5:
def direct_sort(lst): #直接排序
lst_len = len(lst)
for i in range(lst_len-1):
for j in range(i+1,lst_len):
if lst[i]>lst[j]:
lst[i],lst[j]=lst[j],lst[i]
lst1=[4, 7, 6, 8, 2]
print(lst1)
direct_sort(lst1)
print(lst1)
编写函数并调用:采用快速排序方法对列表[ 4, 7, 6, 8, 2]进行从小到大排序处理
Demo6:
def fast_sort(lst): #快速排序
if len(lst)<2:
return lst
mid=lst[len(lst)//2]
left_lst,right_lst=[],[]
lst.remove(mid)
for e in lst:
if e>=mid:
right_lst.append(e)
else:
left_lst.append(e)
return fast_sort(left_lst)+[mid]+fast_sort(right_lst)
lst1=[4, 7, 6, 8, 2]
print(lst1)
lst1=fast_sort(lst1)
print(lst1)
编写函数并调用:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假如兔子都不死,一年内的兔子总数为多少?
Demo7:
def rabbit(month):
if month<=2:
return 1
return rabbit(month-2)+rabbit(month-1)
print(rabbit(12))
编写程序求一个数的阶乘
Demo8:
def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
print(factorial(5))
编写程序:一球从300米高度自由落下,每次落地后反跳回原高度的二分之一,再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
Demo9:
height=300
count=10
s=0
while count>0:
s+=height
count-=1
height/=2
s+=height
print(s-height)
print(height)
""" height=300
count=10
lst=[]
lst.append(height)
for i in range(1,10):
height/=2
lst.append(height)
lst.append(height)
print(sum(lst))
print(height/2) """
输出打印九九乘法表
Demo10:
for i in range(1,10):
for j in range(1,i+1):
print("{}×{}={:2d}".format(j,i,i*j),end=" ")
if i == j:
print("")
编写函数并调用:求100以内的质数
Demo11:
lst=[]
for i in range(2,101):
for j in range(2,i):
if i%j==0:
break
else:
lst.append(i)
print(lst)
若一个3位数,每一个数字的3次幂之和都等于它本身,则这个三位数被称为水仙花数。例如:153是水仙花数,各位数字的立方和为:13+53+33=153,编程求出所有的水仙花数
Demo12:
'''for n in range(100,1000):
n_str=str(n)
if n==int(n_str[0])**3+int(n_str[1])**3+int(n_str[2])**3:
print("水仙花数:",n)'''
for n in range(100,1000):
n1=n//100
n2=(n%100)//10
n3=n%10
if n==n1**3+n2**3+n3**3:
print("水仙花数:", n)
只能由1和它本身整除的整数称为素数;若一个素数从左向右读与从右向左读是相同的数,则该素数为回文素数。编程求出2-1000内的所有回文素数
Demo13:
for n in range(2,1001):
for i in range(2,n):
if n%i==0:
break
else:
n_str=str(n)
if n_str==n_str[::-1]:
print("回文素数:",n)
美国NBA球员Lin的前10场得分资料如下:
24,19,14,23,32,19,28,19,22,11,请使用匿名函数和filter()函数,列出得分超过20分(含)的列表
Demo14:
lst=[24,19,14,23,32,19,28,19,22,11]
lst2=[x for x in filter(lambda x:x>=20,lst)]
print(lst2)
输入某年某月某日,判断这一天是这一年的第几天
Demo15:
dat = input("请输入年月日(以空格间隔):")
year,month,day=dat.split(" ") #将输入的字符串切片,分别送给year,month,day三个变量
year,month,day=int(year),int(month),int(day) #将三个变量转换为整型
months = (0,31,59,90,120,151,181,212,243,273,304,334)
#一年共有365天(1月~12月分别为31天、28天、31天、30天、31天、30天、31天、31天、30天、31天、30天、31天)
if 1 <= month <= 12: #月份规定为1-12之间的数
sum = months[month - 1] #月份索引从0开始,要-1
else:
print("月份输入错误!")
sum += day #求累计天数,如输入1月1日,则sum = month[0] + day = 0 + 1 = 1,即1月1日为该月份第1天
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)): #判断是否为闰年
'''
1582年以来的置闰规则:
普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。
1582年以前的惯例:四年一闰;如果公元A年的A(正数)能被4整除,那么它就是闰年;
如果公元前B年的B(正数)除以4余1,那么它也是闰年。
'''
leap = 1
if (leap == 1) and (month > 2): #如果是闰年的话,且输入的月份在2月份之后要多加上一天
sum += 1 #闰年(1月~12月分别为31天、29天、31天、30天、31天、30天、31天、31天、30天、31天、30天、31天)
print("{}年{}月{}日是一年中的第{}天".format(year,month,day,sum))
Demo16:
for i in range(1,10):
for j in range(1,i+1):
print("{}×{}={:2d}".format(j,i,i*j),end=" ")
if i == j:
print("")
生成一个任意长度的随机密码
Demo17:
import random
x=int(input("请输入生成随机密码的长度:"))
print(''.join([random.choice('QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm!@#$%^&*()_+=}{[]:;<,.>?/1234567890') for i in range(x)]))
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
Demo18:
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,end="n")
total+=1
print("共计:",total,"个")
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数
Demo19:
#一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
def factor(num): #定义一个函数
target=int(num)
res=set()
for i in range(1,num):
if num%i==0: #通过遍历求余数的方法找出所有因子
res.add(i) #将得到的因子存入res集合
return res
for i in range(2,1001):
if i==sum(factor(i)): #从2到1000之间进行遍历,当i等于i的所有因子之和时,打印出结果
print("完数:",i)



