【Python】4 基础语法笔记

本文介绍了Python编程的基础知识,包括Python的简洁哲学、安装过程、基础语法、数据类型、控制结构以及函数方法。讲解了如何安装Python3.7,强调了选择合适的版本以兼容机器学习库如TensorFlow。还探讨了Python的变量、字符串、列表、字典、集合和循环等概念,并展示了如何使用if-else语句和循环进行条件判断和控制流程。此外,还提到了函数的使用和类的定义,以及文件的读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Python介绍

python之父:Guido van Rossum“龟叔”1989年,YouTube、网络游戏后台、在线游戏后台都是Python开发的。

高级编程语言会提供比较完善的基础代码库,能直接调用,比如,针对电子邮件协议的SMTP库,针对桌面环境的GUI库。Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。

Python的定位是“优雅”、“明确”、“简单”,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常复杂的程序。总的来说,Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码。

适合网络应用,包括网站、后台服务等等;

许多日常需要的小工具,包括系统管理员需要的脚本任务等等;

把其他语言开发的程序再包装起来,方便使用。


2 Python3.7 安装

版本问题:Python安装时需要考虑现有机器学习包的支持情况,例如Tensorflow和Pytorch是不支持最新版本的Python的。从TensorFlow的官网可以看到,Python3.7兼容性最好。安装时要注意把Add to path选上,另外更改安装目录。安装完成后需要更改Python的包管理器pip

由于众所周知的原因,国内下载第三方包十分慢,因此使用镜像地址。常用地址是阿里云或清华源。切记使用管理员模式。

下载pip
https://pypi.org/project/pip/#files
进入压缩文件所在包,安装
python setup.py install
记得设置环境变量(python和pip都需要)

换源:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
也可以直接下载miniconda(配置环境等更方便严谨)
​​​​​​​https://zhuanlan.zhihu.com/p/133494097

2.1 终端

1.windows power shell (管理员打开)

2.win+R,输入cmd

2.1.1 power shell 常用指令

tab 自动补全

cd D: /进入D盘
cd ~/
cd Desktop               
ls  或  dir  /展开                 
pip list   ///查看安装了哪些包
pip show ...
pip search ...
pip install ... -i 换源

python  进入 交互环境模式

exit(0) 退出

2.2 IDE

2.2.1 pycharm

pycharm是IDE(集成开发环境)

模仿matlab工作区,社区版(免费版)足够使用

2.2.2 Vscode

商店:python和jupyter 搭建IDE

记得要先在终端 pip install jupyter

如果直接使用 jupyter,在终端输入 jupyter notebook


3 python基础

3.1 标识符

变量名、函数名等都属于标识符

标识符不能用以下这些关键字,也不能以数字开头,不能有空格,可以有 "_"(下划线)。

import keyword
print(keyword.kwlist)

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 
'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

3.2 变量

python不用声明变量,直接赋值就行。

变量=变量名+变量内容

盒子本身是(变量名)(标识符)

给盒子里装的东西(变量的内容),整体就叫变量。

相当于就是我们先创建一个新盒子,在电脑内存中,起名为name,此时盒子里没有数。然后我们在电脑内存中,输入东西,这个东西现在不确定在哪。

通过“=”号!赋值运算!把这个东西放到名字为name的盒子中。

name='marry'
print(name)
print('标识',id(name))
print('类型',type(name))
print('值',name)

# 变量的多次赋值:
name='marry'
name='me'#变量名指向最新的空间

# 方法: 
name.title()  name.upper()  name.lower()

3.3 语句与注释

语句一般不加分号,且注释 # 后面一般有一个空格(规范)

3.4 模块

一个模块即一个文件。

当语句以冒号 : 结尾时,缩进的语句视为代码块。按照约定俗成的惯例,应该始终坚持使用4个空格的缩进。

import 模块名
# print(模块名.代码元素名)
from 模块名 import 代码元素
from 模块名 import 代码元素 as 代码元素别名

# hello.py
x='nihao'
y=True
z=20.0

# world.py
import hello
from hello import z
from hello import x as x2

x=100
y=20
print(x) #100
print(y) #20
print(z) #20.0
print(x2) #nihao

4 数据类型

所有数据类型都属于某一类


4.1 整数类型

4.2 浮点类型

a=-3.1415926
print(a,type(a))

# 浮点数相加减的时候,可以用decimal模块来调整小数点位数

4.3 布尔类型

a=True
print(a,type(a)) # True <class 'bool'>
print(True+1) #2 可以转为数 对为1,错为0

4.4 序列类型

序列:可迭代、元素有序

序列特点:索引、切片、成员测试

a='hello' # 索引
print(a[0])
print(a[-5])

a='hello'
 # 01234
