python基础语法笔记(有C语言基础之后)

news2024/9/24 5:23:52
input()用于输入,其有返回值(即用户输入的值),默认返回字符串。括号里可放提示语句
一行代码若想分为多行来写,需要在每一行的末尾加上“\”
单个“/”表示数学中的除法,不会取整。“//”才会向下取整。
字符串类型可以乘以整数类型,相当于这个字符串被复制了整数倍,若做输出,即会重复输出。
条件语句

if [条件] :

[执行语句]

[执行语句]

elif [条件二]:

[执行语句] 

else :

[执行语句]

(要有缩进,[条件]外面不用中括号也不用小括号)

逻辑关键词

(not 非) > (and 与) > (or 或)

方法与函数

方法:对象.方法名()

函数:函数名()

列表(list)
  1. 与普通数据类型(字符串,整型,浮点型,布尔型)的区别:列表在调用函数或方法对其代表的值进行改变时,其本身值确实会被改变;而普通数据类型调用函数或方法进行改变时,其本身的值不会被改变,相当于是其值被复制了一遍,改变的是复制后的值,然后进行输出或其他操作。

  2. 常用方法.remove(【元素】)(移除).append(【元素】)(添加) .min(【列表】)(返回列表中的最小值).max(【列表】)``.sort(【列表】)(给列表排序)len(【列表】)(返回列表长度)

  3. 命名方式a = [【元素】,【元素】] (可以为空,里面可以有任何元素(但必须是同一类型),用逗号分隔)

  4. 赋值a[1] = 【另一个元素】

字典(dictionary)
  1. 命名方式a = { 【key】 : 【value】, 【key】 : 【value】 } (key必须是不可变的数据结构)

  2. 旧键赋新值新增键值对a[【key1】] = 【value2】

  3. 判断某个键是否已经存在【key】 in a,若存在,则该表达式的值为True,否则为False

  4. 删除键值对del a[【key1】]

  5. 常用方法.keys()(返回里面的所有键).values()(返回里面的所有值).items()(返回里面的所有键值对)

元组(tuple)
  1. 命名方式a = (【元素】, 【元素】)

  2. 不可变,可作为字典的key

  3. 访问元组中的元素:a[1]、a[0]

循环(for)
  1. 写法:for 【变量名】 in 【可迭代的对象】:(变量名处可以是多个变量,相应的可迭代对象得有同样多数量的值)

  2. range(a, b):a≤ x<b range(a, b, c) :c为步长

格式化字符串

用format()方法或直接在字符串前加 ‘ f ’,举例

y = 90
a = 90.2
c = "jijin"
str1 = "嘻嘻哈哈{0}红红火火{2}恍恍惚惚{1}是啊{0}".format(y, a, c)
#或者如下
str2 = "嘻嘻哈哈{y2}红红火火{c2}恍恍惚惚{a2}是啊{y2}".format(y2 = y, a2 = a, c2 = c)
#或者如下
str3 = "嘻嘻哈哈{y2}红红火火{c2}恍恍惚惚{a2}是啊{y2}".format(y2 = 90, a2 = 90.2, c2 = "jijin")
#或者如下
str4 = "嘻嘻哈哈{y}红红火火{c}恍恍惚惚{a}是啊{y}".format(y = y, a = a, c = c)
#或者如下
str5 = f"嘻嘻哈哈{y}红红火火{c}恍恍惚惚{a}是啊{y}"
#或者如下
str6 = f"嘻嘻哈哈{90}红红火火{'jijin'}恍恍惚惚{90.2}是啊{90}"

#打印结果皆如下
嘻嘻哈哈90红红火火jijin恍恍惚惚90.2是啊90

若要控制浮点数的小数位数,比如三位小数,则在具体值或者变量的后面加上“:.3f

函数
  1. 写法:
def fun1():
    #函数体
    #。。。

def fun2(a, b):            #无需说明参数类型,也无需说明函数类型
    c = a+b
    print(c)
    return a          #若没写 return 语句会有默认的 return None

