分享|基础编程语言常见技巧函数总结
584
2024.06.26
2024.06.27
发布于 山东

基础编程语言技巧函数总结

Intro

简要介绍编程技巧的重要性以及本文的主要内容。

C语言技巧函数总结

内存管理

  • malloc 和 free 的使用
  • 动态数组的创建和管理

指针操作

  • 指针的声明和初始化
  • 指针与数组的关系

字符串处理

  • 字符串的复制、连接、比较
  • 使用 strtok 进行字符串分割

char *strtok(char *str, const char *delim) 分割字符串
使用 delim 指定的分隔符来分割 str 字符串,然后返回指向第一个找到的子字符串(即第一个“token”)的指针

int main()
{
	char str[] = "one,two,three";
	char *token = strtok(str, ",");
	
	printf("%s\n", token);
	
	token = strtok(NULL, ",");
	printf("%s\n", token);
	
	
	token = strtok(NULL, ",");
	printf("%s\n", token);
	
	
	return 0;
}

strcat(char *d, char *s) 将字符串s拼接在字符串d的末尾
int strlen(char *) 返回字符串的长度,不含末尾0
Char *strstr(char* s1, char * s2) 字符串找子串

文件读写

文件打开及关闭

• File Pointer: FILE*
• File open function: fopen(file_name, mode)
• FILE Pointer closer: fclose(FILE fp*)

文件内容读取

• Character reading function: getc(FILE fp*)
• char *fgets(char *line, int maxLineSize, FILE *fp)
• int fputs(char *line, File *fp)

读取一整行代码
	while((fgets(line, 200, fp)) != NULL){
		fputs(line, outf);
	}

标准库函数

  • printfscanf 的高级用法
  • qsort 函数的使用

JAVA技巧函数总结

基础语法

转义字符

  • \ " 双引号

输入

Scanner类

  • Scanner_Object_Name.NextInt() 读取
  • nextByte():读取一个字节类型的输入。
  • nextShort():读取一个短整型输入。
  • nextInt():读取一个整型输入。
  • nextLong():读取一个长整型输入。
  • nextFloat():读取一个浮点型输入。
  • nextDouble():读取一个双精度浮点型输入。

Swing Java GUI

Python技巧函数总结

绘制线图的示例代码

import matplotlib.pyplot as plt

def main():
    # 创建包含数据点X和Y坐标的列表
    x_coords = [0, 1, 2, 3, 4]
    y_coords = [0, 3, 1, 5, 2]

    # 绘制线图
    plt.plot(x_coords, y_coords, marker='o')

    # 添加标题和轴标签
    plt.title('Sales by Year')
    plt.xlabel('Year')
    plt.ylabel('Sales')

    # 自定义刻度标记
    plt.xticks([0, 1, 2, 3, 4], ['2016', '2017', '2018', '2019', '2020'])
    plt.yticks([0, 1, 2, 3, 4, 5], ['$0m', '$1m', '$2m', '$3m', '$4m', '$5m'])

    # 显示网格
    plt.grid(True)

    # 显示图表
    plt.show()

if __name__ == '__main__':
    main()

绘制条形图的示例代码

import matplotlib.pyplot as plt

left_edges = [0, 10, 20, 30, 40]  # 条形的左边缘位置
heights = [100, 200, 300, 400, 500]  # 条形的高度
bar_width = 5  # 条形的宽度

plt.bar(left_edges, heights, width=bar_width)  # 绘制条形图
plt.show()

绘制饼图的示例代码

import matplotlib.pyplot as plt

values = [20, 60, 80, 40]  # 饼图各部分的值
slice_labels = ['1st Qtr', '2nd Qtr', '3rd Qtr', '4th Qtr']  # 饼图各部分的标签

# 绘制饼图
plt.pie(values, labels=slice_labels)

# 添加标题
plt.title('Sales by Quarter')

# 显示图表
plt.show()

Python 3 基础语法

Python3 中常见的数据类型有:

  • Number(数字)Python3 支持 int、float、bool、complex(复数)
  • String(字符串)
  • bool(布尔类型)
  • List(列表)

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

列表是写在方括号 [] 之间、用逗号分隔开的元素列表。

和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

列表截取的语法格式如下:

变量[头下标:尾下标]

  • Tuple(元组)

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。

  • Set(集合)

Python 中的集合(Set)是一种无序、可变的数据类型,用于存储唯一的元素。

集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。

在 Python 中,集合使用大括号 {} 表示,元素之间用逗号 , 分隔。

另外,也可以使用 set() 函数创建集合。

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

  • Dictionary(字典)

字典(dictionary)是Python中另一个非常有用的内置数据类型。

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。