print(a[0:3]) #hel 从索引0开始,不包括索引3
print(a[0:3:2]) #hl 从索引0开始,不包括索引3,即hel,先取第0个元素h,步长为2,再取l
print(a[1:4:3]) #e 从索引1开始,不包括索引4,即ell,先取第0个元素e,步长为3

a='abcdefg'
 # 0123456
print(a[0:3]) #abc 从索引0开始,不包括索引3
print(a[0:7:2]) #aceg 从索引0开始,不包括索引7,即abcdefg,先取第0个元素a,步长为2(包括自身),再取c,e,g
print(a[1:7:3]) #be 从索引1开始,不包括索引7,即bcdefg,先取第0个元素b,步长为3(包括自身),再取e

4.4.1字符串类型(不可变)

#字符串中出现\t是制表符,\n是换行符

name='sun'
age=22
print(type(name),type(age))
print('我的名字是'   +name+   ',我今年'   +str(age)+    '岁') # 我的名字是sun,我今年22岁

4.4.2 元组 tuple( )(不可变)

# 第一种方法 小括号即可
a=('hello','world',98)
b=('no','yes',22)
# 索引 0 1 2 
print(a)
print(a[0])
print(a.index(98)) # 获取指定元素的索引

# 第二种方法 调用tuple函数
c=tuple('helloworld')
d=tuple(['aaa',99])
e,f=d  #元组拆包,分别赋给不同变量
print(c)
print(d)
print(e)
print(f)

4.4.3 列表 list [ ](可变)

# 第一种方法 中括号即可
a=['hello','world',98]
b=['no','yes',22]
# 索引 0 1 2 
print(a)
print(a[0])
print(a.index(98)) # 获取指定元素的索引
a.append(80)  # 追加元素(单个元素)
a.extend(b)   # 追加元素(多个元素)
a.insert(1,111)  #在索引1前面加入111这个元素
a[0]=222    #将索引0位置的元素替换为222
del a[0] #根据索引,删除元素 (语句删除,不能再访问)
a.pop(2) #根据索引,删除元素(可设置变量,继续访问)
a.remove(22)  #根据值,删除22这个元素(可设置变量,继续访问)
a.sort() #永久排序,按字母a-z顺序 
a.soet(reverse=True) #永久排序,按字母z-a顺序
a.sorted() #临时排序,按字母a-z顺序 
a.reverse() #永久排序,反转倒装
len(a) #确定a列表的长度
print(a)

# 第二种方法 调用list函数
Lst2=list(['helloworld',99])
print(Lst2)

4.5 字典类型dict{ }

无序、可变、key-value成对元素

a={1:11,2:22,3:33}
print(a)
print(a.items())
print(a.keys())
print(a.values())

b=dict({1:11,2:22,3:33})
c=dict(((1,11),(2,22),(3,33)))
print(b)
print(c)

{1: 11, 2: 22, 3: 33}
dict_items([(1, 11), (2, 22), (3, 33)])
dict_keys([1, 2, 3])
dict_values([11, 22, 33])

4.6 集合类型 set( )

无序、可变、无key的字典,不能包含重复元素

import curses

a={11,22,33,44,11,22}
print(a)
a.add(55)
a.remove(44)
print(a)

b=set('hello')
c=set('world')
print(b)
print(c)

5 组织结构

5.1 基础

5.1.1 对象的bool值

Python一切皆对象,bool( )获取对象的布尔值 # False、True

空、None、0的布尔值为False

5.1.2 条件表达式

#比较键盘两个数的大小
num_a=int(input("请输入第一个整数"))
num_b=int(input("请输入第二个整数"))
print("使用条件表达式")
print(  str(num_a)+"大于等于"+str(num_b)  if num_a>=num_b else  str(num_a)+"小于等于"+str(num_b) )
# 注意字符串的连接问题!

5.1.3 pass语句

搭建语法结构,先占一个语句位置,使其不报错。

5.2 if 单分支结构

money=1000  #银行卡余额
s=int(input("请输入取款金额"))
if money>=s:
    money=money-s
    print("取款成功,余额为:",money)

5.3 if-else 双分支结构

# 输入一个数,判断是奇数还是偶数

a=int(input("请输入一个整数"))
b=a%2
if b==0:
    print("这个数是偶数")
else:
    print("这个数是奇数")

5.4 if-elif-else 多分支结构

# 输入成绩,判断分数区间
# 0-100以外的数字为非法数字
a=int(input("输入成绩"))
if a>=90 and a<+100:
    print("大于90")
elif a>=80 and a<=89:
    print("80-90之间")
elif a<80 and a>=0:
    print("小于80")
else:
    print("对不起,这个数字有问题")
#python特有写法
#   0<=a<=59

5.5 if-if-else-else 嵌套if结构

