Python小白从零到入门基础知识

Python学习基础

配置Python环境

Python官网下载地址:

进入界面后点击Download Python

根据系统选择下载的版本,此处演示Windows的版本

下载的图像

然后双击,按照以下步骤完成安装

  1. 什么是Python

Python它是一种直译式,面向对象,解释式的脚本语言。它和Java,C/C++,Go语言一样都是高级语言,但由于它是解释式语言,所以运行速度会比Java,C/C++等语言慢(虽说隔壁Go也是解释式语言,但比它快很多)。不过任何事物有利也有弊,Python因为自身携带了许多库(如:OS、TCP、Urllib、Trutle),语法简单,第三库也有很多(如飞机大战所需的pygame),所以被称为胶水语言,同时也深受开发者青眯。

  1. 初识Python

Hello World


print("Hello World")

注意事项:输入的双引号和括号为英文字符

  1. Python基础语法

(一)字面量

定义:在代码中,被写下来的固定的,称之为字面量。

常用的六种值的类型

字符串Python中,字符串需要用双引号包围;

被双引号包围的都是字符串


print("string") 

(二)注释

单行注释#


#单行注释
print("黑马程序员")     

多行注释""" """


"""
多行注释
0基础 学IT
来黑马程序员
"""
print("0基础 学IT")
print("来黑马程序员")

(三)变量

定义:程序运行时,能储存计算结果或表示值的抽象概念。

简单的说,变量就是在程序运行时,记录数据用的

格式:变量名=变量值


money=50
print("大学生一天生活费",money,"元")

(四)数据类型

type()语句 [具有返回值]

语法:type(被查看数据的类型)


a = type( 666 )
print( a )
 
print( type( 13.14 ) )
 
name = "黑马程序员"
name_type = type( name )
print( name_type )
 
>> <class 'int'>
>> <class 'float'>
>> <class 'str'>

(五)数据类型的转换

语句具有返回值


# 将数字类型  ->  字符串类型
num_str = str( 11 )
print( type( num_str ) , num_str )
 
float_str = str( 13.14 )
print( type( float_str ) , float_str )
 
>> <class 'str'> 11
>> <class 'str'> 13.14

# 将字符串类型   ->  数字类型
num = int( "11" )
print( type( num ) , num )
 
num2 = float( "13.14" )
print( type( float ) , num2 )
 
>> <class 'int'> 11
>> <class 'float'> 13.14

浮点数转整数会丢失精度,即要将浮点数小数点后的内容全部覆盖删除


# 整数 -> 浮点数
float_num = float( 11 )
print( type( float_num ) , float_num )
 
>> <class 'float'> 11.0
 
# 浮点数 -> 整数
int_num = int( 13.14 )
print( type( int_num ) , int_num )
 
>> <class 'int'> 13

(六)标识符

1. 定义:用户在编程时所用的一系列名字,用于给变量、类、方法等命名。

2. 命名规则:

内容限定(字母,中文,数字,下划线_)

数字不可开头

大小写敏感

不可使用关键字

3. 命名规范:

见名知义(最好使命名通俗易懂)

下划线命名法(m_age)

英文字母全小写

(七)运算符

1. 算术运算符:+、-、*、/、//、%、**(指数)

2. 赋值运算符:=

3. 复合赋值运算符:+=、-=、*=、/=、//=、%=、**=

(八)字符串扩展

1.3种定义方式

1)定义形式:

① 单引号定义法:

name = '黑马程序员'

②双引号定义法:

name = "黑马程序员"

③三引号定义法:

name = """黑马程序员"""

*支持换行操作,使用变量接收它,则为字符串;不使用变量接收,则为多行注释


# 单引号定义法,使用单引号进行包围
name = '黑马程序员'
print( type(name) )
 
# 双引号定义法,写法和多行注释是一样的
name = "黑马程序员"
print( type(name) )
 
# 三引号定义法,写法和多行注释是一样的
name = """
我是
黑马
程序员
"""
print( type(name) )
 
>> <class 'str'>
>> <class 'str'>
>> <class 'str'>

单引号定义法和双引号定义法的功能是完全相同的

三引号定义法可以实现多行打印

2)字符串的引号嵌套

①单引号法,可以内含双引号;

②双引号定义法,可以内含单引号;

②可以使用转义字符(\)来将引号解除效用,变成普通字符串。


# 字符串内,包含双引号
name = '"黑马程序员"'
print( name )
 
