4-28周报

计算机天才协会学习周报

本周学习大纲

1.写程序建模比赛论文

2.复习java

本周学习日历

日期 学习内容
周一 写论文
周二 写论文,复习大物
周三 写论文
周四 听网课复习java
周五 写程序建模论文
周六 休息一天
周日 复习java,练基础题

完成状态

基本全部完成

本周学习总结

本周,主要是写程序建模比赛的论文,还有java也在学习,不过java是真的太生疏了。

Python:字符串常见操作

字符串是字符的序列,我们能在几乎每一个Python程序中找到它的踪影,我们往往需要对字符串进行各种操作以达到目的。那么本期,我将介绍一些常见的字符串操作,能够满足大部分字符串操作情况

1 join串联多个字符串。

利用join函数,我们可以将列表中的字符串元素串联起来,如:

1
2
chars = ['P','y', 't', 'h', 'o', 'n']
name = ''.join(chars) # name=="Python"

2 字符串分割函数。

split()方法:

1
str.split(str="",num=string.count(str))

str:表示为分隔符,默认为空格,但是不能为空(’’)
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量。默认为 -1, 即分隔所有。

比如,将”happy,sad,cool“以”,“做一次分割:

1
a='happy,sad,cool'.split(',',1)  # a==['happy','sad,cool']

3 把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次。

1
string.replace(str1,str2,num=string.count(str1))

4 检查字符串是否是以 “x”开头或结尾,是则返回 True,否则返回 False。

1
2
3
4
5
# 检查字符串是否以"x"开始,如果是,返回 True,否则返回 False.
string.startswith(x, beg=0,end=len(string))

# 检查字符串是否以 obj 结束,如果是,返回 True,否则返回 False
string.startswith(x, beg=0,end=len(string))

5 capitalize()把字符串的第一个字符大写。

1
string.capitalize()

6 判断字符串内容的几个函数。

1、如果 string 至少有一个字符并且所有字符都是字母或数字则返,回 True,否则返回 False

1
string.isalnum()

2、如果 string 至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False

1
string.isalpha()

3、string 是否只包含数字

1
string.isdigit()

4、string 是否只包含十进制数字

1
string.isdecimal()

5、 string 中是否只有小写(大写)字母

1
2
3
4
# 小写
string.islower()
# 大写
string.isupper()

6、string中是否只包含数字字符

1
string.isnumeric()

7、string中是否只包含空格

1
string.isspace()

7 字符串索引查询函数

1
2
3
4
5
6
7
8
9
# 检测 str 是否包含在 string 中,
如果 beg 和 end 指定范围,则检查是否包含在指定范围内
string.find(str, beg=0, end=len(string))
# 类似于 find() 函数,返回字符串最后一次出现的位置,如果没有匹配项则返回 -1。
string.rfind(str, beg=0,end=len(string) )
# 跟find()方法一样,只不过如果str不在 string中会报一个异常。
string.index(str, beg=0, end=len(string))
# 类似于 index(),不过是返回最后一个匹配到的子字符串的索引号
string.rindex( str, beg=0,end=len(string))

8 统计字符串中内容出现次数

1
2
3
string.count(str, beg=0, end=len(string))
返回 str 在 string 里面出现的次数,
如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

9 返回最小值或最大值

1
2
3
4
# 返回字符串 str 中最大的字母
max(str)
# 返回字符串 str 中最小的字母
min(str)

10 字符串中字母大小写转换

1
2
3
4
5
6
# 把所有字母转换为小写
string.lower()
# 把所有字母转换为大写
string.upper()
# 翻转string中的大小写
string.swapcase()

11 字符串删去开头结尾

1、删去开头和结尾指定字符(默认为空格)

1
string.strip(x)

2、删除 string 末尾

1
string.rstrip(x)

3、删除string开头

1
string.lstrip(x)

13 对齐函数

1、返回一个原字符串(string)右对齐,并使用空格填充至长度 width 的新字符串

1
string.rjust(width)

2、返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串

1
string.ljust(width)

3、返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0

1
string.zfill(width)

4、返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

1
string.center(width)

14 格式化字符串

三种格式化输出format

1
2
3
4
5
6
s12_1 = '我叫{},今年{}岁,爱好{},再说一下我叫{}'.format('小明',18,'学习','小明')

