首页 > 编程语言 >python基础语法01

python基础语法01

时间:2024-08-18 16:05:20浏览次数:5  
标签:01 python age 语法 range thisdict fruits print


(1)编写环境介绍


在下载安装好python后:

打开命令提示符界面,进入python解释器界面(即为一个执行python代码的程序):


编写python代码时,还是建议用editor编辑器或者IDE集成环境,IDE时editor的扩展,包括了autocompletion,debugging,testing等功能。


这里暂时使用vscode编写学习,因为mosh老师最喜欢这个编辑器


(2)创建一个文件


新建一个文件夹,并在vscode中打开:

新建一个python文件:



发现vscode终端无法运行python如下

但是cmd中可以运行:(所以环境变量没问题,应该是vscode的设置问题?)

查了半天还是不知道什么原因,最后发现直接右上角运行即可:

最后安装几个扩展:


(3)python基础知识


1.变量


  • 不需要指定数据类型

  • python变量实际上是一个指针(里面存的是内存地址,如果再把这个变量赋值给另一个变量,新的变量通过之前那个变量知道那个变量值的内存地址存起来,而不是指向之前的那个变量)


  • 命名规则:由数字、字母、下划线组成,不能以数字开头,不能使用内置关键字

  • 命名习惯‌:驼峰命名法(CamelCase):myName, myAge 下划线命名法(snake_case):my_name, my_age 常量命名:MY_NAME, MY_AGE

  • 严格区分大小写‌




2.常量


  • Python中没有常量的概念,但通过命名约定和编程习惯,我们可以识别和区分常量

  • 命名规则:使用大写字母,并用下划线分隔单词。例如:MAX_VALUE、PI

  • 值不可修改:虽然Python中的变量实际上是可以修改的,但我们可以避免修改这些变量,从而将它们视为常量。通过注释或文档说明某些变量不应被修改


  • 内置常量:Python自带了一些内置常量,如True、False、None等(可以发现内置常量是首字母大写)


3.单引号,双引号和三引号


  • 三引号有注释的功能

  • 三引号还可以表示:定义字符串变量时,如果既有单引号又有双引号,那么用三引号框起来


# python中定义变量的时候字符串都用引号引起来,此时单引号和双引号没有区别。
msg_first = "I'm carol."  # 如果字符串中有单引号的话,外面就得用双引号
msg_second = 'Python comments use "#".'  # 如果里面有双引号,外面就用单引号
msg_third = '''I'm carol,I love "python".'''  # 如果既有单引号又有双引号,那么用三引号


4.数字


  • python中数字类型的变量可以表示任意大的数值
a = 99999999999999
print(a*a)

  • 十六进制0x 开头,八进制以 0o 开头,二进制以 0b 开头
a = 0x7f
b = 0o76
c = 0b1010010
print(a)
print(b)
print(c)

# 二进制 bin() 八进制 oct() 十六进制 hex()
a = 1234
print(a)
print(hex(a))
print(oct(a))
print(bin(a))

  • python中可以表示复数,用j来表示虚部 complex(a,b)函数可以形成复数

  • real查看实部,imag查看虚部,conjugate()返回共轭复数

a = 3+6j
b = complex(5, 4)
c = a+b
print(c)
print(c.real)
print(c.imag)
print(c.conjugate())



5.输入输出


a = input("please input msg:")
print(a)


input 在接收输入的时候,是可以看到你输入的值的。如果是输入密码,不想让别人看到你的密码,怎么办呢,就需要用到一个标准库,getpass,标准库就是不需要你再去安装,装完 python 就有的库,就是标准库,getpass 就是一个标准库,导入进来之后,直接使用 getpass.getpass 方法就可以在输入的时候,不会显示了:


import getpass
psw = getpass.getpass("please input your password:")
print(psw)



6.列表(list)


  • list是有序、可重复、可更改的集合,可存放不同数据类型的数据,并且每个元素都对应着一个索引来标记其位置,索引从0开始

  • 逗号分隔的不同的数据项使用方括号括起来

  • 基本操作