# 会员200打8折,100打9折,其他不打折
# 非会员200打9折,其他不打折
a=bool(input("请输入是否是会员(0或1)"))
if a==True:
    money=int(input("请输入卡内余额"))
    if money>=200:
        print("8折")
    elif 200>money>=100:
        print("9折")
    else:
        print("不打折")
else:
    money=int(input("请输入卡内余额"))
    if money >= 200:
         print("9折")
    else:
         print("不打折")

5.6 while循环

#计算0到4的和
a=0
sum=0
while a<5:
    sum=sum+a      ## 条件执行体
    a=a+1               ## 改变变量
print("和为",sum)

#计算1-100的偶数和
a=1
sum=0
while a<=100:
    if a%2==0:
      sum=sum+a
    a=a+1
print("和为",sum)
#注意intented block 缩进块!!!

5.7 for-in循环(遍历)

#可迭代对象为字符串或者序列,把可迭代对象依次取值放到自定义变量里。
for a in "pri":
    print(a) #把a的值输出
for b in range(3):
    print("b") #循环3次输出b
aas=['1','2','3']
for aa in aas:
    print(aa)
    
#输出1-100的偶数和
sum=c=0
for c in range(1,101):
    if c%2==0:
        sum=sum+c
    c=+1
print("和为",sum)

p    r      i
b    b     b
和为 2550

