「BUAA Python Programming」Week1
Part 0 前言
Python是一门热门的语言,在各个领域有广泛的应用。到目前笔者的学习进度来看,在北航计算机学院的核心专业课CO和OO中,自行搭建评测机的主流应用语言为python,并且
BUAA Python Programming系列博客是北航计算机学院暑期课Python Programming(全英文)的同步学习笔记博客。
受限于暑期课的容量,笔者可能结合其他资料与其他课程扩充博客内容。
Part 1 声明编码方式
在python中,字符编码是一个复杂的问题,感兴趣的读者可以参考Python字符编码问题。
初入python,我们简化这个问题,直接给出比较常见的编码问题及解决方式:
python源码也是一个文本文件,当源码包含中文注释的时候,需要指定保存为UTF-8编码,以使得python解释器读取源代码时,可以按照UTF-8读取。可以在文件开头写上如下注释:
1 | # -*- coding: utf-8 -*- |
或
1 | #coding=utf-8 |
进一步,对于一般情况,我们都直接在文件开头如此标注以规范代码,避免无谓的bug。
Part 2 类型转换
在python中,不需要显示声明变量类型,这对接触类C语言较多的同学可能不太适应。
当使用input()
函数输入时,如果不加以特殊指定,会得到一个字符串,这可能和我们的需求不吻合。面对类似这样的情况,我一般会使用强制类型转换来保证数据的合法性。
举例而言,输入一个整数,可以用如下代码:
1 | num = int(input()) |
python中的强制类型转换是类型(变量)的形式,如int(val)
会将val
转为int
类型。
Part 3 print()
print()
函数是重要的输出(打印)函数,了解其使用十分重要。对于该函数较全面的入门级介绍,可以参考菜鸟教程-Python3 print 函数用法总结。在这里,我们总结一些比较常用的输出需求与对应解决方案:
格式化输出
在C中,printf()
函数提供的格式化输出深入人心,python也支持类似的方案。
保留两位小数
1 | num = 10.246 |
输出:
1 | num : 10.25 |
对齐
格式化操作符 | 功能 |
---|---|
- |
左对齐 |
0 |
用0 填充而非默认的空格 |
不换行输出
在不限制的情况下,print()
会在输出结束后加一个换行。当我们不希望输出结束后换行的时候,可以用如下方案:
1 | num = 70 |
输出:
1 | BUAA70 |
Part 4 遍历
在python中,循环遍历在整数区间内的遍历写法和C有较大不同。以C中for (i = 0; i < n, i++)
为例,在python中写法如下:
1 | for i in range(0, n) |
这其实是利用了range()
这一重要函数,该函数也可以通过参数支持反向遍历、步长设置等,具体可以参考菜鸟教程-Python range() 函数用法。
Part 5 一行输入多个变量
python中的input()
函数是重要的标准输入函数,其返回一个类型为string
的数据。
一般地,可以用input(str)
首先输出str
提示希望获取的输入,接着获取一个输入数据。
但是,当我们需要输入以某种形式分隔的多个变量的时候,一个好的方法是采用split
作为参数。举例而言,我们要输入一行两个用空格分隔的整数的时候,可以采用的代码如下:
1 | a, b = map(int, input(),split()) |
若是一行两个用逗号分隔的整数,则可以用:
1 | a, b = map(int, input().split(',')) |
Part 6 Numpy库
Numpy是一个重要的数学函数库,关于其更细致的介绍可以参考菜鸟教程-NumPy 教程。
在作业中,涉及了矩阵的行列式计算,可以用如下库函数:
1 | import numpy as np |
Part 7 split()
函数
在Part 5中,介绍了输入一行有两个整数以空格分隔的情况。对于更一般的情况,如一行有一个浮点数和一个字符串以空格分隔,可以如下操作:
1 | arr = input().split(" ") |
如此,arr
是用空格分隔input()
得到的字符串列表,a
为将第0个字符串转为浮点数,b
为第1个字符串。
Part 8 列表
列表(List)是python中最基本的数据结构,类似C和Java中的数组,但有一些不同点,详细的列表介绍可以参考Python 列表(List) | 菜鸟教程 (runoob.com)。这里介绍一些常用的列表性质和函数。
新建列表
1 | arr = [] |
给列表增加元素
1 | num = int(input()) |
删除特定元素
remove()
remove() 函数用于移除列表中某个值的第一个匹配项。1
list.remove(obj)
遍历列表
1 | for i in arr: |
通过下标(偏移量)访问列表元素
1 | print(arr[0]) |
排序
1 | arrSorted = sorted(arr) |
值得注意的是,sorted
没有改变原有列表的内容,而是返回了一个新的排列后的列表。这也体现了python作为面向对象语言的特点。
查找元素在列表中的位置
1 | p = list.index(value) |
This is copyright.