有编程基础的Python入门

我在想要学习Python时找了很多教程,并没有找到有编程基础学Python的简洁易懂的教程,于是写下了这篇文章,希望能够帮到他人,也留作我的学习笔记,这里参考了 菜鸟教程Python3 教程 。本文章省略了许多与C/C++Java类似的共同基础知识点,这里默认读者都已经掌握。

基础语法

首先经典:

print ("Hello World!")  # 这是注释

然后开始学习吧

Python最具特色的就是使用缩进来表示代码块,不需要使用大括号{},而且行尾不需要加分号,写多行需要加\

if False :
    print ("1")
elif 1 :
    print ("2", end = " ")  # 不换行输出要加上 end
    print ("3")
else:
    print ("4")

字符串切片str[start:end],其中start(包含)是切片开始的索引,end(不包含)是切片结束的索引
字符串的切片可以加上步长参数step,语法格式如下:str[start:end:step]

str='0123456789' # 注意字符串是单引号
 
print(str[0:-1])           # 输出 012345678(从右往左以 -1 开始)
print(str[2:])             # 输出 23456789
print(str[1:5:3])          # 输出 14(步长为3)
print(str * 2)             # 输出字符串两次
print(r'hello\nrunoob')     # 在字符串前面添加一个 r,表示原始字符串,不会发生转义,这里的 r 指 raw,即 raw string

数据类型

  • 可以这样赋值:
a, b, c = 1, 2, "runoob"
  • 冷知识:在 Python 3 里,只有一种整数类型 int,表示为长整型

  • 内置的type()函数可以用来查询变量所指的对象类型,还可以用isinstance()来判断

a, b, c, d = 20, 5.5, True, 4+3j
print(type(a), type(b), type(c), type(d))
# 输出 <class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
isinstance(a, int)
# 输出 True

虽然感觉没什么用。二者还有一点区别type()不会认为子类是一种父类类型,而isinstance()相反,这里不作赘述

  • TrueFalse可以和数字相加,True==1False==0

  • 使用del删除对象

del var_a, var_b
  • 数值的除法包含两个运算符:/返回一个浮点数,//返回一个整数

  • Python不支持单字符类型,单字符在Python中也是作为一个字符串使用

  • 单双引号不作区分

  • C字符串不同的是,Python字符串不能被改变

word = 'Python'
print(word[0], word[5])  # 输出自带空格
# 输出 P n
  • andornot表示与或非

列表、元组、集合与字典

  • 分别如下定义
list = ['abcd', 786 , 2.23, 'runoob', 70.2]  # 列表
tuple = ('abcd', 786 , 2.23, 'runoob', 70.2)  # 元组
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}  # 集合
dict = {'name' : 'runoob','code' : 1, 'site' : 'www.runoob.com'}  # 字典
  • 元组tuple与列表list类似,不同之处在于元组的元素不能修改。元组写在小括号()里,元素之间用逗号隔开
  • 二者只有一个元素时创建需要带逗号,因为不带逗号会被认为括号是运算符
list = [23,]
tuple = (23,)
print (list)
print (tuple)

输出

[23]
(23,)
  • 创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典
  • 字典还可如下定义
dict = {}
dict['one'] = "1 - 菜鸟教程"
dict[2]     = "2 - 菜鸟工具"
print (dict.keys())   # 输出所有键
print (dict.values()) # 输出所有值

推导式

  • 列表推导式,定义为:
[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]

或者 

[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]

例如输出长度大于 3 的字符串的大写形式:

names = ['Bob', 'Tom', 'alice', 'Jerry', 'Wendy', 'Smith']
new_names = [name.upper() for name in names if len(name) > 3]
print(new_names)
  • 元组、集合、字典推导式和列表推导式很像,其中元组用()定义,集合和字典用{}定义

迭代器与生成器

  • 迭代器对象从集合的第一个元素开始访问,只能往前不会后退。迭代器有两个基本的方法:iter()next()
list=[1, 2, 3, 4]
it = iter(list)  # 创建迭代器对象
for x in it:
    print (x, end=" ")
  • 使用了yield的函数被称为生成器generator。生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。当在生成器函数中使用yield语句时,函数的执行将会暂停,并将yield后面的表达式作为当前迭代的值返回
def countdown(n):
    while n > 0:
        yield n
        n -= 1
 
# 创建生成器对象
generator = countdown(5)
 
# 通过迭代生成器获取值
print(next(generator))  # 输出: 5
print(next(generator))  # 输出: 4
print(next(generator))  # 输出: 3
 
# 使用 for 循环迭代生成器
for value in generator:
    print(value)  # 输出: 2 1

函数

  • 基本定义:
def 函数名(参数列表):
    函数体
  • Python中,类型属于对象,对象有不同类型的区分,变量是没有类型的,例如:a=[1,2,3],其中[1,2,3]List类型,而变量a是没有类型,它仅仅是一个对象的引用(一个指针)
  • Python中,stringstuples、和numbers是不可更改的对象,而listdict等则是可以修改的对象:
    • 不可变类型:变量赋值a=5后再赋值a=10,这里实际是新生成一个int值对象10,再让a指向它,而5被丢弃,不是改变a的值,相当于新生成了a,在参数传递中类似于C++的值传递
    • 可变类型:变量赋值la=[1,2,3,4]后再赋值la[2]=5则是将list la的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了,在参数传递中类似于C++的引用传递

但是在Python中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

  • 使用关键字参数(形如a=1)允许函数调用时参数的顺序与声明时不一致,因为Python解释器能够用参数名匹配参数值,比如:
def printinfo( name, age ):
   print ("name:", name)
   print ("age:", age)
   return

printinfo( age = 20, name = "Heait" )
  • 匿名函数lambda定义如下:
lambda arguments: expression

lambda函数是一种小型、匿名的、内联函数,它可以具有任意数量的参数,但只能有一个表达式,例如:

x = lambda a, b: a + b
print (x(5, 6))  # 输出 11

数据结构

  • 列表可以实现栈,但由于它删除队头元素时间复杂度是O(n)的,所以一般用双端队列collections.deque实现队列,具体操作自行搜索资料,这里不再赘述
  • 使用del语句可以从一个列表中根据索引来删除元素,例如del a[2:4]
  • 在字典中遍历时,关键字和对应的值可以使用items()方法同时解读出来:
dic = {'Geralt': 'the brave', 'Ciri': 'the pure'}
for k, v in dic.items():
    print(k, v)

输入和输出

  • input()函数接受一个标准输入数据,返回为string类型
a, b = map(int, input().split())
print (a + b)
  • 格式化输出:
print ('这篇文章作者是:{}'.format('Heait'))
print ('创作年份是:%d' % 2024)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Alpha2:使用深度强化学习挖掘公式化的超额收益因子(附论文及源代码)

原创文章第577篇&#xff0c;专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 今天说说因子挖掘&#xff0c;我们之前交付的Deap遗传算法因子挖掘&#xff0c;大家可以前往温习一下&#xff1a; 源码发布Quantlab4.2&#xff0c;Deap因子挖掘|gplearn做不到的…

小程序分包加载、独立分包、分包预加载等

一、小程序分包加载 小程序的代码通常是由许多页面、组件以及资源等组成&#xff0c;随着小程序功能的增加&#xff0c;代码量也会逐渐增加&#xff0c; 体积过大就会导致用户打开速度变慢&#xff0c;影响用户的使用体验。分包加载是一种小程序优化技术。将小程序不同功能的代…

springboot基础入门2(profile应用)

Profile应用 一、何为Profile二、profile配置方式1.多profile文件方式2.yml多文档方式 三、加载顺序1. file:./config/: 当前项目下的/config目录下2. file:./ &#xff1a;当前项目的根目录3. classpath:/config/:classpath的/config目录4. classpath:/ : classpath的根目录 四…

LabVIEW环境下OCR文字识别的实现策略与挑战解析

引言 在自动化测试领域&#xff0c;OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;技术扮演着重要角色&#xff0c;它能够将图像中的文字转换成机器可编辑的格式。对于使用LabVIEW约5个月&#xff0c;主要进行仪器控制与数据采集的你而言…

什么是T0策略?有没有可以持仓自动做T的策略软件?

​​行情低迷&#xff0c;持仓被套&#xff0c;不想被动等待&#xff1f;长期持股&#xff0c;想要增厚持仓收益&#xff1f;有没有可以自动做T的工具或者策略&#xff1f;日内T0交易&#xff0c;做到降低持仓成本&#xff0c;优化收益预期。 什么是T0策略&#xff1f; 可以提…

知识图谱和 LLM:多跳问答

检索增强生成&#xff08;RAG&#xff09;应用程序通过将外部来源的数据集成到 LLM 中&#xff0c;擅长回答简单的问题。但他们很难回答涉及将相关信息之间的点连接起来的多部分问题。这是因为 RAG 应用程序需要一个数据库&#xff0c;该数据库旨在存储数据&#xff0c;以便轻松…

c++ 里如何检测内存泄露:比如用了 new ,但没有用 delete

&#xff08;1 方法一&#xff09; 用 MFC 框架的 F5 不带断点的调试。可以在输出窗口提示是否有内存泄露。 &#xff08;2 方法二&#xff09; &#xff0c;在 main 函数中添加如下代码&#xff0c;用 F5 不带断点的调试&#xff1a; int main() {_CrtSetDbgFlag( _CRTDBG_A…

