当前位置: 首页 > news >正文

网站信息安全建设方案/免费seo优化工具

网站信息安全建设方案,免费seo优化工具,网站建设与管理自考本,论坛类网站建设第1关:建模与仿真 1、 建模过程,通常也称为数学优化建模(Mathematical Optimization Modeling),不同之处在于它可以确定特定场景的特定的、最优化或最佳的结果。这被称为诊断一个结果,因此命名为▁▁▁。 填空1答案:决…

第1关:建模与仿真

  • 1、

    建模过程,通常也称为数学优化建模(Mathematical Optimization Modeling),不同之处在于它可以确定特定场景的特定的、最优化或最佳的结果。这被称为诊断一个结果,因此命名为▁▁▁。

    填空1答案:决策建议性分析

  • 2、

    字典里对仿真模拟的定义是指两个具体的过程:一是通过▁▁▁来表示系统如何工作,另一个是通过▁▁▁来检查问题。

    填空1答案:创建系统

    填空2答案:模拟现实情况

 第2关:脚本

  • 任务描述
  • 相关知识
    • 脚本的定义
    • 遍历数组
    • 求最大值
  • 编程要求
  • 测试说明

任务描述

本关任务:学习数学建模与仿真的脚本使用。

相关知识

本关是为了让大家掌握脚本的使用方法,为数学建模打下良好的基础。

脚本的定义

脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。

脚本可以理解为将一组代码进行封装,通过运行脚本可以非常方便的实现某一目标,省去了繁重的代码。

在数学建模比赛中,仅有三天时间,通过撰写脚本,可以节约大量时间。

图  1


脚本

遍历数组

通俗的理解,遍历数组就是:把数组中的元素都看一遍

示例如下:

 
  1. a=[1,2,3,4]
  2. def Traverse(a):
  3. for i in range(0,4):
  4. print(a[i])

输出:1,2,3,4

此时只需要通过引用 Traverse() 即可做到遍历数组。

求最大值

在 python 中,还有很多脚本可以直接使用,例如求最大值,最小值等。

建模过程中,我们通常要求一组数据的最大值,最小值等,从而求得问题的最优解。

例如,给出一组数据a=[1,3,5,2,5,6,8],在 python 中,可以直接使用 max 函数直接进行求解。

 
  1. a=[1,3,5,2,5,6,8]
  2. x=max(a)
  3. print(x)

编程要求

根据提示在右侧代码器中 Begin-End 区间补充代码,遍历数组并输出数组的最大值。

测试说明

平台会对你编写的代码进行测试:

测试输入:49151232; 预期输出: 4 91 51 2 32 最大值:91

arr = [4, 91, 51, 2, 32]
# 遍历num数组
########## begin ##########
print(arr)
##########  end  ##########
# 输出“最大值为:”
########## begin ##########
print("最大值:", max(arr))
##########  end  ##########

第3关:循环

  • 任务描述
  • 相关知识
    • 循环概览
    • Python While 循环语句
    • Python for 循环语句
    • Python 循环嵌套
    • Python break 语句
    • Python continue 语句
    • Python pass 语句
  • 编程要求
  • 测试说明

任务描述

本关任务:学习 Python 循环语句。

相关知识

为了完成本关任务,我们需要掌握:

  1. while 循环。
  2. for 循环。
  3. 循环嵌套。
  4. break 语句。
  5. continue 语句。
  6. pass 语句。
循环概览

在数学建模中,给定的数据集往往十分复杂,循环变成了处理数据必不可少的技能。

本节实训将向大家介绍 Python 的循环语句,程序在一般情况下是按顺序执行的。

编程语言提供了各种控制结构,允许更复杂的执行路径。

循环语句允许我们执行一个语句或语句组多次,下面是在大多数编程语言中的循环语句的一般形式:

Python 提供了 for 循环和 while 循环(在 Python 中没有 do..while 循环):

循环类型描述
while 循环在给定的判断条件为 true 时执行循环体,否则退出循环体。
for 循环重复执行语句
循环嵌套你可以在 while 循环体中嵌套 for 循环

循环控制语句

循环控制语句可以更改语句执行的顺序。Python 支持以下循环控制语句:

控制语句描述
break 语句在语句块执行过程中终止循环,并且跳出整个循环
continue 语句在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环
pass 语句pass 是空语句,是为了保持程序结构的完整性
Python While 循环语句

Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:

 
  1. while 判断条件(condition):
  2. 执行语句(statements)……

执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为 true。

当判断条件假 false 时,循环结束。

执行流程图如下:

图  1


执行流程图

看下面一个例子:

 
  1. count = 0
  2. while (count < 9):
  3. print 'The count is:', count
  4. count = count + 1
  5. print "Good bye!"

以上代码执行输出结果:

 
  1. The count is: 0
  2. The count is: 1
  3. The count is: 2
  4. The count is: 3
  5. The count is: 4
  6. The count is: 5
  7. The count is: 6
  8. The count is: 7
  9. The count is: 8
  10. Good bye!
Python for 循环语句

Python for 循环可以遍历任何序列的项目,如一个列表或者一个字符串。

