依靠洛谷函数与字符串题单
之前总结了字符串的简单应用,随着函数与结构体的题单完成,入门题单也就刷完了,现在对于一些内容记录一下,方便以后自己再回顾。
有返回值的函数在使用时也需要一个变量进行承接,或者直接将其看成一个变量
列入编写一个函数来实现输入数字的加权相加:
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语言不能直接定义函数的类型,返回的类型是返回值本身的类型,注意承接变量的类型选取。
无返回值函数就是对函数内容进行操作,无返回值函数要注意全局变量和局部变量的设置。比如对一个矩阵进行顺时针旋转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°,就要旋转三次。
函数的自身套用的方法,是搜索常用的方法,也就是递归思想。例如现在需要求一个数的阶乘:
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__的数值输入就是直接使用结构体名字输入,结构体内可以设置函数,直接用子变量调用即可。这里使用的输入数据既有字符类型又有整数类型,这里的操作是直接输入一个字符串,然后按照空格间隔进行切片,存入到一个列表之中。最后按照需要对数据类型进行强制转换即可。
结构体和函数如果后面遇到新的问题会及时更新,欢迎指出不对的地方。