欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python基础语法小总结

程序员文章站 2022-06-01 12:51:59
...

六月报名参加了黑马的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("平手")
elseprint("你输了")

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)