语法:

for 循环的语法格式如下:

 
  1. for iterating_var in sequence:
  2. statements(s)

流程图:

图  1


for 循环流程图

一个例子:

 
  1. for letter in 'Python': # 第一个实例
  2. print("当前字母: %s" % letter)
  3. fruits = ['banana', 'apple', 'mango']
  4. for fruit in fruits: # 第二个实例
  5. print ('当前水果: %s'% fruit)
  6. print ("Good bye!")

以上实例输出结果:

 
  1. 当前字母: P
  2. 当前字母: y
  3. 当前字母: t
  4. 当前字母: h
  5. 当前字母: o
  6. 当前字母: n
  7. 当前水果: banana
  8. 当前水果: apple
  9. 当前水果: mango
  10. Good bye!
Python 循环嵌套

Python 语言允许在一个循环体里面嵌入另一个循环。

Python for 循环嵌套语法:

 
  1. for iterating_var in sequence:
  2. for iterating_var in sequence:
  3. statements(s)
  4. statements(s)

Python while 循环嵌套语法:

 
  1. while expression:
  2. while expression:
  3. statement(s)
  4. statement(s)

你可以在循环体内嵌入其他的循环体,如在 while 循环中可以嵌入 for 循环,反之,你可以在 for 循环中嵌入 while 循环。

实例:

以下实例使用了嵌套循环输出 2−100 之间的素数:

实例

 
  1. i = 2
  2. while(i < 100):
  3. j = 2
  4. while(j <= (i/j)):
  5. if not(i%j): break
  6. j = j + 1
  7. if (j > i/j) : print i, " 是素数"
  8. i = i + 1
  9. print "Good bye!"

以上实例输出结果:

 
  1. 2 是素数
  2. 3 是素数
  3. 5 是素数
  4. 7 是素数
  5. 11 是素数
  6. 13 是素数
  7. 17 是素数
  8. 19 是素数
  9. 23 是素数
  10. 29 是素数
  11. 31 是素数
  12. 37 是素数
  13. 41 是素数
  14. 43 是素数
  15. 47 是素数
  16. 53 是素数
  17. 59 是素数
  18. 61 是素数
  19. 67 是素数
  20. 71 是素数
  21. 73 是素数
  22. 79 是素数
  23. 83 是素数
  24. 89 是素数
  25. 97 是素数
  26. Good bye!
Python break 语句

Python break 语句,就像在 C 语言中,打破了最小封闭 for 或 while 循环。

break 语句用来终止循环语句,即循环条件没有 False 条件或者序列还没被完全递归完,也会停止执行循环语句。

break 语句用在 while 和 for 循环中。

如果您使用嵌套循环,break 语句将停止执行最深层的循环,并开始执行下一行代码。

Python 语言 break 语句语法:

break 举一个实例:

 
  1. for letter in 'Python': # 第一个实例
  2. if letter == 'h':
  3. break
  4. print '当前字母 :', letter
  5. var = 10 # 第二个实例
  6. while var > 0:
  7. print '当前变量值 :', var
  8. var = var -1
  9. if var == 5: # 当变量 var 等于 5 时退出循环
  10. break
  11. print "Good bye!"

以上实例执行结果:

 
  1. 当前字母 : P
  2. 当前字母 : y
  3. 当前字母 : t
  4. 当前变量值 : 10
  5. 当前变量值 : 9
  6. 当前变量值 : 8
  7. 当前变量值 : 7
  8. 当前变量值 : 6
  9. Good bye!
Python continue 语句

Python continue 语句跳出本次循环,而 break 跳出整个循环。

continue 语句用来告诉 Python 跳过当前循环的剩余语句,然后继续进行下一轮循环。

continue 语句用在 while 和 for 循环中。

Python 语言 continue 语句语法格式如下:

continue

实例:

 
  1. for letter in 'Python': # 第一个实例
  2. if letter == 'h':
  3. continue
  4. print '当前字母 :', letter
  5. var = 10 # 第二个实例
  6. while var > 0:
  7. var = var -1
  8. if var == 5:
  9. continue
  10. print '当前变量值 :', var
  11. print "Good bye!"

以上实例执行结果:

 
  1. 当前字母 : P
  2. 当前字母 : y
  3. 当前字母 : t
  4. 当前字母 : o
  5. 当前字母 : n
  6. 当前变量值 : 9
  7. 当前变量值 : 8
  8. 当前变量值 : 7
  9. 当前变量值 : 6
  10. 当前变量值 : 4
  11. 当前变量值 : 3
  12. 当前变量值 : 2
  13. 当前变量值 : 1
  14. 当前变量值 : 0
  15. Good bye!
Python pass 语句

Python pass 是空语句,是为了保持程序结构的完整性。

pass 不做任何事情,一般用做占位语句。

Python 语言 pass 语句语法格式如下:

pass 测试实例:

 
  1. # 输出 Python 的每个字母
  2. for letter in 'Python':
  3. if letter == 'h':
  4. pass
  5. print '这是 pass 块'
  6. print '当前字母 :', letter
  7. print "Good bye!"

