欢迎光临散文网 会员登陆 & 注册

黑马程序员python教程,8天python从入门到精通,学python看这套就

2023-07-28 21:51 作者:秋雨潇潇潇  | 我要投稿

从开始到元组基本操作的笔记,包括所有代码和运行结果(都是自己在pycharm上运行过的)

win+r打开运行框(输入cmd)

ctrl+a全选

ctrl+f搜索

ctrl+c\v\x复制、粘贴、剪切

ctrl+d复制当前行代码

ctrl+shift+上下 将当前行代码上下移

ctrl+shift+f10运行当前代码

ctrl+shift+s截图



python解释器运行文件 文本格式

\

eg. test.py

python "C:\Users\86198\Desktop\test.py.txt"



字面量==常量(C++)



单行注释#

多行注释"""..."""



变量

定义 变量名=变量值



print( , , ,..., )输出多个内容



type()查看数据类型,有返回值

变量可以存储类型信息(即type()的返回值)


print(type(11))

\

float_type = type(11.345)

print(float_type)

\

name = "哦莫"

name_type = type(name)

print(name_type)


运行结果:

<class 'int'>

<class 'float'>

<class 'str'>



数据类型转换,有返回值

int(x)

float(x)

str(x)

\

浮点数转整型数会丢失小数精度



True,False,None是关键字



变量命名规范 

1.见名知意   

2.单词用下划线分隔

3.英文字母全小写

\

eg.score_maths



算数运算符

+-*/

//  整除

%   取余

**  指数



复合赋值运算符

+=

-=

/

%=

**=

//=



字符串定义的三种方法

1.单引号定义法 name = '哦莫'

2.双引号定义法 name = "哦莫"

3.三双引号定义法 name = """哦莫"""

\

三双引号定义法支持换行操作



字符串的引号嵌套

1.单引号内嵌双引号

2.双引号内嵌单引号

3.使用转移字符(\)来将引号接除效用,变成普通字符串

eg.

name = "\"哦莫"

print(name)

\

运行结果

“哦莫



字符串拼接

1.字面量和字面量,变量和变量,字面量和变量拼接用"+"

eg.print("om"+"wsxx")

\

运行结果

omwsxx

(与逗号输出多个内容的区别:逗号隔开的多个内容输出时有空格,拼接后形成一个整体没有空格)

(只能是字符串类型之间的拼接,非字符串类型如整型和浮点型需要转换后才能拼接)

2.字符串格式化,占位拼接(类似c++的格式化输出)

%s 将内容转换为字符串,放入占位位置

%d 将内容转换为整数,放入占位位置

%f 将内容转换为浮点型,放入占位位置

eg.

name = "字节跳动“

set_up_year = 2013

stock_price = 19.99

message = "我是:%s,我成立于:%d,我今天的股价是:%f" %(name,set_up_year,stock_price)

print(message)

\

运行结果

我是:字节跳动,我成立于:2013,我今天的股价是:19.990000

print("我是:%s,我成立于:%d,我今天的股价是:%f"%(name,set_up_year,stock_price))

\

运行结果

我是:字节跳动,我成立于:2013,我今天的股价是:19.990000

3.字符串格式化快速写法

f"内容{变量}"(format格式化)

\

name = "字节跳动“

set_up_year = 2013

stock_price = 19.99

print(f"我是{name},我成立于:{set_up_year},我今天股票的价格是:{stock_price}")

\

运行结果

我是字节跳动,我成立于:2013,我今天股票的价格是:19.99(没有精度控制)



格式化的精度控制

辅助符号"m.n"

m控制宽度,设置宽度小于数字自身,不生效

n控制小数点精度会进行小数的四舍五入

eg.

%5d 

11->[space][space][space]11

\

%.2f

11.345->11.35

\

%7.2f

11.345->[space][space]11.35



补:表达式格式化

print("1*1的结果是:%d" %(1*1))

print("字符串在python中的类型名是:%s" %s type("字符串"))