键(key)必须使用不可变类型。

在同一个字典中,键(key)必须是唯一的。

end 关键字

在Python中,end作为一个关键字,通常与字符串的print函数一起使用。print函数默认在每次调用后都会输出一个换行符\n,从而开始新的一行。
如果我们需要单行输出多个内容,可以在print函数之后加相应的关键字来实现。

# 默认情况下,print函数会在输出后换行
print("Hello, World!")

# 使用end参数指定不换行,而是输出一个空格
print("Hello, ", end="")
print("World!")

列表操作

通过中括号[a:b]获取列表中的元素,从下表a开始,结束于下表b,下表b索引的元素不输出。

nums = [10, 20, 30, 40, 50, 60, 70, 80, 90]
print(nums[0:4])

可以通过直接赋值的方法实现对列表中元素的修改

可以通过 append() 方法来添加列表中元素项的个数

list1 = ['Google', 'Runoob', 'Taobao']
list1.append('Baidu')

可以通过关键字del实现对列表中某个元素的删除

list = ['Google', 'Runoob', 1997, 2000]
print ("原始列表 : ", list)
del list[2]
print ("删除第三个元素 : ", list)

列表常见函数方法:

  • append() 方法:将某个元素添加到列表
  • len(list) 方法:返回该列表的长度
  • list.count(obj)方法:统计某个元素在列表中出现的次数

元组操作 tuple

Python 的元组与列表类似,不同之处在于元组的元素不能修改。

初始化:元组使用小括号 ( ),列表使用方括号 [ ]。

字典操作

字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:

image.png

创建方式:

  • 直接使用大括号{}
  • 使用内联函数dict()实现创建空字典。

字典通过键值来实现访问相应的数据

字典中的键值可以是数字,字符串,元组,但不能是[]列表

字典中元素的删除依然使用关键字del

集合操作

集合(set)是一个无序的不重复元素序列。

集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。

可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数创建集合。

元素添加

  • s.add( x ) 只能添加单个元素
  • s.update( x ) 可以添加列表,但是是将列表中的元素单独存储

元素移除

  • s.remove( x )

计算集合元素个数

len(s)

文件读写

file_object = open("resource.txt",'r')

读取文件:
file_object.read()
写入文件:
file_object.write('String') 字符串

with语句自动开关文件

with open(filename, mode) as file_variable:
    # 在这里可以使用file_variable来操作文件
  • filename:一个字符串,指定要打开的文件的名称。
  • mode:一个字符串,指定文件打开的模式,如'r'(只读)、'w'(只写)、'a'(追加)
  • file_variable:一个变量名,用于在with代码块中引用文件对象。

异常处理

else语句只有没有抛出异常才会执行

 try:
    statement
except ExceptionName:
    statement
else:
    statement

使用 try-except 处理异常

while True:
    try:
        x = int(input("请输入一个数字: "))
        break
    except ValueError:
        print("您输入的不是数字,请再次尝试输入!")

finally语句不管有没有抛出异常都会执行

image.png

类与面向对象

多继承

class people:

    name = ""
    age = 0

    __weight = 0

    def __init__(self, name, age, weight):
        self.name = name
        self.age = age
        self.weight = weight

    def speak(self):
        print("%s 说: 我 %d 岁。" %(self.name,self.age))


class student(people):

    grade = ''
    def __init__(self, name, age, weight, grade):
        people.__init__(self, name, age, weight)
        self.grade = grade

    def speak(self):
        print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))

class speaker():

    topic = ''
    name = ''

    def __init__(self, name, topic):
        self.name = name
        self.topic = topic

    def speak(self):
        print("我叫 %s,我是一个演说家,我演讲的主题是 %s" % (self.name, self.topic))

class sample(speaker,student):

    a = ''
    def __init__(self,name,age,weight,grade,topic):
        student.__init__(self, name, age, weight, grade)
        speaker.__init__(self, name, topic)



test = sample("Tim", 25,60,2,"Python")

test.speak()
方法名相同时,默认调用的是在括号中参数位置排前父类的方法

Recursion 递归

  • 基案(Base Case):不需要递归即可解决的最简单的情况。基案用于停止递归调用,防止无限递归。
  • 递归案(Recursive Case):通过将问题分解为更小的相同问题,并调用自身来解决这些更小的问题。

最大公约数

def gcd(x, y):
    if x % y == 0:
        return y
    else:
        return gcd(y, x % y)

汉诺塔

Base Case:最后一下肯定是把最小的盘从1移到3
Recursive Case:
将1上面除去最大的盘子以上的所有盘子通过3为中介移到2
将最大的盘子移到3
将2上的n-1个盘子通过3为中介返回到1

评论 (0)