[Python]一、Python基础编程

news2024/12/23 2:55:32

F:\BaiduNetdiskDownload\2023人工智能开发学习路线图\1、人工智能开发入门\1、零基础Python编程

1. Python简介

Python优点:

  1. 学习成本低
  2. 开源
  3. 适应人群广泛
  4. 应用领域广泛

1.1 Python解释器

下载地址:Download Python | Python.org

1.2 Python开发IDE -- Pycharm

2. 基础语法

2.1 注释

  • 注释的作用:用自然语言对代码进行解释说明,方便后期维护。
  • 注释的分类
    • 单行注释: # 注释内容
    • 多行注释:"""注释内容""" 或 '''注释内容'''
  • 解释器不执行注释的内容

2.2 变量

定义:程序中数据都是临时存储在内存中,为了更快速的查找和使用这个数据,通常把这个数据在内存中存储之后定义一个名称,这个名称就是变量。

标识符:
        - 由数字、字母、下划线组成;
        - 不能数字开头
        - 不能使用内置关键字

False None True and as assert 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
        - 严格区分大小写

2.3 数据类型

`type()` 函数用于返回对象的类型。它可以接受一个参数,也可以接受三个参数。

1. 当只传递一个参数时,它返回该参数的类型。
   x = 5
   print(type(x))  # 输出:<class 'int'>

2. 当传递三个参数时,`type()` 可以返回一个新的类型对象。语法如下:
   type(name, bases, dict)

   - `name`: 类型的名称。
   - `bases`: 元组,表示基类的类型。
   - `dict`: 字典,包含类型的属性。

 这种用法通常用于动态创建类:
   MyCustomClass = type('MyCustomClass', (object,), {'attr': 'value'})
   obj = MyCustomClass()

   print(obj.attr) # 输出value
   print(type(obj))  # 输出:<class '__main__.MyCustomClass'>

总之,`type()` 函数在Python中用于返回对象的类型,也可以用于动态创建新的类型。

动态创建类在编程中有几种常见用途,其中包括:

  1. 工厂模式(Factory Pattern):动态创建类允许根据运行时的条件创建不同类型的对象,从而实现工厂模式,根据需要创建不同种类的类实例。

  2. 运行时代码生成(Metaprogramming):有时候需要在运行时生成某些类以及这些类的属性和方法,这种动态创建类的机制可以用于元编程等需要在运行时构建代码的场景。

  3. 插件系统(Plugin System):通过动态创建类,可以实现插件系统,动态加载和实例化插件类以扩展应用程序的功能。

  4. ORM(对象关系映射):在ORM库中,动态创建类可以用于根据数据库模式创建对应的对象类。

2.4 输出

2.4.1 格式化占位符号

%s:字符串,也可以承接int,float等类型

%d:有符号十进制整数

%f:浮点数

%c:字符

%u:无符号十进制整数

%e:小写e的科学计数法

%E:大写E的科学计数法

%g:%f和%e的简写

%G:%f和%E的简写

%06d : 表示输出的整数显示位数,不⾜以 0 补全,超出当前位数则原样输出,
        print('--%06d--' % 123) # --000123--

        print('--%-6d--' % 123) # --123 --

%.2f : 表示⼩数点后显示的⼩数位数。
同时输出多个变量,%(a1,a2,a3):
name = 'Seven'
age = 18
weight = 71.4
stu_id = 1
print('我的名字是%s,今年%d岁,体重%.2fkg,学号是%06d' % (name, age, weight, stu_id))

# 我的名字是Seven,今年18岁,体重71.40kg,学号是000001

2.4.2 f-字符串

 f'{表达式}'

2.4.3 结束符

print ( ' 输出的内容 ' , end = "\n" )
Python 中, print() 默认⾃带 end="\n" 这个换⾏结束符,所以导致每两个 print 直接会换⾏展示,⽤户可以按需求更改结束符。
print ( ' 输出的内容 ' , end = "\t" )