# 字符串内,包含单引号
name = "'黑马程序员'"
print( name )
 
# 使用转义字符(\)解除引号的效用
name = "\"黑马程序员\""
print( name )
name = '\'黑马程序员\''
print( name )
 
 
>> "黑马程序员"
>> '黑马程序员'
>> "黑马程序员"
>> '黑马程序员'

使用转义字符(\)解除引号的效用

2.字符串的拼接

通过+号来实现两个或多个字符串相连


print("黑马程序员"+"成就IT黑马")                 #两个字符串拼接
print("零基础"+"来"+"黑马程序员"+"成就IT黑马")    #多个字符串拼接

3. 字符串格式化

1)“%占位符”%变量

2) 常用占位符

字符串:%s

整数: %d

浮点数:%f

3)数字精度控制

辅助符号“m.n”来控制数据的宽度和精度

m :控制宽度,要求是数字(很少使用),设置的宽度小于数字本身,不生效

.n:控制小数点精度,要求是数字,会进行小数的四舍五入

%5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽度

%5.2f:表示将宽度控制为5,将小数点精度设置为2

小数点和小数部分也算入宽度计算。如:对11.345设置为%7.2后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度,四舍五入为.35

%.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置为%.2f,结果是11.35


num1 = 11
num2 = 11.345
print( "数字11宽度限制5,结果:%5d" % num1 )
print( "数字11宽度限制1,结果:%1d" % num1 )
print( "数字11.345宽度限制7,小数精度2,结果:%7.2f" % num2 )
print( "数字11.345不限制宽度,小数精度2,结果:%.2f" % num2 )
 
>> 数字11宽度限制5,结果:   11                             # 宽度5,补了3个空格
>> 数字11宽度限制1,结果:11                                # 宽度小于数字本身,无影响
>> 数字11.345宽度限制7,小数精度2,结果:  11.35 
   # 宽度7,补了2个空格,小数精度2,四舍五入后为.35
>> 数字11.345不限制宽度,小数精度2,结果:11.35              
   # 不限制宽度,小数点后四舍五入后为.35

这里主要记住%m.n m是表示宽度,过长则在前面加空格 n表示精度,小数点后四舍五入

4)快速写法

f"内容{变量}"


happy="快乐"
print(f"学习Python使我{happy}")

(九)数据输入

语法: input()

使用input()语句可以从键盘获取输入

使用一个变量接收(存储)input语句获取的键盘输入数据即可

数据输出:print

数据输入:input


print("猜猜我是谁?")
name=input()
print(f"你猜对了,我就是{name}")

无论input()输入什么,其都会自动转为字符串类型


num = input( "你的银行卡密码是:" )
print( "你的银行卡密码的类型是:" , type( num ) )
 
>> 你的银行卡密码是:123456
>> 你的银行卡密码的类型是: <class 'str'>

我们要自行进行数据类型转换


num = int(input( "你的银行卡密码是:" ))
print( "你的银行卡密码的类型是:" , type( num ) )
 
>> 你的银行卡密码是:123456
>> 你的银行卡密码的类型是: <class 'int'>

4.Python的判断语句

(一)布尔类型和比较运算符

布尔类型的字面量:True表示真;False表示假

定义变量存储布尔类型数据:变量名称=布尔类型字面量


# 定义变量存储布尔类型的数据
bool_1 = True
bool_2 = False
print( f"bool_1变量的内容是:{ bool_1 },类型为:{ type( bool_1 ) }" )
print( f"bool_2变量的内容是:{ bool_2 },类型为:{ type( bool_2 ) }" )
 
 
>> bool_1变量的内容是:True,类型为:<class 'bool'>
>> bool_2变量的内容是:False,类型为:<class 'bool'>

比较运算和比较运算符:

==、!=、>、<、>=、<=

(二)if语句

if 要判断的条件:

条件成立时,要做的事情

判断语句的结果必须为布尔类型的True或False

True会执行if内的代码语句

False则不会执行


age=20
if(age>=18)
    print("你已经成年了")  #结果为真则执行这句话,为假则不执行
print("时光飞逝,白驹过隙") #不论结果是否为真,都会执行

注意:千万不要忘记加

(三)if else语句

1. 基本格式:

if 条件 :

满足条件时要完成的事1

满足条件时要完成的事2

……

else:

不满足条件时要完成的事1

不满足条件时要完成的事2

……


height=135
if(height<120):
    print("免门票")