s12_2 = '我叫{0},今年{1}岁,爱好{2},再说一下我叫{0}'.format('小明',18,'学习')

s12_3 = s1 = '我叫{name},今年{age}岁,爱好{hobby},再说一下我叫{name}'.format(name = '小明',age = 18,hobby = '学习')

4-21周报

计算机天才协会学习周报

本周学习大纲

1.PTA刷题

2.学习程序建模

本周学习日历

日期 学习内容
周一 pta刷题
周二 pta刷题
周三 完成技术文档,复习大物打笔记
周四 写C语言作业,pta刷题
周五 绘制大创项目的流程图,pta刷题
周六 参加天梯赛
周日 看《机器学习》学习程序建模

完成状态

基本全部完成

本周学习总结

天梯赛就在本周,所以主要还是刷题,天梯赛虽然拿不上奖,但是自己的分数也还不错,算是超常发挥,那么这一阶段任务算是圆满完成了。另外也开始为其他比赛作准备,为了创新创业的学分参加大创,第一次参与app的构思,也算有点收获。

Python:内置模块argparse

argparse是什么?

argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。

argparse如何使用?

首先来看一看ArgumentParser对象的相关属性

属性 解释 默认值
prog 程序的名称 sys.argv
usage 描述程序用途的字符串 自动生成
description 在参数帮助文档之前显示的文本 None
epliog 在参数帮助文档之前显示的文本 None
parents 在参数帮助文档之后显示的文本同上一个ArgumentParser对象的列表,它们的参数也应包含在内 []
prefix_chars 可选参数的前缀字符集合 ‘_’
formatter_class 用于自定义帮助文档输出格式的类 argparse.HelpFormatter
formfile_prefix_chars 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合 None
argument_default 参数的全局默认值 None
conflict_handler 解决冲突选项的策略 ‘error’
add_help 为解析器添加一个-h/–help 选项 Ture
allow_abbrev 如果缩写是无歧义的,则允许缩写长选项 Ture
exit_on_ 决定当错误发生时是否让 ArgumentParser 附带错误信息退出 Ture

一次简单的对argparse的使用主要有三个步骤:

  1. 创建ArgumentParser()对象
  2. 调用add_argument()函数添加参数
  3. 使用parse_args()解析添加的参数

示例:

1
2
3
4
5
6
7
8
9
10
#导入argparse模块
import argparse
# 创建解析器
parser = argparse.ArgumentParser(description='desc')
# 添加整型参数
parser.add_argument('--integers', type=int, default=0, help='input an integer')
# 解析参数parse_args()通常不带参数调用,ArgumentParser将自动从sys.argv确定命令行参数。
args = parser.parse_args()
#返回一个具有integers属性的对象 Namespace(integers=0)
print(args)

结果:

1
Namespace(integers=0)

示例中的add_argument()方法:

1
2
3
4
5
6
7
8
9
10
11
ArgumentParser.add_argument(name or flags...,
action='',
nargs='',
const,
default,
type,
choices,
required,
help,
metavar,
dest)

其中的参数:

add_argument(‘-f’, ‘–foo’) # 可选参数
add_argument(‘foo’) # 位置参数
action #该action关键字参数指定的命令行参数应该如何处理
action = ‘store’ # 默认操作仅存储参数的值,可以不写
action = ‘store_const’ # 将存储由const关键字参数指定的值
action = ‘store_true’ # 这些是’store_const’分别存储值True和False的情况下使用
action = ‘store_false’
action = ‘append’ # 存储一个列表,并将命令行的每个参数值附加到列表中
action = ‘append_const’ # 存储一个列表,并将const关键字参数指定的值附加到列表中,可用于多个参数需要将常量存储到同一列表,const默认参数为None
action = ‘count’ # 计算关键字参数出现的次数
action = ‘extend’ # 存储一个列表,并将每个参数值添加到列表中
nargs : 将单个命令行参数与要执行的单个操作相关联,并收集到一个列表中
nargs = N(一个整数) # nargs=2,命令行python test.py –foo a b 将a,b收集到一个列表中
nargs = ? # 表示从命令行使用一个参数,作为选项参数的值,如果命令行指定了参数的值则使用(python test.py –foo xx),如果不存在命令行参数(python test.py),使用default默认值,如果存在可选项参数(python test.py –foo),但是没有指定参数值,会使用const的值。
nargs = * # 存在的所有命令行参数都收集到一个列表中
nargs = + # 跟*用法一样,都会收集到一个列表中,但是如果没有命令行参数则会报错
default # 指定默认值
type # 指定类型 int float等
choices # 指定某些命令行参数应从一组受限制的值中选择,如果参数不是可接受的值一直,则报错
required=True # 指定参数值为必填
help #帮助信息说明

