Python基础(一): 注释, 变量, 运算符, 输入输出语句等

注释

  • 单行注释: 使用#进行单行注释
# 这是单行注释
  • 多行注释: 使用 ''' '''""" """ 进行多行注释
'''
这里是多行注释
这里是多行注释
'''

"""
这里是多行注释
这里是多行注释
"""
  • 特殊注释: 中文支持
    • # encoding=utf-8
    • # coding-utf-8
    • # _*_coding:utf-8_*_ (推荐写法)

变量

  • 定义:
    • 变量名 = 值
    • 变量1, 变量2 = 值1, 值2
    • 变量1 = 变量2 = 值
a = 10

b, c = 5, 2

d = e = 10
  • 为什么产生变量:

    • 方便维护, 一处改, 处处改
    • 节省空间
  • 注意事项:

    • 一个变量只能引用一个值
    • 命名规范:
      • 字母数字下划线, 且不能以数字开头
      • 见名知意
      • 驼峰命名
      • 非关键字
      • 区分大小写
    • 变量名使用前一定要赋值

数据类型

  • 数据类型: 对程序处理的数据, 进行的分类, 比如整数, 浮点数, 字符串等

  • 为什么区分数据类型

    • 区分存储空间: 使用不同大小的空间存储不同的类型的值, 尽可能减少空间浪费
    • 根据不同数据类型的特性, 做不同的数据处理
      • 6 + 6: 数字相加, 结果是12
      • "6" + "6": 字符串拼接, 结果是"66"
  • 数据类型的常用分类:

    • Numbers (数值类型)
    • Bool (布尔类型)
    • String (字符串)
    • List (列表)
    • Set (集合)
    • Tuple (元组)
    • Dictory (字典)
    • NoneType (空类型)
  • 获取数据的类型: type(数据), 例如: type(6), type("6")

  • 静态类型: 变量类型一经定义, 就不可更改, 比如 a = 10, a的类型是Int, 不能改成Str类型, 即只能引用Int类型数据, 不能引用其他数据类型的数据

a = 10     # a的类型为Int
a = "10"   # 静态类型不能引用其他类型的数据, 报错
  • 动态类型: 变量在定义之后, 可以改变类型, 比如 a = 10, 此时a为Int类型, a = "10", 此时a为Str类型
a = 10     # a的类型为Int
a = "10"   # 的类型为Str
  • 强类型: 数据定义后, 类型不会轻易改变, 比如 a = "1", 执行 b = a + 1, 此时a的类型不会变为Int, 1也不会变为"1", 所以执行直接报错
a = "1"
b = a + 1  # 强类型, 报错
  • 弱类型, 数据定义后, 类型会发生改变, 比如a = "1", 指定 b = a + 1, 此时1的类型可能变成Str, 最后b的结果是11
a = "1"
b = a + 1  # 弱类型, 结果为 b = "11"

Python是强类型的, 动态类型的语言

运算符

  • 算数运算符
加: "+"        
    a = 1 + 2, 结果 a = 2
减: "-"        
    b = 5 - 3, 结果 b = 2
乘: "*"        
    c = 2 * 3, 结果 c = 6
幂: "**"       
    d = "3 ** 5", 结果 d = 243
除: "/"        
    e = 5 / 2, 结果: e = 2.5
整除: "//"      
    f = 5 // 2, 结果: f = 2
取余: "%"       
    g = 5 % 2, 结果: g = 1
赋值: "="       
    h = 3, i = 5
优先级: "()"    
    j = 3 + 2 / 2 + 1, j = 5。    k = 3 + 3 / (2 + 1), k = 4。
  • 复合运算符
+=: 
    a = 10, a += 5, 结果: a = 15      等价于  a = a + 5
-=:
    a = 10, a -= 5, 结果: a = 5       等价于  a = a - 5
*=:
    a = 10, a *= 5, 结果: a = 50      等价于 a = a * 5
/=:
    a = 10, a /= 4, 结果: a = 2.5     等价于 a = a / 4
%=:
    a = 10, a %= 4, 结果: a = 2       等价于 a = a % 4
**=:
    a = 10, a **= 2, 结果: a = 100    等价于 a = a ** 2
