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

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+bprint(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 = ageself.color = "white"def meow(self):                  #自定义方法,第一个参数也必须是selfprint(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 = nameself.has_tail = Truedef 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 inputprint("Invalid input. Please enter a number.")
except ZeroDivisionError:               # If user enters height as zeroprint("Invalid input. Height cannot be zero.")
except:                                 # If any other error occursprint("An error occurred. Please try again.")
else:                                   # If no error occursprint("Your BMI is:", bmi)
finally:                               # This block is always executedprint("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 add2class 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.000sOK
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.mzph.cn/diannao/44468.shtml

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

相关文章

Canvas:实现在线画板操作

想象一下&#xff0c;用几行代码就能创造出如此逼真的图像和动画&#xff0c;仿佛将艺术与科技完美融合&#xff0c;前端开发的Canvas技术正是这个数字化时代中最具魔力的一环&#xff0c;它不仅仅是网页的一部分&#xff0c;更是一个无限创意的画布&#xff0c;一个让你的想象…

python网络爬虫之Urllib

概述 urllib的request模块提供了最基本的构造HTTP请求的方法&#xff0c;使用它可以方便地实现请求的发送并得到响应&#xff0c;同时它还带有处理授权验证&#xff08;authentication&#xff09;、重定向&#xff08;redirection&#xff09;、浏览器Cookies以及其他内容。 …

DELTA: DEGRADATION-FREE FULLY TEST-TIME ADAPTATION--论文笔记

论文笔记 资料 1.代码地址 2.论文地址 https://arxiv.org/abs/2301.13018 3.数据集地址 https://github.com/bwbwzhao/DELTA 论文摘要的翻译 完全测试时间自适应旨在使预训练模型在实时推理过程中适应测试数据流&#xff0c;当测试数据分布与训练数据分布不同时&#x…

VBA实现Excel的数据透视表

前言 本节会介绍通过VBA的PivotCaches.Create方法实现Excel创建新的数据透视表、修改原有的数据透视表的数据源以及刷新数据透视表内容。 本节测试内容以下表信息为例 1、创建数据透视表 语法&#xff1a;PivotCaches.Create(SourceType, [SourceData], [Version]) 说明&am…

打卡第8天-----字符串

进入字符串章节了,我真的特别希望把leetcode上的题快点全部都给刷完,我是社招准备跳槽才选择这个训练营的,面试总是挂算法题和编程题,希望通过这个训练营我的算法和编程的水平能有所提升,抓住机会,成功上岸。我现在的这份工作,真的是一天都不想干了,但是下家工作单位还…

Mac虚拟机跑Windows流畅吗 Mac虚拟机连不上网络怎么解决 mac虚拟机网速慢怎么解决

随着技术的发展&#xff0c;很多用户希望能在Mac电脑上运行Windows系统&#xff0c;从而能够使用那些仅支持Windows系统的软件。使用虚拟机软件可以轻松满足这一需求。但是&#xff0c;很多人可能会有疑问&#xff1a;“Mac虚拟机跑Windows流畅吗&#xff1f;”&#xff0c;而且…

【AI前沿】深度学习基础:训练神经网络

文章目录 &#x1f4d1;前言一、前向传播与反向传播1.1 前向传播&#xff08;Forward Propagation&#xff09;1.2 反向传播&#xff08;Backpropagation&#xff09; 二、损失函数和优化算法2.1 损失函数&#xff08;Loss Function&#xff09;2.2 优化算法&#xff08;Optimi…

极狐Gitlab使用

目录 续接上篇&#xff1a;极狐Gitlab安装部署-CSDN博客 1. 关闭注册功能 2. 创建群组 3. 创建用户 5. 邀请成员到群组 6. 设置导入导出项目源 7. 通过gitee导入库 8. 通过仓库URL导入 9. 自创建项目 10. 默认分支main的权限 11. 使用普通用户进入自建库 12. 创建用…

【Linux 线程】线程的基本概念、LWP的理解

文章目录 一、ps -L 指令&#x1f34e;二、线程控制 一、ps -L 指令&#x1f34e; &#x1f427; 使用 ps -L 命令查看轻量级进程信息&#xff1b;&#x1f427; pthread_self() 用于获取用户态线程的 tid&#xff0c;而并非轻量级进程ID&#xff1b;&#x1f427; getpid() 用…

matlab仿真 模拟调制(上)

&#xff08;内容源自详解MATLAB&#xff0f;SIMULINK 通信系统建模与仿真 刘学勇编著第五章内容&#xff0c;有兴趣的读者请阅读原书&#xff09; 1.幅度调制 clear all ts0.0025; %信号抽样时间间隔 t0:ts:10-ts;%时间矢量 fs1/ts;%抽样频率 dffs/length(t); %fft的频率分…

国内从事人机交互的团队——浙江工业大学

一、背景 当我们选择一个新的课题后&#xff0c;需要清楚的了解从事该方向的团队都有哪些&#xff0c;这样可以及时跟踪和学习大牛团队的最新进展&#xff0c;以免自己认为的good idea&#xff0c;其实早就已经研究过了。 随着人形机器人的发展&#xff0c;机器人不仅需要在无…

【Windows】实现窗口子类化(基于远程线程注入)

目录 前言 原理解释 完整项目 相关文献 文章出处链接&#xff1a;[https://blog.csdn.net/qq_59075481/article/details/140334106] 前言 众所周知&#xff0c;DLL 注入有多种用途&#xff0c;如热修补、日志记录、子类化等。本文重点介绍使用 DLL 注入对窗口进行子类化。…

GOLLIE : ANNOTATION GUIDELINES IMPROVE ZERO-SHOT INFORMATION-EXTRACTION

文章目录 题目摘要引言方法实验消融 题目 Gollie&#xff1a;注释指南改进零样本信息提取 论文地址&#xff1a;https://arxiv.org/abs/2310.03668 摘要 大型语言模型 (LLM) 与指令调优相结合&#xff0c;在泛化到未见过的任务时取得了重大进展。然而&#xff0c;它们在信息提…

又上热搜!曝iPhone 16将支持40W快充

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 7月9日晚&#xff0c;微博话题“iPhone16系列或将支持40W快充”上了热搜榜&#xff0c;这已经是iPhone 16系列第N次上热搜了。 据爆料&#xff0c;iPhone 16系列充电功率将提升至40W&#xff0c;并且…

米家立式学习灯怎么样?书客、米家、孩视宝三款护眼大路灯巅峰PK!

米家立式学习灯怎么样?不知从什么时候开始&#xff0c;青少年成为了近视重灾区&#xff0c;主要促成近视的原因有长时间接触电子产品、学习时的不正确姿势、不良的灯光环境等&#xff0c;除了减少电子产品的使用以及多室外活动之外&#xff0c;剩下的就是室内孩子经常学习的光…

全球首款集成GPT-4o的智能眼镜AirGo Vision:AI眼镜的未来

引言 在人工智能和大模型技术迅猛发展的今天&#xff0c;AI硬件产品逐渐走入人们的生活。继Meta Ray-Ban智能眼镜之后&#xff0c;Solos公司在最近的香港智能眼镜峰会上发布了全球首款集成GPT-4o的智能眼镜AirGo Vision。本文将深入探讨这款AI智能眼镜的功能、技术特点以及其在…

侯捷C++面向对象高级编程(下)-2-non-explicit one argument constructor

1.构造函数 构造函数: Fraction(int num, int den 1) 初始化分子和分母&#xff0c;允许指定分子 num 和可选的分母 den。默认情况下&#xff0c;分母为 1。 加法运算符重载: Fraction operator(const Fraction& f) 重载了加法运算符 。这使得两个 Fraction 对象可以通过 …

Qt 异步实现事件的定时执行 - QTimer和QThread的联合使用

异步实现事件的定时执行 - QTimer和QThread的联合使用 引言一、核心源码二、其信号和槽函数简述三、定时器及其moveToThread简述 引言 在 Qt 中&#xff0c;如果想要定时执行某些事件或函数&#xff0c;通常会使用 QTimer 类。QTimer 允许设置一个时间间隔&#xff0c;当这个时…

echarts使用自定义图形实现3D柱状图

先看下效果吧 实现思路 使用graphic创建并注册自定义图形。根据每组的数据值&#xff0c;得到一个对应的点&#xff0c;从点出发用canvas绘制一组图形&#xff0c;分别为 顶部的菱形 const CubeTop echarts.graphic.extendShape({buildPath: function (ctx, shape) {const c1…

NVIDIA良心给显卡免费升级,只为挨更多的骂

起猛了&#xff0c;还真的以为 NVIDIA 良心发现了。 众所周知&#xff0c;英伟达对于咱们普通游戏玩家向来不屑一顾。只因为游戏业务在 NVIDIA 收入中占比较少。 在最新的 40 系显卡 RTX 4070 Ti Super 显卡中&#xff0c;NVIDIA悄悄给它来了一次核心「升级」&#xff0c;将原…