发散思维 突破常规 精打细算 重质不重量
- if 语句
- for 循环
- while 循环
- 算法思维
If 语句
if…elif…else语句
if condition1:
代码块1
elif condition2:
代码块2
...
else:
代码块
题目:给定一个不超过5位的正整数,判断其有几位
思维:通过折半思维+隐式条件判断,a > 1000后,无需再次判断 a > 100了,减少计算机算法和调度CPU资源,加快效率
#!/bin/python3
#-*- coding: UTF-8 -*-
if a >= 100:
if a >= 10000:
print('number 5 bit')
elif a > 1000:
print('number 4 bit')
else:
print('number 3 bit')
else:
if a < 10:
print('number 1 bit')
else:
print('number 2 bit')
While 语句
语句1 语句2
while condition: while condition:
block block
else:
block
在while else 语句中当while顺利执行完毕后执行else,while遇到break语句中断while循环时,不执行else语句
For 语句
语句1 语句2
for element in iteratable: for element in iteratable:
block block
else:
block
For语句中element元素必须在可迭代的对象中,对于for else语句和while else语句是一致的
题目:计算10以内的偶数
常规算法1:常规算法中可以实现求偶数,但对于计算机过于复杂,加大计算机的运算量,对于计算机来说:“能不进行计算则不计算,若计算尽可能选择加—减—乘—除–依此类推,如做减法时,计算机先得求补码再次算加法”
#!/bin/python3
#-*- coding: UTF-8 -*-
for i in range(1,11):
if i % 2:
print(i)
常规算法2:对于计算机做与、或等运算又比加减法等运算效率快,因此通过与运算进行求解,要注意任何偶数与1进行与运算,当结果为0时,表示偶数,结果为1时表示奇数,另外通过if condition为0时,条件为假,因此通过借助逻辑运算符not,将True变为False,快速获取偶数,效率相比第一种已经有所加快
#!/bin/python3
#-*- coding: UTF-8 -*-
for i in range(1,11):
if not i & 1:
print(i)
快速算法3:前两种求偶数,计算机参与了不同的操作运算符,对应计算机已经消耗一定资源,若不通过计算直接进行求偶数岂不是效率更高效
#!/bin/python3
#-*- coding: UTF-8 -*-
for i in range(2,11,2):
print(i)
算法思维
综合题目:给定一个不超过5位的正整数,判断该数的位数,依次打印出个位、十位、百位、千位、万位的数字
算法分析:这里就是将数学过程转化为公式和逻辑思维的一个过程,也是数学游戏,因此某些思维从小进行培养训练,此过程需要经过长时间的逻辑思维训练,训练后才能有效转换
减法算法:从个位依次到万位,数学游戏个位元数字-非各位数字*10
#!/bin/python3
#-*- coding: UTF-8 -*-
num1 = input('please input your number: ')
num = int(num1)
a = len(num1)
for i in range(a):
x = num // 10
print(num-10*x)
num = x
减法算法:从万位到个位,数字游戏万位元数字//10**x次方
#!/home/python/.pyenv/versions/3.5.3/bin/python3
#-*- coding: UTF-8 -*-
num1 = input('please input your number: ')
num = int(num1)
a = len(num1)
for j in range(a):
x = num // 10**(a-1-j)
print(x)
num -= x * 10**(a-1-j)