[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;建立关联 发现了#/表…

C#使用Access数据库使用总结

话说这Access数据库确实是有点年代了&#xff0c;前面在深圳的一家放射医疗公司&#xff0c;数据库用的Access&#xff0c;后面在我的建议下&#xff0c;换成了SQLite。用SQLite多舒服&#xff0c;不用装Runtime&#xff0c;还可以用EF。Access得装Runtime&#xff0c;也用不了…

Spring Boot:现代化Java应用开发的艺术

目录 什么是Spring Boot&#xff1f; 为什么选择Spring Boot&#xff1f; Spring Boot的核心概念 详细步骤&#xff1a;创建一个Spring Boot应用 步骤1&#xff1a;使用Spring Initializr创建项目 步骤2&#xff1a;解压并导入项目 步骤3&#xff1a;构建和配置项目 po…

python实战实例:素数回文数的个数

题目描述 求 11 到 n 之间&#xff08;包括 n&#xff09;&#xff0c;既是素数又是回文数的整数有多少个。 输入格式 一个大于 11小于 10000。 输出格式 11 到 n之间的素数回文数个数。 输入输出样例 输入 # 23 输出 # 1 说明/提示 回文数指左右对称的数&#xff…

高德地图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…

LIMS实验室管理系统的特点

LIMS实验室管理系统在实验室管理中发挥着不可或缺的作用。首要特点是其强大的自动化数据管理功能&#xff0c;该系统能够无缝集成实验室从样品接收到测试结果录入与存储的全过程&#xff0c;显著提升了数据的准确性和可靠性&#xff0c;减少了人为错误的可能性。 流程优化是LI…

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

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

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

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

9月14日,每日信息差

第一、苹果已预订台积电 3 纳米制程并传闻将包下 2 纳米及后续 A16 首批产能&#xff0c;预计 2 纳米技术最快将在明年的 iPhone 17 Pro 中使用。台积电和苹果对于这些市场传闻均未予以证实。 第二、中国科学家利用 「爱因斯坦探针」 空间 X 射线天文台&#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;有可以进行路由控制的设备路由…

基于flask做大模型SSE输出

默认情况下&#xff0c;Fask以多线程模式运行&#xff0c;每个请求都落在一个新线程上。 SSE&#xff1a;基于HTTP的协议&#xff0c;用于实现服务器向客户端推送实时数据。使用长轮询机制&#xff0c;客户端通过HTTP连接向服务器发送请求&#xff0c;并保持该连接打开&#x…