第九章 python计算生态

第一节 计算思维

人类在认识世界、改造世界过程中表现出三种基本的思维特征

  • 实验验证为特征的==实证思维==,以物理学科为代表;例如引力波实验
  • 推理演绎为特征的**逻辑思维**,以数学学科为代表;例如A->B,B->C,所以A->C
  • 设计构造为特征的**计算思维**,以计算机学科为代表;例如汉诺塔递归
  • ==计算思维的本质(关键特征)==是抽象自动化,即抽象问题的计算过程,利用计算机自动化求解。

第二节 程序设计方法论

1.自顶向下设计

设计思路: 一个复杂的问题可以分解为若干个简单的问题, 简单的问题还可以进一步的再分解成更简单的问题,直到所有的小问题可以用计算机简单明了的解决。
步骤

  1. 将算法表达为一系列小问题;
  2. 为每个小问题设计接口; 接口可以理解为在调用上一个函数时,将其返回值赋值给下一个函数的实际参数
  3. 通过将算法表达为接口关联的多个小问 题来细化算法;
  4. 为每个小问题重复上述过程;
    自底向上执行:先运行和测试每一个基本函数,再测试由基础函数组成的整体函数,这样有助于定位错误。
    示例如下:
good_into={
   101:{"name":"无尽之刃","price":3600},
   102:{"name":"饮血剑","price":3200},
   103:{"name":"暴风之剑","price":1300},
   104:{"name":"负极斗篷","price":720},
   105:{"name":"冰霜之锤","price":3200},
   106:{"name":"守护天使","price":2800},
   }
#下面是第一个基本函数
def n1():
   print("欢迎来到武器商店!")
   print("请根据以下提示完成交易")
   print("以下为武器名称与价格!")
   print('-----------------------------------')
   for i,j in good_into.items():
      print("编号:{} 名称:{} 单价:{}".format(i,j["name"],j["price"]))
   print('-----------------------------------')
#下面是第二个基本函数
def n2():
   a=input("请玩家输入要购买武器的编号与数量(例如:102 3):")
   num=int(a.split(" ")[0])
   price=int(a.split(" ")[1])
   return num,price
#下面是第三个基本函数
def n3(num,price):
   n=good_into[num]["price"]*price
   return n
#下面是第四个基本函数
def n4(n):
   while True:
      money=float(input('请输入{}元用于购买武器:'.format(n)))
      if n==money:
         print("恭喜您,购买武器成功!")
         break
      elif n<money:
         print("恭喜您,购买武器成功!找回您{}元".format(money-n))
         break
      else:
         print("对不起,购买武器失败!")
         print("请您重新输入金额购买!")
#下面是由基本函数构成的整体函数   
def main():
   #1.输入介绍信息
   n1()               #n1与n2之间没有联系,所以不用设计接口
   #2.获取编号和数量
   num,price=n2()    #n2与n3之间有联系,所以要有接口,即n2的返回值要赋值给为n3的实际参数
   #3.计算出商品总价格
   n=n3(num,price)    #n3与n4之间有联系,所以要有接口,即n3的返回值要赋值给为n4的实际参数
   #4.支付
   n4(n)
main()

2.模块化设计

  • 通过函数或对象封装将程序划分为模块及模块间的表达
  • 具体包括:主程序,子程序和子程序间关系

第三节 python内置函数

python一共有68个内置函数,其中二级会涉及到33个。

abs()all()any()bin()bool()chr()
complex()dict()divmod()eval()exec()float()
hex()input()int()len()list()max()
min()oct()open()ord()pow()print()
range()reversed()round()set()sorted()str()
sum()type()

具体分类如下:
内置函数分类图

33个内置函数大多数我们前面都学过,只有其他函数,列表排序函数与exec()我们没有过多接触,下面我们来介绍这六个函数:
sum(iterable,start)函数
作用返回总和,即iterable参数中所有元素和(字典为所有值的和)+start参数的==总和==

  • iterable:可迭代对象,可以看为任意组合数据类型,但也只能是组合数据类型
  • start:指定相加的参数,默认为0

示例如下:

sum1=sum([1,2,3,4])  #就是求列表中所有元素的和
print(sum1)
sum1=sum([1,2,3,4],5)  #就是求列表中所有元素和与5的总和
print(sum1)
# 输出结果
10
15

any(iterable)函数
作用:用于判断可迭代参数(iterable)中所有元素是否全为False,则返回False;有一个为True,则返回True

  • 只有非零(数字零)非空(空的数据类型)表示真
  • any()函数的作用等价于or保留字,一真则真,全假则假
  • iterable:可迭代对象,可以看为任意组合数据类型,但也只能是组合数据类型

示例如下:

a=any((1,2,3))  #所有元素均非零,即均表示真
print(a)
b=any([1,0,0])  #只有一个元素非零,即只有一个元素表示真
print(b)
c=any([0,"",{}]) #所有元素要么非空,要么非零;即均表示假
print(c)
# 输出结果
True
True
False

all(iterable)函数
作用:用于判断可迭代参数(iterable)中所有元素是否全为True,则返回True;有一个为False,则返回False

  • 只有非零(数字零)非空(空的数据类型)表示真
  • any()函数的作用等价于and保留字,全真则真,一假则假
  • iterable:可迭代对象,可以看为任意组合数据类型,但也只能是组合数据类型
    :all()函数与any()函数作用相似,相当于and保留字与or保留字。

exec()函数

  • exec()函数与exal()函数作用相同,都是去掉表达式最外面的引号,并执行剩下语句,但exec()函数无返回值
  • 给exec()函数中的表达式赋值并执行,然后打印赋值变量,就可以得到exec()函数的结果。
    示例如下:
exec('a=sum([1,2,3,4])')
print(a)
#输出结果:
10

sorted(iterable, reverse=False)函数
作用返回一个重新排列的新列表

  • iterable:可迭代对象,可以看为任意组合数据类型(字典按键),但也只能是组合数据类型
  • reverse(排序规则):reverse = True 降序 , reverse = False 升序(默认)
    示例如下:
ls=[1,2,3,4]
a=sorted(ls,reverse=True)
ls.clear()   # 验证sorted()函数返回的是否是一个新列表
print(a)
#输出结果:
[4, 3, 2, 1]

reversed(seq)函数
作用返回反转的迭代器对象(这个看不懂)

  • 可以理解为将参数seq反向排序返回(通过list()函数或for循环才能实现)
  • seq:可以是序列(字符串,列表,元组)或range()
a=reversed('154326')  #通过reversed()函数反转一个字符串。
print(a)              #直接返回反转的迭代器对象。输出就是看不懂的结果。
print(list(a))        #通过list()输出反转字符串

#输出结果:
<reversed object at 0x000001E746207EB8>   #这个就是直接返回的反转的迭代器对象
['6', '2', '3', '4', '5', '1']

a=reversed(range(1,10))   #通过reversed()函数反转一个数列
for i in a:               #通过for循环输出反转数列
    print(i)
#输出结果:
9
8
7
6
5
4
3
2
1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值