JAVA 集合+对象复制工具类

JAVA 集合对象复制工具类 import jakarta.annotation.Nullable;import java.util.ArrayList; import java.util.List; import java.util.function.BiFunction; import java.util.function.Consumer;public class BeanUtil extends cn.hutool.core.bean.BeanUtil {/*** 数据拷贝…

Linux高并发服务器开发(十三)Web服务器开发

文章目录 1 使用的知识点2 http请求get 和 post的区别 3 整体功能介绍4 基于epoll的web服务器开发流程5 服务器代码6 libevent版本的本地web服务器 1 使用的知识点 2 http请求 get 和 post的区别 http协议请求报文格式: 1 请求行 GET /test.txt HTTP/1.1 2 请求行 健值对 3 空…

SQL索引事务

SQL索引事务 索引 创建主键约束(primary key),唯一约束(unique),外键约束(foreign key)时,会自动创建对应列的索引 1.1 查看索引 show index from 表名 现在这个表中没有索引,那么我们现在将这几个表删除之后创建新表 我们现在建立一个班级表一个学生表,并且学生表与班级表存…

EVM-MLIR:以MLIR编写的EVM

1. 引言 EVM_MLIR&#xff1a; 以MLIR编写的EVM。 开源代码实现见&#xff1a; https://github.com/lambdaclass/evm_mlir&#xff08;Rust&#xff09; 为使用MLIR和LLVM&#xff0c;将EVM-bytecode&#xff0c;转换为&#xff0c;machine-bytecode。LambdaClass团队在2周…

无人机水运应用场景

航行运输 通航管理&#xff08;海事通航管理处&#xff09; 配员核查流程 海事员通过VHF&#xff08;甚高频&#xff09;系统与船长沟通核查时间。 无人机根据AIS&#xff08;船舶自动识别系统&#xff09;报告的船舶位置&#xff0c;利用打点定位 功能飞抵船舶上方。 使用…

大型能源电力集团需要什么样的总部数据下发系统?

能源电力集团的组织结构是一个复杂的系统&#xff0c;包括多个职能部门和子分公司。这些子分公司负责具体的电力生产、销售、运维等业务。这些部门和公司协同工作&#xff0c;确保电力生产的顺利进行&#xff0c;同时关注公司的长期发展、市场拓展、人力资源管理、财务管理和公…

SCI一区级 | Matlab实现BO-Transformer-LSTM多特征分类预测/故障诊断

SCI一区级 | Matlab实现BO-Transformer-LSTM多特征分类预测/故障诊断 目录 SCI一区级 | Matlab实现BO-Transformer-LSTM多特征分类预测/故障诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实现BO-Transformer-LSTM特征分类预测/故障诊断&…

winform2

12.TabControl 导航控制条 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace zhiyou_…

发现CPU占用过高,该如何排查解决?

1.使用top命令 查看cpu占用最多的进程 2.使用 top -H -p pid 发现有两个线程占用比较大 3.将线程id转换为16进制 使用命令 printf 0x%x\n pid 4.使用 jstack pid | grep 线程id(16进制&#xff09; -A 20 &#xff08;显示20行&#xff09; 根据代码显示进行错误排查

2024年7月5日 (周五) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键&#xff0c;实现一键唤起、一键隐藏的 Windows 工具&#xff0c;并且支持窗口动态绑定快捷键&#xff08;无需设置自动实现&#xff09;。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《乐高地平线大冒险》为何不登陆…

娱乐圈惊爆已婚男星刘端端深夜幽会

【娱乐圈惊爆&#xff01;已婚男星刘端端深夜幽会&#xff0c;竟是《庆余年》二皇子“戏外风云”】在这个信息爆炸的时代&#xff0c;娱乐圈的每一次风吹草动都能瞬间点燃公众的热情。今日&#xff0c;知名娱乐博主刘大锤的一则预告如同投入湖中的巨石&#xff0c;激起了层层涟…

关于下载obsidian SimpRead Sync中报错的问题

参考Kenshin的配置方法&#xff0c;我却在输入简悦的配置文件目录时多次报错。 bug如下&#xff1a; 我发现导出来的配置文件格式如下&#xff1a; 然后根据报错的bug对此文件名进行修改&#xff0c;如下&#xff1a; 解决。

Java数据结构-树的面试题

目录 一.谈谈树的种类 二.红黑树如何实现 三.二叉树的题目 1.求一个二叉树的高度&#xff0c;有两种方法。 2.寻找二叉搜索树当中第K大的值 3、查找与根节点距离K的节点 4.二叉树两个结点的公共最近公共祖先 本专栏全是博主自己收集的面试题&#xff0c;仅可参考&#xf…