前言
今天,大概就是不挂科系列的最后一章了,感谢你们的鼓励,让我坚持把这个系列写完,秋名山的路很长,当你失去的东西后,会有其他的事物补充上来的,所以让我们今天用排水渠一样的技巧来,展示我们势必不挂科的勇气!
最后这个部分我打算用俩个小节来收尾,函数和真题
函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段
万物存在即有它的价值,像你我一样,试想一下,函数存在的意义是什么?从定义来看,可重复利用,假如要实现俩个数的交换操作,a,b交换
当然在python中可以写a,b = b,a这样的语句,但是你是不是每次都要写?
如果写一个函数,只需要传入俩个参数就实现交换数字的操作,a,b又亦或是c,d
def swap(a,b):
# 创建临时变量,并交换
temp = a
a = b
b = temp
print(a,b)
用上面这个例子来说明,函数的基本用法
定义一个函数
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号 : 起始,并且缩进。 - return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
下面我们来做一个例子,返回最大值的函数
def max(a, b):
if a > b:
return a
else:
return b
a = 4
b = 5
print(max(a, b))
函数调用
实际上你刚刚在不经意间已经调用了max,没错就是这么的简单,
def max(a, b):
if a > b:
return a
else:
return b
a = 4
b = 5
print(max(a, b))
print("再次调用max",max(5,6))
参数
这个老师讲的岌岌可危,虽然我旷课,但是基本概念还是没有问题的,下面让我这个小小码民来说一下几个必要的概念
- 实参:函数实际传入的参数
- 形参:函数()中提前定义的参数
四大参数
- 位置参数:函数的参数传入的位置
- 默认参数:形参和实参可以不一致,如果不想使用默认的参数,在调用函数的时候可以指定(调用函数时,默认参数的值如果没有传入,则被认为是默认值),即max(5,6)
- 可变参数:a代表可变参数,a使元组数据类型
def mysum(*;a)
可变参数在函数调用时候,自动组装为一个元组(tuple)- 关键字参数:关键字参数允许你传入0个或任意个含参数名的参数,0意味着关键字参数可填可不填,这些关键字参数在函数内部自动组装为一个dict。
实际上这么多函数参数,理解形参和实参就够用了,毕竟看了题库后,函数的考察还是停留在应用上,我们的目的就是不挂科,
题库解答
累加思想
这类题目有一个特点就是,给你一串数字,或直接是一个列表,然后让计算数值,一般情况下,定义一个sum=0,来累加sum,从而解决问题
题目:请补充横线处的代码。dictMenu中存放了你的双人下午套餐(包括咖啡2份和点心2份的价格,让Python帮忙计算并输出消费总额。
要求:输出一个数字
dictMenu = {'卡布奇洛':32,'摩卡':30,'抹茶蛋糕':28,'布朗尼':26}
sum = 0
for i in dictMenu.values():
sum += i
print(sum)
这是字典,对于字典的值的遍历,详细可参考前面的文章
多重判断
通俗的来讲就是if判断,if嵌套判断,循环语句中使用if
题目:从键盘为一维整型数组输入10个整数,找出其中最小的数,
在main函数中输出。
要求:采用内置函数完成
思路:
定义一个最小的值,用for循环各个元素逐个与min进行比较,或者直接用min函数
def main():
list_first = []
for i in range(10):
a = input("【请分别输入10个整数,每输入一个整数按回车确认:】")
x = min(a)
print("【最小数是:】%d " % x);
if __name__ == '__main__':
main()
或者这样:
for i in range(10):
if x>a[i]:
a[i] = x
水仙花数,回文是出现次数比较多的入门题,和我高中初赛差不多,都是入门,给定一个概念来考察循环+判断,也比较简单,但是很有必要学一下
水仙花数
所谓“水仙花数”是指一3位数,其各位数字立方和等于该数本身。
153是一个水仙花数,因为153=1+125+27
首先我们要学一下,如何来计算个,十,百,各位的数字
a=153 ge=a%10取余 shi=a//10%10 a除10为百位,百位取余为个 bai=a//100
好了,我们来看题
def fun(i):
ge = i % 10
shi = i // 10 %10
bai = i // 100
if (ge**3+shi**3+bai**3 == i):
return 1
else:
return 0
def main():
print("【请连续判断四次输入的三位数是否为水仙花数:】")
for n in range(4):
print("【第%d次:】" %(n+1))
a = int(input("【请输入一个三位数,并按回车确认:】"))
flag=fun(a)
if flag:
print("%d是【水仙花数】" %a)
else:
print("%d不是【水仙花数】" %a)
if __name__ == '__main__':
main()
回文——字符串
由于回文的特殊性,所以将它与字符串迭代起来考察就成了特别好的入门习题了,也导致在考试中频繁出现,所以说这个必看!与水仙花数重要性是一样的
abcdcba是回文。abcdefg不是回文。也就是反转字符串,还是老样子笨办法和函数办法
函数办法:
s = input('')
if not s:
print('请不要输入空字符串!')
s = input('请重新输入一个字符串:')
a = reversed(list(s))#函数反转
if list(a) == list(s):#强制转换列表
print('是回文')
else:
print('不是回文')
循环笨办法:
s[0:len(s)//2]==s[-1:len(s)//2:-1]
python很强大,可以逆着来判断,但是在c中可能要求比较多
列表插入
ls 是一个列表,内容如下:
ls = [123, “456”, 789, “123”, 456, “789”]
请补充如下代码,在 789 后增加一个元素 012。
ls.insert(2,012) #插入函数
质(素)数判断
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
想要判断一个素数,首先要进行一个特殊判断,因为<2的数都不是素数
x = int(input())
if x<2:
print("f")
接下来,我们要进行大于2的数的判断。方法就是:用数x对从2到x平方根依次取模,如果结果为0,说明x不是质数,如果一遍判断下来取模结果都不为0,则说明x为素数
import math
x = int(input())
f = 0
for i in range(2,int(math.sqrt(x))):
if x % i == 0:
print("f")
f = 1
if f = 0:
print("t")
用户自定义函数就如下所示:
import math
def isprime(x):
if x<2:
return "F"
for i in range(2,int(math.sqrt(x))+1):
if x % i == 0:
return "F"
return "T"
x = int(input())
print(isprime(x))
最后
还有就是几个画图的库,由于自己也没有学,所以还希望大家能自学一下,主要是记忆为主,毕竟以后也不一定用python做为主语言来进行工作,如果我有时间会在考试前做一个背诵专题,一切以时间的充分为主,过几天会写一个go+语言的推广,还请大家来捧场,这个是有奖金的,说白了我穷,可怜一下这个小博主吧!🤞
由于博主不是python出身,所以只能根据题库所写,与网上资源,和自己自学理解,来搞出这个不挂科系列,如有不足,还请评论区指教,感谢大家的支持,原创不易,给个三连😁。