数据输入input()(默认输入数据类型是字符串)

name = input()

提示语句可以在括号内

eg. 

name = input("Who are you?")

print("wow,%s is a nice name." %name)



布尔类型和比较运算符

eg.

result = 10>5

print(f"10>5的结果是:{result},类型是:{type(result)}")

\

运行结果

10>5的结果是:True,类型是:<class 'bool'>

\

==

!=

>

<

>=

<=



if语句

if 要判断的条件:

  条件成立时,要做的事情

(四格缩进判断归属)



if else语句

if 要判断的条件:

  条件成立时,要做的事情

else:

  条件不成立时,要做的事情



if_elif_else语句

if 条件1:

  条件1成立时,要做的事情

elif 条件2:

  条件2成立时,要做的事情

  ......

elif 条件N:

  条件N成立时,要做的事情

else:

  所有条件都不满足时,要做的事情

eg.

num = 10

if int(input("请输入第一次猜想的数字:")) != 10:

  if int(input("不对,再猜一次:")) != 10:

    if int(input("不对,再猜最后一次:"))!=10:

      print("全都猜错啦,我想的是:10")

    else:

      print("恭喜你猜对啦")

    else:

    print("恭喜你猜对啦")

else:

  print("恭喜你猜对啦")

\判断语句的嵌套,注意缩进

eg.

num = 10

if int(input("请输入第一次猜想的数字:")) == 10:

   print("恭喜你猜对啦")

elif int(input("不对,再猜一次:")) == 10:

   print("恭喜你猜对啦")

elif int(input("不对,再猜最后一次:"))==10:

   print("恭喜你猜对啦")

else:

  print("全都猜错啦,我想的是:10")

\

语句从上至下执行



import random


num = random.randint(1, 10)


guess_num = int(input("Please input your number:"))


if guess_num == num:

  print("very good")

else:

  if guess_num > num:

    print("less")

  else:

    print("more")


  guess_num = int(input("Please input once more"))


  if guess_num == num:

    print("good")

  else:

    if guess_num > num:

      print("less")

    else:

      print("more")


    guess_num = int(input("Please input once more"))


    if guess_num == num:

      print("well done")

    else:

      if guess_num > num:

        print("less")

      else:

        print("more")

      print("No chance")

      print(num)



循环语句while

while 条件:

  ...

  ...

  ...

\

eg.

i = 0

while i < 100:

  print("小美,我喜欢你")

    i += 1

\

eg.

i = 0

sum = 0

while i < 100:

  i += 1

  sum += i

print(sum)

\

eg.

import random

num = random.randint(1,100)


flag = True

while flag:

  guess_num = int(input("please input your num"))

  if guess_num == num:

    print("good")

    flag = False

  else:

    if guess_num > num:

      print("less")

    else:

      print("more")



while的嵌套

eg.舔狗的故事

i = 0

while i < 100:

  print(f"今天是第{i}天,准备表白......")

  j = 1

  while j < 10:

    j += 1

    print(f"送给小美第{j}支玫瑰花")

  print("小美,我喜欢你")

  i += 1

print(f"坚持到第{i}天,表白成功")

\

eg.打印九九乘法表

补充:print不换行

print("hello",end='')

print("world",end='')

运行结果

helloworld

\

i = 1

j = 1

flag = True

while flag:

  while j <= 9:

    print(i,"*",j,"=",i*j)

    if(i == 9 & j == 9):

      flag = False

    j += 1

  i += 1

  j = i

#一式一行版

eg.打印九九乘法表

i = 1

j = 1

flag = True

while flag:

  while i <= j:

    if i == j:

      print(i,"*",j,"=",i*j," ")

    else:

      print(i,"*",j,"=",i*j," ",end='')

    if(i == 9 & j == 9):

      flag = False

    i += 1

  j += 1

  i = 1

\

每层i 1->j j++ 

终止条件 i == j

完全终止条件 i == j == 9

判断后进行换行

运行结果