//=:
    a = 10, a //= 4, 结果: a = 2      等价于 a = a // 4
  • 比较运算符
    • 比较运算符的结果是Bool类型的值, 取值分别是 True 和 False
>:
    a = 10 > 2,     结果 a = True
<:
    b = 10 < 2,     结果 b = False
!=:
    c = 10 != 5,    结果 c = True
<>: Python2版本支持, 等价于 !=, Python3版本不支持<>
    d = 5 <> 5,     结果 d = False
>=:
    e = 5 >= 5,     结果 e = True
<=:
    f = 5 <= 6,     结果 f = False
==:
    g = 3 == 3,     结果 g = True

is: 比较唯一标识, 通过id(值), 获取唯一标识
    num = 10, id(10)
    h = [1]
    i = [1]
    result = h is i, 结果: result = False

链式比较运算符: 
    num = 10
    j = 5 < num < 20, 结果: j = True    其他语言写作: j = num > 5 && num < 20
  • 逻辑运算符
not: 非, 取反, 真 -> 假, 假 -> 真, 其他语言中的 !
    a = True,  b = not a,   结果: b = False
    c = False, d = not c,   结果: d = True

and: 与, 并且, and的两边, 必须都是真, 最终才会是真, 其他语言中的 &&
    e = True and False,     结果: e = False
    f = True and True,      结果: f = True
    即: 一假全假, 全真才真

or: 或, 或者, or的两边, 只要有一个条件是真的, 那么最终都是真的
    g = True or False,      结果: g = True
    h = False or False,     结果: g = False
    即: 有真即真, 全假才假

非Bool值的类型, 判断真假, 与OC一样, 非零即真, 非空即真
    print(False or 1),      打印: 1
    print(bool(1)),         打印: True
    print(bool(0)),         打印: False
    print(False or ""),     打印: False
    print(3 and 1),         打印: 1
    print(1 and 3),         打印: 3

输入

Python2:

  • raw_input
    • 格式: result = raw_input("提示信息")
    • 功能:
      • 会等待用户输入内容, 直到用户按下Enter
      • 会将用户输入的内容当做"字符串", 传递给接收的变量
  • input
    • 格式: result = input("提示信息")
    • 功能:
      • 会等待用户输入内容, 直到用户按下Enter
      • 会将用户输入的内容当做"代码"进行处理

eval函数, 将一段字符串当做代码运行处理

result = eval("1+1"), 结果 result = 2
  • 所以Python2中的input相当于 raw_input + eval 的功能组合

Python3

  • input: 相当于Python2中的 raw_input
    • 格式: result = input("提示信息")
    • 功能:
      • 会等待用户输入内容, 直到用户按下Enter
      • 会将用户输入的内容当做"字符串", 传递给接收的变量

输出

Python2

  • 打印: print语句
输出一个值:
print  5
输出一个变量:
num = 5
print num
输出多个变量:
num1 = 10
num2 = 20
num3 = 30
print num1, num2, num3
格式化输出:
name = "张三"
age = 18
方式一: print "名字是%s, 年龄是%d"%(name, age)
    结果: 名字是张三, 年龄是18
方式二: print "名字是{0}, 年龄是{1}".format(name, age)
    结果: 名字是张三, 年龄是18
输出到文件当中:
file = open("text.py", "w")    第一个参数: 文件名, 第二个参数: 权限
print >>file, "xxxxxx"         第一个参数: 输出文件, 第二个参数: 输出内容
输出不换行: 在结尾加一个逗号","  中间以空格分割
print 1,
print 2
打印: 1 2
使用"-"分割多个参数输出
print "-".join(["a", "b", "c"])
打印: a-b-c

Python3

输出一个值:
print(123)
输出一个变量:
num = 123
print(num)
输出多个变量
num1 = 1
num2 = 2
num3 = 3
print(num1, num2, num3)
格式化输出:
name = "zhangsan"
age = 18
print("我的名字是%s, 年龄是%d"%(name, age))
print("我的名字是{0}, 年龄是{1}".format(name, age))
输出到文件:
f = open("test.py", "w")
print("xxx", file=f)
输出不换行:
print("xxx", end=""), end的值默认为\n换行符
输出多个参数时, 使用指定分割方式分割:
print("1", "2", "3", sep="&&"),  打印:1&&2&&3
立即输出:
print("xxx", fluse=True)

