[Python]一、Python基础编程

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.mzph.cn/pingmian/54091.shtml

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

相关文章

JAVA—组件及事件处理

对于使用JAVA的GUI程序的学习了解&#xff0c;学习常用的组件&#xff0c;容器和常用的一些API 1.java Swing 概述 java Swing 包下提供了强大的用于开发桌面程序的API 理解面向对象编而简单学习一些内容 2.窗口 介绍&#xff1a; 窗口是基于JFrame类实例的一个底层容器&#…

C++中的new与delete

目录 1.简介 2.底层 1.简介 new是升级版的malloc&#xff0c;它会先开空间再去调用构造函数。 delete是升级版的free&#xff0c;它会先调用析构函数再free掉空间。 class A { public:A(int a10, int b10){a a1;b b1;}private:int a;int b; };int main() {//new会先开空间…

Leetcode—322. 零钱兑换【中等】(memset(dp,0x3f, sizeof(dp))

2024每日刷题&#xff08;159&#xff09; Leetcode—322. 零钱兑换 算法思想 dp实现代码 class Solution { public:int coinChange(vector<int>& coins, int amount) {int m coins.size();int n amount;int dp[m 1][n 1];memset(dp, 0x3f, sizeof(dp));dp[0][…

Vue(12)——路由的基本使用

VueRouter 作用&#xff1a;修改地址栏路径时&#xff0c;切换显示匹配的组件 基本步骤&#xff08;固定&#xff09; 下载&#xff1a;下载VueRouter模块到当前工程引入安装注册创建路由对象注入&#xff0c;将路由对象注入到new Vue 实例中&#xff0c;建立关联 发现了#/表…

高德地图2.0 绘制、编辑多边形覆盖物(电子围栏)

1. 安装 npm i amap/amap-jsapi-loader --save移步&#xff1a;官方文档 2. map组件封装 <script lang"ts" setup> import AMapLoader from amap/amap-jsapi-loader import { onMounted, ref } from vue import { propTypes } from /utils/propTypesdefineO…

企业CAD图纸防泄密措施有哪些?10个真实有效方法分享

在工程设计领域&#xff0c;CAD图纸作为核心设计资料&#xff0c;其安全性至关重要。为了确保CAD图纸在存储、传输和使用过程中的机密性&#xff0c;企业需采取多种加密方法。以下介绍十种常用的CAD图纸加密方法&#xff0c;帮助企业有效保护其知识产权。 1.安秉网盾图纸加密 …

venn可视化

文章目录 前言一、数据准备二、可视化1.二维2.三维 3.数据保存总结 前言 韦恩图&#xff08;Venn diagram&#xff09;是一种用于可视化集合之间关系的图形工具。它是由英国逻辑学家约翰韦恩于1880年引入的。 韦恩图由一组圆和它们的交集区域组成。每个圆代表一个集合&#x…

Mac笔记本上查看/user/目录下的文件的几种方法

在Mac笔记本上查看/user/下的文件&#xff0c;可以通过多种方法实现。以下是一些常见的方法&#xff1a; 一、使用Finder 打开Finder&#xff1a;点击Dock栏中的Finder图标&#xff0c;或者使用快捷键Command F。 导航到用户目录&#xff1a; 在Finder的菜单栏中&#xff0…

简单了解微服务--黑马(在更)

认识微服务 单体架构 不适合大型复杂项目 微服务架构 将单体结构的各个功能模块拆分为多个独立的项目 拆取的独立项目分别开发&#xff0c;在部署的时候也要分别去编译打包&#xff0c;分别去部署&#xff0c;不同的模块部署在不同的服务器上&#xff0c;对外提供不同的功能…

2024ICPC网络赛1: C. Permutation Counting 4

题意&#xff1a; 给定 n n n个区间 [ L i , R i ] [L_i,R_i] [Li​,Ri​]设集合 A { { p i } ∣ p i 为排列&#xff0c; L i < p i < R i } A\{ \{ p_i\} | p_i为排列&#xff0c;Li<p_i<R_i\} A{{pi​}∣pi​为排列&#xff0c;Li<pi​<Ri​}&#xff…

MySQL底层为什么选择用B+树作为索引

首先&#xff0c;我们来想想为什么这么多数据结构&#xff0c;为什么要用树这种数据结构&#xff1f; 众多的数据结构在逻辑层面可分为&#xff1a;线性结构 和 非线性结构。 线性结构有&#xff1a;数组、链表&#xff0c;基于它们衍生出的有哈希表&#xff08;哈希表也称散…

[网络]从零开始的计算机网络基础知识讲解

一、本次教程的目的 本次教程我只会带大叫了解网络的基础知识&#xff0c;了解网络请求的基本原理&#xff0c;为后面文章中可能会用到网络知识做铺垫。本次我们只会接触到网络相关的应用层&#xff0c;并不涉及协议的具体实现和数据转发的规则。也就是说&#xff0c;这篇教程是…

Windows11:解决近期更新补丁后无法上网的问题

点击开始菜单&#xff0c;打开设置&#xff0c;点击Windows更新&#xff0c;点击更新历史记录&#xff0c;点击“卸载更新“&#xff0c;找到这个补丁更新卸载即可。

【Linux】网络层协议——IP

一、IP协议 在前面&#xff0c;我们学习了应用层和传输层&#xff0c;接下来&#xff0c;我们来学习网络层&#xff0c;网络层的主要功能是在复杂的网络环境中确定一个合适的路由。 1.1 IP协议的基本概念 主机&#xff1a;配有IP地址&#xff0c;有可以进行路由控制的设备路由…

香港电讯SASE解决方案:终端与云端的安全护航

现代工作模式存在网络安全隐忧 随着远程办公模式的普及&#xff0c;越来越多员工使用各种个人终端设备&#xff0c;如台式电脑、笔记本电脑、智能手机、平板电脑等进行协作办公。然而&#xff0c;由于IT人才短缺和员工隐私等因素&#xff0c;许多企业无法统一管理端点设备的安…

【自动驾驶】决策规划算法(一)决策规划仿真平台搭建 | Matlab + Prescan + Carsim 联合仿真基本操作

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

开源免费的工贸一体行业ERP管理系统

引言 在当今数字化浪潮汹涌澎湃的时代&#xff0c;中小企业面临着前所未有的挑战与机遇。如何实现数字化转型发展&#xff0c;成为了众多中小企业主心头的大事。 据相关数据显示&#xff0c;目前我国中小企业数量已经超过了 4000 万户&#xff0c;然而成功实现数字化转型的比例…

『功能项目』按G键持续显示对话内容【61】

本章项目成果展示 我们打开上一篇60靠近Npc显示可对话标识的项目&#xff0c; 本章要做的事情是当靠近Npc按G键显示内容后&#xff0c;再按G键实现两个人的对话显示功能 首先将以下资源图片放进Art文件夹中并设置为精灵模式 在桌面上创建一个文本 讲一下对话内容复制到文本中 …

k8s(kubernetes)的PV / PVC / StorageClass(理论+实践)

NFS总是不支持PVC扩容 先来个一句话总结&#xff1a;PV、PVC是K8S用来做存储管理的资源对象&#xff0c;它们让存储资源的使用变得可控&#xff0c;从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去自动化创建PV的组件。所有Pod使用存储只有一个原则&…

pgrouting实战应用

1&#xff09;下载地区地区数据&#xff08;下载数据是XYZM 四位数据&#xff09; 2&#xff09;下载裁剪行政区数据 3&#xff09;使用arcgis pro添加路网数据和行政区数据 4&#xff09;裁剪数据&#xff0c;仅历下行政区路网 5&#xff09;arcgis pro要素转线&#xff0…