引入模块
  1. import 【模块】

  2. from 【模块】 import 【函数】

  3. from 【模块】 import *

  4. 引入第三方库,需要先在互联网上下载,用命令pip install来安装,pypi.org这个网站可以对第三方库进行搜素。

#定义一个类
class Cat:
    def __init__(self, name, age):  #构造函数,必写,名字固定为 __init__() (注意,左右各两个横线)  第一个参数必须是self,代表自己
        self.name = name              #左侧即为对象拥有的属性,在构造函数里定义,不能在外面定义。
        self.age = age
        self.color = "white"

    def meow(self):                  #自定义方法,第一个参数也必须是self
        print(f"{self.name} is meowing.")

    def show_info(self):
        print(f"{self.name} is {self.age} years old and {self.color} in color.")

#创建一个对象
cat1 = Cat("Fluffy", 3)     #创建对象的时候可以不用传入self的值
cat1.meow()                 #调用方法的时候也可以不用传入self的值
cat1.show_info()

#输出结果
Fluffy is meowing.
Fluffy is 3 years old and white in color.
继承
class Mammal:
    # 定义哺乳动物类,初始化时接受一个名字参数
    def __init__(self, name):
        self.name = name
        self.has_tail = True

    def speak(self):
        print(f"{self.name} speaks.")

class Dog(Mammal):
    # 定义狗类,继承自哺乳动物类,初始化时接受一个名字参数
    def __init__(self, name):
        super().__init__(name)

    # 重写说话方法,打印狗叫的信息
    def speak(self):
        print(f"{self.name} barks.")

    # 定义取物方法,打印狗取物的信息
    def fetch(self):
        print(f"{self.name} is fetching.")

class Human(Mammal):
    # 定义人类,继承自哺乳动物类,初始化时接受一个名字参数
    def __init__(self, name):
        super().__init__(name)
        self.has_tail = Flase     #修改父类继承过来的属性

    # 重写说话方法,打印人说话的信息
    def speak(self):
        print(f"{self.name} talks.")

    # 打印人是否有尾巴的信息
    def show_has_tail(self):
        print("Do humen have tails? " + str(self.has_tail))

# 创建一个Dog对象,名字为Rufus
dog = Dog("Rufus")  
dog.speak()  # 调用Dog对象的speak方法
dog.fetch()  # 调用Dog对象的fetch方法

# 创建一个Cat对象,名字为Whiskers
human = Human("Jack")  
human.speak()  # 调用Human对象的speak方法
human.show_has_tail() # 调用human对象的show_has_tail方法

# 输出结果
Rufus barks.
Rufus is fetching.
Jack talks.
Do humen have tails? False
文件路径常识(对于Windows系统来说)(相对路径)
504488b63d28de419b366fe2ce1e869a cdc280f31171d0d35e493da19720e128

在同一目录下的文件,如果想要相互找到彼此的话,可以直接使用文件名,不用前面再加一个“./”

读取文件
  1. 使用函数open()open("【文件路径】", "【模式】", "【encoding=】")

  2. 【文件路径】:可以写绝对路径,也可以写相对路径。

  3. 【模式】:传入一个字符串,常用的有"r"(只读),和"w"(只写)两种模式。若不写,则默认为只读模式。读取模式下,如果程序找不到对应的文件名的话,就会报一个"FileNotFoundError"的错误。

  4. 【encoding】:也是可选的参数,可不写

  5. open()函数会返回一个文件对象,可以后续对它进行读取和写入的操作。

  6. 读取(“r”)

    1. 例如,把文件对象赋值给一个变量ff.read()就可以一次性读取文件里的所有内容,并以字符串返回,print(f.read())即可将其打印出来。

    2. 一个文件对象的read()方法不可以连续调用,因为每次调用都会读取全部的内容出来,并且它会记录上次读取到哪。所以,第一次调用完之后,第二次调用时只能读取到空的字符串了。

    3. 若不想全部读取,那就传入一个数字作为参数,表示一次读取多少字节。