以上实例执行结果:

 
  1. 当前字母 : P
  2. 当前字母 : y
  3. 当前字母 : t
  4. 这是 pass 块
  5. 当前字母 : h
  6. 当前字母 : o
  7. 当前字母 : n
  8. Good bye!

编程要求

根据提示在右侧代码器中 Begin-End 区间补充代码,填写正确语句即可过关。

测试说明

平台会对你编写的代码进行测试:

要求实现:

第一部分代码输出十以内的偶数,第二部分代码输出十以内的整数。

i = 1
while i < 10:i += 1if i % 2 > 0:  # 非双数时跳过输出
########## begin ##########continue
##########  end  ##########print(i)  # 输出双数2、4、6、8、10i = 1
while 1:  # 循环条件为1必定成立print(i)  # 输出1~10i += 1if i > 10:  # 当i大于10时跳出循环
########## begin ##########break
##########  end  ##########

第4关:向量

  • 任务描述
  • 相关知识
    • python 向量的概念
    • 修改数组形状
      • numpy.reshape
    • 翻转数组
      • numpy.transpose
    • 修改数组维度
      • numpy.broadcast
    • 连接数组
      • numpy.concatenate
    • 分割数组
      • numpy.split
    • 数组元素的添加与删除
      • numpy.resize
  • 编程要求
  • 测试说明

任务描述

本关任务:学习数学建模中有关向量的知识。

相关知识

为了完成本关任务,你需要掌握:

  1. python 向量的概念。
  2. Numpy 的使用方法。
python 向量的概念

向量被称为一维数组。

在数学建模中,向量是一个非常重要的知识,在处理数据集的时候,许多数据往往有多重属性,合理使用向量可以使数据集显示更加清晰。

Python 中处理数组的库叫做 Numpy ,Numpy 中包含了一些函数用于处理数组,大概可分为以下几类:

  • 修改数组形状
  • 翻转数组
  • 修改数组维度
  • 连接数组
  • 分割数组
  • 数组元素的添加与删除
修改数组形状
函数描述
reshape不改变数据的条件下修改形状
flat数组元素迭代器
flatten返回一份数组拷贝,对拷贝所做的修改不会影响原始数组
ravel返回展开数组
numpy.reshape

numpy.reshape 函数可以在不改变数据的条件下修改形状,格式如下:

numpy.reshape(arr, newshape, order='C')

  • arr:要修改形状的数组
  • newshape:整数或者整数数组,新的形状应当兼容原有形状
  • order:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'k' -- 元素在内存中的出现顺序。

实例

 
  1. a = np.arange(8)
  2. print ('原始数组:')
  3. print (a)
  4. print ('\n')
  5. b = a.reshape(4,2)
  6. print ('修改后的数组:')
  7. print (b)

输出结果如下:

 
  1. 原始数组:
  2. [0 1 2 3 4 5 6 7]
  3. 修改后的数组:
  4. [[0 1]
  5. [2 3]
  6. [4 5]
  7. [6 7]]
翻转数组
函数描述
transpose对换数组的维度
ndarray.T和 self.transpose() 相同
rollaxis向后滚动指定的轴
swapaxes对换数组的两个轴
numpy.transpose

numpy.transpose 函数用于对换数组的维度,格式如下:

numpy.transpose(arr, axes)

参数说明:

  • arr:要操作的数组
  • axes:整数列表,对应维度,通常所有维度都会对换。

实例

 
  1. a = np.arange(12).reshape(3,4)
  2. print ('原数组:')
  3. print (a )
  4. print ('\n')
  5. print ('对换数组:')
  6. print (np.transpose(a))

输出结果如下:

 
  1. 原数组:
  2. [[ 0 1 2 3]
  3. [ 4 5 6 7]
  4. [ 8 9 10 11]]
  5. 对换数组:
  6. [[ 0 4 8]
  7. [ 1 5 9]
  8. [ 2 6 10]
  9. [ 3 7 11]]
修改数组维度
维度描述
broadcast产生模仿广播的对象
broadcast_to将数组广播到新形状
expand_dims扩展数组的形状
squeeze从数组的形状中删除一维条目
numpy.broadcast

numpy.broadcast 用于模仿广播的对象,它返回一个对象,该对象封装了将一个数组广播到另一个数组的结果。

该函数使用两个数组作为输入参数,如下实例:

实例

 
  1. x = np.array([[1], [2], [3]])
  2. y = np.array([4, 5, 6])
  3. # 对 y 广播 x
  4. b = np.broadcast(x,y)
  5. # 它拥有 iterator 属性,基于自身组件的迭代器元组
  6. print ('对 y 广播 x:')
  7. r,c = b.iters
  8. # Python3.x 为 next(context) ,Python2.x 为 context.next()
  9. print (next(r), next(c))
  10. print (next(r), next(c))
  11. print ('\n')
  12. # shape 属性返回广播对象的形状
  13. print ('广播对象的形状:')
  14. print (b.shape)
  15. print ('\n')
  16. # 手动使用 broadcast 将 x 与 y 相加
  17. b = np.broadcast(x,y)
  18. c = np.empty(b.shape)
  19. print ('手动使用 broadcast 将 x 与 y 相加:')
  20. print (c.shape)
  21. print ('\n')
  22. c.flat = [u + v for (u,v) in b]
  23. print ('调用 flat 函数:')
  24. print (c)
  25. print ('\n')
  26. # 获得了和 NumPy 内建的广播支持相同的结果
  27. print ('x 与 y 的和:')
  28. print (x + y)

