[TOC]
认识python
- python是编译型语言还是解释性语言,两种类型的语言的程序有什么不同?
解释性语言,编译型语言如C或C++需要其他编译器和工具转换成二进制语音在计算机中执行,Python这样的解释型语言自带编译器直接运行即可 - python相对与其他语言有什么优点和缺点?
简单,开源,丰富的第三方库 - Python应用场景有哪些
web开发,科学计算,游戏,软件开发 - 什么是python的交互模式,如何进入python交互模式
CMD运行python程序进入交互模式 - 在linux系统上,可以通过哪些方式编写出一个python程序
文件后缀名改为.py - 在终端中,如何运行一个.py文件,有几种方法,分别怎么操作
python test.py
python基础知识:注释、变量、变量类型、标示符、关键字
- 你认为注释是用来做什么的
对代码的用意原理进行解释说明,避免再次阅读代码是不能理解 - 在python中,注释分几类?分别如何定义?
两种,一种是单行注释,“# ”,一种是多行注释“‘ ’” - 请说出你对变量的理解,变量的作用是什么
变量是数据的容器,帮助我们表示抽象的规律,避免重复性质的工作 - 请说出你对变量类型的理解
Python不需要指定变量的类型,所以Python的变量类型其实是只里面存储的数据的数据类型,分为数字型和非数字型,数字型包括整数、浮点型、布尔型、复合型(一般不用),非数字型包括字符串、列表、元组、字典 - 请说出你对标示符的理解
标示符就是程序员定义的 变量名、函数名等命名对象 - 常见的标示符的命名规则有哪些
只能使用英文、数字、下划线的组合,不能用数据开头,标识符不能与关键字相同 - 如何在程序中写一个注释
‘# ’号开头后面写注释“‘ ’”中间写注释 - 变量的命名应当符合什么规则,通常需要注意那几个点
只能使用英文、数字、下划线的组合,不能用数据开头,标识符不能与关键字相同 - 请定义一个变量str1并赋值一个字符串"hello",再定义一个变量str2并赋值一个字符串"python",那么str1 + str2 的值是多少
str1 = 'hello'
str2 = 'python'
print(str1+str2)
#hellopython
- 请写出你所知道的python的数据类型
int float str bool - 进入python3交互模式,定义任意个变量,使用并查看其类型
a = 1
print(type(a))
- 说出下面第一行注释的作用
#!/usr/bin/python
# coding=utf-8
# 第一个注释
print "Hello, Python!"
# s 是变量
s = 10
print(s)
指定python运行目录
- 请分别使用大驼峰和小驼峰命名法定义两个变量,并为其赋值
MyName = 'LiuBin'
myName = 'liuBin' - 布尔类型的变量有哪些值
False True - 什么是Python中的关键字?关键字能作为变量名吗?
关键字是python已经设置好的标识符,不能作为变量名 - 请指出下列变量的命名哪些是不规范的:
A、test B、python C、2name D、num2 E、if
F、!hello G、print H、itcast I、omg J、abc-def
K、temp L、else M、TEST N、Options
CEFGJL
python基础知识:输入、输出、运算符、数据类型转换
python是用什么方法来进行输出操作的?
print()请输出你对输入的理解
用代码 获取 用户通过 键盘 输入的信息python是用什么方法来进行输入操作的?
input()或input('请输入:')什么是格式化,格式化输出有什么作用
在输出字符串中使用%,输出文字信息的同时,一起输出 数据目前你学过哪几种python的运算符
算数运算符,比较运算符,逻辑运算符,赋值运算符
要求:练习所有的运算符操作(算术、赋值、复合赋值)
# 尝试所有运算符
# 算数运算符
print(1+2)
print(1-2)
print(1*2)
print(1/2)
print(3%2)
print(5//3)
print(3**2)
# 赋值运算符
a = 1
print(a)
# 复合赋值运算符
# a += 1
# a -= 1
a *= 2
print(a)
# 上面算数运算符都能跟=号组合
- 练习实现字符串转换为数字,以及数字转换为字符串
a = '123'
print(type(a))
b = 123
print(type(b))
a = int(a)
b = str(b)
print(type(a))
print(type(b))
- python3中如何对数值取商和取余
// % - 变量a="10";b="30";c=a+b;请说出c的值是什么,类型是什么,如果我希望让c="40",应该怎么做
c = '1030'
c = int(a)+int(b) - 编写一段代码,定义任意数量(至少三个)的变量,并按照'a = xxx,b=xxx,...'的格式打印出变量的名字和该变量所存储的数据,要求运用格式化输出,并且每一行代码,须写上相应的注释进行说明
# 定义变量
a = 1
b = 2
c = 'hello'
# 格式化输出
print('a=%d,b=%d,c=%s'%(a,b,c))
- 编写一个cart.py(打印名片)程序
运行程序后,分别输入姓名、性别、年龄、单位、联系方式等数据,并用变量分别接收
输入完成后,最后打印出姓名、性别、年龄、单位、联系方式等信息,输出的格式自行设定,尽量美观
输出需使用上格式化输出
提示:%d-数字 %s-字符串 %f-小数
# 名片小程序
name = input("请输入您的姓名:")
gender = input("请输入您的性别:")
age = input("请输入您的年龄:")
company = input("请输入您的工作单位:")
moble = input("请输入您的手机号:")
email = input("请输入您的邮箱:")
print('%s\t%s\t%s岁\n公司:%s\n手机:%s\nEmail:%s'%(name,gender,age,company,moble,email))
- 修复程序bug
-请找出下列代码运行时出错的原因,一一列出并一一纠正。
# coding=utf-8
# 定义字符串变量temp1
temp1 = "hello python' ------> 引号
# 接收用户的输入
temp2 = input("请输入:")
# 定义数字变量temp3
temp3 = 333
# 定义字符串变量temp4
temp4 = "333"
# 求和
temp5 = temp3 + temp4 -----> int类型 与 str类型相加
if temp5 == 666 -----> 缺少冒号:
print("%s + %s = %s, 挺溜啊"%(temp3,temp4,temp5))
if temp5 != 666:
print("一点儿也bu溜") ------> 缩进不对,if语句下的代码块不能为空
print("您刚刚输入的是:%d"%temp2) ------> temp2是字符串类型
提示:
- input输入的数据,是字符串类型
- 不同类型的变量不能进行运算
- == 符号 判断两端的值是否相等
- != 符号 判断两边的值是否不相等
- if 后面的的代码需要缩进
# coding=utf-8
# 定义字符串变量temp1
temp1 = 'hello python' #------> 引号
# 接收用户的输入
temp2 = input("请输入:")
# 定义数字变量temp3
temp3 = 333
# 定义字符串变量temp4
temp4 = "333"
# 求和
temp5 = temp3 + int(temp4) # -----> int类型 与 str类型相加
if temp5 == 666: # -----> 缺少冒号:
print("%s + %s = %s, 挺溜啊"%(temp3,temp4,temp5))
elif temp5 != 666:
print("一点儿也bu溜") # ------> 缩进不对,if语句下的代码块不能为空
print("您刚刚输入的是:%s"%temp2) # ------> temp2是字符串类型
条件语句
- 什么是判断语句
使用if语句对条件进行判断的代码块 - 请写出if判断语句的使用格式
if 条件判断:
执行动作
elif 条件判断:
执行动作
else :
执行动作
- 按照下列步骤操作
- 编写一个counter.py程序
- 在counter.py中指定使用./counter.py运行时,使用的是python3
- 使用注释开启中文支持
- 设计程序分三次获取3个数字,并赋值给变量
- 将3次输入的数据转换为数字类型,然后把相加后的值赋值给变量sum
- 如果sum>100000, 则输出"您输入的三个数的和忒大了"
- 如果sum>10000, 则输出"您输入的三个数的和挺大"
- 如果sum>1000, 则输出"您输入的三个数的和有点大"
- 如果sum>100, 则输出"您输入的三个数的和不算大"
- 如果sum<=100, 则输出"您输入的三个数的和忒小了"
- 要求每次输入最终都只打印一条语句,且该语句符合你的预期,如我分别输入100,200,300,最后只会打印"您输入的三个数的和不算大",而不会打印其他情况
提示:
- 注意安排好判断语句的顺序,否则会得到超出预期的结果
- which python3 可以查看python3程序所在位置
# 4. 设计程序分三次获取3个数字,并赋值给变量
num1 = input('请输入3个数字(1/3):')
num2 = input('请输入3个数字(2/3):')
num3 = input('请输入3个数字(3/3):')
# 5. 将3次输入的数据转换为数字类型,然后把相加后的值赋值给变量sum
sum = int(num1) + int(num2) + int(num3)
# 6. 如果sum>100000, 则输出"您输入的三个数的和忒大了"
if sum>100000:
print('您输入的三个数的和忒大了')
# 7. 如果sum>10000, 则输出"您输入的三个数的和挺大"
elif sum>10000:
print('您输入的三个数的和挺大')
# 8. 如果sum>1000, 则输出"您输入的三个数的和有点大"
elif sum>1000:
print('您输入的三个数的和有点大')
# 9. 如果sum>100, 则输出"您输入的三个数的和不算大"
elif sum>100:
print('您输入的三个数的和不算大')
# 10. 如果sum<=100, 则输出"您输入的三个数的和忒小了"
else :
print('您输入的三个数的和忒小了')
# 11. 要求每次输入最终都只打印一条语句,且该语句符合你的预期,如我分别输入100,200,300,最后只会打印"您输入的三个数的和不算大",而不会打印其他情况
- 编写代码,1-7七个数字,分别代表周一到周日,如果输入的数字是6或7,输出“周末”,如果输入的数字是1-5,输出“工作日”,如输入其他数字,输出“错误”。
a = input('请输入1-7中的一个数字:')
if int(a)<=5:
print('工作日')
elif int(a)<=7:
print('周末')
else:
print('错误')
循环语句
完整的for循环语法是什么?
- 使用while循环计算1~100的累积和(包含1和100)。
a = 0
sum = 0
while a<100:
a += 1
sum = sum + a
print(sum)
-
使用while循环输出如下图形:
a = 0
while a<5:
a += 1
print('* '*a)
-
使用while循环输出如下图形:
a = 5
while a>0:
print('* '*a)
a -= 1
- 完成猜拳游戏的练习
# 输入猜拳选择
a = int(input('请出拳:石头(1),剪刀(2),布(3)'))
if a == 1:
print('你选择出:石头')
elif a == 2:
print('你选择出:剪刀')
elif a == 3:
print('你选择出:布')
# 程序随机出拳
b = random.randint(1, 3)
if b == 1:
print('你遇到了:石头')
elif b == 2:
print('你遇到了:剪刀')
elif b == 1:
print('你遇到了:布')
#产生结果
if (a == 1 and b == 2) or (a == 2 and b == 3) or (a == 3 and b == 1):
print('你获得了胜利')
elif a == b:
print('平局')
else:
print('你输了,再来一局吧!')
- 完成九九乘法表的练习
# 观察九九乘法表,列号*行号
row = 1
while row <= 9:
col = 1
while col <= row:
print('%d*%d=%d' % (col, row, col * row), end='\t')
col += 1
print()
row += 1
高级变量类型列表、元组
- 列表和普通变量有什么区别
列表里面存储多个元素,是个元素的集合 - 怎样测量列表中元素的个数?
len(list) - 怎样获取列表的某个元素
list[n] - 解释一下什么是越界
想要获取的索引超出列表索引范围 - 什么是切片?
切片是列表的指定部分
listn:m
list:n
listn: - 怎么想列表中添加元素?
list.insert()
list.append()
list.extend() - 如何删除列表中的某个元素?
del list[n]
list.pop(n)
list.remove(n) - 如何修改列表中的某个元素?
赋值修改list[n] = n - 如何去查找列表中某个元素所对应的下标?
list.index('n') - 已有列表nums=[11,22,33,44,55],使用for循环遍历列表
for i in nums:
print(i)
- 已有列表nums=[11,22,33,44,55],使用while循环遍历列表
a = 0
while a<=len(nums):
print(nums[a])
a+=1
- 已有列表nums=[14,22,63,21,5],将其从小到大排序
nums.sort()
nums - 元组定义的格式?
元组用() 定义 - 元组和列表的区别?
元组的元素不能修改也不能重复
函数
- 什么是函数? 为什么要使用函数?
函数是通过一个指定的标识符()可以复用一块代码功能的功能,目的是为了提高代码的复用性 - Python的内置函数有什么?分别有什么作用?
type(),返回对象的类型
int(),将对象的数据类型变成整数 - 定义函数、和调用函数的格式分别是什么?
def func():
func() - 编写一段代码,定义一个函数求1-100之间所有偶数的和,并调用该函数打印出结果。
def func():
a = 1
sum = 0
while a<100:
if a%2 == 0:
sum+=a
a+=1
return sum
print(func())
- 函数的文档说明有什么用?
通过''' '''在函数内部最开始设置函数说明,为了方便调用的时候了解函数的参数,返回值等关键信息 - 什么是函数的参数?为什么使用参数?
def func(a,b) a,b就是参数,通过参数可以扩展函数的使用,参数起到占位作用,函数运行时会替换成真实数据 - 分别说明什么是形参和实参?
形参就是定义函数时设置的参数,实参是调用函数时传入的参数 - 编写一段代码,定义一个函数求两个数之间所有整数的和,在调用该函数时传入这两个数的具体值。
def func(a,b):
sum = 0
for n in range(int(a),int(b)+1):
sum += n
return sum
print(func(1,5))
- 什么是返回值?
函数中return关键字后面的代码就是返回值 - 根据参数、返回值,函数有哪四种类型?
位置参数,默认参数,关键字参数,可变参数
答案:无参数、无返回值无参数、有返回值有参数、无返回值有参数、有返回值 - 什么是函数的嵌套、函数嵌套的格式是什么?
在函数的内部定义函数
def func():
def func(): - 什么是局部变量?
函数内部的变量 - 什么是全局变量?
函数外部的变量 - 全局变量和局部变量的区别是什么?
定义:
全局变量定义在全局空间,函数外部
局部变量定义在函数内部
引用:
全局变量可以被所有的函数使用
局部变量只能在该函数内使用,其它函数不能访问
修改:
局部变量在函数内部修改不受限制
全局变量在函数内部修改受限制
怎么在函数内部去修改全局变量的值?
变量前加global 申明为全局变量设计一个程序,计算出 0-n 之间所有整数的和,并将计算的值返回。
def func(n):
a = 0
sum = 0
while a<=n:
sum += a
a+=1
return sum
print(func(100))
- 使用函数完成用户登录验证的程序。(用户名和密码传入到函数中进行验证)
def func(username,password):
if username == 'python' and password== '123456789':
return '欢迎'
else:
return '账号或密码错误'
print(func('python','123456789'))
- 定义一个函数,要求输入大于0的数字n,判断传入数字的奇偶性,如果是奇数返回 "n是奇数",否则返回 “n是偶数”,否则 返回“请输入大于0的整数”
def func(n):
if n>0:
if n%2==0:
return'n是偶数'
else:
return 'n是奇数'
else:
return '请输入大于0的整数'
print(func(-1))
- 定义一个函数main(),将1—200(范围包含1和200)中3的倍数或者有数字3的所有整数保存到列表list_1中,并输出。
def main():
list_1 = []
for i in range(1,201):
if i%3==0 or str(i).find('3')>=0: # find(),包含的话,返回第一次出现的位置,没有的话为负数
list_1.append(i)
return list_1
print(main())
- 编写一个程序,通过键盘循环获取5个学生的信息,将学生信息组成字典保存到列表中,最终将学生信息列表打印出来。(学生信息包括 name 、age、id)
def main():
list = [] # 储存所有学生信息的列表
i = 1
while i <= 5:
# 获取指定的输入信息
id = input('请输入学生ID:')
name = input('请输入学生姓名:')
age = int(input('请输入学生年龄:'))
# 将输入信息储存在字典中,循环时会覆盖新的输入
stu = {'id': id, 'name': name, 'age': age}
# 将字典数据添加到列表中
list.append(stu)
i += 1
return list
print(main())
- 函数中return的作用
- 函数中如果有多个return,会是什么效果
只有一个return会被执行
一旦执行了某个return,函数也将被立即终止,其余return将不会再执行 - python中函数的参数类型有哪些
位置参数,默认参数,关键字参数,可变参数 - 什么是缺省参数
默认参数,实参不提供时会按照默认值运行函数, - 什么是不定长参数
可变参数,分为元组可变参数(args)和字典可变参数(**args),元组可变参数会将实参都包装成元组,字典可变参数会将关键字参数封装成字典 - 定义一个使用不定长参数的函数,并在函数中打印出参数及其类型,统计传入参数的个数,
def main(*abc):
print('共有%s个参数,其中:' % len(abc))
for i in abc:
#print(i)
print('参数%s类型为:%s' % (i, type(i)))
main(1,2,'ren')
- 定义一个函数max,接受的参数类型是数值,最终返回两个数中的最大值
def max(a,b):
if a>=b:
return a
else:
return b
print(max(3,1))
- 定义一个函数min,接受的参数类型是数值,最终返回两个数中的最小值
def min(a,b):
if a<=b:
return a
else:
return b
print(max(3,1))
- 分别定义加减乘除四个函数实现两个数之间的加减乘除操作
def Calculate(a,b):
return a*b - 比较下列三个函数的区别:
# 无参数计算1-100的累加
def func1():
i = 1
sum = 0
while i<=100:
sum += i
i += 1
return sum
#位置参数,计算参数-100的累加
def func2(n):
i = n
sum = 0
while i <=100:
sum += i
i += 1
return sum
# 默认参数,计算n-m的累加,如不传参数则默认计算0-100的累加
def func3(n=1, m=100):
i = n
sum = 0
while i <= m:
sum += i
i += 1
return sum
- 定义函数findall,实现对字符串find方法的进一步封装,要求返回符合要求的所有位置的起始下标,如字符串"helloworldhellopythonhelloc++hellojava",需要找出里面所有的"hello"的位置,最后将返回一个元组(0,10,21,29),即将h的下标全部返回出来,而find方法只返回第一个.
def findall(a,b):
w = []
# 初始化每次find返回坐标在原字符串的的位置
m = 0
# 当find能返回坐标时就继续循环,不能返回坐标时返回-1
while a.find(b) >= 0:
index = a.find(b) #记录当前字符串的find坐标
if len(w)>0: # 第一次find返回坐标时不需要累加len(b)
m = m + index +len(b) # 累计历次find的坐标
else:
m = m + index # 第一次find返回坐标时不需要累加len(b)
w.append(m) # 把累计坐标添加进列表
a = a[index+len(b):] # find返回一次坐标就截掉坐标+b字符串,剩下部分才能再利用find返回坐标
return tuple(w) # 返回元组结果
print(findall("helloworldhellopythonhelloc++hellojava",'hello'))
文件操作
如何理解文件?
文件是用以永久性保存内存中的运算结果的具体形式为什么要用文件?
永久性保存内存中的运算结果,便于以后再次使用简述文件操作的流程?
打开
读/写
关闭如何打开一个文件?
open() 或者with open()as f上题中打开文件的函数格式是什么?
open('地址',‘模式’) with open("test.txt","r") as f有一个test.txt文件,以只读的方式打开此文件,用变量f接收文件打开的返回值.
f = open('test.txt','r')文件访问模式中r表示什么模式,r+表示什么模式?
r,只读模式,只能读取不能写,r+,即能都又能写文件访问模式中r与r+有什么区别?
r,只读模式,只能读取不能写,r+,即能都又能写文件访问模式中w表示什么模式,w+表示什么模式?
w,只写模式,只能写不能读,w+,即能都又能写文件操作中要在文件中追加改如何操作?
采用追加模式a打开文件,file.write('内容')如何关闭一个文件?
file.close()将打开的test.txt文件关闭,用变量f接收返回值.
f = open('test.txt')
f.close()
提示:
打开文件之门的"钥匙",open()函数.
文件的访问模式即为访问权限
打开一个文件,可以不用指定打开的模式.
如果读了多次数据,那么后面读取的数据是从上次读完的位置开始的.写出目前我们所学对文件操作的哪几个权限?
w r a w+ r+ a+ wb rb ab如何在打开的test.txt文件中写入数据?
file.write()请在test.txt文件中写入"wow,so beautiful!".
f = open('test.txt','w')
f.write('wow,so beautiful!')
f.close()
或者
with open("lan.txt","w") as f:
f.write("wow you are so beautiful")编写一段代码以完成两份文件之间的相互备份
- 创建gailun.txt文件
- 打开文件在gailun.txt中写入"德玛西亚!人在塔在!"
- 将输入的数据格式化输出到终端上
- 在文件夹中创建gailun副本.txt文件
- 将gailun.txt文件中的数据写入gailun副本.txt文件中
- 打开文件,查看文件中是否有内容
# 创建gailun.txt文件
with open('gailun.txt','w+',encoding='utf-8') as f:
# 打开文件在gailun.txt中写入"德玛西亚!人在塔在!"
f.write('德玛西亚!人在塔在!')
f.seek(0,0) # offset ,偏移量,whence:可选,默认值为 0。0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
content = f.read()
# 将输入的数据格式化输出到终端上
print('文件内容是:%s'%content)
# 在文件夹中创建gailun副本.txt文件
with open('gailun.txt','r',encoding='utf-8') as f_:
# 将gailun.txt文件中的数据写入gailun副本.txt文件中
f_.seek(0,0)
content = f_.read()
print(content)
new_file = open('gailun副本.txt','w+',encoding='utf-8')
new_file.write(content)
new_file.close()
# 打开文件,查看文件中是否有内容
- 什么情况下要用到复制?
- 怎样实现文件的复制?
- 如何理解文件的定位?
- 如果在读写文件的过程中,需要从另外一个位置进行操作的话,该怎么操作?
- seek()函数有几个参数,分别代表什么?
- seek(5,0)表示什么意思?
- seek(-5,2)表示什么含义?
- seek(3,1)表示什么含义?
提示:
文件的复制过程实质上就是把一个文件中的内容读出来,然后写入另一个文件中。
获取文件当前位置用tell(),重新设置读写位置要用seek().