算法思维------突破算法---------抽象逻辑

发散思维 突破常规 精打细算 重质不重量

  • 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值