输出结果为:

 
  1. 对 y 广播 x:
  2. 1 4
  3. 1 5
  4. 广播对象的形状:
  5. (3, 3)
  6. 手动使用 broadcast 将 x 与 y 相加:
  7. (3, 3)
  8. 调用 flat 函数:
  9. [[5. 6. 7.]
  10. [6. 7. 8.]
  11. [7. 8. 9.]]
  12. x 与 y 的和:
  13. [[5 6 7]
  14. [6 7 8]
  15. [7 8 9]]
连接数组
函数描述
concatenate连接沿现有轴的数组序列
stack沿着新的轴加入一系列数组。
hstack水平堆叠序列中的数组(列方向)
vstack竖直堆叠序列中的数组(行方向)
numpy.concatenate

numpy.concatenate 函数用于沿指定轴连接相同形状的两个或多个数组,格式如下:

numpy.concatenate((a1, a2, ...), axis)

参数说明:

  • a1, a2, ...:相同类型的数组
  • axis:沿着它连接数组的轴,默认为 0

实例

 
  1. import numpy as np
  2. a = np.array([[1,2],[3,4]])
  3. print ('第一个数组:')
  4. print (a)
  5. print ('\n')
  6. b = np.array([[5,6],[7,8]])
  7. print ('第二个数组:')
  8. print (b)
  9. print ('\n')
  10. # 两个数组的维度相同
  11. print ('沿轴 0 连接两个数组:')
  12. print (np.concatenate((a,b)))
  13. print ('\n')
  14. print ('沿轴 1 连接两个数组:')
  15. print (np.concatenate((a,b),axis = 1))

输出结果为:

 
  1. 第一个数组:
  2. [[1 2]
  3. [3 4]]
  4. 第二个数组:
  5. [[5 6]
  6. [7 8]]
  7. 沿轴 0 连接两个数组:
  8. [[1 2]
  9. [3 4]
  10. [5 6]
  11. [7 8]]
  12. 沿轴 1 连接两个数组:
  13. [[1 2 5 6]
  14. [3 4 7 8]]
分割数组
函数数组及操作
split将一个数组分割为多个子数组
hsplit将一个数组水平分割为多个子数组(按列)
vsplit将一个数组垂直分割为多个子数组(按行)
numpy.split

numpy.split 函数沿特定的轴将数组分割为子数组,格式如下:

numpy.split(ary, indices_or_sections, axis) 参数说明:

  • ary:被分割的数组
  • indices_or_sections:如果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置(左开右闭)
  • axis:设置沿着哪个方向进行切分,默认为 0,横向切分,即水平方向。为 1 时,纵向切分,即竖直方向。

实例

 
  1. import numpy as np
  2. a = np.arange(9)
  3. print ('第一个数组:')
  4. print (a)
  5. print ('\n')
  6. print ('将数组分为三个大小相等的子数组:')
  7. b = np.split(a,3)
  8. print (b)
  9. print ('\n')
  10. print ('将数组在一维数组中表明的位置分割:')
  11. b = np.split(a,[4,7])
  12. print (b)

输出结果为:

 
  1. 第一个数组:
  2. [0 1 2 3 4 5 6 7 8]
  3. 将数组分为三个大小相等的子数组:
  4. [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]
  5. 将数组在一维数组中表明的位置分割:
  6. [array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8])]
数组元素的添加与删除
函数元素及描述
resize返回指定形状的新数组
append将值添加到数组末尾
insert沿指定轴将值插入到指定下标之前
delete删掉某个轴的子数组,并返回删除后的新数组
unique查找数组内的唯一元素
numpy.resize

numpy.resize 函数返回指定大小的新数组。

如果新数组大小大于原始大小,则包含原始数组中的元素的副本。

numpy.resize(arr, shape) 参数说明:

  • arr:要修改大小的数组
  • shape:返回数组的新形状

实例

 
  1. import numpy as np
  2. a = np.array([[1,2,3],[4,5,6]])
  3. print ('第一个数组:')
  4. print (a)
  5. print ('\n')
  6. print ('第一个数组的形状:')
  7. print (a.shape)
  8. print ('\n')
  9. b = np.resize(a, (3,2))
  10. print ('第二个数组:')
  11. print (b)
  12. print ('\n')
  13. print ('第二个数组的形状:')
  14. print (b.shape)
  15. print ('\n')
  16. # 要注意 a 的第一行在 b 中重复出现,因为尺寸变大了
  17. print ('修改第二个数组的大小:')
  18. b = np.resize(a,(3,3))
  19. print (b)