2.5 输入

input ( " 提示信息 " )
输入函数input的特点:
  • 当程序执⾏到 input ,等待⽤户输⼊,输⼊完成之后才继续向下执⾏。
  • Python中, input 接收⽤户输⼊后,⼀般存储到变量,⽅便使⽤。
  • Python中, input 会把接收到的任意⽤户输⼊的数据都当做字符串处理。

2.6 转换数据类型

input会把接收到的任意用户输入都当作字符串处理,因此要正确处理不同类型的数据,需要进行数据类型的转换。

函数 说明
int(x [,base ])
x转换为⼀个整数,其中  base 参数用于指定数字的进制,默认是10。

num = int("12", 8) # base 8
print(num) # 输出: 10

将字符串 "12" 视为一个八进制数。因此,int("12", 8) 的结果是 十进制的10

float(x )
x 转换为⼀个浮点数
complex(real [,imag ])
创建⼀个复数, real 为实部, imag 为虚部,用j表示

com_i = complex(1, 4)
print(com_i) # (1+4j)

str(x )
将对象 x 转换为字符串
repr(x)

用于返回一个对象的字符串表示形式。

- 字典:

my_dict = {'name': 'Alice', 'age': 30}
print(repr(my_dict)) # 输出: {'name': 'Alice', 'age': 30}

自定义对象:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Person(name={self.name}, age={self.age})"

person = Person("Alice", 30)
print(repr(person))  # 输出: Person(name=Alice, age=30)

总结:

  • repr(x) 提供了对象的详细字符串表示,通常用于调试和记录。
  • 输出的字符串应该能够用来重建这个对象(如果可能)。
  • 对于自定义类,可以通过实现 __repr__ 方法来定义对象的字符串表示形式。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"P(name={self.name}, age={self.age})"


person = Person("Alice", 30)
print(repr(person))  # 输出: P(name=Alice, age=30)

eval(str)

eval(str) 函数用于将给定的字符串作为 Python 表达式进行求值,并返回求值结果。

x = 10
result = eval("x * 2")
print(result)  # 输出: 20

列表推导式:

result = eval("[x**2 for x in range(5)]")
print(result)  # 输出: [0, 1, 4, 9, 16]

调用函数:

def add(a, b):
    return a + b

result = eval("add(5, 3)")
print(result)  # 输出: 8

安全风险:

使用 eval() 时要小心,因为它可以执行任意代码。如果字符串来自不可信的来源,可能会导致安全问题。例如

user_input = "__import__('os').system('echo Hello, World!')"
eval(user_input)  # 如果 user_input 没有被安全处理,将执行该命令

总结

  • eval(str) 用于将字符串作为 Python 表达式进行求值。
  • 它可以处理算术表达式、变量引用、列表推导式和函数调用。
  • 使用 eval() 时需谨慎,尤其是在处理不可信输入时,以避免安全风险。
tuple(s)
将序列 s 转换为⼀个元组
list(s)

将序列s转化为一个列表list

bin(x)
将⼀个整数转换为⼀个⼆进制字符串

`bin(x)` 是 Python 中的一个内置函数,用于将一个整数转换为其二进制字符串表示形式。返回值是以 `'0b'` 开头的字符串,表示这是一个二进制数。

示例

1. 转换正整数:
   num = 10
   binary_str = bin(num)
   print(binary_str)  # 输出: 0b1010

2. 转换负整数:
   num = -10
   binary_str = bin(num)
   print(binary_str)  # 输出: -0b1010

3. 转换零:
   num = 0
   binary_str = bin(num)
   print(binary_str)  # 输出: '0b0'

总结

- `bin(x)` 将整数 `x` 转换为其二进制字符串形式。
- 返回的字符串以 `'0b'` 开头,表示这是一个二进制数。
- 可以处理正整数、负整数和零。

