当前位置: 首页 > 编程日记 > 正文

刻意练习:Python基础 -- Task01. 变量、运算符与数据类型

背景

我们准备利用17天时间,将 Python 基础的刻意练习分为如下任务:

  • Task01:变量、运算符与数据类型(1day)
  • Task02:条件与循环(1day)
  • Task03:列表与元组(2day)
  • Task04:字符串与序列(1day)
  • Task05:函数与Lambda表达式(2day)
  • Task06:字典与集合(1day)
  • Task07:文件与文件系统(2day)
  • Task08:异常处理(1day)
  • Task09:else 与 with 语句(1day)
  • Task10:类与对象(2day)
  • Task11:魔法方法(2day)
  • Task12:模块(1day)

这是我们组织 Python基础刻意练习活动 的第一次打卡内容。


Python 基础语法

1. 注释

  • 在 Python 中,# 表示注释,作用于整行
# 这是一个注释
print("Hello world")# Hello world
  • ''' ''' 或者 """ """ 表示区间注释,在三引号之间的所有内容被注释
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
print("Hello Lsgo") # Hello Lsgo"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号 
这是多行注释,用三个双引号
"""
print("hello china") # hello china

2. 运算符

算术运算符

print(3 % 2)  # 1
print(11 / 3)  # 3.6666666666666665
print(11 // 3)  # 3
print(2 ** 3)  # 8

比较运算符

print(1 > 3)  # False
print(2 < 3)  # True
print(1 == 1)  # True
print(1 != 1)  # False

逻辑运算符

print((3 > 2) and (3 < 5))  # True
print((1 > 3) and (2 < 1))  # False
print((1 > 3) or (3 < 5))  # True

三元运算符

x, y = 4, 5
if x < y:small = x
else:small = yprint(small)  # 4

有了这个三元操作符的条件表达式,你可以使用一条语句来完成以下的条件判断和赋值操作:

x, y = 4, 5
small = x if x < y else y
print(small)  # 4

优先级

  • 一元运算符高于二元运算符。
  • 先乘除后加减,有括号先括号内。
  • 比较运算符高于逻辑运算符。
print(-3 ** 2)  # -9
print(3 ** -2)  # 0.1111111111111111
print(-3 * 2 + 5 / -2 - 4)  # -12.5
print(3 < 4 and 4 < 5)  # True

3. 变量和赋值

  • 在使用变量之前,需要对其先赋值。
  • 变量名可以包括字母、数字、下划线、但变量名不能以数字开头。
  • Python 变量名是大小写敏感的,foo != Foo。

例子1

teacher = "小马的程序人生"
print(teacher)  # 小马的程序人生
teacher = "老马的程序人生"
print(teacher)  # 老马的程序人生

例子2

first = 2
second = 3
third = first + second
print(third)  # 5

例子3

myTeacher = "老马的程序人生"
yourTeacher = "小马的程序人生"
ourTeacher = myTeacher + yourTeacher
print(ourTeacher)  # 老马的程序人生小马的程序人生

4. 数字

类型名称示例
int整型-876, 10
float浮点型3.149, 11.11
bool布尔型True, False

整型

a = 1031
print(a, type(a))# 1031 <class 'int'>

通过 print 可看出 a 的值,以及类 (class) 是int

Python 里面万物皆对象(object),整型也不例外,只要是对象,就有相应的属性 (attributes) 和方法(methods)。

b = dir(int)
print(b)# ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

对它们有个大概印象就可以了,具体怎么用,需要哪些参数 (argument),还需要查文档。看个bit_length的例子。

a = 1031
print(bin(a))  # 0b10000000111
print(a.bit_length())  # 11

该函数是找到一个整数的二进制表示,再返回其长度。

浮点型

print(1, type(1))
# 1 <class 'int'>print(1., type(1.))
# 1.0 <class 'float'>a = 0.00000023
b = 2.3e-7
print(a)  # 2.3e-07
print(b)  # 2.3e-07

有时候我们想保留浮点型的小数点后 n 位。可以用 decimal 包里的 Decimal 对象和 getcontext() 方法来实现。

import decimal
from decimal import Decimal

Python 里面有很多用途广泛的包 (package),用什么你就引进 (import) 什么。包也是对象,也可以用上面提到的dir(decimal) 来看其属性和方法。比如 getcontext() 显示了 Decimal 对象的默认精度值是 28 位 (prec=28),展示如下:

a = decimal.getcontext()
print(a)# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])

让我们看看 1/3 的保留 28 位长什么样?

b = Decimal(1) / Decimal(3)
print(b)# 0.3333333333333333333333333333

那保留 4 位呢?用 getcontext().prec 来调整精度。

decimal.getcontext().prec = 4
c = Decimal(1) / Decimal(3)
print(c)# 0.3333

布尔型

布尔 (boolean) 型变量只能取两个值,TrueFalse。当把布尔变量用在数字运算中,用 10 代表 TrueFalse

print(True + True)  # 2
print(True + False)  # 1
print(True * False)  # 0

除了直接给变量赋值 TrueFalse,还可以用 bool(X) 来创建变量,其中 X 可以是

  • 基本类型:整型、浮点型、布尔型
  • 容器类型:字符、元组、列表、字典和集合
print(type(0), bool(0), bool(1))
# <class 'int'> False Trueprint(type(10.31), bool(0.00), bool(10.31))
# <class 'float'> False Trueprint(type(True), bool(False), bool(True))
# <class 'bool'> False True

bool 作用在基本类型变量的总结:X 只要不是整型 0、浮点型 0.0bool(X) 就是 True,其余就是 False

print(type(''), bool(''), bool('python'))
# <class 'str'> False Trueprint(type(()), bool(()), bool((10,)))
# <class 'tuple'> False Trueprint(type([]), bool([]), bool([1, 2]))
# <class 'list'> False Trueprint(type({}), bool({}), bool({'a': 1, 'b': 2}))
# <class 'dict'> False Trueprint(type(set()), bool(set()), bool({1, 2}))
# <class 'set'> False True

bool 作用在容器类型变量的总结:X 只要不是空的变量,bool(X) 就是 True,其余就是 False

确定bool(X) 的值是 True 还是 False,就看 X 是不是空,空的话就是 False,不空的话就是 True

  • 对于数值变量,0, 0.0 都可认为是空的。
  • 对于容器变量,里面没元素就是空的。

5. 数据类型与转换

  • 获取类型信息 type()
print(type(1))  # <class 'int'>
print(type(5.2))  # <class 'float'>
print(type(True))  # <class 'bool'>
print(type('5.2'))  # <class 'str'>
  • 获取类型信息 isinstance()
print(isinstance(1, int))  # True
print(isinstance(5.2, float))  # True
print(isinstance(True, bool))  # True
print(isinstance('5.2', str))  # True
  • 转换为整型 int()
  • 转换为字符串 str()
  • 转换为浮点型 float()
print(int('520'))  # 520
print(int(520.52))  # 520
print(float('520.52'))  # 520.52
print(float(520))  # 520.0
print(str(10 + 10))  # 20
print(str(10.1 + 5.2))  # 15.3

参考文献

  • https://www.runoob.com/python3/python3-tutorial.html
  • https://www.bilibili.com/video/av4050443
  • https://mp.weixin.qq.com/s/DZ589xEbOQ2QLtiq8mP1qQ

总结

如果有其它编程语言的基础,今天的内容应该比较容易理解。

好了,就到这里吧!See You!

相关文章:

linux ramdisk与tmpfs的深入分析

一)ramdisk 1)概念 ramdisk就是指使用一部分内存空间来模拟硬盘分区,也就是说ramdisk是一个块设备,要用mkfs格式化,才能真正使用它. .ramdisk在内核2.0/2.2版本就已经支持. .ramdisk设备是它不允许重新声明它的内存空间,所以ramdisk块通常会一直占用空间的内存直到系统重启. .r…

Unique Paths II

注意一个容易犯的错误&#xff1a;判断obstacleGrid是否为1时&#xff0c;else那部分不能少。因为如果不加&#xff0c;就会默认把那些值设置为0。 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int height ob…

零基础java培训如何规划学习路线

学习java的同学越来越多&#xff0c;很多小伙伴都想知道零基础如何学习java?如何安排学习路线&#xff0c;零基础java培训如何规划学习路线?那么针对以上问题&#xff0c;今天小编特意分享这篇Java学习指南&#xff0c;希望对那些想学Java&#xff0c;想零基础快速入门Java有…

CCIE-MPLS基础篇-实验手册

又一部前期JUSTECH&#xff08;南京捷式泰&#xff09;工程师职业发展系列丛书完整拷贝。 MPLS&#xff08;Multi-Protocol Label Switching&#xff09; 目录 1&#xff1a;MPLS 基础实验.... 3 1.1实验拓扑... 3 1.2实验需求&#xff1a;... 3 1.3实验步骤... 3 1.4校验…

[转载]Oracle 11g新特征之形式料理(2)

不可见的索引 您经常感应利诱&#xff0c;索引能否真的有利于用户的盘考&#xff1f;它也许有利于一个盘考&#xff0c;但会影响 10 个其他盘考。索引肯定会对 INSERT 语句形成负面影响&#xff0c;也会执行潜伏的删除和更新操纵&#xff0c;这取决于 WHERE 条件能否在索引中包…

技术图文:进一步完善自动化交易系统 - 03

背景 在 进一步完善自动化交易系统 - 02 这篇图文中&#xff0c;向大家详细介绍了&#xff0c;满足以下两个条件下&#xff1a; 拥有数字资产&#xff1a;BTC、EOS、USDT、ONEBigOne 提供交易对&#xff1a;ONE-USDT、ONE-EOS、ONE-BTC、EOS-BTC、EOS-USDT、BTC-USDT 我们可…

HTML5培训后好就业吗

HTML5技术在移动互联网行业的发展前景是非常可观的&#xff0c;以至于很多人都非常看好HTML5行业&#xff0c;想要学习HTML5技术的人越来越多&#xff0c;但大家都比较关心HTML5培训后好就业吗?就这个问题我们来看看下面的详细介绍吧。 HTML5培训后好就业吗?首先&#xff0c;…

股市复盘:本周交易数据分析

特别说明&#xff1a; 每周我会统计「股票市场」的数据为大家的投资提供辅助支持&#xff0c;每个人站的角度不同&#xff0c;面对同一份数据得到的观点亦或不同&#xff0c;我只提供数据&#xff0c;不提供观点&#xff0c;欢迎大家在图文下方留言&#xff0c;我们理性探讨。 …

Strategy Analytics:物联网安全令人担忧,成本节约效益也不确定

Strategy Analytics物联网战略研究报告《2016年物联网部署趋势及使用调查》发现&#xff0c;物联网安全问题令人担忧&#xff0c;同时&#xff0c;超过半数企业对物联网带来的成本节约效益也不太确定。56%的受访公司认为&#xff0c;大数据分析是推动物联网部署的首要驱动力。 …

SQLServer中设置XML索引

XML索引分为主XML索引和次XML索引&#xff1b;1.主XML索引&#xff1a;为了完整、一致的表示XML的值&#xff0c;格式&#xff1a;Create PRIMARY XML INDEX indexName ON tableName(columName);2.次XML索引&#xff1a;对于XPath和XQuery表达式&#xff0c;可以使用XML次索引&…

零基础能学好UI设计吗

UI设计在最近几年的发展前景是有目共睹的&#xff0c;越来越多的企业注重用户体验&#xff0c;而UI设计在这一方面是起着非常重要位置的&#xff0c;如今很多人都想要学习UI设计&#xff0c;那么零基础能学好UI设计吗?我们来看看下面的详细介绍。 零基础能学好UI设计吗?如果美…

技术图文:进一步完善自动化交易系统 - 04

背景 我们在 数字资产量化中的三角套利策略 这篇图文中详细的介绍了三角套利的原理以及代码实现。 在 进一步完善自动化交易系统 - 02 和 进一步完善自动化交易系统 - 03 中利用配置文件的方法&#xff0c;扩充至七个三角套利模型。 现在的问题是需要把应用程序和配置文件分别…

如何成为Android开发高手

(copy来的) 计划按这个步骤去学习很多Android开发者已经度过了初级、中级&#xff0c;如何成为一个Android高手呢? Android123就各个级别的程序员应该掌握哪些内容作为下面分类。 一、初级 1. 拥有娴熟的Java基础&#xff0c;理解设计模式&#xff0c;比如OOP语言的工厂模式要…

哪些物联网应用最适合采用雾计算?

有时在做出判断时真的是要靠自己&#xff0c;让别人为你指出方向是不可行的。 许多物联网系统所面临的情景与此相同。集中处理大量传感器数据会减慢决策&#xff0c;并增加带宽需求。而做出明智的决策最好靠近源头。 哪些决策应该靠近网络边缘&#xff0c;哪些应该靠近中心&…

学习web前端你必须要了解的主流框架!

如今的前端已经不再像以前一样就是简单的写写页面和调调样式而已&#xff0c;现在的前端越来越复杂&#xff0c;知识点越来越丰富。 要做WEB前端&#xff0c;就需要知道前端到底是什么&#xff0c;需要学习那些知识;前端至少要懂的三个部分&#xff1a;HTML&#xff0c;CSS&…

技术图文:如何实现汉诺塔问题?

背景 最近在辅导小孩们学习编程&#xff0c;在介绍函数递归时&#xff0c;最典型的就是汉诺塔问题了。 我在这里总结一下&#xff0c;以方便大家的学习。 汉诺塔问题源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上…

Unity----Scene加载问题

Unity官方提供了4种加载场景&#xff08;scene&#xff09;的方法&#xff0c;分别是&#xff1a; 1. Application.LoadLevel()&#xff1a;同步加载 2. Application.LoadLevelAsync():异步加载 3. Application.LoadLevelAddictive():同步附加式加载 4. Application.LoadLevelA…

基于Google Reader的个人知识管理方案

来源月光博客:http://www.williamlong.info/archives/2172.html. 先前我写的《基于Dropbox的个人知识管理平台》讲述了使用Dropbox在个人知识管理的保存知识方面的技巧&#xff0c;而个人知识管理的另一个重要环节是获取知识&#xff0c;今天月光博客就介绍一下如何通过Google …

学习java一定会用到的应用软件

想要成为一名合格的java程序猿&#xff0c;基础知识一定是要非常牢固的&#xff0c;扎实的基本功不仅可以快速的吸收新的知识&#xff0c;也会避开一些基本的语法错误&#xff0c;为了帮助程序员们减少一点工作压力&#xff0c;小编在此汇总了一些各大网络平台上推荐的程序员必…

LeetCode实战:两数之和

题目英文 Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. Example: Given nums [2, 7, 1…

忘记mysql 密码的取回方法

如果 MySQL 正在运行&#xff0c;首先杀之&#xff1a; killall -TERM mysqld(如果是windows,直接调出进程管理器,结束之) 以安全模式启动 MySQL &#xff1a;/usr/bin/safe_mysqld --skip-grant-tables & (windows 下 mysql安装所以盘/mysql/bin/safe_mysqld --skip-grant…

《社交网站界面设计(原书第2版)》——2.13 不要中断电子邮件

2.13 不要中断电子邮件 如果你将电子邮件作为广播媒介&#xff08;例如&#xff0c;发送提醒或通知&#xff09;却不让用户回复他们收到的消息&#xff0c;就比较差劲了。你也没理由不处理这些回复&#xff0c;你可以把这些回复当作通知转发给正确的收件人。这需要你在方便沟通…

学习Python遇到的热门问题整理

什么是Python?它可以做什么用?学习Python还是java?哪个比较好?Python适用于哪些场景?关于python&#xff0c;你是不是还有很多问题?那今天小编就来给大家答疑解惑了&#xff0c;给大家整理了学习Python遇到的热门问题&#xff0c;看完这篇文章&#xff0c;你会对Python有…

WinRM设置信任主机

启动https需要证书&#xff0c;所以只能用信任主机的方式。适应没有域的环境。 enable-psremoting winrm s winrm/config/client {TrustedHosts"XXX.XXX.XXX.XXX"} 转载于:https://www.cnblogs.com/flysoft/archive/2011/03/12/1982494.html

LeetCode实战:快乐数

题目英文 Write an algorithm to determine if a number is “happy”. A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until t…

idea的优秀博客推荐

2019独角兽企业重金招聘Python工程师标准>>> http://blog.csdn.net/qq_27093465/article/details/63683873 http://www.cnblogs.com/whc321/p/5669804.html 转载于:https://my.oschina.net/u/3621360/blog/1528716

花钱参加UI设计培训值得吗?

最近有很多人都想要学习UI设计&#xff0c;大家都比较看好UI设计行业的好前景&#xff0c;高薪资&#xff0c;那么花钱参加UI设计培训值得吗?这是目前很多人都比较关心的问题&#xff0c;下面小编就为大家做下详细的介绍。 ​花钱参加UI设计培训值得吗?对于零基础或者转行的人…

零基础自学用Python 3开发网络爬虫(一)

原文出处&#xff1a; Jecvay Notes &#xff08;Jecvay&#xff09; 由于本学期好多神都选了Cisco网络课, 而我这等弱渣没选, 去蹭了一节发现讲的内容虽然我不懂但是还是无爱. 我想既然都本科就出来工作还是按照自己爱好来点技能吧, 于是我就不去了. 一个人在宿舍没有点计划…

用什么心态对待水平糟糕的程序员[不靠谱的程序员、思路紊乱的程序员]?

这些年遇到了很多糟糕的程序员&#xff0c;其实真正是写程序料的人&#xff0c;普通IT公司大概只占1/3左右吧&#xff0c;其实有2/3的人都太适合当程序员&#xff0c;还不如早点儿改行该干啥就干啥了&#xff0c;其中有1/10的人往往是相对比较糟糕的。 01&#xff1a;招聘时&am…

LeetCode实战:三数之和

题目英文 Given an array nums of n integers, are there elements a, b, c in nums such that a b c 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. Example: Given array n…