1、本人背景
python基本语法已了解,会写简单的python语句,但遇到复杂的数据处理逻辑时,容易卡壳;
明确自己的弱点在于欠缺程序逻辑思维,期望可以通过每天2道逻辑题,持续3个月,来训练自己的程序逻辑思维(重点是for,if,while语句);
2、猴子吃桃问题
问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。程序分析:采取逆向思维的方法,从后往前推断。
解题思路:逆向思维,第10天早上想吃的时候,剩一个,就说明第9天吃了只剩下1个了,设第9天有X个,则X/2-1=1,依次循环9次,就可以算出第一天有多少桃子;
代码:
x=1
for i in range(9):
y=2*(x+1)
x=y
print(x)
3 、完数问题
问题:一个数如果恰好等于它的乘积因子(即能被该数整除)之和,这个数就称为"完数"。例如6 = 1+2+3,再例如 28 = 1+2+4+7+14.编程找出10000以内的所有完数及其乘积因子。
解题思路:先把一个数的所有公约数都找出来,再从这些公约数中排除本身,再把剩下的公约数相加,如果相加等于这个整数,那这个整数就是完数;
代码:
for i in range(1,10001):#循环从1开始
appro=0
for x in range(1,i+1):
if i%x == 0 and i!=x:#找出一个数的所有公约数,再剔除掉自己本身
appro+=x
if i==appro:
print(i)