fruits = ['apple', 'orange', 'banana', 'pear']
print(fruits[0])  # 利用索引访问位置[start:end:step]
print(fruits[1:3])  # 切片操作 索引1-2 步长默认为1
print(fruits[::-1])  # 逆序输出
print(len(fruits))  # 输出列表长度
# 修改列表
fruits[0] = "watermelon"
print(fruits)
# 添加元素到列表末尾
fruits.append("grape")
print(fruits)
# 删除元素 两种方法
del fruits[2]  # 删除索引为2的元素
print(fruits)
fruits.remove('pear')  # 删除值为'pear'的元素
print(fruits)
# 判断元素是否存在于列表中
print('apple' in fruits)
print('grape' in fruits)
# 合并列表
aa = [0, 1, 2]
bb = fruits+aa
print(bb)



7.元组(tuple)


  • 元组是有序、可重复、不可更改的集合,元组是用圆括号括起来的

  • 基本操作

ff = ("apple", "banana", "cherry")
print(ff)
print(ff[0])
print(ff[-1])  # 输出倒数第一个,-2表示倒数第二个
print(ff[1:3])
print(ff[-2:-3])
# 元组值无法更改,但是可以将元组转换为列表,更改列表,然后将列表转换回元组
y = list(ff)
y[0] = "kiwi"
ff = tuple(y)
print(ff)
#len(),合并元组,判断元素是否存在和list操作一样
# 无法删除元组中的元素,但是可以删除整个元组
del ff



8.字典(dictionary)


  • 字典是一个无序、可变、有索引的集合。在 Python 中,字典用花括号编写,拥有键和值

  • 定义创建

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
  • 基本操作
print(thisdict)
# 获取 "model" 键的值 两种方法
x = thisdict["model"]  # 注意是方括号
x = thisdict.get("model")  # 注意是圆括号
# 更改值
thisdict["year"] = 2019
print(thisdict)
# 遍历所有值
for x in thisdict:
    print(thisdict[x])
# 遍历值
for x in thisdict.values():
    print(x)
# 遍历键和值
for x, y in thisdict.items():
    print(x, y)
# 检查是否存在
print("model" in thisdict)
# 添加值
thisdict["color"] = "red"  # 注意是方括号
print(thisdict)
# 删除指定键名项
thisdict.pop("model")
print(thisdict)
# 删除最后插入的项
thisdict.popitem()
print(thisdict)
# 另一种删除方法
del thisdict["year"]  # 注意是方括号
print(thisdict)
# 删除整个字典
del thisdict



9.集合(set)


  • 集合是无序、不可重复、无索引的集合。在 Python 中,集合用花括号编写。

  • 集合中的元素不可变,但是可修改,即先删再加

  • 基本操作

t_set = {"apple", "banana", "cherry"}
t_set.add("orange")  # 添加单个
t_set.update(["kiwi", "mango", "grapes"])  # 添加多个
print(t_set)
# 删除元素 remove() 或 discard()方法   pop() 方法
t_set.remove("banana")
t_set.discard("cherry")
print(t_set)
# pop方法是删除最后一项,但是set是无需的,故无法预测删除的是哪一个 有返回值
print(t_set.pop())
print(t_set)
# 合并集合
set1 = {4, 5, 6}
set2 = {1, 2, 3}
set3 = t_set.union(set1)  # 方法1 返回一个新集合
print(set3)
set3.update(set2)  # 方法2 插入到原集合
print(set3)

# 彻底删除
del set3 #不用后删除对象 好习惯



10.模块的导入与使用


在使用库函数时,需要导入,有两种方法:

  • import 模块名【as 别名】:使用这种方式导入后,需要在使用的对象前加上前缀 “模块名 . 对项名”的方式进行访问,也可以用“别名 . 对象名”的方式使用其中的对象

  • from 模块名 import 对象名【as 别名】:使用这种方式仅导入使用的对象,并且可以为这个对象起一个别名,这种方法可以减少查询次数,减少程序员的代码量,不需要使用模块名作为前缀

import math
from math import sin as f

print(math.sin(3))
print(f(3))

  • 一次导入模块中全部的对象:from math import * 不推荐使用这中方法,一旦多个模块中有同名的对象,会导致混乱


11.条件判断、循环


  • 条件判断