else:
    print("需要花10元购买门票")

(四)if elif else语句

1. 基本格式:

if 条件1 :

条件1满足时要完成的事

条件1满足时要完成的事

……

elif 条件2::

条件2满足时要完成的事

条件2满足时要完成的事

……

elif 条件n:

条件n满足时要完成的事

条件n满足时要完成的事

……

else:

所有条件不满足时要完成的事

所有条件不满足时要完成的事

……


print("欢迎来到黑马动物园")
height=int(input("请输入您的身高:"))
level=int(input("请输入您的会员等级:"))
if(height<120):
    print("免门票")
elif(level>3):
    print("免门票")
else:
    print("请花10元购买门票")

(五)if条件语句的嵌套

1. 基本格式

if 条件1 :

满足条件1时要完成的事1

满足条件1时要完成的事2

……

if条件2:

满足条件2做的事情1

满足条件2做的事情2

……

典型游戏:猜数字游戏(自己手打的,emmm差点绕进去)


import random
num=random.randint(1,10)

guess=int(input("请输入您要猜的数字"))
if(guess==num):
    print("恭喜您,猜对了")
else:
    if(guess<num):
        print("猜小了")
    else(guess>num):
        print("猜大了")
    guess2=int(input("请猜第二次"))
    if(guess2==num):
        print("恭喜您,猜对了")
    elif(guess2<num):
        print("猜小了")
    elif(guess2>num):
        print("猜大了")
    guess3=int(input("请猜第二次"))
    if(guess3==num):
        print("恭喜您,猜对了")
    else:
        print("很遗憾,您的三次机会都用完")

嵌套的关键点:空格缩进

通过空格缩进,来决定语句之间的:层次关系

5.Python异常 模块与包

(一)了解异常

1. 异常
  • 程序运行的过程中出现了错误

2. bug
  • bug就是指异常的意思,因为历史是因为小虫子导致计算机失灵的案例,所以延续至今,bug就代表软件出现错误

(二)异常的捕获

通过一个open()函数来读取一个不存在的文件


f=open("D:/abc","r",encoding="UTF-8")

程序运行后会进行报错.

既然会出现上述错误,那么我们会想为什么要捕获异常

捕获异常的作用在于:提前假设某处会出现异常,好提前做好准备,当真出现异常的时候,好有预防的手段。

那么我们如何去捕获异常呢?

基本捕获语法


try:
    f=open("D:/abc","r",encoding="UTF-8")
except:
    print("出现异常了,打开不存在的文件,即将open的模式改用w模式去打开")
    f=open("D:/abc","w",encoding="UTF-8")

捕获指定的异常


try:
    print(name)
except NameError as e:
    print("出现了未定义变量的异常")

除此之外还有捕获多个异常

由此我们可以发现,当我们捕获异常的时候不知道会有多少个异常出现,那有没有一种方法可以捕获所有异常呢?这里我们可以利用Exception来捕获所有异常。

except表示出现异常会执行,else表示没出现异常会执行


try:
    print("Hello")
except Exception as e:
    print("出现异常了")
else:
    print("好高兴,没有出现异常")

而finally表示不论有没有异常都要执行


try:
    f=open("D:/abc","r",encoding="UTF-8")
except:
    print("出现异常了,打开不存在的文件,即将open的模式改用w模式去打开")
    f=open("D:/abc","w",encoding="UTF-8")
else:
    print("好高兴,没有异常")
finally:
    print("我是finally,有没有异常我都要执行")
    f.close()

(三)异常具有传递性


def func1():
    print("func1()开始执行")
    num=1/0   #这是一个除零异常
    print("func1()结束执行")

def func2():
    print("func2()开始执行")
    func1()
    print("func2()结束执行")
    
def main():
    func2()
    
main()

程序运行后会发现,会对异常进行报错,并且是从第三行开始出现异常,然后自上而下进行传递


def func1():
    print("func1()开始执行")
    num=1/0   #这是一个除零异常
    print("func1()结束执行")

def func2():
    print("func2()开始执行")
    func1()
    print("func2()结束执行")
    
def main():
    try:
        func2()
    except Exception as e:
        print(f"出现异常了,信息是{e}")


    
main()

从这个例子也就可以说明,就算出现了异常,我们也不必从出现异常的地方(num=1/0)这里进行进行try开启,只要函数之间有调用关系或者层级关系,那么则可以直接从最顶级try开启,因为异常是可以传递的。