补充: 占位格式符

  • 格式: %[(name)][flags][width][.precision]typecode
  • (name): 用于选择指定名称对应的值 (根据字典的key, 取出对应的value)
dictionary = {"age": 18, "name": "zhangsan"}
print("我的名字是%(name)s, 年龄是%(age)d" % (dictionary))
打印: 我的名字是zhangsan, 年龄是18
  • width: 表示显示的宽度
num = 5
print("%3d" % num), 打印: "  5", 这里双引号为了展示5的前面有一个空格, 实际打印不存在双引号
即: 当打印目标宽度不出3时, 在前面以空格的形式补齐3位

num1 = 3
print("%5d" % num), 打印: "    5", 双引号同上
此时打印宽度为5, 由于3的宽度只有1个位置, 所以前面有四个空格
  • flags: 主要与width配合使用, 主要有四个作用:
作用一: 不写时, 默认右对齐
num = 5
print("%3d" % num), 打印: "  5", 双引号同上

作用二: -(负号), 表示左对齐
print("%3d" % num), 打印: "5  ", 双引号同上

作用三: 空格, 主要用在数字前面加一个空格,与负数的负号对齐
num = 5
print("% d", num), 打印: " 5", 不论中间加几个空格, 最后结果只显示一个
例如:print("%    d", num), 打印: " 5", 只打印一个空格

作用四: 0, 不足部分, 使用0补齐
num = 5
print("%02d"), 打印: 05
主要应用场景, 对时间进行格式化
minutes = 5
seconds = 8
print("%02d : %02d" % (minutes, seconds)), 打印: 05 : 08
  • . precision: 表示浮点数后精度
保留小数点后2位:
num = 10.32131
print("%.2f" % num), 打印: 10.32

保留小数点后3位:
print("%.3f" % num), 打印: 10.321

不保留小数点
print("%.0f" % num), 打印: 10

保留小数点后7位:
print("%.7f" % num), 打印: 10.3213100

typecode, 必填项, 主要格式

数值:

  • i/d: 将证书, 浮点数转成十进制整数
num = 10.321
print("%d" % num), 打印: 10
  • o: 将整数, 转成八进制
num = 10
print("%o" % num), 打印: 12
  • x:将整数, 转成十六进制
num = 10
print("%x" % num), 打印: a
  • e: 将整数, 浮点数转成科学计数法
num = 1111111111
print("%e" % num), 打印: 1.111111e+09
  • E: 将整数, 浮点数转成科学计数法
num = 1111111111
print("%e" % num), 打印: 1.111111E+09
  • f: 将整数, 浮点数格式化成浮点数, 并保留六位小数
num = 5
print("%f" % num), 打印: 5.000000

num1 = 5.312231232
print("%f" % num1), 打印: 5.312231

num2 = 5.312
print("%f" % num2), 打印: 5.312000
  • g: 自动调整将整数, 浮点数转成浮点数, 超过六位数, 用科学计数法
num1 = 23.321000
print("%g" % num1), 打印: 23.321

num2 = 231.32
print("%g" % num2), 打印: 231.32

num3 = 100.1111111
print("%g" % num3), 打印: 100.111

num4 = 100111111111
print("%g" % num4), 打印: 1.00111e+11
  • G: 与g相同

字符串

  • s: 获取传入对象的__str__方法的返回值, 并格式化到指定位置
  • r: 获取传入对象的__repr__方法的返回值, 并格式化到指定位置
  • c: 整数, 将数字转成对应的uniode对应的值, 范围: 0<= i <= 1114111, py27之至此0-255

%%

  • 当字符串中存在格式化标识时, 需要使用%%表示一个百分号
num = 90
print("%d%%" % num), 打印: 90%

注意: Python中不存在将整数转成二进制的格式符, Python中不存在%b这个格式符

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,561评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,531评论 18 399
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,762评论 1 10
  • 2017年12月4日 星期一 风 寒冷的一天又开始了,早晨一起来,就听见小风呼呼的刮,所以送孩子的...
    宋雯楠妈妈阅读 141评论 0 0
  • 在塔罗的世界中,我最喜欢的一张牌便是魔法师,他活跃、自信、年轻且无所不能。他一手指天,一手指地,象征着“如此在上,...
    穆勒书信时光阅读 574评论 0 2