【02】Python:数据类型和运算符
写在前面的话
任何编程语言一开始都是从概念出发的,但各种编程语言之间的概念可能又会有差异,所以,老生常谈,我们还是需要从新过一遍 Python 的概念,当然,如果你已经是老司机了,完全可以一晃而过,不过老司机应该也不会再看这些基础。
另外,编程一开始都是枯燥的,原因有两,一是没有成就感,二是茫然自己怎么把这些知识串联起来。所以,希望有幸看到这里的都能够静下心好好看下去,柳暗花明,需要的是时间。你也可以一蹴而就去看框架。可能比较聪明就能跟着做出一些东西出来。
但是,那样的人终究是一只纸老虎,一开始很吓人,但慢慢的越来越笨批,因为本身基础没打好,如何建出高楼大厦,最多也就是海市蜃楼。
这里顺便介绍一下计算机的程序和指令:
计算机由运算器,控制器,存储器,输入设备,输出设备组成,运算器和控制器组成中央处理器,主要执行运算和控制指令处理数据。
代码注释
说明:所谓的注释,就是这一段内容在程序运行的时候不起作用,但是在我们查看代码的时候能给我清清楚楚说明这段代码的作用。
注意:注释是代码之本,对你也好,对别人也好,没注释的代码就是垃圾,不管你写的多漂亮。
在 Python 中,注意一般两种,单行注释和多行注释。
单行注释:# 注释内容,井号
多行注释:""" 注释内容 """,三个双引号
我们一般在注释符号后面加个空格,这是 PEP8 的规范,也便于阅读。例如:
# 这是一个单行注释 """
这是多行注释
这是多行注释
这是多行注释
这是多行注释
"""
在 Python 中有个特别的注释:
# -*- coding: utf-8 -*-
指定编码类型,写在 py 文件开始,推荐这句话成为大家以后写代码的规范。
输出输入
输出:之前我们使用了 hello world demo,然后打印输出了内容,这里通过实例详细讲讲 print 的用法:
print('打印字符串:')
print('hello world')
print('打印逗号作为分隔符的多个内容:')
print('My', 'name', 'is', 'Dylan', '!')
print('打印数字:')
print(100)
print('打印算术:')
print(100 + 100)
print('打印字符串拼接:')
print('' + '')
print('打印多次:')
print('A' * 10)
打印结果如图:
注意:如果两种不同类型的数据相 + 拼接,如 100 + '100',会报错:TypeError: can only concatenate str (not "int") to str
输入:用户自己输入内容赋值给变量,并且能够被程序后面使用。
my_name = input("Plz input your name:")
print('My name is', my_name)
结果:
注意:input 输入的值都是字符串,如果你需要的并不是字符串,记得对值得类型就行转换
变量常量
变量:存储数据的载体,计算机中变量实际是一块内存空间,能够被读取和修改。
在 python 中,变量命名有如下规则:
1. 数字,字母,下划线组成,不能字母开头。
2. 区分大小写。
3. 不用跟系统关键字同名,如:print
这里顺便提一提 PEP8 规范,这是一个非常严格的规范,但是希望大家都能遵守:
1. 小写字母组成,单词之间下划线连接。
2. 受保护的实例属性单下划线开头,后面会说。
3. 私有的实例属性使用双下划线开头,后面会说。
4. 见名知义。
例如:
# 变量定义
my_name = "Dylan"
my_age = 25
is_boy = True
user_info = None # 变量引用
print('My name is', my_name)
print('My age is', my_age)
print('You are boy:', is_boy)
print('Desc:', user_info)
结果:
常量:这里就一个特殊的,π,3.1415926
数据类型
我们这里只是简单的介绍一下数据类型:
1. 整数:
包括正整数,负整数,0。python 是可以处理任意大小的整数。
2. 浮点数:
也就是小数,但是包含科学计数法部分,如:1.2x10^10,有些地方也把 10 写成 e,如:1.2e10,0.0012 写成 1.2e-3。
值得注意的是,在 Python 中,整数永远是精确的,但是小数可能是结果四舍五入而来。
3. 字符串:
单引号或者双引号括起来的任意文本 ,如:"abc"。
当然,在字符串中有些特殊的,比如 \(转义符),几种常见的转义符:\n 换行,\t 制表符,\\ 符号本身
不转义可以使用 r。如下实例:
print('hello\nworld')
print('hello\tworld')
print('\\n\\')
print(r'hello\nworld')
结果:
4. 布尔类型:
至于两个 True 和 False。可以用于判断,后面会用到。
5. 空值:
只有一个,None,注意 Node 不是 0。
查看数据类型:type(变量)
a = 'hello'
print(type(a))
结果:
数据类型转换方法:
方法 | 作用 |
---|---|
int() | 将一个数字或者本身是数字的字符串转换成整型 |
float() | 将字符串转换成小数 |
str() | 将指定对象转换成字符串 |
chr() | 将整数编码成对应的字符串,也就是返回在数字对应ASCII 表中的值 |
ord() | 将字符串(一个字符)转换成对应编码(整数),也就是返回字母返回在 ASCII 表中的数字 |
示例:
a = 3.1415926
print(int(a)) b = 3
print(float(b)) c = 123
print(type(str(c))) d = 65
print(chr(d)) f = 'A'
print(ord(f))
结果:
格式化输出
我们只需要记住几个常用就是了:%d 整数占位符,%f 浮点数占位符,%s 字符串占位符,%x 十六进制整数
和转义符 \ 一样,% 的转义符就是 %,所以输出 % 就是 %%。
示例如下:
# 单个占位符
print('My name is %s' % 'Dylan') # 多个占位符
print('My name is %s,age is %d!' % ('Dylan', 25)) # 小数保留位数
print('%.2f' % 3.1415926) # 右对齐指定位数,不够前面补充字符:
print('%3d' % 2)
print('%03d' % 2) # 左对齐
print('%-5d#hello' % 2) # 百分比
print('%d%%' % 10)
结果:
当然还有另外一种格式化方式,只是用的比较少:
print('My name is {}, age is {}'.format('Dylan', 25))
print('My name is {0}, age is {1}'.format('Dylan', 25))
print('My name is {}, age is {age}'.format('Dylan', age=25))
运算符
参考如下表:
运算符 | 描述 |
---|---|
[数字] [:] | 下标/切片 |
~ + - | 按位与/正/负 |
** + - * / % // | 幂/加/减/乘/除/取模/取整(算数运算符) |
>> << | 右移/左移 |
& | 按位与 |
> < >= <= == != | 大于/小于/大于等于/小于等于/等于/不等于 |
is/is not | 身份运算符 |
in/not in | 成员运算符 |
not/or/and | 非/或/和(逻辑运算符) |
至于优先级,感兴趣的可以自己下去研究:( ) > not > and > or
1. 算术运算符示例:
# 算术运算符
a = 3
b = 5 print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a % b)
print(a // b)
print(a ** b)
结果:
2. 比较运算符:
# 比较运算符
a = 3
b = 5 print(a > b)
print(a < b)
print(a >= b)
print(a <= b)
print(a == b)
print(a != b)
结果:
3. 逻辑运算符:
and:同真为真
or:一真为真
not:取反
print(3 > 4 or 4 < 3 and 1 == 1)
print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1)
结果:
数值在逻辑比较时候:
x or y,x 真,值 x,x 假,值 y
x and y,x 真,值 y,x 假,值 x
例如:
print(0 or 4 and 3 or 7 or 9 and 6)
结果为:3
4. 成员关系运算符后面我们会单独在提!
练习示例
【1】输入圆半径计算周长和面积:
# 导入 pi
from math import pi # 用户输入半径
radius = float(input("请输入圆的半径:"))
# 计算周长和面积
cycle = 2 * pi * radius
area = pi * radius * radius
# 输出结果
print("半径为 %.2f 的圆的周长为 %.2f,面积为 %.2f" % (radius, cycle, area))
结果:
【2】判断闰年和平年:
# 用户输入年份
year = int(input("请输入年份:"))
# 判断闰年(现在没学 if,用上面的方法)
is_leap = ((year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0))
print("年份 %s 是否是闰年:%s" % (year, is_leap))
结果:
小结
这一节主要是 Python 基础中得基础,其中数据类型,运算符算是重中之重。输入可能在以后写代码得时候用得比较少,但是输出绝对不少。
在群里之前总是有人在问代码除了问题,不知道怎么解决,工具就给他报个错,然后人就傻了。其实对于初学者最为直观的调试方法就是将有些步骤的结果通过 print 打印出来,看结果是否符合我们的预期。
自然问题很多就得以解决。还有部分不能解决的,就可以结合 type 来检查,看类型是否正确。如果最后还不能解决,那问题可能就是你本身就写错了。
【02】Python:数据类型和运算符的更多相关文章
- python数据类型和运算符
一.python类型判断 type,isinstance type(变量或常量):返回数据类型 a = 23.3print(type(a))b = 2e3print(b, type(b))输出: &l ...
- [02]java数据类型和运算符等知识
00 Java中的注释 为了方便程序的阅读,Java语言允许程序员在程序中写上一些说明性的文字,用来提高程序的可读性,这些文字性的说明就称为注释.注释不会出现在字节码文件中,即Java编译器编译时会跳 ...
- IOS开发新手教程(一)-数据类型和运算符
OC语法入门(一) 数据类型和运算符 1.1凝视 凝视和其它语言一样,同意单行 ,多行凝视,一份规范的代码里面须要有一些正式的凝视,例如以下凝视: /* 这是多行 凝视 */ //这是多行凝视 OC语 ...
- Java 第二章 变量、数据类型和运算符
第二章 变量.数据类型和运算符 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据. ...
- PostgreSQL自学笔记:5 数据类型和运算符
5 数据类型和运算符 5.1 PostgreSQL 数据类型介绍 5.1.1 整数类型 整型类型 字节 取值范围 smallint 2字节 -2^15 ~ 2^15 int integer 4字节 - ...
- Java1变量数据类型和运算符
day02_变量数据类型和运算符 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class jh_01_数据类型说明 { public ...
- Java中的变量,数据类型和运算符
变量,数据类型和运算符 1.变量是一个数据存储空间的表示,它是储存数据的基本单元. 如何理解这句话,下面用一个表格可以形象的表达: 变量与房间之间的对应关系 房间名称 变量名 房间类型 变量类型 入住 ...
- 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...
- Python --表达式和运算符
表达式 由一个或者几个数字或者变量和运算符组合成的一行代码 通常会返回一个结果 运算符 由一个以上的值经过变化得到新值的过程就叫做运算 用于运算的符号称为运算符 运算符的分类: 算数运算符 比较或者关 ...
随机推荐
- linux 进程通信之 守护进程
守护进程(Daemon) Daemon(精灵)进程,是linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的时间.一般采用以d结尾的名字.从下面的进程信息可以看出, ...
- Linux(Centos7)搭建LAMP(Apache+PHP+Mysql环境)
目录 Linux搭建LAMP(Apache+PHP+Mysql环境)Centos7 一. 检查系统环境 1.确认centos版本 2.检查是否安装过apache 3.检查是否安装过Mysql 4.清理 ...
- Gmail Copilot是什么,有什么作用,好不好
Gmail Copilot是一个Chrome浏览器插件,它构建在Gmail之上; 它自动列出你和联系人的所有电子邮件和对话信息: 它是一个小型CRM,可以让你查看联系人的个人信息快照,以及过去的任何邮 ...
- 283.移动零 关于列表list与remove原理*****(简单)
题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 注意,该题目要求不开辟行的数组空间,在原数据上进行操作. 示例: 输入: [0,1,0,3,12 ...
- DLinNLP
2015蒙特利尔深度学习暑期学校之自然语言处理篇 用户1737318 8月3日至8月12日在蒙特利尔举办的深度学习署期学校中,来自不同领域的深度学习顶尖学者 (Yoshua Bengio, Leon ...
- koa中的路由
原生路由 网站一般都有多个页面.通过ctx.request.path可以获取用户请求的路径,由此实现简单的路由. const main = ctx => { if (ctx.request.pa ...
- Tableau 练习题
1.练习一 1. 提出问题:对某个学校或者一个城市的教育水平进行评估,或者多个学校的教育水平进行比较 指标:学生考试成绩 根据考试成绩高低判断教育水平:影响因素:学生餐饮,从多个维度分析,各城市在不同 ...
- jvm内存结构及对象漫谈(较全)
最近想整理一下GC相关的知识和经验,在整理之前先整理一下jvm的内存结构,后续会持续更新. jvm内存结构重要由两部分组成:线程共享区域与线程私有区域,如下图所示: 其中方法区和堆为线程共享区域,栈与 ...
- 图论问题(2) : hdu 1102
题目转自hdu 1102,题目传送门 题目大意: 输入一个n*n的邻接矩阵,其中i行j列代表从i到j的路径的长度 然后又m条路已经帮你修好了,求最短要修多长的路才能使所有村庄连接 不难看出,这道题就是 ...
- Spring security 知识笔记【入门】
一.生成spring boot项目文件 二.pom文件如下 <?xml version="1.0" encoding="UTF-8"?> <p ...