「BUAA Python Programming」Week1

Posted by saltyfishyjk on 2022-07-06
Words 1.3k and Reading Time 5 Minutes
Viewed Times

「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
2
num = 10.246
print("num : %.2f" %(num))

输出:

1
num : 10.25

对齐

格式化操作符 功能
- 左对齐
0 0填充而非默认的空格

不换行输出

在不限制的情况下,print()会在输出结束后加一个换行。当我们不希望输出结束后换行的时候,可以用如下方案:

1
2
3
4
num = 70
str = 'BUAA'
print(str, end = '')
print(num, end = '')

输出:

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
2
3
import numpy as np

ans = np.linalg.det(D)

Part 7 split()函数

Part 5中,介绍了输入一行有两个整数以空格分隔的情况。对于更一般的情况,如一行有一个浮点数和一个字符串以空格分隔,可以如下操作:

1
2
3
arr = input().split(" ")
a = float(arr[0])
b = arr[1]

如此,arr是用空格分隔input()得到的字符串列表,a为将第0个字符串转为浮点数,b为第1个字符串。

Part 8 列表

列表(List)是python中最基本的数据结构,类似C和Java中的数组,但有一些不同点,详细的列表介绍可以参考Python 列表(List) | 菜鸟教程 (runoob.com)。这里介绍一些常用的列表性质和函数。

新建列表

1
arr = []

给列表增加元素

1
2
num = int(input())
arr.append(num)

删除特定元素

  1. 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.