# 水仙花数 153=3*3*3+5*5*5+1*1*1
# 输出100-999之间的水仙花数
# 百位数       个 a%10        十 a//10%10       百 a//100
for a in range(100,1000):
    if a==(a//100)**3+(a//10%10)**3+(a%10)**3:
        print("水仙花数为" ,a)
    a=+1

5.8 break

# 输入密码,有三次尝试机会,如果输入正确,就退出循环
for a in range(3):                                  #a只是一个循环次数!!!
    mima=input("请输入密码:")
    if mima=="8888":
        print("密码正确")
        break
    else:
        print("密码不正确")

5.9 contiue

5.10 else

for a in range(3):                                  #a只是一个循环次数!!!
    mima=input("请输入密码:")
    if mima=="8888":
        print("密码正确")
        break
    else:
        print("密码不正确")
else:
    print("对不起,三次密码都输入错误")

5.11 嵌套循环

#输出3行4列矩阵
for i in range(3):
    for j in range(4):
        print("*",end="\t") #不换行
print() #换行

5.12 二重循环中的break和contiue

6 函数、类、方法

6.0 函数与方法(字符串中使用变量)

函数:

函数名(输入参数):

方法:

变量名.方法名()


函数: def

类:class def 类的声明和初始化,创建一个对象,当没有能表达所需的数据类型时,则使用一个类。

强制类型转化函数:
str(age)         # 转变为字符串
int(age)         # 转变为整型

abs(-20) #20 输出绝对值函数

max(1,2,3) #3 输出最大值函数

#函数名其实是指向一个函数对象的引用,完全可以把函数名赋给一个变量
a=abs
a(-2)

#自定义函数需要返回两个数的情况
import math
def qqq(a,b,c):
    m=b*b-4*a*c
    x=(-b+math.sqrt(m))/(2*a)
    y=(-b-math.sqrt(m))/(2*a)
    return x,y

print('X1和X2的答案分别是:'+str(qqq(2,3,1))) #别忘了写逗号
print(f"X1和X2的答案分别是:{qqq(2,3,1)}") #别忘了写逗号
#X1和X2的答案分别是: (-0.5, -1.0)

def calc(a,b):  #形式参数  形参
    c=a+b
    return c

dddd=calc(10,20)  #实际参数  实参
print(dddd)

# 函数调用的参数传递-位置实参-关键字实参
dddd=calc(10,20)
dddd=calc(b=20,a=10)

6.0 递归函数

# 如果一个函数在内部调用自身本身,这个函数就是递归函数。
# 计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示
# fact(n)=n!=1×2×3×⋅⋅⋅×(n−1)×n=(n−1)!×n=fact(n−1)×n
# 所以,fact(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理。
# 于是,fact(n)用递归的方式写出来就是:

def fact(n):
    if n==1:
        return 1
    else:
        return n * fact(n - 1)

a=fact(3)
print(a)

6.1 print输出函数

# 直接输出数字(计算机能自己理解,不用引号)
print(111)

# 直接输出字符串
# 字符串是变化多样,计算机不能理解(需要单引号,就是让计算机不用理解,直接输出)
print('hello world'',''hello world'","'hello world')

# 含有运算符
print(3+1)

# 可以输出到文件中,aaa是变量名,
aaa=open('D:/text.txt','a+') #a+表示没有的话,会创建这个文件。有的话,会重复输入。
print('hello world',file=aaa)
aaa.close()

6.2 input输入函数

#input是str(字符串)类型 
present=input('你想要什么礼物呢?') #这是输入提示
print(present,type(present))
# 你想要什么礼物呢?111
# 111 <class 'str'>

# 从键盘输入两个数,求和。
a=input("输入第一个数:")
b=input("输入第二个数:")
print(type(a),type(b))
print(int(a)+int(b))
# 输入第一个数:10   输入第二个数:20
# <class 'str'> <class 'str'>
# 30

# 或者一开始就把格式转换过来
a=input("输入第一个数:")
a=int(a)
b=input("输入第二个数:")
b=int(b)
print(type(a),type(b))
print(a+b)

6.3 range函数-生成一系列数

6.4 list函数-创建列表

#range函数 用于生成一个整数序列
r1=range(5) #从0开始,不包括5,(步长为1)
r2=range(1,5) #从1开始,不包括5,(步长为1)
r3=range(1,5,2) #从1开始,不包括5,步长为2
print(r1,r2,r3)
print(list(r1),list(r2),list(r3))
print(5 in r3)
print(5 not in r3)

#range(0, 5) range(1, 5) range(1, 5, 2)
#[0, 1, 2, 3, 4] [1, 2, 3, 4] [1, 3]
#False
#True

#把1到10的平方和写入列表
squares=[]
for a in range(1,11):
    square=a**2
    squares.append(square)
print(squares)

6.4 类与实例

class Student(object):   #Student为类名
    def __init__(self, name, score):   
        #强制给类里面的(实例self)上name和score属性(和函数的唯一区别)
        self.name = name
        self.score = score

    def get_grade(self):     #类的优势!
        if self.score >= 90:
            return 'A'
        elif self.score >= 60:
            return 'B'
        else:
            return 'C'

    def print_score(self):      #类的优势!
        print('%s: %s' % (self.name,self.score))

lisa = Student('Lisa', 99)
bart = Student('Bart', 59)
print(lisa.name, lisa.get_grade())
print(bart.name, bart.get_grade())
lisa.print_score()


class Dog(): #类名要大写

    def __init__(self,name,age) :
        self.name=name
        self.age=age
    
    def sit(self):
        '''模拟小狗蹲下'''
        print(self.name.title()+  'is now sitting')
    
    def roll_over(self):
        print(self.name.title()+  "rolled over")

my_dog=Dog("wangzai",3)
my_dog.sit()
my_dog.roll_over()

7 杂

7.1 运算符

7.1.1 算术运算符

7.1.2 位运算符

7.1.3 比较运算符

a=1
b=1
print('a和b的value一样吗',a==b)
print('a和b的id一样吗',a is b)
list1=[1,2,3,4]
list2=[1,2,3,4]
print('1和2的value一样吗',list1==list2)
print('1和2的id一样吗',list1 is list2)
print(id(list1),id(list2))
'''
a和b的value一样吗 True
a和b的id一样吗 True
1和2的value一样吗 True
1和2的id一样吗 False
2256309925632 2256309874816
==     !=     >     >=     <     <=
'''

7.1.4 布尔运算符

# and or not 与或非  in,not in
a=True
b='ttttu'
print(not a)  #False
print('u' in b)  #True

7.1.5 赋值运算符

a+=10       a=a+10
a/=3       a=a/3
#交换不需要中间变量
a,b=5,2
print('交换之前:',a,b)
a,b=b,a
print('交换之后:',a,b)
# 交换之前: 5 2
# 交换之后: 2 5

7.2 转义字符与原字符

# \这叫反斜线 /这叫斜线
print('我要输出单引号双引号和反斜线')
print('\',\",\\')

print('我要让转义字符不起作用')
print(r'\\')#前面加r就不起作用了

#关于制表位的使用 四个字符为一个表位
print('hello\tworld')

7.3 二进制

计算机只认识1和0

口口 2个位置,4个状态

口口口口口口口口 8个位置,256个状态(ASCII码)

7.4 文件读写

# 读取文件

# 读取文件,显示内容
with open('文件名.txt') as file_object:    #文件命名为file_object。相对路径行不通可以用绝对路径
    contents = file_object.read()          #读取文件内容,传入字符串中 
    print(contents.rstrip())               #rstrip()方法删除字符串末尾的空白
    
# 逐行读取
with open('文件名.txt') as file_object:
    lines = file_object.readlines()        #readlines()方法从文件中读取每一行,储存在一个列表中
    for line in file_object:
        print(line)       
# 整体写入
with open('filename.txt','w') as file_object:    #以写入模式打开文件,如果文件不存在会自动创建,已经存在会清空文件
    file_object.write("I love programming.")     #注意只能写入字符串,写入多行时可以加换行符

# 附加内容
with open('filename.txt','a') as file_object:    #以附加模式打开文件,不会清空原有文件,写入的行添加到文件末尾
    file_object.write("\nI love programming.")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值