1 * 1 = 1  

1 * 2 = 2 2 * 2 = 4  

1 * 3 = 3 2 * 3 = 6 3 * 3 = 9  

1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16  

1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25  

1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36  

1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49  

1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64  

1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81  

eg. 九九乘法表

\

制表符对齐换行法

\

i = 1

j = 1

flag = True

while flag:

  while i <= j:

    print(i,"*",j,"=",i*j," ",'\t',end='')

    if(i == 9 & j == 9):

      flag = False

    i += 1

  print()#实现换行

  j += 1

  i = 1

\

运行结果

1 * 1 = 1  

1 * 2 = 2   2 * 2 = 4  

1 * 3 = 3   2 * 3 = 6   3 * 3 = 9  

1 * 4 = 4   2 * 4 = 8   3 * 4 = 12   4 * 4 = 16  

1 * 5 = 5   2 * 5 = 10   3 * 5 = 15   4 * 5 = 20   5 * 5 = 25  

1 * 6 = 6   2 * 6 = 12   3 * 6 = 18   4 * 6 = 24   5 * 6 = 30   6 * 6 = 36  

1 * 7 = 7   2 * 7 = 14   3 * 7 = 21   4 * 7 = 28   5 * 7 = 35   6 * 7 = 42   7 * 7 = 49  

1 * 8 = 8   2 * 8 = 16   3 * 8 = 24   4 * 8 = 32   5 * 8 = 40   6 * 8 = 48   7 * 8 = 56   8 * 8 = 64  

1 * 9 = 9   2 * 9 = 18   3 * 9 = 27   4 * 9 = 36   5 * 9 = 45   6 * 9 = 54   7 * 9 = 63   8 * 9 = 72   9 * 9 = 81  


#制表符应用

print("hello world")

print("om xiao")


print("hello\t\tworld")

print("ommmmmmm\txiao")

#\t代替空格,等效于按下tab键,如果无法对齐,可以试着多打一个制表符

\

运行结果

hello world

om xiao

hello world

ommmmmmm xiao



for循环

#遍历字符串

name = "omwsxx"

for x in name:

  print(x)

\区别于c++,for循环无法定义循环条件,无法构建无限循环

#语法

for 临时变量 in 待处理数据集(序列类型,即内容可以一个个依次取出的一种类型,包括字符串,列表,元组):

  循环满足条件时执行的代码

#eg.字符数统计

cnt=0

name = "itheima is a brand of itcast"

for x in name:

  if x == 'a':

    cnt += 1

print(cnt)

\

运行结果

4



range语句

#range(num)

range(5)

(0,1,2,3,4)

\

#range(num1,num2)

range(5,10)

(5,6,7,8,9)

\

#range(num1,num2,step)

range(5,10,2)

(5,7,9)

eg.

for x in range(10):

  print(x)

运行结果

0

1

2

3

4

5

6

7

8

9

eg.

cnt = 0

for x in range(1, 100):

  if x % 2 == 0:

    cnt += 1

print(cnt)

\统计偶数个数

运行结果

49