输出结果为:

 
  1. 第一个数组:
  2. [[1 2 3]
  3. [4 5 6]]
  4. 第一个数组的形状:
  5. (2, 3)
  6. 第二个数组:
  7. [[1 2]
  8. [3 4]
  9. [5 6]]
  10. 第二个数组的形状:
  11. (3, 2)
  12. 修改第二个数组的大小:
  13. [[1 2 3]
  14. [4 5 6]
  15. [1 2 3]]

编程要求

根据提示在右侧代码器中 Begin-End 区间补充代码,做到将数组 a1 和 a2 分别沿轴0和轴 1 连接。

测试说明

平台会对你编写的代码进行测试:

import numpy as npa = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])print('第一个数组:')
print(a)
print('\n')print('第二个数组:')
print(b)
print('\n')# 两个数组的维度相同print('沿轴 0 连接两个数组:')
########## begin ##########
result_axis0 = np.concatenate((a, b), axis=0)
print(result_axis0)
##########  end  ##########
print('\n')print('沿轴 1 连接两个数组:')
########## begin ##########
result_axis1 = np.concatenate((a, b), axis=1)
print(result_axis1)
##########  end  ##########

第5关:函数

  • 任务描述
  • 相关知识
    • Python 函数
    • 定义一个函数
    • 函数调用
    • 参数传递
    • 参数
    • 匿名函数
    • return 语句
    • 变量作用域
    • 全局变量和局部变量
  • 编程要求
  • 测试说明

任务描述

本关任务:学习 Python 中的函数,掌握建模一大利器。

相关知识

为了完成本关任务,你需要掌握:

  1. 定义一个函数。
  2. 函数调用。
  3. 参数传递。
  4. 参数。
  5. 匿名函数。
  6. return 语句。
  7. 变量作用域。
  8. 全局变量和局部变量。
Python 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道 Python 提供了许多内建函数,比如 print()。但你也可以自己创建函数,这被叫做用户自定义函数。

图  1


函数

定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。

  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

  • 函数内容以冒号起始,并且缩进。

  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的 return 相当于返回 None。

语法

 
  1. def functionname( parameters ):
  2. "函数_文档字符串"
  3. function_suite
  4. return [expression]

默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。

实例

以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上。

 
  1. def printme( str ):
  2. "打印传入的字符串到标准显示设备上"
  3. print str
  4. return
函数调用

定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。

这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 提示符执行。

如下实例调用了 printme()函数:

 
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. # 定义函数
  4. def printme( str ):
  5. "打印任何传入的字符串"
  6. print str
  7. return
  8. # 调用函数
  9. printme("我要调用用户自定义函数!")
  10. printme("再次调用同一函数")

以上实例输出结果:

 
  1. 我要调用用户自定义函数!
  2. 再次调用同一函数
参数传递

在 python 中,类型属于对象,变量是没有类型的:

 
  1. a=[1,2,3]
  2. a="Runoob"

以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是 List 类型对象,也可以指向 String 类型对象。

可更改 ( mutable ) 与不可更改 ( immutable ) 对象

在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

  • 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了 a 。

  • 可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身 la 没有动,只是其内部的一部分值被修改了。

python 函数的参数传递:

  • 不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如 fun(a),传递的只是a的值,没有影响 a 对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

  • 可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后 fun 外部的 la 也会受影响。

python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

python 传不可变对象实例

 
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. def ChangeInt( a ):
  4. a = 10
  5. b = 2
  6. ChangeInt(b)
  7. print b # 结果是 2

实例中有 int 对象 2,指向它的变量是 b,在传递给 ChangeInt 函数时,按传值的方式复制了变量 b,a 和 b 都指向了同一个 Int 对象,在 a=10 时,则新生成一个 int 值对象 10,并让 a 指向它。

传可变对象实例

 
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. # 可写函数说明
  4. def changeme( mylist ):
  5. "修改传入的列表"
  6. mylist.append([1,2,3,4])
  7. print "函数内取值: ", mylist
  8. return
  9. # 调用changeme函数
  10. mylist = [10,20,30]
  11. changeme( mylist )
  12. print "函数外取值: ", mylist

实例中传入函数的和在末尾添加新内容的对象用的是同一个引用,故输出结果如下:

 
  1. 函数内取值: [10, 20, 30, [1, 2, 3, 4]]
  2. 函数外取值: [10, 20, 30, [1, 2, 3, 4]]
参数

以下是调用函数时可使用的正式参数类型:

  • 必备参数
  • 关键字参数
  • 默认参数
  • 不定长参数

必备参数

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

调用 printme() 函数,你必须传入一个参数,不然会出现语法错误:

 
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. #可写函数说明
  4. def printme( str ):
  5. "打印任何传入的字符串"
  6. print str
  7. return
  8. #调用printme函数
  9. printme()

以上实例输出结果:

 
  1. Traceback (most recent call last):
  2. File "test.py", line 11, in <module>
  3. printme()
  4. TypeError: printme() takes exactly 1 argument (0 given)

关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

