Python基本练习三
猴子吃桃问题。
猴子第一天摘下若干个套装,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天找事都吃了前一天剩下的一半零一个。到第10天找事想吃时,只剩下一个桃子了,求第一天共摘多少个桃子
num = 1 #第10天剩下1个桃子
for i in range(9,0,-1):
num = (num+1)*2
print("第{}天有{}个".format(i,num))
print(num)
杨辉三角
#求杨辉三角第m行的第k个元素,
#1.第m行有m项,m是正整数,因此k一定不会大于m
#2.第n行的m个元素可表示为C(n-1,m-1),即为从n-1个不通元素中取m-1个元素的组合数
n = int(input("请输入要打印的行数:"))
arr = [1]*(n+1)
nn = n//2 if n&1 else n//2 +1
for i in range(1,nn+1):
num1 = 1
num2 = 1
for k in range(1,i+1):
num1 *=(n-k+1)
num2 *= k
num3 = int(num1/num2)
arr[i]= num3
arr[-i-1]= num3
print(arr);
统计重复数字
#随机产生10个数,每个数字取值范围是[1,20],统计重复的数字有几个?分别是什么?不重复的数字有几个?分别是什么
- 第一种解法
import random
str1 = []
str2 = []
for i in range(10):
num = random.randint(1,20)
if num in str2:
continue
if num in str1:
str2.append(str1.pop(str1.index(num)))
else:
str1.append(num)
print("有{}个数重复,分别是:{}".format(len(str2),str2))
print("有{}个数没有重复过,分别是:{}".format(len(str1),str1))
- 第二种解法
#第二种解法
n = 20
num = [ random.randint(1,20) for _ in range(n)]
numindex =