2.7 运算符

2.7.1 算术运算符

        

混合运算优先级顺序: () ⾼于 ** ⾼于 * / // % ⾼于 + -

2.7.2 赋值运算符

        

        

2.7.3 比较运算符

        

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

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

相关文章

人工智能(AI)的影响下人类的生活样子

讨论在人工智能(AI)的影响下人类的生活是什么样子 在21世纪的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经不再是遥不可及的未来科技&#xff0c;而是悄然渗透到我们日常生活的每一个角落&#xff0c;以一种前所未有的方式改变着我们的生活方式、工作模式乃至社会…

使用 Python 绘制 BTC 期权的波动率曲面

波动率曲面&#xff08;Volatility Surface&#xff09;是期权交易中展示隐含波动率随行权价&#xff08;strike price&#xff09;和到期时间&#xff08;expiry time&#xff09;变化的一种三维图形。 本文尝试通过 Python&#xff0c;通过 ccxt 基于从交易所获取期权的指标…

远程连接MySQL并操作

配置MySQL开发环境 如果你使用的是基于Debian的系统&#xff08;如Ubuntu&#xff09;&#xff0c;可以在终端通过如下步骤安装MySQL开发包。 更新软件包列表 运行以下命令以确保你拥有最新的软件包列表。 sudo apt-get update安装libmysqlclient-dev开发包 执行以下命令以…

python-字符排列问题

题目描述 有 n 个字母&#xff0c;列出由该字母组成的字符串的全排列&#xff08;相同的排列只计一次&#xff09;。输入格式 第一行输入是字母个数 n 。 接下来一行输入的是待排列的 n 个字母。输出格式 计算出的 n 个字母的所有不同排列总数。样例输入输出样例输入 4 aacc样例…

道路驾驶视角人车检测数据集 16000张 带标注 voc yolo

随着智能驾驶技术和车辆辅助系统的快速发展&#xff0c;道路驾驶视角下的多目标检测成为了保障行车安全的关键技术之一。为了提高自动驾驶车辆以及辅助驾驶系统的性能&#xff0c;需要大量的高质量标注数据来训练这些系统。本数据集旨在为道路驾驶视角下的人车检测提供高质量的…

python画图|中秋到了,尝试画个月亮(球体画法)

学习了一段时间的画图&#xff0c;已经掌握了一些3D图的画法&#xff0c;部分链接如下&#xff1a; python画图|极坐标下的3D surface-CSDN博客 python画图|3D参数化图形输出-CSDN博客 我们今天尝试一下月亮的画法。 【1】官网教程 首先还是到达官网教程学习&#xff1a; …

java: 警告: 源发行版 17 需要目标发行版 17(100% 解决)

1. 问题说明 Idea启动Springboot服务报错&#xff1a;java: 警告: 源发行版 17 需要目标发行版 17 2. 解决方案 Project Structure指定jdk版本为我们当前使用的版本&#xff1b; Java Compiler指定jdk为我们当前使用的版本&#xff1b; Invalidate Caches重启Idea。 如果还…

NTC温度电阻--100K 10K