以下实例在函数 printme() 调用时使用参数名:

 
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. #可写函数说明
  4. def printme( str ):
  5. "打印任何传入的字符串"
  6. print str
  7. return
  8. #调用printme函数
  9. printme( str = "My string")

以上实例输出结果:

 
  1. My string

下例能将关键字参数顺序不重要展示得更清楚:

 
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. #可写函数说明
  4. def printinfo( name, age ):
  5. "打印任何传入的字符串"
  6. print "Name: ", name
  7. print "Age ", age
  8. return
  9. #调用printinfo函数
  10. printinfo( age=50, name="miki" )

以上实例输出结果:

 
  1. Name: miki
  2. Age 50

默认参数 调用函数时,默认参数的值如果没有传入,则被认为是默认值。下例会打印默认的 age ,如果 age 没有被传入:

 
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. #可写函数说明
  4. def printinfo( name, age = 35 ):
  5. "打印任何传入的字符串"
  6. print "Name: ", name
  7. print "Age ", age
  8. return
  9. #调用printinfo函数
  10. printinfo( age=50, name="miki" )
  11. printinfo( name="miki" )

以上实例输出结果:

 
  1. Name: miki
  2. Age 50
  3. Name: miki
  4. Age 35

不定长参数 你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。基本语法如下:

 
  1. def functionname([formal_args,] *var_args_tuple ):
  2. "函数_文档字符串"
  3. function_suite
  4. return [expression]

加了星号的变量名会存放所有未命名的变量参数。不定长参数实例如下:

 
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. # 可写函数说明
  4. def printinfo( arg1, *vartuple ):
  5. "打印任何传入的参数"
  6. print "输出: "
  7. print arg1
  8. for var in vartuple:
  9. print var
  10. return
  11. # 调用printinfo 函数
  12. printinfo( 10 )
  13. printinfo( 70, 60, 50 )

以上实例输出结果:

 
  1. 输出:
  2. 10
  3. 输出:
  4. 70
  5. 60
  6. 50
匿名函数

python 使用 lambda 来创建匿名函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。

  • lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。

  • lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

  • 虽然lambda函数看起来只能写一行,却不等同于 C 或 C++ 的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法

lambda 函数的语法只包含一个语句,如下:

lambda [arg1 [,arg2,.....argn]]:expression 如下实例:

 
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. # 可写函数说明
  4. sum = lambda arg1, arg2: arg1 + arg2
  5. # 调用sum函数
  6. print "相加后的值为 : ", sum( 10, 20 )
  7. print "相加后的值为 : ", sum( 20, 20 )

以上实例输出结果:

 
  1. 相加后的值为 : 30
  2. 相加后的值为 : 40
return 语句

return 语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的 return 语句返回 None 。之前的例子都没有示范如何返回数值,下例便告诉你怎么做:

 
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. # 可写函数说明
  4. def sum( arg1, arg2 ):
  5. # 返回2个参数的和."
  6. total = arg1 + arg2
  7. print "函数内 : ", total
  8. return total
  9. # 调用sum函数
  10. total = sum( 10, 20 )

以上实例输出结果:

 
  1. 函数内 : 30
变量作用域

一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。

变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:

  • 全局变量

  • 局部变量

全局变量和局部变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:

 
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. total = 0 # 这是一个全局变量
  4. # 可写函数说明
  5. def sum( arg1, arg2 ):
  6. #返回2个参数的和."
  7. total = arg1 + arg2 # total在这里是局部变量.
  8. print "函数内是局部变量 : ", total
  9. return total
  10. #调用sum函数
  11. sum( 10, 20 )
  12. print "函数外是全局变量 : ", total

以上实例输出结果:

 
  1. 函数内是局部变量 : 30
  2. 函数外是全局变量 : 0

编程要求

根据提示在右侧代码器中 Begin-End 区间补充代码,求学生最高分数科目和分数。

测试说明

平台会对你编写的代码进行测试:

def get_max_score(score_dic):"""返回学生考试成绩的最高分的科目和分数:param score_dic::return:"""max_score = 0max_score_course = ''for course, score in score_dic.items():########## begin ##########if score > max_score:##########  end  ##########max_score = scoremax_score_course = course########## begin ##########return max_score_course, max_score##########  end  ##########dic = {'语文': 90,'数学': 97,'英语': 98
}course, score = get_max_score(dic)
print(course, score)

相关文章:

头歌-Python 基础

第1关&#xff1a;建模与仿真 1、 建模过程&#xff0c;通常也称为数学优化建模(Mathematical Optimization Modeling)&#xff0c;不同之处在于它可以确定特定场景的特定的、最优化或最佳的结果。这被称为诊断一个结果&#xff0c;因此命名为▁▁▁。 填空1答案&#xff1a;决…...

C++数据结构:B树

目录 一. 常见的搜索结构 二. B树的概念 三. B树节点的插入和遍历 3.1 插入B树节点 3.2 B树遍历 四. B树和B*树 4.1 B树 4.2 B*树 五. B树索引原理 5.1 索引概述 5.2 MyISAM 5.3 InnoDB 六. 总结 一. 常见的搜索结构 表示1为在实际软件开发项目中&#xff0c;常用…...