f.read(10)  # 第一次,读1-10字节的文件内容
f.read(10)  # 第二次,读11-20字节的文件内容
f.readline() # 每次读一行的文件内容,根据换行付来判断什么时候本行结束
f.readlines() # 会读取全部内容,并把每行作为列表元素返回,常与for循环结合
f.close()  # 关闭文件,释放资源


# 若容易忘记调用close()方法,可用如下写法:
with open("./data.txt") as f :     # 用with写法
    print(f.read())  # 对文件进行操作   要记得缩进
# 这样,当缩进部分的代码执行完后,资源会自动释放
  1. 写入(“w”)

    1. 写入模式下,如果找不到文件名,会自动在路径下创建一个新的文件。

    2. 若文件是存在的,那么会将文件原有内容清空,然后写入新的内容。若不想原有内容被清空,则应该用“a”模式(附加模式)

    3. 用write()方法来进行写入。如write("aaaa")

  2. 其他模式:

    1. r+”:可读也可写入

    2. “a+”:可读也可追加

    3. 写入和追加是有区别的。追加是在文件末尾进行写入。而写入是看当前指针在哪个位置,最开始指针位置为1,如果之有过read操作,那么指针会后移,这时再调用write()的话,就是从上次read的结束位置开始写入。

异常处理
try:
    user_weight = float(input("Enter your weight in kilograms: "))
    user_height = float(input("Enter your height in meters: "))
    bmi = user_weight / (user_height ** 2)
except ValueError:                     # If user enters non-numeric input
    print("Invalid input. Please enter a number.")
except ZeroDivisionError:               # If user enters height as zero
    print("Invalid input. Height cannot be zero.")
except:                                 # If any other error occurs
    print("An error occurred. Please try again.")
else:                                   # If no error occurs
    print("Your BMI is:", bmi)
finally:                               # This block is always executed
    print("Thank you for using our BMI calculator.") again.")

测试

调用python自带的库:unittest

# 被测试函数所在文件 add_calculator
def add2(a, b):
    return a + b


# 测试文件 test_add_calculator 
import unittest
from add_calculator import add2

class TestAdd2(unittest.TestCase):      # 写一个子类继承于unittest.TestCase
    # 每一个方法就是一个测试用例,命名方式必须以test_开头,只有这样才能被unittest当作测试用例
    def test_positive_with_negative(self):                
        self.assertEqual(add2(100, -100), 0)

    def test_positive_with_positive(self):
        self.assertEqual(add2(100, 100), 200)

    def test_negative_with_negative(self):
        self.assertEqual(add2(-100, -100), -200)

    def test_negative_with_positive(self):
        self.assertEqual(add2(-100, 100), 0)

if __name__ == '__main__':
    unittest.main()

# 输出结果
....               # 通过为 . 不通过为 F
----------------------------------------------------------------------
Ran 4 tests in 0.000s

OK


7240a05a2b5fe75b84d46ab10c93ab95

本质上,assertTrue可以代替这些所有的方法。

但推荐使用更有针对性的方法,因为更有针对性的方法会给出更详细具体的原因。

高阶函数

高阶函数可以把函数作为参数。作为参数的函数是直接把函数名作为参数传入,后面不要带括号和参数,因为如果带括号和参数,传入的就是函数的返回值了,而不是函数本身了。

匿名函数

无需名字,即用即扔。关键字:lambda

def calculate_and_print(num1, num2,  calc_func):  
    print(calc_func(num1,  num2))

calculate_and_print(7, 5, lambda num1, num2: num1 * num2)  # 输出35
# num1、num2为传给匿名函数的参数,匿名函数不需要专门写 return,直接放上要放回的结果即可(即上面冒号后面的 “num1 * num2”