100K温度电阻分度表 粗精度直接用公式计算 细精度用厂家的传感器参数来计算 Y C1 C2* y C3 * y * y*y static float get_ntc_temp(double Rt) { double y log(Rt);//122.6us48M double val; static const double c1 0.0008314; static const double c2 0.00026178;…

Linux下vscode配置C++和python编译调试环境

Visual Studio Code (简称 VSCode) 是由微软开发的一款免费、开源、跨平台的代码编辑器。它支持 Windows、macOS 和 Linux 操作系统&#xff0c;并且内置对多种编程语言的支持&#xff0c;包括但不限于 C/C、Python、JavaScript、TypeScript、Java 和 Go 等。VSCode 主要用于编…

【C语言进阶】动态内存与柔性数组:C语言开发者必须知道的陷阱与技巧

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C语言 “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C语言动态内存管理 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀C语言动态内存管理 &…

数据结构-链式二叉树-四种遍历

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【数据结构】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 数据结构-链式二叉树-四种遍历 1.前言2.前、中、后序遍历2.1前序遍历2.1中、后序遍历 3.层序遍历3.1递归实现3.2队列实现关于在Pop之后为什么还能用tmp访问节点&#x…

Docker学习笔记(四)单主机网络

简介 Docker从容器中抽象除出了底层的主机连接网络&#xff0c;使得程序不用关心运行时的环境。连接到Docker网络的容器将获得唯一的地址&#xff0c;其他连接到同一Docker网络的容器也可以根据该IP找到目标容器并发送消息。   但是容器内运行的软件没法方便的确定主机IP地址…

第二期: 第二节 , 裸机编程 , gpio

1 首先就是 看原理图&#xff1a; 这里有两个 &#xff2c;&#xff25;&#xff24; 核心板的原理图。 可以看到 是这个脚。 &#xff12; 然后就是 查看数据手册。 从 数据手册可以看出 &#xff0c;一共有这么多的 gpio 组&#xff0c; 但是这些 组 是有复用的&#xf…

非常实用的桌面日历 你桌面上的备忘录和提醒工具

在快节奏的现代生活中&#xff0c;时间管理成为了每个人不可或缺的技能。随着数字化时代的到来&#xff0c;我们虽然拥有了智能手机、平板电脑以及各类时间管理应用&#xff0c;但那份传统而温馨的桌面日历&#xff0c;却依然以其独特的魅力&#xff0c;在无数人的工作台上占据…

油耳拿什么清理比较好?好用的无线可视挖耳勺推荐

油耳的朋友通常都是用棉签来掏耳。这种方式是很不安全的。因为使用棉签戳破耳道和棉絮掉落在耳道中而引起感染的新闻不在少数。在使用过程中更加建议大家可视挖耳勺来清理会更好。不仅清晰度得干净而且安全会更高。但最近这几年我发现可视挖耳勺市面上不合格产品很多&#xff0…

澳元/美元价格:进一步上涨看向美联储

澳元/美元在0.6700关口附近波动不定。美元因美国经济数据强劲而重新获得上行动力。接下来&#xff0c;澳大利亚将公布西太平洋领先指数。 美元的再度走强使风险敏感资产承压&#xff0c;澳元/美元周二维持在0.6700关口上方的小幅区间内。尽管美元反弹&#xff0c;澳元仍成功维…

关于STM32项目面试题02:ADC与DAC篇(输入部分NTC、AV:0-5V、AI:4-20mA和DAC的两个引脚)

博客的风格是&#xff1a;答案一定不能在问题的后面&#xff0c;要自己想、自己背&#xff1b;回答都是最精简、最精简、最精简&#xff0c;可能就几个字&#xff0c;你要自己自信的展开。 面试官01&#xff1a;什么是模数转换/ADC&#xff1f;说说模数转换的流程&#xff1f; …

STM32F407 - 01

嵌入式概述 什么是嵌入式?嵌入式是以应用为中心,以计算机技术为基础 硬件可裁剪 适用于对体积 可靠性 功耗 性能等方面有着严格的专用计算机系统 简单来说 除了处理桌面PC和服务器之外所有的控制类设备都是嵌入式. 通用计算机和专用计算机的区别 两者的区别在于技术的发展和…

Python编码系列—Python组合模式:构建灵活的对象组合

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

质量与数量的博弈!大模型数据建设

质量与数量的博弈&#xff01;大模型数据建设 前言大模型数据建设 前言 大数据和人工智能&#xff08;DataAI&#xff09;技术正以惊人的速度改变着我们的生活和工作方式。大模型数据建设作为人工智能领域的核心组成部分&#xff0c;其重要性日益凸显。 大模型数据建设涉及到海…