字符串
创建变量来保存字符串 字符串可以通过单、双、三引号创建字符串
message = "Hello,world"#变量mseeage,值为'hello,world'
print(message)
输出结果:Hello,world
Python3,有3种数值类型分别为:int(整形)
#创建变量为a,值为496
a = 496
#type查看类型
print(type(a))
输出结果:
float(浮点型) 十进制的存储方式 输入的数字中有小数点
e = 2.718281828
print(type(e))
输出结果:
complex(复数) 复数分为实数和虚数两部分 创建复数,先输入实数部分 然后是虚数部分,结尾写j 实数和虚数部分可以分开显示 .real属性可以输出实数值 .imag属性可以输出虚数值
z = 2 - 6.1j
print(type(z))
z.real
z.imag
输出结果:
运算中有4种运算符:+ - * / 先要了解数值间的转换局限 任何整数可以当作浮点数 在int最后加.0就能变为float或通过float()方法转,但返过来不一定行
x = 28 #int
y = 28.0 #float
float(28)
3.14是小数非整数
int(3.14) #如果将其转为int,会先四舍五入,然后转为int,不再是同一个数字了,可以说int比范围更小,反之float比int范围大
x = 1.732 #float
1.732 + 0j #浮点数可以转为复数,在float未尾加+0j就能变为complex
complex(1.732)#或通过complex()方法转
float(1.732+0j) #如果将complex转为float,会报错,所以说float比complex范围更小,反之complex比float范围更大
a = 2 #int
b = 6.0 #float
c = 12 + 0j #complex
py会自动将范围小的转为范围大的类型
a + b #int+float,float比int范围大,py将int转为float,再加结果是8.0是float非int
b - a #float-int,int比float范围小,py将a变为float,再减,结果4.0是float
a * 7 #int*int,结果14也是int
c / b #complex/float,float比complex范围小,b转为complex,再除,结果2+0j,值大小和2一样,但存储为复数类型,因为有虚数部分存在,py用j而不是不表示-1开根
16/5 #两个整数相除,结果是浮点型
20/5#即使没有余数,结果也是浮点型
16%5#%取余运算会返回余数
16//5#//可以返回商
别忘了运算中的规定,除数不得为0,不然py中会报错ZeroDivisionError,除法要小心,除非确定分母不是零,必须要为这种可能做准备
内置函数文件 第一个要知道的函数是dir(),目录directory的缩写 显示当前模块的属性列表 输出结果:['annotations', 'builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'spec']
当第一次启动解释器,会有4个标准对象, 现在学习__builtins__,这是一个包含公共对象的模块,想看__builtins__对象中的内容,查看__builtins__对象的目录,使用dir(builtins)即可
lst = dir(__builtins__)
print(lst)
输出结果:['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', 'build_class', 'debug', 'doc', 'import', 'loader', 'name', 'package', 'spec', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip'] 该表中包含了很多可用的函数和类型,想看具体一项目的使用方法,在函数help()中指定其名 例如查看一下函数pow()用法
lst = help(pow)
print(lst)
输出结果:pow(base, exp, mod=None) #有三个参数 Equivalent to baseexp with 2 arguments or baseexp % mod with 3 arguments
Some types, such as ints, are able to use a more efficient algorithm when
invoked using the three argument form.
lst = pow(2,10)
print(lst)
输出结果:1024
学习hex函数,依旧使用help()
lst = help(hex)
print(lst)
输出结果:Help on built-in function hex in module builtins:
hex(number, /) Return the hexadecimal representation of an integer.
>>> hex(12648430)
'0xc0ffee'
不需要导入库,直接用即可,hex的输入参数是数字类型
i = hex(10)
print(i)
输出结果:0xa
注意,结果在帮忙文档中说是字符串,因为有引号,也表明是字符串,还要知道在Py中十六进制以0x开头,如果想把十六进制转回十进制,直接输入十六进制值,注意就不要写引号了,Py解释器才会把它当作数字而不是字符串
布尔类型 布尔类型是Py内置的数据类型,只有True和False两个值,注意它们都要大写,输入True,Py返回True,如果输入不当,报错NameError.False同理,大写才正常,反之报错。
比较两个对象时会用到布尔类型 变量a和b,值分别为3和5
a = 3
b = 5
通过==进行是否相等比较
a == b #结果显示False,a和b是不同的整数,注意使用=是赋值操作,==是相等比较.
a != b #除此之外,测试相等还可以使用。!=不相等符号测试,因为a,b不相等,所以返回True
此外,编程语文中通常表示逻辑非,等价于不等于,最后测试两个数字是否相等,还可以通过大小判断
a > b #a是否大于b,False
a #a是否大小b,True
type(True) #通过type()看它们类型
type(False) 显示都是Bool,还可以通过传值给bool构造器来创建布尔
例如,传数值给它
bool(28)#输出True
bool(-2.71825)
bool(0) #输出False,在py中0认为是False,其他数字都是True
还可以将字符串转为布尔
bool('Turing') 输出True
bool('') 输出False,Py中空的字符串认为是False,其他字符串都是True,特殊值为False,其他为True
可以将其他类型转为布尔类型,也可以将布尔转为其他类型
str(True) #返回'True',True因为有引号,所以是字符串类型,布尔类型没有引号
str(False) #同理
还可以将布尔转为数字
int(True) #返回1
int(False) #返回0
5 + True #数字和True相加会发生什么,Py会认为将True和整数相加,都先转为整数,然后求和
10 * False #返回0,就像之前讲的运算操作一样,把False当作0,然后相乘,也许不是你要的结果
重点:Py中True当作1,False当作0
datetime模块
#首先导入datetime模块
import datetime
#键入dir(datetime)查看其内部列表
import datetime
time = dir(datetime)
print(time)
#输出结果:
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']
#模块中包含date、time、datetime三个类
#date类表示日期
#time类表示时间
#datetime类是date现time类的结合体,它是一个功能齐全的类,提供所需的一切来指定一个精确的时间点
先学习date类,在使用新类前,养成看帮助文档的好习惯
time = help(datetime.date)
print(time)
#输出结果
----------------------------------------------------------------------
class date(builtins.object)
| date(year, month, day) --> date object
#显示如何创建date对象,指定year,month,day才能创建一个date
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| max = datetime.date(9999, 12, 31)
|
| min = datetime.date(1, 1, 1)
|
| resolution = datetime.timedelta(days=1)
文档中显示支持从1年到9999年,编写任何代码都会持续一段时间
gvr = datetime.date(1956.1.31) #创建变量gvr,这是Python创始人的生日
print(gvr)
#输出结果:
1956-01-31
#可以单独访问year,month,day的值
print(gvr.year)
print(gvr.month)
print(gvr.day)
#datetime模块中还有timedelta类,用来修改日期
mill = datetime.date(2000,1,1) #创建变量maill
dt = datetime.timedelta(100) #创建变量dt,正数代表加,反之为减
print(mill+dt) #输出结果:2000-04-10
注意:Py默认时间格式:年-月-日 yyyy-mm-dd,但也可按个人喜好的格式设置
了解下格式字符串代码
显示一天的全写,然后是月,最后是年
有两种方式输出这种格式
传统方式对日期使用strftime方法,然后在其中指定格式代码
print(gvr.strftime("%A,%B,%d,%Y"))#星期的全写(星期三为Wednesday),月份的全写(4月份为April),常用日期,4个数字表示的年份
message = "GVR was born on {:%A,%B,%d,%Y}." #创建一个格式字符串,可以先输入任何你喜欢的文本到日期格式部分,写{:%A,%B,%d,%Y},现在输出message.
print(message.format(gvr)) #调用.format()方法,值是日期或时间对象
dir(datetime) #三个核心方法,date,time,datetime,使用这三个类创建对象
用date类创建日期
launch_date = datetime.date(2017,3,30)
launch_time =datetime.time(22,27,0) #用time类创建时间
launch_datetime = datetime.datetime(2017,3,30,22,27,0) #最后用datetime类创建日期时间都有的变量,前三个参数,年,月,日,后三个参数时,分,秒,输出三个对象,看有什么不同
print(launch_date)
2017-03-30 #launch_date只有日期信息
print(launch_time)
22:27:00 #launch_time只有时间信息
print(launch_datetime)
2017-03-30 22:27:0 #launch_datetime日期时间都有
像date对象一样,time也可输出每部分值
print(launch_time.hour)
print(launch_time.minute)
print(launch_time.second)
launch_datetime也可单独输出
print(launch_datetime.year)
print(launch_datetime.month)
print(launch_datetime.day)
print(launch_datetime.hour)
print(launch_datetime.minute)
print(launch_datetime.second)
另一个常见问题,访问当前日期和时间
使用datetime类中的today()方法
显示当前日期和UTC格式时间
now = datetime.datetime.today()#显示代码运行时的日期时间
print(now)
输出结果:
2020-11-16 20:01:44.131491
是否有提到datetime类可以记录到毫秒级
print(now.mictosecond) #像输出其他部分一样,使用.microsecond,这是相当精确的
另一个常见操作是,将获取datetime字符串转为datetime对象,来实操一下,创建字符串
moon_landing = "7/20/1969"
使用datetime类中的strptime方法,将时间字符串解析为datetime,方法名字有点诡异,尤其用于解析时期时间,建议改为parseString
moon_landing_datetime = datetime.datetime.strptime(moon_landing,"%m/%d/%Y")#第一个参数是字符串,第二个参数是格式,和之前datetime格式一样,打印就会看到标准的Py日期格式
print(moon_landing_datetime) #此时输出就是对象而非字符串
1969-07-20 00:00:00
print(type(moon_landing_datetime))
<class 'datetime.datetime'> #输出就是datetime类中的实例类型