python基础语法小总结
六月报名参加了黑马的python基础课程,算是笼统的过了一遍python简单基础语法,记录在这里供温故知新,与大家共享。大家也可借此简单回顾下基础。
ps:共9天课,已整理7天,另外2天改日更新!!!
2020.5.31 day01(注释,字符串格式化模式,input函数)
1.单行注释#
多行注释:
‘’’
‘’’
2.变量以及类型(通过type函数查看变量类型)
(1) Numbers(int,long,float,complex)
布尔类型
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)
(2)标识符 1见名知意2数字 字母 下划线,且不能数字开头
(3) 可以设置print不换行
print(“你好”,end=’ ‘) //+ end=" " /end=’ ’
例子:
print(“nihao”,end="")
print(‘w’)
output:nihaow
(4)字符串格式化输出的固定写法!!! (!格式容易出错) ----------------------重点
age = 30
print(“我今年%d岁” % age) //注意没有逗号啊!!! or:print(“我今年%d岁” % 30)
output:我今年30岁
%.2f小数点后保留2位
//易错
age = 20
weight = 88.889
name = “王焱”
print(“我的名字:%s,我的体重:%.2f,我的年龄:%d” % (name,weight,age))
output:我的名字:王焱,我的体重:88.89,我的年龄:20
print(“我今年%d岁,我叫%s,我的体重是%f” % (30,‘王焱’,30)) //注意名字是字符要有’’
(5)input函数 //不要忘了数据转换
1阻塞程序等待输入(输入才不阻塞)!!!(key)
2提示信息 写在input(“提示信息”)
3通过input获取的数据 123 会给到等号左边的变量
4通过input接收到的数据,默认都是字符串类型的数据!!!---------------易错!!!
例题一:
password = input("请输入密码:")
print(type(password))
print(password)
print("程序结束了")
output:
请输入密码:666
<class ‘str’>
666
程序结束了
例题二
错误答案:
price = input(“请输入苹果单价:”)
weight = input(“请输入买的苹果数量:”)
spend = price * weight
print("%d" % spend)
TypeError: can’t multiply sequence by non-int of type 'str(因为input默认字符串类型)
!改进(涉及数据类型转换)
price = input(“请输入苹果单价:”)
weight = input(“请输入买的苹果数量:”)
price = int(price)
weight = int(weight)
spend = price * weight
print("%d" % spend)
请输入苹果单价:5
请输入买的苹果数量:9
45
2020.6.1 day02(if,运算符,if-else,if嵌套,random模块)
1.if语句--------勿忘 :
if 要判断的条件:
条件成立时,要做的事情 //4个空格
例题1:从键盘获取自己的年龄,判断是都大于等于18,如果满足就输出“哥,已成年,网吧可以去了”,
答案:
age = input(“请输入你的年龄:”) //字符串类型记得转换!!
age = int(age)
if age>=18: //与C语言区别!!!
print(“哥,已成年,可以去网吧了吧”)
2.运算符
算术运算符 取余% *取整// 指数 乘
复合运算符 num +=1 num = num + 1
比较运算符 比较是否相等==(=是赋值) !=
逻辑运算符 and or not
3.if-else格式
if 条件:
…
else: //else后没有条件
…
练习:从键盘获取身高,如果身高没有超过140cm,则不需要买票,否则要买票
height = input("请输入身高:")
height = int(height) //哈哈一定不要忘了转换数据类型
if height >=140:
print("请去买票")
else:
print("直接进入")
4.elif使用格式(与else区别在于elif后加条件)
if xxx1:
…
elif xxx2:
…
elif xxx3:
…
if 90=< score <=100: //区分,错误
if score>90 and score<=100: //正确做法
print(“A”)
5.注意:如果条件成立了,那么这个成立条件后面的判断都不会执行了
6.if嵌套语句(被嵌套的if语句,只有外边的if语句成立,才会判断这个条件是否成立)
girl_friend = 1
date = “61”
if girl_friend == 1:
print(“原来你有女朋友 啊”)
if date == “61”:
print(“区买礼物吧”)
7.模块(产生随机的)
import random //导入工具包
num = random.randint(0,3)
8.石头剪刀布游戏***综合例题!!!
从控制台输入要出的-石(1)剪刀(2)布(3)
电脑随机出拳
比较胜负
一。我自己写的版本
import random //导入随机模块
shitou = 1
jiandao = 2
bu = 3
player1 = int(input("请输入你要出的:"))
player2 = random.randint(1,3)
print(player1)
print(player2)
if player1 == 1:
if player2 == 1:
print("平手!")
elif player2 == 2:
print("player1胜利!")
elif player2 == 3:
print("player2胜利!")
elif player1 == 2:
if player2 == 1:
print("player2胜利")
elif player2 == 2:
print("平手")
elif player2 == 3:
print("player2失败!")
elif player1 == 3:
if player2 == 1:
print("player2胜利!")
elif player2 == 2:
print("player1失败!")
elif player2 == 3:
print("平手")
print("游戏结束")
注意:千万注意==与=!!!
二。老师写的更合理
import random
player = int(input("请出拳:"))
computer = random.randint(1,3)
if (player ==1 and computer ==2) or (player ==2 and computer == 3) or (player ==3 and computer ==1):
print("你赢了")
elif player == computer:
print("平手")
else:
print("你输了")
2020.6.2 day3(while,循环的练习题,for循环,break&&continue)
1.while 条件:
…
2.题目
(1)1-100的累加和
sum = 0
i = 0
while i<100:
i = i + 1
sum += i //sum = sum + i
print(sum)
(2)1-100之间偶数的累加和
sum = 0
i = 0
while i<100:
i = i + 1
if i % 2 == 0:
sum += i
print(sum)
4.while嵌套格式//弄清楚
while 条件1:
…
while 条件2:
...
5.***嵌套题目(自己再去做!)
(1)打印正方形(while嵌套)0/1*没做出来
i = 1
while i <= 5:
j = 1
while j <= 5:
print("*",end = " ")//end=""的作用 是不换行
j += 1
print()//!!作用是换行
i += 1
(2)打印如下图形
*
(1)自己做法
i = 1
while i <= 5:
j = 5 - i + 1 //vip!!!
while j <= 5:
print("*",end = " ")
j += 1
print()
i += 1
(2)老师做法
i = 1
while i <= 5:
j = 1
while j <= i: ///不同点
print("*",end = " ")
j += 1
print()
i += 1
6.遍历for循环
for i in :
for i in range(0,10): //但range取不到结尾!!!取不到结尾
print(“打印十遍”)
7. break[彻底!中断当前循环,从此结束!】
continue【中断当前!循环,继续下一次循环】
2020.6.4 day04(容器—字符串,列表)
1.容器(就可以用一个变量存储很多的数据类型)增删改查[见思维导图!!!]
(1)字符串(str)
(2)列表(list)
(3)元组(tuple)
(4)字典
(5)集合(set)
(6)公共操作
2.字符串
(1)格式化输出的两种方法
age = 20
name = “王焱”
weight = 67.56
print(“你的年龄:%d 你的体重%f 你的名字:%s " % (age,weight,name)) // 常用方法
print(f"你的年龄:{age} 你的体重:{weight} 你的名字:{name}”)
(2)下标(从0开始)
a = “12345”
print(a[0])
(3)切片(是指对操作对象截取一部分的操作,字符串列表元组都支持)
语法:[起始:结束:步长]//结束位置的数据不会取到!!
例子:a = “12345”
print(a[0:2:1])//!结尾不截取!! 注意这里的1是步长
print(a[0:-1])//-1表示最后一位,输出1234
print(a[0:])//结束位置什么都不写,代表从开始位置取到所有数据
print(a[:4])//结束位置之前的都可以取到
print(a[:])//取到全部
(4)字符串常见操作(find,index,count,replace,split)
1 (1) s.find(sub[,start[,end]])返回字符串s中找到的字符串中的最低!索引
例:
my_str = “i love you 3000”
result = my_str.find(“i love”)
print(result)
(2) s.index()
find index区别!:find找不到返回-1,index找不到直接报错
2 s.count(str,start=0,end=len(s))返回str在start和end之间 在s里面出现的次数
例
my_str = “i love you 3000 sure i love you3000”
result = my_str.count(“i love”,0,30)
print(result)
3 s.replace(str1,str2,count=s.count(str1))把s中的str1替换成str2,如果count指定,则替换不超过count次
例
my_str = “i love you 3000 sure i love you3000”
result = my_str.replace(“i love”,“he love”)
print(result)
he love you 3000 sure he love you3000
4 s.split(str="",2)以str为分隔符切片s,如果maxsplit有指定值,则仅分隔maxsplit+1个子字符串
my_str = “i love you 3000 sure i love you3000”
result = my_str.split(“i love”)
print(result)
[’’, ’ you 3000 sure ‘, ’ you3000’]
3.列表[]
(1) my_list1 = []
my_list2 = list()
my_list3 = [“老王”,123,424]//可以存储不同类型数据
print(my_list3[4])//取数据时候,下标不要超出界限
#for循环可以遍历列表for i in my_list
(2)增(append,extend,insert)
append:末尾追加数据 末尾!!!【重点】无法融合列表
extend:列表的融合
insert:根据下标插入数据,在指定位置插入数据
names = ["老八","蜜汁","小汉堡"]//注意格式!!!
names.append("小号")
print(names)
list1 = [1,2,3] #extend可以融合列表
list2 = ["老八","蜜汁"]
list1.extend(list2)
print(list1)
list1 = [1,2,3]
list2 = ["老八","蜜汁"]
list1.append(list2)
print(list1)
output: [1, 2, 3, ['老八', '蜜汁']] //无法融合列表
list1 = [1,2,3]
list1.insert(1,"嘻嘻")
print(list1)
output:[1, '嘻嘻', 2, 3]
(3)删(del,remove,pop)
del 根据下标删除(不仅是列表,元组,字典都可以使用)
list1 = [1,2,3]
del list1[0]
print(list1)
[2, 3]
remove(最常用) 根据值删除
list1 = [1,2,3]
list1.remove(1)
print(list1)
[2, 3]
pop 删除列表最后一个元素,最后一个!!!
list1 = [1,2,3]
list1.pop()
print(list1)
[1, 2]
list1 = [1,2,3] #与remove根据值删除不同,pop()是根据位置
list1.pop(1)
print(list1)
[1, 3]
(4)查(in index count)
in
list1 = [1,2,3]
if 1 in list1:
print(“在”)
在
not in
list1 = [1,2,3]
if 12 not in list1:
print("不在")
不在
index跟字符串里的index用法一样,找到了就返回下标,找不到就会报错
list1 = [1,2,3]
result = list1.index(1)
print(result)
count跟字符串里的count用法一样
list1 = [1,2,3]
result = list1.count(1)
print(result)
1
(5)排序(sort)
a = [1,453,53,563]
a.sort() //默认从小到大
print(a)
a = [1,453,53,563]
a.sort(reverse = True) //从大到小
print(a)
(6)列表的嵌套
my_list1 = [1,2,3,4]
my_list2 = [‘1’,‘2’,‘3’,‘4’]
my_list3 = [my_list1,my_list2]
print(my_list3)
[[1, 2, 3, 4], [‘1’, ‘2’, ‘3’, ‘4’]]
3
2020.6.5(元组,字典,容器公共方法,容器练习题)
1.元组tuple()
1.元组中的数据不可以改变
2.没有增删改,只有查!!!
3.注意定义含有一个元素的元组,记得逗号my_tuple = (1,)//逗号!!!逗号逗号逗号
4.获取元组中的元素
my_tuple = (1,2,3,4)
print(my_tuple[2])
3
5.for循环遍历
my_tuple = (1,2,3,4)
for i in my_tuple:
print(i)
1
2
3
4
6.查询操作(in,index,count)
my_tuple = (1,2,3,4)
if 4 in my_tuple:
print(“在”)
在
7.count,index用法和字符串,列表相同
2.字典:存储的是某个人或者事物的详细的描述{}
1.定义一个真正的字典(key_value值对)
要求:
一:字典的key必须是不可变的数据类型
二:字典中的key值是不能重复的,唯一的(如果key值出现重复,只会保留最后
2.增删改查
增加数据:增加一个新的key值就可以了info[]=
info = {"name":"王焱","tel":123,"age":12}
info["运动"]="足球" //=======
print(info)
删除数据:del info[]/info.clear()
del 根据key值删除数据
del info[“name”]
字典清空 info.clear()
修改数据:
info[“name”] = " "
查找数据:
字典的取值方式info[‘key’](获取字典中的value值,使用key值来获取)
info = {“name”:“王焱”,“tel”:123,“age”:12}
print(info[“name”])
3 .字典的常见操作
字典遍历(打印的是key值)
info = {"name":"王焱","tel":123,"age":12}
for i in info:
print(i)
name
tel
age
(1)len()测量字典中,键值对的个数
info = {"name":"王焱","tel":123,"age":12}
result = info.__len__()
print(result)
3
info = {"name":"王焱","tel":123,"age":12}
length = len(info)
print(length)
(2)keys返回一个包含字典所有KEY的列表
info = {"name":"王焱","tel":123,"age":12}
result = info.keys()
print(result)
得到:
dict_keys([‘name’, ‘tel’, ‘age’])
info = {"name":"王焱","tel":123,"age":12}
for i in info.keys():
print(i)
name
tel
age
(3)values返回一个包含字典所有value的列表
info = {"name":"王焱","tel":123,"age":12}
for i in info.values():
print(i)
王焱
123
12
(4)items返回一个包含所有(键,值)元组的列表
info = {"name":"王焱","tel":123,"age":12}
for i in info.items():
print(i)
(‘name’, ‘王焱’)
(‘tel’, 123)
(‘age’, 12)
info = {“name”:“王焱”,“tel”:123,“age”:12}
result = info.items()
print(result)
dict_items([(‘name’, ‘王焱’), (‘tel’, 123), (‘age’, 12)])
4.练习(字典到列表)
1获取三个学生的信息
2.把获取的数据存放到容器(列表)中info = [{},{},{}]
3.那这些数据打印出来
info = [] //定义一个列表!
i = 1
while i<= 3:
name = input("请输入姓名:")
age = input("请输入年龄:")
weight = input("请输入体重:")
i += 1
student_info = {} //定义一个字典
student_info["name"] = name
student_info["age"] = age
student_info["weight"] = weight
info.append(student_info)
print(info)
6.公共办法
1 + 字符串,列表,元组
a = "123" //字符串
b = "456"
c = a + b
print(c)
123456
a = [123] //列表
b = [456]
c = a + b
print(c)
[123, 456]
a = (123,) //元组
b = (456,)
c = a + b
print(c)
(123, 456)
2 * 字符串,列表,元组
a = "123"
c = a * 3//重复操作符
print(c)
123123123
a = [123]
c = a * 3
print(c)
[123, 123, 123]
3 in not in 字符串,列表,元组,字典!
a = [123]
c = a * 3
print(c)
[123, 123, 123]
a = (123,) //元组一定不要落下,!!!
c = a * 3
print(c)
(123, 123, 123)
7.公共函数
len(item) 计算容器中元素的个数
max(item) 返回容器中元素的最大值
min(item) 返回容器中元素的最小值
del(item) 删除变量
8.容器题目
一个学校,3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配
1 有一个三个办公室
offices = [[],[],[]]
2有8位老师
teachers = [“a”,“b”,“c”,“d”,“e”,“f”,“g”,“h”]
3把这八个老师随机分配到3办公室中(办公室中可以没有人,也可以有8个人
for teacher in teachers:
my_index = random.randint(0,2)
offices[my_index].append(teacher)
print(offices)
2020.6.6 day06(函数)
1.函数
1函数定义def ():
函数定义只是把函数存放起来了,并不会真的执行,只有调用它的时候才会执行
def func():
print("fuck you")
num = 0
if num == 0:
func()
2函数的文档说明
def func():
""" //文档说明
作者:王焱
"""
print("fuck you")
help(func)
运行结果:
Help on function func in module main:
func()
作者:王焱
3函数参数(可以使函数接收到外部的数据,进行灵活的操作)
注意:函数的参数分为形参和实参
形参:定义函数时候作为占位使用的参数
实参:调用函数的时候实际传递的参数
形参实参一一对应
def func(a,b):
c = a + b
print(c)
func(100,92)
4定值参数(写在函数参数的最!后面)
如果具有了定值参数,那么实参如果没有传递,就会默认使用定值参数
def func(name,age,sex=“男”):
print(name)
print(age)
print(sex)
func(“王焱”,19)
5返回值(
1使用return后面的数据
2谁调用这个函数,函数返回值就给谁
3return代表了函数结束,return以下的代码不会执行!!!
4return可以单独使用,代表了函数结束 返回空用None
def func():
a = 10 * 20
b= 100 * 200
c = a + b
return c
result = func()//函数返回值如果没有去接收,那么他就没有用了
print(result)
20200
6函数的嵌套使用
def fun01():
print("10")
def fun02():
fun01()
print("20")
def fun03():
fun02()
print("30")
fun01
fun03()
7函数参数的传递
def fun01(x,y):
print(x+y)
def fun02(a,b):
fun01(a,b)
fun02(100,200)
300
8补充
返回值是不具有传递性的
def func01(x,y):
my_sum = x + y
return my_sum
def func02(a,b):
func01(a,b)
result = func02(100,200) //接受的func02的返回值,但没有return!!!
print(result)
None
9练习题
第一题:
1 写一个函数打印一条横线
2 打印自定义行数的横线
def func01():
print("-"* 50)
def func02(num):
while num > 0:
func01()
num -= 1
func02(3)
第二题:
1 写一个函数求三个数的和
2 写一个函数求三个数的平均值
def func01(a,b,c):
my_sum = a + b + c
return my_sum
def func02(a,b,c):
my_sum = func01(a,b,c)
avg = my_sum / 3
print(avg)
func02(10,20,30)
10交换变量的方法
通用方法1:中间变量的方法
c = a
a = b
b = c
通用方法2:求和的方法
a = a + b
b = a - b
a = a - b
!!!python特有方法:
a,b = b,a
print(a,b)
11局部变量和全局变量
局部变量:在函数内部定义的变量
全局变量:在函数外部定义的变量
在函数内部修改全局变量
global声明全局变量
num = 100
def func01():
global num
num = 10
func01()
print(num)
10
2020.6.8 day07
1.函数的多个返回值
def func(): //返回值只会返回一次!!
return 10
return 20
print(func())
10
def func():
return 10,20
result = func()
print(result)
(10, 20)
2.(不定长参数)多值参数【解决参数过多】
1*args可以收集多余的单值参数,并且以(元组)的形式存储起来,应该放在参数的最后面
def func01(age,name,*args):
print(age)
print(name)
print(args)
func01(10,“王焱”,10,32)
10
王焱
(10 32)
2**kwargs可以收集多余的键值对的参数,并且以{字典}的形式存储起来
def func01(age,name,**kwargs):
print(age)
print(name)
print(kwargs) //这里没有**
func01(10,“王焱”,tel = 1378)
10
王焱
{‘tel’: 1378}
3这样可以接收任意的参数
def func(*args,**kwargs):
print(args)
print(kwargs)
3.拆包:元组 列表 字典
my_tuple = [1,2]
a,b = my_tuple
print(a,b)
1 2
my_list = [1,2]
a,b = my_list
print(a,b)
1 2
my_dict = {"name" : "1","tel" : "2"}
a,b = my_dict
print(a,b)
name tel
def func():
return 1,2
a,b = func()
print(a,b)
1 2
4.引用
引用就是一个地址
通过id()函数可以获取到变量的内存地址的编号
1不可变的数据,如果数值相同,他们会是同一片内存空间
a = 1
b = 2
print(id(a))
print(id(a))
263583664
263583664
2可变的数据类型
如果两个数值都一样,地址是不相等的
a = [1,2]
b = [1,2]
print(id(a))
print(id(b))
46849640
47727688
5.引用的应用
不可变数据类型不需要考虑地址的问题
可变的数据类型需要关心引用的问题
参数的传递 是引用传递 实际上传递的是地址
def func(a):
print(a)
b = 20
func(b) //a = b =OX11
b = [10,20]
def func(a):
a = a + a
print(a)
func(b)
[10, 20, 10, 20]
6.列表推导式
a = [x for x in range(1,101)]
print(a)
b= [x for x in range(1,101) if x % 2 == 0]
print(b)
c = [(x,y) for x in range(5) for y in range(2)]
print©
[(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 0), (3, 1), (4, 0), (4, 1)]
7.集合(集合这种数据类型,数据是不可重复的)
my_set = {1,2,12,1,2}
print(my_set)
{1, 2, 12} //集合会把重复的去除掉
去重(用途):
a = [1,2,1,2,3,4,3,4]
b = set(a)
print(b)
a = list(b)
print(a)
{1, 2, 3, 4}
[1, 2, 3, 4]
8.递归函数 函数自己调用自己
阶乘 !
def func(num):
if num > 1:
result = num * func(num-1)
else:
result = 1
return result
my_sum=func(3)
print(my_sum)
上一篇: sql数据库常用操作
下一篇: JVM调优总结