结构体与函数简单总结(依靠洛谷结构体题与函数题单)

函数结构体简单总结

依靠洛谷函数与字符串题单



前言

之前总结了字符串的简单应用,随着函数与结构体的题单完成,入门题单也就刷完了,现在对于一些内容记录一下,方便以后自己再回顾。


一、函数

1、有返回值的函数

有返回值的函数在使用时也需要一个变量进行承接,或者直接将其看成一个变量
列入编写一个函数来实现输入数字的加权相加:

def work(a,b,c):
    anss=a*0.2+b*0.3+c*0.5
    return anss
if __name__=="__main__":
    mapp=work(1,2,3)
    print(mapp)
    print(work(1,2,3))
2.3
2.3

其中的

if __name__=="__main__":

对应于c++中的主函数。可以看出函数的使用和c++中的使用都相似,不过py语言不能直接定义函数的类型,返回的类型是返回值本身的类型,注意承接变量的类型选取。

2、无返回值函数

无返回值函数就是对函数内容进行操作,无返回值函数要注意全局变量和局部变量的设置。比如对一个矩阵进行顺时针旋转90°的操作:

import numpy as np
def work():
    global mapp
    mapp=np.rot90(mapp,3)
def printf():
    global mapp,num
    for item in range(num):
        for jtem in range(num):
            print(mapp[item][jtem],end='')
            pass
        print()
if __name__=="__main__":
    num=int(input())
    mapp=[['']*num for _ in range(num)]
    for item in range(num):
        key=str(input())
        for jtem in range(num):
            mapp[item][jtem]=key[jtem]
            pass
        pass
    work()
    print()
    printf()
3
123
456
789

741
852
963

这里的global是定义后边的变量是函数外的变量,就是全局变量,如果不加这个标签,就会被认定为,这个变量是函数中的变量,函数内的变化,不会影响到函数外的变化,这里的矩阵旋转用到的是numpy中的旋转函数,由于其默认是逆时针旋转90°,因此想要顺时针旋转90°,就要旋转三次。

3、递归函数

函数的自身套用的方法,是搜索常用的方法,也就是递归思想。例如现在需要求一个数的阶乘:

def work (num):
    if num<0:
        print("输入的数必须为正数")
        return
        pass
    elif num==1 or num==0:
        result=1
        pass
    else:
        result=work(num-1)*num
        pass
    return result
if __name__=="__main__":
    while True:
        n = int(input())
        print(work(n))
6
720
-2
输入的数必须为正数
None

这里设置了连续输入,求解思想比较简单,不过很多递归思想需要很清晰的思路。对我来说,沾上递归就是比较难的。

二、结构体

py的结构体和c++不同,py的结构体可以用类来实现,类的命名方式为驼峰命名。如果之前用c++写过结构体,就可以发现,这里的不好操作的地方就是如何设置和使用数组结构体,对应py也就是列表结构体。下面对于统计学生的三门主课成绩及其总分为例,写一个结构体:

class Student:
    def __init__(self,n,c,m,e):
        self.name=n
        self.chinese=int(c)
        self.math=int(m)
        self.english=int(e)
    def print_top(self):
        print(self.name,self.chinese,self.math,self.english)
        print("总分为:",self.math+self.chinese+self.english)
if __name__=="__main__":
    num=int(input())
    data=[]
    for item in range(num):
        in_put=str(input())
        mapp=[str(key) for key in in_put.split()]
        data.append(Student(mapp[0],mapp[1],mapp[2],mapp[3]))
    for item in data:
        item.print_top()
3
Tom 12 25 36
Join 22 68 50
Milan 25 74 68
Tom 12 25 36
总分为: 73
Join 22 68 50
总分为: 140
Milan 25 74 68
总分为: 167

结构体的初始定义函数__init__的数值输入就是直接使用结构体名字输入,结构体内可以设置函数,直接用子变量调用即可。这里使用的输入数据既有字符类型又有整数类型,这里的操作是直接输入一个字符串,然后按照空格间隔进行切片,存入到一个列表之中。最后按照需要对数据类型进行强制转换即可。

总结

结构体和函数如果后面遇到新的问题会及时更新,欢迎指出不对的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

直接AC好吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值