码迷,mamicode.com
首页 > 编程语言 > 详细

python学习记录一

时间:2020-03-25 23:50:58      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:字符编码   ror   字符串   令行   就会   意义   val   代码   语言   

数据类型和变量

Python还允许用r‘‘表示‘‘内部的字符串默认不转义

>>> print(\\\t\\)
\       >>> print(r\\\t\\)
\\\t\\

 

Python允许用‘‘‘...‘‘‘的格式表示多行内容,可以自己试试:

>>> print(‘‘‘line1
... line2
... line3‘‘‘)
line1
line2
line3
>>> print(r‘‘‘hello,\n
... world‘‘‘)
hello,\n
world

上面是在交互式命令行内输入,注意在输入多行内容时,提示符由>>>变为...

 

布尔值 :True  False     and   or  not

空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头

a = 123 # a是整数
print(a)
a = ABC # a变为字符串
print(a)

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。

 

a = ABC
b = a
a = XYZ
print(b)

最后一行打印出变量b的内容到底是‘ABC‘呢还是‘XYZ‘?如果从数学意义上理解,就会错误地得出ba相同,也应该是‘XYZ‘,但实际上b的值是‘ABC‘,让我们一行一行地执行代码,就可以看到到底发生了什么事:

执行a = ‘ABC‘,解释器创建了字符串‘ABC‘和变量a,并把a指向‘ABC‘

技术图片

执行b = a,解释器创建了变量b,并把b指向a指向的字符串‘ABC‘

技术图片

执行a = ‘XYZ‘,解释器创建了字符串‘XYZ‘,并把a的指向改为‘XYZ‘,但b并没有更改:

技术图片

所以,最后打印变量b的结果自然是‘ABC‘了。

除法有两种

一种/精确的  一种//只是选取整数部分

 

对变量赋值x = y是把变量x指向真正的对象,该对象是变量y所指向的。随后对变量y的赋值不影响变量x的指向。

注意:Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在-2147483648-2147483647

Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。


字符编码

对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

>>> ord(A)
65
>>> ord()
20013
>>> chr(66)
B
>>> chr(25991)


如果知道字符的整数编码,还可以用十六进制这么写str:

>>> \u4e2d\u6587
中文
>>> ABC.encode(ascii)
bABC
>>> 中文.encode(utf-8)
b\xe4\xb8\xad\xe6\x96\x87
>>> 中文.encode(ascii)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: ascii codec cant encode characters in position 0-1: ordinal not in range(128)

纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。

>>> len(bABC)
3
>>> len(b\xe4\xb8\xad\xe6\x96\x87)
6
>>> len(中文.encode(utf-8))
6

可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。
>>> Hello, %s % world
Hello, world
>>> Hi, %s, you have $%d. % (Michael, 1000000)
Hi, Michael, you have $1000000.

%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

常见的占位符有:

占位符替换内容
%d 整数
%f 浮点数
%s 字符串
%x

十六进制整数

print(‘%2d-%02d‘ % (3, 1))
print(‘%.2f‘ % 3.1415926)
其实觉得就是把,换成是%就可以了

字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%

另外还有一种表示方式是format() 传入参数依次替换为{0},{1}等 不过这种写起来要麻烦多

>>> Hello, {0}, 成绩提升了 {1:.1f}%.format(小明, 17.125)
Hello, 小明, 成绩提升了 17.1%

这个就是{1:}这个是要的  

>>> name = 小明
>>> s1 = 75
>>> s2 = 85
>>> r = (s2 - s1) / s1 * 100
>>> print(r)
13.333333333333334
>>> print(%s今年成绩提高了%.1f%%%(name,r))
小明今年成绩提高了13.3%
>>> {0}今年成绩提高了{1:.1f%%}.format(name,r)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Invalid format specifier
>>> {0}今年成绩提高了{1:.1f}%.format(name,r)
小明今年成绩提高了13.3%
>>>

% 写外面

 

 

 


 

python学习记录一

标签:字符编码   ror   字符串   令行   就会   意义   val   代码   语言   

原文地址:https://www.cnblogs.com/Galesaur-wcy/p/12571132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!