# 猴子吃桃问题:# 猴子第一天摘下若干个桃子,立即吃了一半,还不过瘾,又多吃了一个# 次日早上又将剩下的桃子吃掉一半,又多吃了一个。# 之后天天早上都吃了前一天剩下的一半零一个。# 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
a =1for i inrange(9):
a =(a +1)*2if i ==8:print(f"第一天一共摘了{a}个桃子")
运行结果
第一天一共摘了1534个桃子
第三题
答案
# 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。# 假设我输入的字符是value
value ="147963123987554682469173//c/d/r/g/h/w/j/a/c/g a b d t 4 k g ShSuUlT"
my_list =[]for i in value:if i notin my_list:
my_list.append(i)else:continueprint(my_list)
a =0for j in my_list:for n in value:if j == n:
a +=1else:continueprint(f"{j}的个数是{a}")
a =0
# 有四个数字:一、二、三、4,能组成多少个互不相同且无重复数字的三位数?各是多少?# 首先咱们把1,2,3,4四个数字放到一个列表中.
new_list =[1,2,3,4]# 而后定义两个空列表# 一个用来存放组成的三位数list=[]# 一个用来存放全部组成的三位数
my_list =[]# 第一次for循环遍历new_list列表for i in new_list:# 在第一次遍历期间,进行第二次遍历.# 由于组成的三位数必须是互不相同并且不能重复的# 因此第二次for循环遍历没有i的列表for j in[x for x in new_list if x != i]:# 在第二次遍历期间,进行第三次遍历# 第三次for循环遍历没有i和j的列表for y in[m for m in new_list if m != i and m != j]:# 而后把i,j,y三个数依次添加到list列表中list.append(i)list.append(j)list.append(y)# 而后再把存放三位数的list列表放到总的my_list列表中
my_list.append(list)# 最后清空存放三位数的list列表list=[]# 输出结果print(f"四个数字:一、二、三、4,能组成{len(my_list)}个互不相同且无重复数字的三位数")print("分别是:")print(my_list)
# 一个数若是刚好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000之内的全部完数。for i inrange(2,1001):
my_list =[]for j inrange(1, i):if i % j ==0:
my_list.append(j)else:continueifsum(my_list)== i:print(f"1-1000之内的完数有:{i}")else:continue
运行结果
1-1000之内的完数有:61-1000之内的完数有:281-1000之内的完数有:496
第八题
答案
# 求0—7所能组成的奇数个数。# 首先咱们先把0-7存放到一个my_list列表中
my_list =[0,1,2,3,6,5,4,7]
value1 =int(len(my_list)-1)
new_list =[]for i inrange(1,9):for n in my_list:if n %2!=0:
new_list.append(n)
value =int(len(new_list))if i ==1:print(f"{i}位数的奇数个数为{value}")
new_list =[]elif i ==2:# 因为开头不能为0,因此开头能够选择只有七个
er = value * value1
print(f"{i}位数的奇数个数为{er}")
new_list =[]elif i ==3:
san = value * value1 *(value1 +1)**(i -2)print(f"{i}位数的奇数个数为{san}")
new_list =[]elif i ==4:
si = value * value1 *(value1 +1)**(i -2)print(f"{i}位数的奇数个数为{si}")
new_list =[]elif i ==5:
wu = value * value1 *(value1 +1)**(i -2)print(f"{i}位数的奇数个数为{wu}")
new_list =[]elif i ==6:
liu = value * value1 *(value1 +1)**(i -2)print(f"{i}位数的奇数个数为{liu}")
new_list =[]elif i ==7:
qi = value * value1 *(value1 +1)**(i -2)print(f"{i}位数的奇数个数为{qi}")
new_list =[]elif i ==8:
ba = value * value1 *(value1 +1)**(i -2)print(f"{i}位数的奇数个数为{ba}")sum= value + er + san + si + wu + liu + qi + ba
print(f"0—7所能组成的奇数个数一共有{sum}")
# 一球从100米高度自由落下,每次落地后反跳回原高度的一半;# 再落下,求它在第10次落地时,共通过多少米?第10次反弹多高?# 首先针对这个题,很明显咱们使用递归来解决更加方便一些defhight(i):if i ==1or i ==2:return100return hight(i -1)/2
my_list =[]for j inrange(1,11):
my_list.append(hight(j))print(f"第10次落地时,共通过{sum(my_list)}米")print(f"第十次反弹了{hight(10)}米")
运行结果
第10次落地时,共通过299.609375米
第十次反弹了0.390625米
第十题
答案
# 有n我的围成一圈,顺序排号。# 从第一我的开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
value =int(input("请输入几我的围成一圈: "))
my_list =[]
a =-1
ace =Truefor i inrange(1, value +1):
my_list.append(i)while ace:for j inrange(3):iflen(my_list)==1:print(f"最后留下的原来是第{my_list[0]}号")
ace =Falsebreakif a ==len(my_list)-1:
a =-1
a +=1if j ==2:
my_list.remove(my_list[a])
a -=1