【07】ES6:对象的扩展

一、对象字面量语法扩展 1、属性简写 当属性名称和属性值的变量名称相同时&#xff0c;可以省略冒号的变量名称。 const foo barconst baz { foo } // 等同于 const baz { foo: foo }baz // { foo: bar }function f(x, y) {return { x, y } } // 等同于 function f(x, y)…...

flink找不到隐式项

增加 import org.apache.flink.streaming.api.scala._ 即可...

【网络编程】-- 04 UDP

网络编程 6 UDP 6.1 初识Tomcat 服务端 自定义 STomcat S 客户端 自定义 C浏览器 B 6.2 UDP 6.2.1 udp实现发送消息 接收端&#xff1a; package com.duo.lesson03;import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketExceptio…...

【脚本】图片-音视频-压缩文件处理

音视频处理 一&#xff0c;图片操作1&#xff0c;转换图片格式2&#xff0c;多张图片合成视频 二&#xff0c;音频操作1&#xff0c;转换音频格式2&#xff0c;分割音频为多段3&#xff0c;合成多段音频 三&#xff0c;视频操作1&#xff0c;转换视频格式2&#xff0c;提取视频…...

跨品牌的手机要怎样相互投屏?iPhone和iPad怎么相互投屏?

选择买不同品牌的手机是基于品牌声誉、产品特点、价格和性价比等多个因素的综合考虑。每个人的需求和偏好不同&#xff0c;选择适合自己的手机品牌是一个个人化的决策。 一些品牌可能更加注重摄影功能&#xff0c;而其他品牌可能更加注重性能和速度。选择不同品牌的手机可以根据…...

图像特征提取-角点

角点特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片&#xff0c;然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序&#xff0c;那计算机就也会玩拼图游戏了。 在拼图时&#xff0c;我们要寻找一些唯一的特征&#xff0c;这些…...

N26:构建无缝体验的平台工程之路-Part 2

​ 在第一​​​​​​部分&#xff0c;我们介绍了 N26 团队为达成 “在 Day 1 实现轻松部署” 的目标而设定的战略规划和开发人员体验图&#xff0c;在这一部分&#xff0c;我们将带您了解该团队如何构建最简可行平台以及该平台如何运作。 01 计划构建最简可行平台 我们通…...

【Hadoop-Distcp】通过Distcp的方式进行两个HDFS集群间的数据迁移

【Hadoop-Distcp】通过Distcp的方式进行两个HDFS集群间的数据迁移 1&#xff09;Distcp 工具简介及参数说明2&#xff09;Shell 脚本 1&#xff09;Distcp 工具简介及参数说明 【Hadoop-Distcp】工具简介及参数说明 2&#xff09;Shell 脚本 应用场景&#xff1a; 两个实时集…...

【Linux】使用Bash和GNU Parallel并行解压缩文件

介绍 在本教程中&#xff0c;我们将学习如何使用Bash脚本和GNU Parallel实现高效并行解压缩多个文件。这种方法在处理大量文件时可以显著加快提取过程。 先决条件 确保系统上已安装以下内容&#xff1a; BashGNU Parallel 你可以使用以下命令在不同Linux系统上安装它们&am…...

T天池SQL训练营(五)-窗口函数等

–天池龙珠计划SQL训练营 5.1窗口函数 5.1.1窗口函数概念及基本的使用方法 窗口函数也称为OLAP函数。OLAP 是OnLine AnalyticalProcessing 的简称&#xff0c;意思是对数据库数据进行实时分析处理。 为了便于理解&#xff0c;称之为窗口函数。常规的SELECT语句都是对整张表进…...

道可云元宇宙每日资讯|上海市区块链关键技术攻关专项项目立项清单公布

道可云元宇宙每日简报&#xff08;2023年12月11日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 上海市2023年度区块链关键技术攻关专项项目立项清单公布 据上海市科学技术委员会近日发布通知&#xff0c;上海市2023年度“科技创新行动计划”区块链关键技术攻关…...

大语言模型有什么意义?亚马逊训练自己的大语言模型有什么用?

近年来&#xff0c;大语言模型的崭露头角引起了广泛的关注&#xff0c;成为科技领域的一项重要突破。而在这个领域的巅峰之上&#xff0c;亚马逊云科技一直致力于推动人工智能的发展。那么&#xff0c;作为一家全球科技巨头&#xff0c;亚马逊为何会如此注重大语言模型的研发与…...

RabbitMQ-学习笔记(初识 RabbitMQ)

本篇文章学习于 bilibili黑马 的视频 (狗头保命) 同步通讯 & 异步通讯 (RabbitMQ 的前置知识) 同步通讯&#xff1a;类似打电话&#xff0c;只有对方接受了你发起的请求,双方才能进行通讯, 同一时刻你只能跟一个人打视频电话。异步通讯&#xff1a;类似发信息&#xff0c…...

SQL Update语句

SQL Update语句 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; SQL Update语句&#xff1a;数据库操作高招解析 数据库是我们搭建查券返利机器人的重要组成部分&…...