(这里不能用//?

//得到的是商!只有1整除2商0,求余得到的才是余数)

\

p.s.作用域

for i in range(5)

  print(i)

print(i)#i是for循环内部变量,在外面理论上报错,实际上可以运行



for循环嵌套

eg.舔狗日记plus版

for i in range(1 ,101):

  print(f"今天是向小美表白的第{i}天")

  for j in range(1,11):

    print(f"向小美送第{j}朵玫瑰花")

print("哦耶哦耶表白成功")

eg.九九乘法表

for j in range(1,10):

  for i in range(1,j+1):

    print(f"{i}*{j}={i*j}\t",end='')

  print()

\

运行结果

1*1=1

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9

1*4=4 2*4=8 3*4=12 4*4=16

1*5=5 2*5=10 3*5=15 4*5=20 5*5=25

1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36

1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64

1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81



#continue跳过当前循环

#break终止循环



eg.

for i in range(1,3):

  print("语句1")

  for j in range(1,3):

    print("语句2")

    continue

    print("语句3")#不执行

  print("语句4")

\

运行结果

语句1

语句2

语句2

语句4

语句1

语句2

语句2

语句4


eg.

for i in range(1,6):

  print("语句1")

  for j in range(1,6):

    print("语句2")

    break

    print("语句3")#内层循环终止

  print("语句4")

\

运行结果

语句1

语句2

语句4

语句1

语句2

语句4

语句1

语句2

语句4

语句1

语句2

语句4

语句1

语句2

语句4



eg.黑心资本家

import random

sum = 10000

for x in range(1,21):

  score = random.randint(1,10)

  if score < 5:

    print(f"员工{x},绩效分{score},低于5,不发工资")

  else:

    sum -= 1000

    print(f"向员工{x}发放工资1000元,账户余额{sum}元")

  if sum == 0:

    print("这个月工资发完了,下个月再来领取吧")

    break

\

运行结果

向员工1发放工资1000元,账户余额9000元

向员工2发放工资1000元,账户余额8000元

员工3,绩效分4,低于5,不发工资

向员工4发放工资1000元,账户余额7000元

向员工5发放工资1000元,账户余额6000元

员工6,绩效分2,低于5,不发工资

向员工7发放工资1000元,账户余额5000元

员工8,绩效分1,低于5,不发工资

向员工9发放工资1000元,账户余额4000元

向员工10发放工资1000元,账户余额3000元

员工11,绩效分4,低于5,不发工资

员工12,绩效分2,低于5,不发工资

员工13,绩效分3,低于5,不发工资

向员工14发放工资1000元,账户余额2000元

员工15,绩效分3,低于5,不发工资

向员工16发放工资1000元,账户余额1000元

向员工17发放工资1000元,账户余额0元

这个月工资发完了,下个月再来领取吧



函数

#组织好的,可重复使用的,用来实现特定功能的代码段

eg.统计字符串长度

def my_len(_str):

  cnt = 0

  for x in _str:

    cnt += 1

  print(cnt)


my_len("omwsxx")

\

运行结果

6


#函数定义格式

def 函数名(传入参数)

  函数体

  return 返回值

(函数在遇到return之后就结束了)

\

#函数调用格式

函数名(参数)


eg.有返回值加法函数

def my_add(x, y):

  result = x + y

  return result


print(my_add(2,3))

\

(注意用变量接收或者输出,仅函数调用不能作为一条完整的语句)

运行结果

5


#函数返回值None类型

None 类型是<class 'NoneType'>

无返回值的函数实际上返回了None

eg.

def say_hi():

  print("hello")


result = say_hi()

print(result)

print(type(result))

\

运行结果 

hello

None

<class 'NoneType'>


#None在if判断上等同于False

#None在定义变量上暂不赋予具体值时可以用None来代替



#函数说明文档

多行注释解释函数



#函数的嵌套调用


#变量在函数中的作用域

全局变量,局部变量

global关键字声明全局变量

eg.

num = 100

def test_a():

  num = 200

  print(num)

test_a()

print(num)

def test_b():

  global num

  num = 200

  print(num)

test_b()

print(num)

\

运行结果

200

100

200

200


eg.Jay Choe的存款

money = 5000000

name = None

switch = None

flag = True

def home_back():

  global switch

  print("""Hello,how can I help you?You can choose from 1~3.1 stands for money-checking,2 stands for money-putting-in,3 stands for money-getting-out,4 stands for exiting""")

  switch = int(input())


def check_money():

  global money

  print(f"您好,您当前的余额是{money}元")

  home_back()


def put_in():

  global money

  money += int(input("您好,请问您需要存入的钱款是多少元"))

  check_money()


def get_out():

  global money

  money -= int(input("您好,请问您需要提出的钱款是多少元"))

  check_money()


home_back()

while flag:

  if switch == 1:

    check_money()

  elif switch == 2:

    put_in()

  elif switch == 3:

    get_out()

  else:

    flag = False


\

测试集

1

2

5000

3

5000

4

\

运行结果

C:\pythonProject\pythonProject1\venv\Scripts\python.exe C:\pythonProject\pythonProject1\main.py 

Hello,how can I help you?You can choose from 1~3.1 stands for money-checking,2 stands for money-putting-in,3 stands for money-getting-out,4 stands for exiting

1

您好,您当前的余额是5000000元

Hello,how can I help you?You can choose from 1~3.1 stands for money-checking,2 stands for money-putting-in,3 stands for money-getting-out,4 stands for exiting

2

您好,请问您需要存入的钱款是多少元5000

操作成功,当前余额5005000元

Hello,how can I help you?You can choose from 1~3.1 stands for money-checking,2 stands for money-putting-in,3 stands for money-getting-out,4 stands for exiting

3

您好,请问您需要提出的钱款是多少元5000

操作成功,当前余额5000000元

Hello,how can I help you?You can choose from 1~3.1 stands for money-checking,2 stands for money-putting-in,3 stands for money-getting-out,4 stands for exiting

4


Process finished with exit code 0



数据容器(即数据结构)

一个变量可以记录一组数据

name_list = ['张三','李四','王五','赵六']

列表list、元组tuple、字符串str、集合set、字典dict


#列表

(元素可以是不同类型的数据)

定义变量

变量名 = [元素1,元素2,元素3,...]

\

定义空列表

变量名称 = []

变量名称 = list()

eg.列表元素可以数据类型不同

my_list = ['omwsxx',True,666]

print(my_list)

print(type(my_list))

\

运行结果

['omwsxx', True, 666]

<class 'list'>

eg.嵌套列表

my_list = [['omwsxx',True,666],[666,666,999]]

print(my_list)

print(type(my_list))

\

运行结果

[['omwsxx', True, 666], [666, 666, 999]]

<class 'list'>


#列表的下标索引

eg.正向索引

my_list = [666,"omwsxx",True]

print(my_list[0])

print(my_list[1])

print(my_list[2])

\

运行结果

666

omwsxx

True

eg.反向索引

my_list = [666,"omwsxx",True]

print(my_list[-1])

print(my_list[-2])

print(my_list[-3])

\

运行结果

True

omwsxx

666



#列表的常用操作

定义

使用下标索引获取值

插入

删除

清空

修改

统计



eg.1抽象类错误使用

class Student:

  def my_add(a, b):

    result = a + b

    return result

student = Student()###

result = student.my_add(3,5)

print(result)

\

运行结果

C:\pythonProject\pythonProject1\venv\Scripts\python.exe C:\pythonProject\pythonProject1\main.py 

Traceback (most recent call last):

 File "C:\pythonProject\pythonProject1\main.py", line 6, in <module>

  result = student.my_add(3,5)

       ^^^^^^^^^^^^^^^^^^^

TypeError: Student.my_add() takes 2 positional arguments but 3 were given


Process finished with exit code 1


eg.2正确结果是直接使用抽象类

class Student:

  def my_add(a,b):

    result = a + b

    return result

print(Student.my_add(2,3))

\

运行结果

5



eg.3抽象类重命名后使用

class Student:

  def my_add(a,b):

    result = a + b

    return result

student = Student

print(student.my_add(2,3))

\

运行结果

5



#查找某元素下标

语法:

列表.index(元素)

index是列表对象内置函数,有返回值


#修改特定位置元素值

语法:

列表[下标]=值


#插入元素

语法:

列表.insert(插入位置序号(从0开始),插入元素)

insert是列表对象内置函数


eg.列表插入

my_list = ["itheima",666,"omwsxx"]

my_list.insert(1,"999")###插在1号位(序号从0开始)

print(my_list)

\

运行结果

['itheima', '999', 666, 'omwsxx']


#追加一个元素

语法:

列表.append(元素)

将指定元素追加到列表尾部,无返回值


eg.列表追加一个元素

my_list = ["itheima",666,"omwsxx"]

my_list.append("999")

print(my_list)

\

运行结果

['itheima', 666, 'omwsxx', '999']


#追加多个元素

语法:

列表.extend(其他数据容器(集)),无返回值


eg.列表追加一个数据集

my_list = ["itheima",666,"omwsxx"]

my_list.extend([2,3,4])

print(my_list)

\或

my_list = ["itheima",666,"omwsxx"]

my_list2 = [2,3,4]

my_list.extend(my_list2)

print(my_list)

\

运行结果

['itheima', 666, 'omwsxx', 2, 3, 4]


#删除元素

语法:

1.del 列表[下标]无返回值

2.列表.pop(下标)有返回值


eg.删除元素

my_list = ["itheima",666,"omwsxx"]

my_list.pop(0)

print(my_list)

del my_list[0]

print(my_list)

\

运行结果

[666, 'omwsxx']

['omwsxx']



#删除某元素在列表中的第一个匹配项

语法:

列表.remove(元素)

eg.

my_list = ["itheima",666,"omwsxx",666]

my_list.remove(666)

print(my_list)

\

运行结果

['itheima', 'omwsxx', 666]


#清空列表内容

语法:

列表.clear()

eg.

my_list = ["itheima",666,"omwsxx",666]

my_list.clear()

print(my_list)

\

运行结果

[]


#统计某元素在列表中的数量

语法:

列表.count(元素),有返回值

eg.

my_list = ["itheima",666,"omwsxx",666]

cnt = my_list.count(666)

print(cnt)

\

运行结果 

2


#统计列表内有多少元素(非内置函数,有返回值)

语法:

len(列表)

eg.

my_list = ["itheima",666,"omwsxx",666]

print(len(my_list))

\

运行结果

4


#列表特点

可容纳多个元素(上限为2**63-1)

可以容纳不同类型的元素(混装)

数据是有序存储的(下标)

允许重复数据存在

可以修改(增加或者删除元素等)


eg.练习

my_list = [21,25,21,23,22,20]

my_list.append(31)

my_list.extend([29,33,30])

print(my_list.pop(0))

print(my_list.pop(-1))

print(my_list.index(31))

\

运行结果 

21

30

5


#遍历列表元素

my_list = [21,25,21,23,22,20]

index = 0

for index in range(0, len(my_list)):

  print(my_list[index])

\

运行结果

21

25

21

23

22

20



元组

#唯一与list 不同的是,元组定义完成后不可修改,常常用于数据的封装

定义:使用小括号(),列表定义使用[]

变量名 = ()

变量名 = tuple()


#当元组只有一个数据,这个数据后面必须带逗号,否则不是元组类型

eg.

my_tuple = (666,)

my_tuple_ = (666)

print(type(my_tuple))

print(type(my_tuple_))

\

运行结果

<class 'tuple'>

<class 'int'>


#元组可以嵌套元组

eg.

my_tuple = ((666,),(666,),666)

print(my_tuple)

\

运行结果

((666,), (666,), 666)


#元组支持的操作

index()

count()

len(元组)

循环遍历

###元组里嵌套的list可以修改###6

eg.

my_tuple = ("omwsxx",["itheima","itcast"])

print(my_tuple)

my_tuple[1][0] = "hahaha"

my_tuple[1][1] = "hohoho"

print(my_tuple)

\

运行结果

('omwsxx', ['itheima', 'itcast'])

('omwsxx', ['hahaha', 'hohoho'])


eg.小练习

my_tuple = ("wx",11,['football','music'])

print(my_tuple.index(11))

print(my_tuple[0])

del my_tuple[2][0]

my_tuple[2].append('coding')

print(my_tuple)

\

运行结果

1

wx

('wx', 11, ['music', 'coding'])



黑马程序员python教程,8天python从入门到精通,学python看这套就的评论 (共 条)

分享到微博请遵守国家法律