# input接收的是一个字符串,因此要强制转换成int类型
score = int(input("please input your score:"))
if score >= 90:  #记得加冒号
    print("优秀") #要缩进
elif score >= 60:
    print("及格")
else:
    print("不及格")

  • 循环
# while循环
# break是停止循环
# continue是停止当前的迭代,并继续下一个
i = 1
while i < 7:  # 注意冒号和缩进
    print(i)
    if i == 3:
        break
    i += 1

# for循环
a = [0, 1, 2, 3, 4, 5]
for x in a:
    if x == 2:
        continue
    if x == 4:
        break
    print(x)
# 循环遍历单词中的字母
for x in "banana":
    print(x)



12.range()函数


range()函数可用来创建一个整数列表,一般用在for循环中

  • range()语法:range(start, stop, step)

  • start:计数从start开始,默认从0开始 (闭区间),如:range(5)等价于range(0,5).

  • stop:计数到stop结束,但不包括stop(开区间).如:range(0,5)是[0, 1, 2, 3, 4],不包含5.

  • step:步长,相邻两个值的差值,默认为1.如:range(0,5)相当于range(0, 5, 1).

for x in range(3, 50, 6):
  print(x)



13.列表推导式


列表推导式(list comprehension)是指循环创建列表

list1 = [b for b in range(5)]
print(list1)


# in后面跟其他可迭代对象,如字符串
list_c = [7 * c for c in "python"]
print(list_c)

# 带if条件语句的列表推导式
# 果有if条件语句,for遍历后紧跟着进行条件判断
list_d = [d for d in range(6) if d % 2 != 0]
print(list_d)

# 多个for循环
# 如果有多个for循环,则最终的数据数量为多个for循环的笛卡尔积.
list_e = [(e, f * f) for e in range(3) for f in range(5, 15, 5)]
print(list_e)

# 嵌套列表推导式,多个并列条件
list_g = [[x for x in range(g - 3, g)]
          for g in range(22) if g % 3 == 0 and g != 0]
print(list_g)



14.字典推导式


# 因为key是唯一的,所以最后value都是4,0-4中最后一个有效值4
dict_a = {key: value for key in 'python' for value in range(5)}
print(dict_a)

# 可以根据key来构造value
dict_b = {key: key * key for key in range(6)}
print(dict_b)

# 遍历一个有键值关系的可迭代对象
list_phone = [('HUAWEI', '华为'), ('MI', '小米'),
              ('OPPO', 'OPPO'), ('VIVO', 'VIVO')]
dict_c = {key: value for key, value in list_phone}
print(dict_c)



15.集合推导式


# 集合是无序且不重复的,所以会自动去掉重复的元素,并且每次运行显示的顺序不一样
set_a = {value for value in '有人云淡风轻,有人负重前行'}
print(set_a)



16.创建类


class Employee:
    '所有员工的基类'  # 类文档字符串
    # 类体:类成员,方法,数据属性组成
    empCount = 0  # 类变量
    # __init__()方法是类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法

    def __init__(self, name, salary):
        self.name = name
        self.salary = salary
        Employee.empCount += 1
    # self代表类的实例,self在定义类的方法时是必须有的,在调用时不必传入相应的参数。

    def displayCount(self):
        print("Total Employee %d" % Employee.empCount)

    def displayEmployee(self):
        print("Name : ", self.name,  ", Salary: ", self.salary)


"创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000)
"创建 Employee 类的第二个对象"
emp2 = Employee("Manni", 5000)

# 访问属性
emp1.displayEmployee()
emp2.displayEmployee()
print("Total Employee %d" % Employee.empCount)

# 增删改属性
emp1.age = 7  # 添加一个 'age' 属性
emp1.age = 8  # 修改 'age' 属性
print(emp1.age)
del emp1.age  # 删除 'age' 属性

print(hasattr(emp1, 'age'))  # 如果存在 'age' 属性返回 True
setattr(emp1, 'age', 8)  # 添加属性 'age' 值为 8
print(getattr(emp1, 'age'))   # 返回 'age' 属性的值
delattr(emp1, 'age')    # 删除属性 'age'