# lambda表达式的语法:lambda 参数1, 参数2, ... : 表达式
# lambda表达式也可以直接作为一个函数来计算,如下:
(lambda num1, num2: num1 * num2)(7, 5)  # 输出35
# 但是一般不推荐这么做,因为lambda表达式的可读性不高。

# 匿名函数也有局限,即它的冒号后面不能有复杂的语句,只能是一行表达式。

本文是学习b站up主“林粒粒呀”《三小时python课程》时记的笔记
课程链接:你觉得自己这辈子都学不会编程?超超超基础Python课程,3小时快速入门 【自学Python教程合集】【3小时快速入门Python】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1910509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于string的‘\0‘与string,vector构造特点加部分特别知识点的讨论

目录 前言&#xff1a; 问题一&#xff1a;关于string的\0问题讨论 问题二&#xff1a;C标准库中的string内存是分配在堆上面吗&#xff1f; 问题三&#xff1a;string与vector的capacity大小设计的特点 问题四&#xff1a;string的流提取问题 问题五&#xff1a;迭代器失…

电脑文件过大删除的文件怎么恢复?别急,恢复方法在此

在数字化时代&#xff0c;电脑文件承载着我们的工作、学习和生活的重要信息。然而&#xff0c;由于文件体积的庞大或是操作失误&#xff0c;我们有时会不小心删除一些至关重要的文件。特别是当文件过大时&#xff0c;它们可能不会在回收站中留下痕迹&#xff0c;给恢复工作带来…

AI古风插画视频:成都亚恒丰创教育科技有限公司

AI古风插画视频&#xff1a;科技与传统美学的诗意交融 在数字技术的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;以其惊人的学习能力与创造力&#xff0c;正逐步渗透并重塑着艺术的边界。成都亚恒丰创教育科技有限公司其中&#xff0c;AI古风插画视频作为一股清流&a…

基于JAVA+SpringBoot+Vue+uniApp小程序的心理健康测试平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 该系统由三个核心角色…

怎么降低pdf内存,怎么降低pdf内存占用空间容量大小

在数字化时代&#xff0c;PDF文件已经成为我们日常办公和学术交流中不可或缺的一部分。然而&#xff0c;随着文件内容的丰富和质量的提高&#xff0c;PDF文件的大小也在不断增大&#xff0c;这给文件的传输和存储带来了不少困扰。本文将为你介绍几种简单有效的方法&#xff0c;…

【React】React18 Hooks 之 useContext

目录 useContext1、Provider和 useContext2、Provider 和Consumer3、Provider 嵌套4、React.createContext提供的Provider和class的contextType属性5、读、写Context&#xff08;1&#xff09;父组件修改Context&#xff08;2&#xff09;子组件修改Context 好书推荐 useContex…

72小时快速入门大语言模型

&#x1f393; 随着人工智能技术的飞速发展&#xff0c;国产芯片在大语言模型领域的应用成为创新的前沿阵地。硬蛋学堂携手行业精英&#xff0c;隆重推出全新课程——"基于国产芯片的大语言模型技术开发及应用"&#xff0c;开启智能科技的新篇章&#xff01; &#…

电阻负载柜的主要特性和参数是什么?

电阻负载柜作为重要的电力测试仪器&#xff0c;其主要特性和参数对于理解其功能和应用至关重要。以下是对电阻负载柜主要特性和参数的详细阐述&#xff1a; 主要特性 高精度测量&#xff1a;电阻负载柜通常配备高精度的电压、电流和功率因数测量系统&#xff0c;能够准确反映被…

如何创建录取查询系统

随着新学期的脚步渐近&#xff0c;老师们的日程表上又添上了密密麻麻的任务。开学前的准备工作总是让人应接不暇&#xff0c;从整理教材到布置教室&#xff0c;再到准备课程计划&#xff0c;每一项工作都需要细心与耐心。而在这些繁琐的事务中&#xff0c;如何高效地将录取结果…

哪些独立站外链策略最有效?

