补充一:函数
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
不可改变类型:如整数、字符串、元祖。比如在 fun(a) 内部修改a的值,只是修改另一个复制的对象,不会影响a本身。
def add(x,y):
return x+y
print(add(1,2))
# 3
def f(a):
a = a+1
return a
x=3;
f(x)
print(x)
# 3 还是3,因为是不可变类型
可变类型:如列表、set集合、字典。比如 fun(a),则是将 a 真正的传过去,修改后fun外部的la也会受到影响。
def f(a):
a[0] = a[0]+10
return a
list1 = [1,2,3,4,5]
f(list1)
print(list1)
# [10,2,3,4,5]
加了 (*) 的变量名,会存放所有未命名的变量参数。不定长参数实例如下:
def MyPrint(*x):
for item in args:
MyPrint(item)
print(1,2,3,5)
# 1
# 2
# 3
# 5
补充二:lambda表达式
# 定义函数(普通方式)
def func(arg):
return arg+a
result = func(123)
# lambda表达式
my_add = add x : x + 1
print(my_add(123))
类的定义与使用
- 创建
# 建立一个Student类,然后里面有姓名,年龄,班级
class Student():
name = ''
age = 0
sex = ''
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def getName(self):
print(self.name)
def getAge(self):
print(self.age)
def getSex(self):
print(self.sex)
stu = Student("张三",20,"男")
stu.getName()
stu.getAge()
stu.getSex()
# 张三
# 20
# 男
- 继承
# 父类
class Student():
name = ''
age = 0
sex = ''
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def getName(self):
print(self.name)
def getAge(self):
print(self.age)
def getSex(self):
print(self.sex)
# 子类
class Son(Student):
def __init__(self,name,age,sex,email):
self.name = name
self.age = age
self.sex = sex
self.email = email
def getEmail(self):
print(self.email)
son = Son("赵四",20,"女","111@qq.com")
son.getName
son.getEmail
# 赵四
# 111@qq.com
文件操作
文件的打开关闭、文件的读写
# 打开
object = open(文件名,打开方式)
# ------------------------------------------
# 读 read() readlines() readline()方法
f.readline() # 会从文件中读取单独的一行
f.readlines() # 读取所有行
object.read()
object.readline()
object.readlines()
# ------------------------------------------
# 写
object.wirte()
# 关闭
object.close()
举例:
fp = open("C:\Users\ghc\Desktop\1.txt","r+") # 打开
fp.wirte("hello,world") # 写入
fp.close() # 关闭写入流
fp = open("C:\Users\ghc\Desktop\1.txt","r+") # 打开
print(fp.read())#读取
fp.close() # 关闭读取流
题目
#一、选择题
1.对于列表mylist=[1,2,3,4,5,6,7,8,9],下面操作正确的是==(B)==
A. mylist[1:9:0] B.mylisy[1:9:2] C.mylist(6:-9:-2) D.mylist[10::]
A 错在步长0,C 错在(),D返回空列表
2.以下关于python描述错误的是==(B)==
3.以下关于全局变量和局部变量的描述,错误的是==(D)==
4.打开文件不正确的写法为==(C)==
C缺个r
5.描述错误的是==(D)==
continue是跳出当前循环体
6.描述错误的是==(A)==
7.python中的可变和不可变类型参数是:
==可变:==列表 list,字典 dict,集合set
==不可变:==字符串 str,布尔类型 bool,整数 int ,浮点数 float,元组 tuple,日期 date
8.python文件打开模式的描述,错误的是==(D)==
9.以下变量名中,错误的是==(C)==
二、填空题
三、判断
1.表达式[1,2,3]与表达式[3,2,1]相同==(F)==
列表是有序的
2.Python是一种跨平台、开源、免费的高级动态编程语言。(T)
3.Python不允许使用关键字作为变量名,但是允许使用内置函数名作为变量名,不过这会改变函数名的含义,所以不建议这样做。(T)
4.执行语句from math import sin之后,可以直接使用sin( )函数,例如sin(3)。(T)
5.Python变量名不区分大小写,所以student和Student是同一个变量。(F)
6.可变参数*args传入函数时的存储方式为列表。def sum(*args)。(F)
正确的为元祖形式存储
7.已知x= 3,那么执行语句x+=6之后,x的内存地址不变。(F)
8.字典的查询速度不如列表和元组。(F)
字典更快
9.判断以下的代码段是否合法
>>>number = 5
>>>print(number + “is my lucky num”)(F)
整数不允许和字符串相加
四、程序
(1)打印100-200之间的全部素数
from math import sqrt
def main():
for i in range(100, 201):
flag = 1
k = int(sqrt (i))
for j in range(2, k + 1):
if i % j == 0:
flag = 0
break
if flag == 1:
print(i, end=" ") # 1个空格,输出的每个数之间的间距
(2)编写程序,用*打印直角三角形
for i in range(1,5):
for j in range(0,i):
print("*",end=" ")
print()
(3)编写猜数字小游戏
要求使用random模块的randint()函数随机生成20以内数字,用户五次猜测机会,提示猜大了,猜小了。
from random import randint
num = randint(1,20)
for i in range(5):
guess = int(input("请输入1-20的整数:"))
if guess > num:
print("猜大了")
elif guess < num:
print("猜小了")
else:
print("猜对了")
break
(4)类与继承
1.创建一个Persoon类,在构造函数中初始化姓名name,年龄age,创建有返回值get_name方法获取姓名,get_age获取年龄
class Person():
def __init__(self,name,age):
self.name=name
self.age=age
def getName(self):
print(self.name)
def getAge(self):
print(self.age)
p = Person("张三",20)
p.getName
p.getAge
2.创建Student类继承Person类的属性和方法,在构造函数中调用基类的构造函数初始化共有的name、age属性,并将Student类独有的成绩属性course(包括语文、数学、英语三门成绩)进行初始化。创建有返回值的get_MaxScore方法用来返回3门科目中的最高分数。使用实例
s1 = Student(‘小明’,18,[93,68,76]) 对Student类的三种方法进行测试,并输出结果。
class Student(Person):
def __inif__(self,name,age,course):
self.name=name
self.age=age
self.course=course
def get_MaxScore(self):
self.course.sort()
return self.course[2]
stu=Student("张三",20,[93,68,76])
print(stu.get_MaxScore())