2024-4-14周报

计算机天才协会学习周报

本周学习大纲

1.PTA刷题

2.复习java

本周学习日历

日期 学习内容
周一 PTA刷题
周二 补上周的天梯赛模拟
周三 pta刷题
周四 去栖霞参加讲座并和指导老师一起讨论,借书等等
周五 复习java,写了几个java代码
周六 参加模拟赛,刷题
周日 做学习笔记,写作业

完成状态

基本全部完成

本周学习总结

现在我在代码上,最大的问题是函数的储备不够,有时候完成不了的要求一个函数就搞定了,所以在刷题之外,应该多注意基础知识。另外,java对于我来说,本来就不熟悉,下周准备开始学javaweb了,应该多注意对java代码的练习。

4-7周报

计算机天才协会学习周报

本周学习大纲

1.PTA刷题

2.复习java

本周学习日历

日期 学习内容
周一 PTA刷题
周二 听讲解,做题
周三 出去玩了
周四 出去玩
周五 复习java面向对象
周六 pta刷题
周日 复习java

完成状态

基本全部完成

本周学习总结

这周有小长假,趁此机会出去玩了两天,其余的时间大多还是刷题准备天梯赛,其间发现了一些之前的代码里疏漏的部分,并且这周开始重新拾起对java的学习了。

心得体会

做题首先得把所有要求看清楚,并且不能被特殊案例迷惑,否则只会陷入反复的修补bug之中

3-31周报

计算机天才协会学习周报

本周学习大纲

1.PTA刷题

2.补习课上落下的内容,做笔记

本周学习日历

日期 学习内容
周一 PTA刷题
周二 重新做上次模拟赛的题
周三 PTA刷题
周四 模拟赛
周五 补习,做学习笔记
周六 不小心睡了一天
周日 做题,补习离散数学课上的内容

完成状态

基本全部完成

本周学习总结

主要是为天梯赛做准备,另外补上了一些课上的学习内容,做了几页的学习笔记,还挺有成就感的,这样期末复习的压力就减少了很多。

3-24周报

计算机天才协会学习周报

本周学习大纲

1.PTA刷题

2.准备建模比赛的论文

本周学习日历

日期 学习内容
周一 PTA刷题
周二 晚上补课,代码练习进度暂停
周三 看讲解视频并解决对应的题目
周四 模拟赛
周五 pta刷题
周六 复习物理,做笔记,完成C语言部分作业
周日 去驾校练车,pta刷题

完成状态

全部完成

本周学习总结

相较于之前的练习,这周更倾向于解决L1部分之前未解决的问题,在准备比赛和日常学习之间做了更好的平衡,科目一也即将完成

3-17周报

计算机天才协会学习周报

本周学习大纲

1.PTA刷题

2.准备建模比赛的论文

本周学习日历

日期 学习内容
周一 PTA刷题
周二 听上次选拔赛的题的讲解
周三 PTA刷题
周四 模拟赛
周五 驾校练车,pta刷题
周六 学习爬虫,看统计建模比赛往期论文
周日 刷题

完成状态

基本全部完成,刷题的速度有些慢

本周学习总结

主要是为天梯赛做准备,经过模拟赛和前辈的讲解后,解决了一些之前没有解决的问题,比如说,字典的排序。

3-10周报

计算机天才协会学习周报

本周学习大纲

1.PTA刷题

2.学习python爬虫

本周学习日历

日期 学习内容
周一 在PTA刷题,更新一篇技术性文稿(二叉树)
周二 PTA刷题
周三 PTA刷题,参加选拔赛
周四 休息一天
周五 解决掉作业
周六 出去玩,参加漫展
周日 学习爬虫,

本周学习总结

为天梯赛校内选拔赛尽力练习了,结果虽然成绩也不太好,但是在某些点上也算有一点进步,比如在比赛时“灵光一闪”运用了递归的思想,拿到了更多分数。另,在听说统计建模大赛之后,也准备参加,所以开始学习爬虫。