python基础(更新中)

2023-11-19


大数据分析的工作流程是什么样子?
首先,把基本面信息,历史数据,行业资讯等数据进行清洗和处理;然后,将处理后的数据导入到数学模型及编程设计中;最后通过分析后,做出适合当前市场行情的商务决策。
说的简单一点, 就是利用 Python 让计算机为我们分析数据,做出决策。 如今的券商,65%的指令都是由程序发出的,80%以上的跨国投行都已经使用大数据分析进行投资决策。
在这里插入图片描述

print函数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据类型

基本类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
浮点数虽说比整数多一个小数点,但是它存在一个 bug。因为浮点数的特点,导致它在计算机内运算时,结果不是那么精确,会有四舍五入的差。如:
在这里插入图片描述
不是 0.46 呢,而是一个比 0.46 小的数字。 这是因为 Python 在计算浮点数时,会有相应的转换机制,所以最终的小数精度会缺失。
在这里插入图片描述
数据类型的查询— type()函数
在这里插入图片描述

数据拼接

当加号两边都是整数的时候加号就起到了加法的作用
在这里插入图片描述

在这里插入图片描述
当两边都是字符串的时候加号就起到了拼接的作用。
在这里插入图片描述
只有字符串与字符串才能拼接

数据转换

数据转换的方法有3个: str() ,int(),float()
在这里插入图片描述

  1. str()函数
    可以将其他类型的数据变换成 str 类型。

  2. int()函数
    int()函数可以将其他类型的数据转换成整数类型,像 str()一样,你只需要将转换的数据放进 int()中。
    浮点形式的字符串是无法使用 int()进行数据转换的。
    虽然浮点形式的字符串不能使用 int()函数转换,但是浮点数是可以使用 int()函数来转换的。int()函数的本质是将数据转换整数,对于浮点数,就是取整处理,也就是只拿走整数部分。 不会做四舍五入操作。

    可是, 如果我想把字符串形式的浮点数’38.56’转换成浮点数怎么办?这就涉及到我们最后一个知识点—float()函数 。

  3. float()函数
    float()函数可以将整数和字符串转换成浮点数类型,但前提是,这个字符串中的内容一定是数字形式。
    在这里插入图片描述

条件判断

在这里插入图片描述
在这里插入图片描述

  1. 单项判断
    在这里插入图片描述
    那么,这段代码是如何实现的呢?

    首先,第一行代码,用“=”对当前情况进行赋值:将钱包 1000 赋值给变量 money。

    第二步,确定 if 条件: 如果钱包 money 的值>=1000, 就执行冒号后的下一行命令。

    第三步,用 print()命令打印出结果, 你去吃日料吧,带上钱,带上女朋友。搜嘎,原来 if 语句的单向判断如此简单。
    在这里插入图片描述
    会发现,在 if 语句的冒号后面,print()语句的前面,出现了几个空格,这又是为什么呢?在编程武林中,空格不叫空格,而是叫缩进。就如同我们写报告一样,每段开始都要空两格。

    对于 Python 而言,缩进是一种语法规则,它会帮助 Python 更好的分清代码结构与层次,计算机更好的执行 Python 代码。【注:缩进是四个空格或一个 Tab 键,且Tab 键和四个空格不能混用,千万注意!千万注意!】

    在 if 条件语句中,缩进是不需要手动按空格的。当你用英文输入法后按回车,我们的开发工具(用来编写 Python 代码的程序)为了方便大家编程,会自动实现下一行代码,向右缩进的功能。此时,被缩进的所有内容被称为 if 语句内的代码块。这就表示: 如果满足 if 条件,计算机就会执行 if 语句内的代码块。(缩进的所有内容)
    在这里插入图片描述

  2. 双向判断 :lf…else…
    Python 提供了 if…else…语句,让我们有了另一种选择。如果…不满足,就…
    在这里插入图片描述
    在这里插入图片描述

  3. 多项判断
    在这里插入图片描述
    第一步,第一行赋值,会自上而下的顺序挨个试一遍,看自己满足哪个条件。
    第二步,满足哪个条件,就执行哪个条件里面对应的代码块,不满足条件就继续往后试,试出结果为止。
    在这里插入图片描述

  4. if嵌套
    if 嵌套使用的场景是:在满足基础条件的情况下,在观察是否满足其他额外条件。
    在这里插入图片描述