17.类、模块、包的区别


  • 类(Class):类是一种用户自定义的数据类型,用于表示具有相似特征和行为的对象的集合。类定义了对象的属性和方法,可以创建多个对象实例。类是面向对象编程的基础,通过类可以实现封装、继承和多态等特性。

  • 模块(Module):模块是一个包含了变量、函数和类的Python文件。模块可以被其他程序导入并使用其中定义的变量、函数和类。模块的好处是可以将代码组织到不同的文件中,提高代码的可读性和维护性。可以使用import语句导入模块,然后使用模块名来访问其中的内容。

  • 包(Package):包是一个包含多个模块目录,可以通过包来组织和管理模块。包通常包含一个__init__.py文件,用于指示该目录是一个Python包。包的好处是可以将相关的模块组织到一个目录下,更好地组织和管理代码。可以使用import语句导入包,然后使用包名和模块名来访问其中的内容。


总结:类用于定义对象的属性和方法,模块用于组织代码文件,包用于组织模块和提供命名空间。类和模块是Python语言的基本组成单元,而包是一种更高层次的组织方式。







参考链接:

https://www.bilibili.com/video/BV1ng4y1i7Uk/?spm_id_from=333.337.search-card.all.click&vd_source=7ad39ca7883055fbebc4eb48b33018a3

https://www.cnblogs.com/huansky/p/14451733.html

https://www.w3school.com.cn/python/python_tuples.asp



标签:01,python,age,语法,range,thisdict,fruits,print
From: https://www.cnblogs.com/kakafa/p/18364884

相关文章

  • python入门机器学习4:pandas入门
     一.Series:一维数组,listimportnumpyasnpimportpandasaspdmyarray=np.array([1,2,3])myindex=['a','b','c']myseries=pd.Series(myarray,index=myindex)print(myseries)print(myseries[0])#第一个元素print(myseries['c'])#in......
  • Python 窗口界面跳转
    importsysfromPySide6.QtWidgetsimportQApplication,QPushButton,QWidgetclasswindow_1(QWidget):def__init__(self):super().__init__()self.setWindowTitle('Window1')self.resize(400,300)self.button1=Q......
  • 计算机毕业设计选题推荐-民宿管理系统-酒店预定系统-Java/Python项目实战
    ✨作者主页:IT研究室✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项目微信小程序项目......
  • 计算机毕业设计选题推荐-在线学习平台-Java/Python项目实战
    ✨作者主页:IT研究室✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项目微信小程序项目......
  • 计算机毕业设计选题推荐-宾馆酒店客房管理系统-民宿管理系统-Java/Python项目实战
    ✨作者主页:IT研究室✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项目微信小程序项目......
  • 计算机毕业设计选题推荐-高校实验室管理系统-Java/Python项目实战
    ✨作者主页:IT研究室✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项目微信小程序项目......
  • P2048 [NOI2010] 超级钢琴
    题意在一个数组中选择\(k\)个长度为\([l,r]\)的序列,对每个序列求和,使每个序列的和的和最大。思路首先,我们可以将序列之和转化为前缀和,如果固定左端点\(l\),那么我们只需要在\([l+len_l,l+len_r]\)中寻找最大的右端点,减去\(sum[l-1]\)就是在长度为\([len_l,le......
  • 【888题竞赛篇】第三题,2016ICPC大连-Detachment
    这里写自定义目录标题更多精彩内容256题算法特训课,帮你斩获大厂60W年薪offer原题2016ICPC大连-DetachmentB站动画详解问题分析思路分析1.预处理前缀和与前缀积2.二分查找分割点3.分配剩余长度4.证明最佳分配策略5.模运算与逆元算法实现1.预处理前缀和、前缀积及......
  • 零基础学习人工智能—Python—Pytorch学习(五)
    前言上文有一些文字打错了,已经进行了修正。本文主要介绍训练模型和使用模型预测数据,本文使用了一些numpy与tensor的转换,忘记的可以第二课的基础一起看。线性回归模型训练结合numpy使用首先使用datasets做一个数据X和y,然后结合之前的内容,求出y_predicted。#pipinstallmatp......
  • 【python】一文带你领略,Python中非常强大的加密库--pycryptodome
    ✨✨欢迎大家来到景天科技苑✨✨......