(四)模块的概念和导入

模块的概念

模块的基本语法

[from 模块名] import[模块|类|变量|*] [as 别名]

其中[ ]是可选的意思,就是from和as中的内容可写可不写,但是import里的内容是必须存在的。


import time
print("你好")
time.sleep(5)
print("我好")

这是import的最初用法,即直接用import接整个time模块,然后再通过.sleep功能名来实现。

但还可以使用具体的更简单方法:使用from导入time的sleep功能名,即我只使用time中的sleep功能方法,time模块中其他的功能不使用。


from time import sleep
print("你好")
sleep(5)
print("我好")

但是如果想使用from使用整个time模块的所有功能,那么可以直接用*,*代表所有功能的意思。

可能会有这种疑惑,与不使用from而直接使用import的方法好像没什么区别呀,其实如果用from则可以省略time.sleep()的过程,而直接使用sleep().


from time import *
print("你好")
sleep(5)
print("我好")

最后,as的功能是给具体的模块或者功能进行改名的操作。


import time as t
print("你好")
t.sleep(5)
print("我好")

from time import sleep as sl
print("你好")
sl(5)
print("我好")
自定义模块及导入

注意:每个python文件都可以作为一个模块,模块的名字就是文件的名字,也就是说,自定义模块名必须符合标识符命名规则


#my_module模块
def test(a,b):
    print(a+b)

from my_module import test
test(1,2)

这里可以直接用from执行,也可以用import执行,这里只介绍一种。

但是如果出现同时创立两个自定义模块,并且同时调用,会执行哪一个呢

注意事项:下面的导入同名功能模块的时候,调用的是后面导入模块的功能

__main__


#module自定义模块
def test(a,b):
    print(a+b)
    
#既满足了右键运行时,可以测试函数;也保证了外部导入这个模块的时候不会去运行我们在里面所写的代码
if __name__=='__main__':
    test(1,2)

__all__


#module模块
__all__=['test']

def test(a,b):
    print(a+b)
def test1(a,b):
    print(a-b)

#tset模块
from my_module import *
test(2,1)
test1(2,1)

则会显示不能显示test1的内容

python包

自定义包

安装第三方包

这是清华大学的网址,直接用以下网址可以直接对python包进行下载。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy

国外地址:Search results · PyPI

阿里云 Simple Index

中国科技大学 Simple Index

豆瓣(douban) http://pypi.douban.com/simple/

清华大学 Simple Index

中国科学技术大学 Simple Index

pycharm也可以在右下角“解释器设置”中添加新的python包,下载时可以添加option参数来通过国内镜像服务器下载包


"""
字符串相关工具
"""
def str_reserve(s):
    """
    功能是将字符串反转
    [起始:结束:步长]
    """
    return s[::-1]

def substr(s,x,y):
    """
    功能是按照给定的下标完成给定字符串的切片
    s:字符串内容
    x:起始
    y:结束
    """
    return s[x:y:1]

if __name__=='__main__':
    print(str_reserve("黑马程序员"))
    print(substr("黑马程序员",1,3))


"""
文件处理的相关内容模块
"""
def print_file_info(file_name):
    """
    将指定路径内容输出到控制台中
    
    """
    f=None
    try:
        f=open(file_name,"r",encoding="UTF-8")
        content=f.read()  #接受读取文件内容
        print("文件内容如下")
        print(content)  #打印输出文件内容
    except Exception as e:
        print(f"出现异常了,异常是:{e}")
    finally:
        if f:  #如果变量是None,表示False,如果有任何内容,则为True
            f.close()

def append_to_File(file_name,data):
     """
     将数据传入指定的文件路径下
     file_name 是文件的名称
     data 是数据
     """
     f=open(file_name,"a",encoding="UTF-8")  #a是追加文件
     f.write(data)  #将写好的数据写进去
     f.write("\n")  #换行一下
     f.close()
            

  
    
if __name__=='__main__':
       # print_file_info("D:/abc.txt")
    append_to_File("D:/123.txt","我在敲代码")
   

数据的可视化

json数据格式

从这里我们会发现,json就是把python中的一个字典转换成字符串或者列表内部嵌套的字典,把里面的元素也转换成字符串

那么如何进行python数据和json数据的相互转换呢

数据可视化

全局配置

这些基础的元素和图表的类型没有关系,不管是折线图还是饼图等,这些基础元素还是要有的

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的阿瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值