标识符

  • 第一个字符必须是字母表中字母或下划线_。
  • 标识符的其他的部分由字母、数字和下划线组成。
  • 标识符对大小写敏感。
  • 在Python 3中,可以用中文作为变量名,非ASCIl标识符也是允许的了。

关键字

我们不能把关键字用作任何标识符名称。

Python的标准库提供了一个keyword模块,可以输出当前版本的所有关键字:(也就是说所有这些keyword都不能拿来做变量名或者标识符哦)

import keyword
keyword.kwlist

[‘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’]

注释

# 第一个注释
# 第二个注释
 
'''
第三注释
第四注释
'''
 
"""
第五注释
第六注释
"""
print ("Hello, Python!")

使用帮助

Python提供了dirhelp函数供用户查看模块、函数等的相关说明。

以查看math模块的相关说明为例,在Python命令窗口中输入**dir (math)**即可查看math模块的可用属性和函数。

import math
dir(math)

[‘doc’,‘file’, ‘loader’,‘name’, ‘package’, ‘spec’,…

help函数可以查看模块、函数等的详细说明信息。例如在import math后,输入命令help(math),将列出math模块中所有的常量和函数详细说明。如果输入help(math. sqrt)将只列出math.sqrt函数的详细信息。

import math
help(math.sqrt)

在这里插入图片描述

运算符

Python支持多种运算符,下面大致按照优先级从高到低的顺序列出了所有的运算符。
运算符的优先级指的是多个运算符同时出现时,先做什么运算然后再做什么运算。除了我们之前已经用过的赋值运算符和算术运算符,我们稍后会陆续讲到其他运算符的使用。

在这里插入图片描述

在这里插入图片描述
比较运算符有的地方也称为关系运算符,包括==、=、<、>、=、>=,我相信没有什么好解释的,大家—看就能懂。

唯一需要提醒的是比较相等用的是==,请注意这个地方是两个等号,因为=是赋值运算符,我们在上面刚刚讲到过,==才是比较相等的比较运算符。比较运算符会产生布尔值,要么是True要么是False。

在这里插入图片描述
逻辑运算符有三个,分别是and、or和not。

  1. and字面意思是"而且",所以and运算符会连接两个布尔值,如果两个布尔值都是True,那么运算的结果就是True;左右两边的布尔值有一个是False,最终的运算结果就是False。

    相信大家已经想到了,如果and左边的布尔值是False,不管右边的布尔值是什么,最终的结果都是False,所以在做运算的时候右边的值会被跳过(短路处理),这也就意味着在and运算符左边为False的情况下,右边的表达式根本不会执行。

  2. or字面意思是*或者”,所以or运算符也会连接两个布尔值,如果两个布尔值有任意一个是True,那么最终的结果就是True。当然,or运算符也是有短路功能的,在它左边的布尔值为True的情况下,右边的表达式根本不会执行。

  3. not运算符的后面会跟上一个布尔值,它的作用是得到与该布尔值相反的值,也就是说,后面的布尔值如果是True运算结果就是False,而后面的布尔值如果是False则运算结果就是True.

"""
比较运算符和逻辑运算符的使用
"""
flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not (1 != 2)
print('flag0 =', flag0)    # flag0 = True
print('flag1 =', flag1)    # flag1 = True
print('flag2 =', flag2)    # flag2 = False
print('flag3 =', flag3)    # flag3 = False
print('flag4 =', flag4)    # flag4 = True
print('flag5 =', flag5)    # flag5 = False

tips:比较运算符的优先级高于赋值运算符,所以flag0 = 1 1 先做 1产生布尔值True,再将这个值赋值给变量flag0。print函数可以输出多个值,多个值之间可以用,进行分隔,输出的内容之间默认以空格分开。

import math
r = float(input("输入半径:"))
area = math.pi * r ** 2
print("面积为:%.2f" %area)

转义字符

在这里插入图片描述

print('你好\n再见') #\n表示换行,相当于敲了一个回车键
print('你好我好\t大家都很好\t爱你们') 
print('\123\x6a') #8进制数123对应的字符是's',16进制数6a对应的字符是'j'

在这里插入图片描述
Tips: 在字符串前面加上字母r或R表示原始字符串,所有的字符都是原始的本义而不会进行任何转义。

print('C:\test\net') #字符串中“\t”和“\n”都表示转义字符
print(r'C:\test\net')

在这里插入图片描述

三重引号字符串

三重引号字符串是一种特殊的用法。三重引号将保留所有字符串的格式信息。如字符串跨越多行,行与行之间的回车符、引号、制表符或者其他任何信息,都将保存下来。在三重引号中可以自由的使用单引号和双引号。

print('''"what's your name?"
    "My name is jone"''')

在这里插入图片描述

字符串格式化

使用print()函数很容易输出各种对象,但print()函数无法输出设计复杂的格式。Python提供了字符串格式化的方法来处理复杂格式的字符串。

%符号格式化字符串

在这里插入图片描述

字符串格式的书写
  • []中的内容可以省略;
  • 简单的格式是%加格式字符,如%f、%d、%c等;
  • 当最小宽度及精度都出现时,它们之间不能有空格,格式字符和其他选项之间也不能有空格,如%8.2f。
常用格式字符的含义

在这里插入图片描述

name='Lily'
age=18
print('我叫%s,今年%d岁'%(name,age))#一次转换多个对象,这些对象表示成一个元组形式,位置与格式化字符一一对应

format()方法格式化字符串

在这里插入图片描述

print('我叫{},今年{}岁'.format('张清',18))
print('我叫{0},今年{1}岁'.format('张清',18))
print('我叫{1},今年{0}岁'.format(18,'张清'))

f-string格式化字符

f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去

name='张清'
age=18
print(f'我叫{name},今年{age}岁')

字符串截取

  • 字符串的截取就是取出字符串中的子串。截取有两种方法:一种是索引str[index]取出单个字符;另一种是切片str[[start]:[end]:[step]]取出一片字符。切片方式与列表部分介绍的一样。
  • 字符串中字符的索引跟列表一样,可以双向索引。

在这里插入图片描述

s='student'
print(s[0])
print(s[-1])
print(s[1:3])#取出位置1到位置2的字符,不包括位置3的字符
print(s[:3])#取出从头到位置2的字符
print(s[-2:])#取出从倒数第2个位置开始的所有字符
print(s[:])#取出全部字符
print(s[::2])#步长为2

在这里插入图片描述

str1 = 'hello, world!'
# 通过内置函数len计算字符串的长度
print(len(str1)) # 13
# 获得字符串首字母大写的拷贝
print(str1.capitalize()) # Hello, world!
# 获得字符串每个单词首字母大写的拷贝
print(str1.title()) # Hello, World!
# 获得字符串变大写后的拷贝
print(str1.upper()) # HELLO, WORLD!
# 从字符串中查找子串所在位置
print(str1.find('or')) # 8
print(str1.find('shit')) # -1
# 与find类似但找不到子串时会引发异常
# print(str1.index('or'))
# print(str1.index('shit'))

# 检查字符串是否以指定的字符串开头
print(str1.startswith('He')) # False
print(str1.startswith('hel')) # True
# 检查字符串是否以指定的字符串结尾
print(str1.endswith('!')) # True
# 将字符串以指定的宽度居中并在两侧填充指定的字符
print(str1.center(50, '*'))
# ******************hello, world!*******************
# 将字符串以指定的宽度靠右放置左侧填充指定的字符
print(str1.rjust(50, ' '))
#                                      hello, world!
str2 = 'abc123456'
# 检查字符串是否由数字构成
print(str2.isdigit())  # False
# 检查字符串是否以字母构成
print(str2.isalpha())  # False
# 检查字符串是否以数字和字母构成
print(str2.isalnum())  # True

str3 = '  jackfrued@126.com '
print(str3)
# 获得字符串修剪左右两侧空格之后的拷贝
print(str3.strip())

经典例子

1. 寻找水仙花数

tips: 水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身,例如: 1 3 + 5 3 + 3 3 = 153 1^3+5^3+3^3=153 13+53+33=153

for num in range(100, 1000):
    ge = num % 10
    shi = num // 10 % 10
    bai = num // 100
    if num == bai ** 3 + shi ** 3 + ge ** 3:
        print(num)

在上面的代码中,我们通过整除和求模运算分别找出了一个三位数的个位、十位和百位,这种小技巧在实际开发中还是常用的。用类似的方法,我们还可以实现将一个正整数反转,例如:将12345变成54321,代码如下所示。

num = int(input('num = '))
reversed_num = 0
while num > 0:
    reversed_num = reversed_num * 10 + num % 10
    num //= 10
print(reversed_num)

2. 百钱百鸡问题

tips: 百钱百鸡是我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?翻译成现代文是:公鸡5元一只,母鸡3元一只,小鸡1元三只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?

for x in range(0, 20):#设x为公鸡数,则100块钱最多买20只公鸡
    for y in range(0, 33):#设y为母鸡数,则100块钱最多买33只母鸡
        z = 100 - x - y #小鸡设为z
        if 5 * x + 3 * y + z / 3 == 100:
            print('公鸡: %d只, 母鸡: %d只, 小鸡: %d只' % (x, y, z))

在这里插入图片描述
上面使用的方法叫做穷举法,也称为暴力搜索法,这种方法通过一项一项的列举备选解决方案中所有可能的候选项并检查每个候选项是否符合问题的描述,最终得到问题的解。这种方法看起来比较笨拙,但对于运算能力非常强大的计算机来说,通常都是一个可行的甚至是不错的选择,而且问题的解如果存在,这种方法一定能够找到它。

3.CRAPS赌博游戏。

tips: CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子获得点数进行游戏。简单的规则是:玩家第一次摇骰子如果摇出了7点或11点,玩家胜;玩家第一次如果摇出2点、3点或12点,庄家胜;其他点数玩家继续摇骰子,如果玩家摇出了7点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数,玩家继续要骰子,直到分出胜负。

from random import randint

money = 1000
while money > 0:
    print('你的总资产为:', money)
    needs_go_on = False
    while True:
        debt = int(input('请下注: '))
        if 0 < debt <= money:
            break
    first = randint(1, 6) + randint(1, 6)
    print('玩家摇出了%d点' % first)
    if first == 7 or first == 11:
        print('玩家胜!')
        money += debt
    elif first == 2 or first == 3 or first == 12:
        print('庄家胜!')
        money -= debt
    else:
        needs_go_on = True
    while needs_go_on:
        needs_go_on = False
        current = randint(1, 6) + randint(1, 6)
        print('玩家摇出了%d点' % current)
        if current == 7:
            print('庄家胜')
            money -= debt
        elif current == first:
            print('玩家胜')
            money += debt
        else:
            needs_go_on = True
print('你破产了, 游戏结束!')

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python基础(更新中) 的相关文章

随机推荐

  • win10 redis后台启动命令

    windows 下后台启动 redis 进入 DOS窗口 在进入Redis的安装目录 输入 redis server service install redis windows conf loglevel verbose 安装redis服务
  • 解决You will need to adjust your conda configuration to proceed.Use `conda config --show channels` to

    在anaconda中安装pytorch框架时遇到的问题 出现以下的原因就是你当前设定的镜像源已经不支持该包了 所以需要重新设定 先移除源 设置为默认的源 先移除默认的源 查看源 查看源是defaults 然后输入下面的命令创建pytorch
  • SDUT--OJ《数据结构与算法》实践能力专题训练6 图论

    A 数据结构实验之图论一 基于邻接矩阵的广度优先搜索遍历 Description 给定一个无向连通图 顶点编号从0到n 1 用广度优先搜索 BFS 遍历 输出从某个顶点出发的遍历序列 同一个结点的同层邻接点 节点编号小的优先遍历 Input
  • 解决VC 6.0 fatal error C1033: cannot open program database '.\debug\vc60.pdb'问题

    VC 6 0编译了几次后 突然出现个 cannot open program database debug vc60 pdb 然后再编译就一直是这个错误信息 网上有几下几种说法 1 文件的属性问题 改为存档就行了 试过了 不行 2 只需修改
  • sql根据某一字段值的不同关联不同的表(一)

    一 数据库数据数据 deed records sport records match ticket record 二 sql语句 SELECT d integral CASE WHEN d deed type 1 THEN SELECT s
  • 第五章-数字水印-1-位平面

    数字水印概念 数字水印是一种将特定数字信息嵌入到数字作品中从而实现信息隐藏 版权认证 完整性认证 数字签名等功能的技术 以图片水印为例 水印嵌入过程 版权信息水印A嵌入到图像B中 得到含有水印的图像C 图像C与图像B在外观上基本一致 肉眼无
  • 机器学习之【蒙特卡罗法】

    机器学习之 蒙特卡罗法 一 蒙特卡罗法 二 随机抽样 三 数学期望估计 四 积分计算 五 示例 六 接受 拒绝法 七 示例 一 蒙特卡罗法 蒙 特 卡 罗 法 Monte Carlo method 也 称 为 统 计 模 拟 方 法 sta
  • Html如何引用公用的JS和CSS

    1 问题原因 项目开发几乎每个Html都会引用JS和CSS 那么就会有一些常用JS或者CSS 我们不希望每个Html文件都引用一堆文件 而是只引用公用的JS和CSS就可以了 2 解决办法 2 1定义commonJs js添加公用的JS文件引
  • LightingandRenderingScenes_译

    LightingandRenderingScenes 译 在这个教程中 你会学到怎样快速设置场景实现高视觉保真渲染和截图 然而这些技术的一部分是为实时体验 这些设置的一部分为实时体验可能太重表现了 你会学到怎样 1 设置和调整全球后处理体积
  • 10款Visual Studio实用插件

    目录 前言 Visual Studio插件搜索 Visual Studio插件市场 ReSharper 付费 GitHub Copilot 付费 CodeMaid 免费 CSharpier 免费 Visual Studio Theme Pa
  • 绪论、Ambari二次开发思路

    1 总体思路 1 对ambari admin ambari web模块进行单独编译 二次开发主要针对这两个模块 2 利用Brunch watch功能 对文件夹源码进行实时监控编译 提高开发效率 2 开发方向 1 参照HDP 基于Apache
  • Git安装

    1 Git官网 地址 https git scm com 下载自己需要的安装包 2 安装过程 选择安装位置 安装完成后右键 git bash here 打开
  • Unity3D实战【六】SetCursor 设置鼠标指针

    一 修改人物移动的方法 上一节使用的是将人物拖拽的方法实现人物移动 这一节我们进行修改一下 首先打开mousemanger脚本代码 单例模式 首先创建一个自身的static变量 通常取名Instance public static Mous
  • java基础知识精讲视频教程百度云盘分享!

    java基础知识精讲视频教程百度云盘分享 课程简介 本课程是由尚观科技java资深讲师讲述的java基础知识视频教程 适合零基础同学学习的Java基础视频教程 课程目录 1 java介绍 2 进制 3 标识符 4 变量二 5 类型转换 6
  • java并查集 - Kaiqisan

    大家好 都吃晚饭了吗 我是Kaiqisan 是一个已经走出社恐的一般生徒 最近被力扣的每日一题给整破防了 天天都是并查集 我麻了 所以最近都在学习并查集 现在终于搞懂了 于是有了这篇博客 文章目录 什么是并查集 代码实现 优化 代码 总结
  • 相机标定-kinectv1外参数标定(没有高度,pnp)

    1 相机镜头表面距离桌面1m 输入的图像没有内参文件 内参和畸变采用freenect包默认参数 棋盘格19 14 每一个4厘米 实际坐标为 左上角 0 0 点 水平向右为x正方向 垂直向下为y轴负方向 2 四个角点分别为 pixel poi
  • centOS 安装 elasticsearch 7.0.0和kibana7.0.0_单机版

    cd opt wget wget https artifacts elastic co downloads elasticsearch elasticsearch 7 0 0 linux x86 64 tar gz tar xzvf ela
  • Matlab 安装和使用xgboost的详细步骤(源码+安装包)

    几个重要的ref 看完后你可以解决你的问题 知乎官网指导 官网讨论 安装MinGW w64 安装需要的模块和源码可以从下面地址下载 链接 https pan baidu com s 1oqCMI7VmVxDzf9Vbaf4VJw pwd 1
  • Arduino与HX711称重传感器握手

    Arduino教程传送门 Arduino与HX711称重传感器握手 1 0 简介 2 0 实验材料 3 0 实验步骤 3 1 根据原理图搭建电路 3 2 新建sketch 拷贝如下代码并进行保存编译上传 3 3 实验现象 4 0 总结 1
  • python基础(更新中)

    文章目录 print函数 数据类型 基本类型 数据拼接 数据转换 条件判断 标识符 关键字 注释 使用帮助 运算符 转义字符 三重引号字符串 字符串格式化 符号格式化字符串 字符串格式的书写 常用格式字符的含义 format 方法格式化字符