C语言-WIN32API介绍

Windows API 从第一个32位的Windows开始就出现了&#xff0c;就叫做Win32API.它是一个纯C的函数库&#xff0c;就和C标准库一样&#xff0c;使你可以写Windows应用程序过去很多Windows程序是用这个方式做出来的 main()? main()成为C语言的入口函数其实和C语言本身无关&…...

TFIDF、BM25、编辑距离、倒排索引

TFIDF TF刻画了词语t对某篇文档的重要性&#xff0c;IDF刻画了词语t对整个文档集的重要性...

MySQL之DML语句

文章目录 DML语句创建表添加表字段**插入数据**查询数据更新数据替换数据删除数据清除表数据删除表 DML语句 数据操作语言DML&#xff08;Data Manipulation Langua&#xff09; 是SQL语言的一个分类&#xff0c;用于对表的数据进行增&#xff0c;删&#xff0c;改&#xff0c…...

kubernetes集群常用指令

目录 1.1 基础控制指令 1.2 命令实践 1.3 备注 1.1 基础控制指令 # 查看对应资源: 状态 $ kubectl get <SOURCE_NAME> -n <NAMESPACE> -o wide ​ # 查看对应资源: 事件信息 $ kubectl describe <SOURCE_NAME> <SOURCE_NAME_RANDOM_ID> -n <NAMES…...

PyQt6 QTreeView树视图

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili QTreeView类&#xff0c;它是树控件的基类&#xff0c;使用时&#xff0c;必须为其提供一个模型来与之配合。 QTreeView类的常用方法&#xff1a; 方法…...

链表|148. 排序链表

148. 排序链表 题目&#xff1a;给你链表的头结点 head &#xff0c;请将其按升序排列并返回排序后的链表。 题目链接&#xff1a; 148. 排序链表 时间复杂度&#xff1a;快排 O(n^2) 超出时间限制 class Solution {public ListNode sortList(ListNode head) {if(headnull)…...

如何解决5G基站高能耗问题?

安科瑞 须静燕 截至2023年10月&#xff0c;我国5G基站总数达321.5万个&#xff0c;占全国通信基站总数的28.1%。然而&#xff0c;随着5G基站数量的快速增长&#xff0c;基站的能耗问题也逐渐日益凸显&#xff0c;基站的用电给运营商带来了巨大的电费开支压力&#xff0c;降低5…...

PyTorch实现逻辑回归

最终效果 先看下最终效果&#xff1a; 这里用一条直线把二维平面上不同的点分开。 生成随机数据 #创建训练数据 x torch.rand(10,1)*10 #shape(10,1) y 2*x (5 torch.randn(10,1))#构建线性回归参数 w torch.randn((1))#随机初始化w&#xff0c;要用到自动梯度求导 b …...

什么是FPGA原型验证?

EDA工具的使用主要分为设计、验证和制造三大类。验证工作贯穿整个芯片设计流程&#xff0c;可以说芯片的验证阶段占据了整个芯片开发的大部分时间。从芯片需求定义、功能设计开发到物理实现制造&#xff0c;每个环节都需要进行大量的验证。 现如今验证方法也越来越多&#xff…...

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十四:系统设置模块相关功能实现

一、本章内容 本章使用已实现的公共组件实现系统管理中的系统设置模块相关功能,包括菜单管理、角色管理、日志管理、用户管理、系统配置、数据字典等。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 3.1 B站视频地址:...

使用Visual Studio(VS)创建空项目的Win32桌面应用程序【main函数入口变WinMain】

前言 在Visual Studio中直接新建Windows桌面应用程序会有很多多余的代码生成&#xff0c;本文将提供从空项目创建Win32项目的方法&#xff0c;解决新建空项目直接使用WinMain代码编译报错的问题 例如&#xff1a;LNK2019 &#xff1a;无法解析的外部符号 参考博客&#xff1…...

基于自动化脚本批量上传依赖到nexus内网私服

前言 因为某些原因某些企业希望私服是不能连接外网的&#xff0c;所以需要某些开源依赖需要我们手动导入到nexus中&#xff0c;尽管nexus为我们提供了web页面。但是一个个手动导入显然是一个庞大的工程。 对此我们就不妨基于脚本的方式实现这一过程。 预期效果 笔者本地仓库…...

Linux中ps命令使用指南

目录 1 前言2 ps命令的含义和作用3 ps命令的基本使用4 常用选项参数5 一些常用情景5.1 查看系统中的所有进程&#xff08;标准语法&#xff09;5.2 使用 BSD 语法查看系统中的所有进程5.3 打印进程树5.4 获取线程信息5.5 获取安全信息5.6 查看以 root 用户身份&#xff08;实际…...

PHP开发语言中,网页端常用的标签

在PHP开发语言中&#xff0c;网页端常用的标签包括以下几种&#xff1a; <html>&#xff1a;用于定义整个HTML文档。<head>&#xff1a;用于定义文档的头部&#xff0c;包含元数据、样式表和脚本等。<title>&#xff1a;用于定义文档的标题&#xff0c;显示…...