在当前的SEO领域中&#xff0c;独立站外链策略的效果差异很大&#xff0c;但GPB外链无疑是其中最为有效的一种。GPB外链&#xff0c;指的是通过高质量、包收录且dofollow的顶级域名独立站来获得外链&#xff0c;这种外链策略能够显著提升目标网站的整体排名数据。 关键词排名的…

Java面试八股之MySQL的redo log和undo log

MySQL的redo log和undo log 在MySQL的InnoDB存储引擎中&#xff0c;redo log和undo log是两种重要的日志&#xff0c;它们各自服务于不同的目的&#xff0c;对数据库的事务处理和恢复机制至关重要。 Redo Log&#xff08;重做日志&#xff09; 功能 redo log的主要作用是确…

[matlab]周期性信号分析

目录 信号预处理 周期性特征提取方法 频谱分析 傅里叶变换 快速傅里叶变换&#xff08;FFT&#xff09; 周期图法 Welch法 自相关分析 时频分析 基于模型的方法 时间序列分解 应用实例 提取信号的周期性特征是一个在信号处理领域广泛应用的技术&#xff0c;特别是在…

业务咨询方案 + IT落地方案建议设计

近期&#xff0c;在深入探索咨询方案的实施与落地路径时&#xff0c;体会到了一系列心得与启示&#xff0c;旨在为未来的项目实践提供可借鉴的蓝本。 咨询方案的精髓&#xff0c;在于“业务引领&#xff0c;IT支撑”的核心理念。所以方案的前提是在于业务的梳理&#xff1b; …

java Web学习笔记(一)

1. 前置学习知识 JavaScript学习笔记 CSS3学习笔记 html学习笔记 2. Tomcat介绍 前端App的运行环境&#xff1a; 服务器 --> JRE --> Tomcat --> App Tomcat目录文件介绍 bin:该目录下存放的是二进制可执行文件&#xff0c;如果是安装版&#xff0c;那么这个目…

Java-链表中倒数最后k个结点

题目&#xff1a; 输入一个长度为 n 的链表&#xff0c;设链表中的元素的值为 ai &#xff0c;返回该链表中倒数第k个节点。 如果该链表长度小于k&#xff0c;请返回一个长度为 0 的链表。 数据范围&#xff1a;0≤&#x1d45b;≤1050≤n≤105&#xff0c;0≤&#x1d44e;…

【Qt5】入门Qt开发教程,一篇文章就够了(详解含qt源码)

目录 一、Qt概述 1.1 什么是Qt 1.2 Qt的发展史 1.3 Qt的优势 1.4 Qt版本 1.5 成功案例 二、创建Qt项目 2.1 使用向导创建 2.2 一个最简单的Qt应用程序 2.2.1 main函数中 2.2.2 类头文件 2.3 .pro文件 2.4 命名规范 2.5 QtCreator常用快捷键 三、Qt按钮小程序 …

69岁的Java之父-------宣布退休了?

文章目录 高斯林的编程之路Java的诞生与Oracle的分道扬镳从Google到AWS退休生活 &#x1f389;欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#x…

基于泰坦尼克号生还数据进行 Spark 分析

基于泰坦尼克号生还数据进行 Spark 分析 在这篇博客中&#xff0c;我们将展示如何使用 Apache Spark 分析著名的泰坦尼克号数据集。通过这篇教程&#xff0c;您将学习如何处理数据、分析乘客的生还情况&#xff0c;并生成有价值的统计信息。 数据解析 • PassengerId &#…

C语言笔记30 •单链表经典算法OJ题-2.移除链表元素•

移除链表元素 1.问题 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 2.代码实现&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h&g…

私人订制:模块化沙箱

沙箱技术&#xff0c;作为一种在计算机安全领域广泛应用的技术手段&#xff0c;其核心目的是为应用程序或进程提供一个隔离的运行环境&#xff0c;以限制其对系统资源的访问和潜在的安全风险。随着技术的不断发展&#xff0c;沙箱技术逐渐实现了模块化&#xff0c;这种模块化的…