附:另一篇博客地址
int 整型数据 整数
print(type(2),':',2)
输出:
float 浮点型 小数
print(type(3.14),':',3.14)
输出:
complex 复数
形如 a + b j a+bj a+bj的数据
print(type(3+4j),':',3+4j)
输出:
由一串字符组成(数字、字母、空格以及其他字符)
用" "
或' '
包围
print(type('python nb'),':','python nb')
print(type("python nb"),':',"python nb")
输出:
: python nb
: python nb
取值:True、False
用于逻辑运算
print(type(True),':',True)
print(2>3)
输出:
: True
False
注:python严格区分大小写,True与False第一位均为大写!
注意啦!!!!!!!!!!!!!!!!!!
这里着重强调!!python的真值判断!!!!与众不同!!!
首先说在python中,万物皆可Boolean!!!!
这句话的意思是,无论是python的内置对象还是自定义类的对象都可转换成Booelan值,也就是说,都有对应的真值!!!!!!!
python 官方文档镇楼!!!!!!!!!!!!!!!!!
Truth Value Testing
Any object can be tested for truth value, for use in an
if
orwhile
condition or as operand of the Boolean operations below.By default, an object is considered true unless its class defines either a
__bool__()
method that returnsFalse
or a__len__()
method that returns zero, when called with the object. 1 Here are most of the built-in objects considered false:
- constants defined to be false:
None
andFalse
.- zero of any numeric type:
0
,0.0
,0j
,Decimal(0)
,Fraction(0, 1)
- empty sequences and collections:
''
,()
,[]
,{}
,set()
,range(0)
Operations and built-in functions that have a Boolean result always return
0
orFalse
for false and1
orTrue
for true, unless otherwise stated. (Important exception: the Boolean operationsor
andand
always return one of their operands.)
看不懂木得关系,我给大家解释一下:
他就是说,python中所有的对象都有真值,都能放在if
或while
语句中
然而,他们的真值是怎么来的呢?原来python类中有这么两个魔术方法(魔术方法我个人感觉类似于java中的toString()
方法,就是会隐式调用)——一个是返回布尔类型的__bool__()
方法,一个呢是返回整形的_len_()
方法(很显然,返回长度!);那么就是靠这两个方法,只需要看他们的返回值就能决定对象的真值(返回0
或False
假,1
或True
为真)
还有除了一下几种为Fasle的情况,剩下的都为True:
None
和False
。0
,0.0
,0j
,Decimal(0)
, Fraction(0, 1)
''
,()
,[]
,{}
,set()
, range(0)
稍微总结一下就是:非假即真!一切与0有关的都为假(比如数值0,长度为0)
两个魔术方法的官方文档再次镇楼!!!!!!!!
object.``__bool__
(self)Called to implement truth value testing and the built-in operation
bool()
; should returnFalse
orTrue
. When this method is not defined,__len__()
is called, if it is defined, and the object is considered true if its result is nonzero. If a class defines neither__len__()
nor__bool__()
, all its instances are considered true.
object.``__len__
(self)Called to implement the built-in function
len()
. Should return the length of the object, an integer>=
0. Also, an object that doesn’t define a__bool__()
method and whose__len__()
method returns zero is considered to be false in a Boolean context.CPython implementation detail: In CPython, the length is required to be at most
sys.maxsize
. If the length is larger thansys.maxsize
some features (such aslen()
) may raiseOverflowError
. To prevent raisingOverflowError
by truth value testing, an object must define a__bool__()
method.
[data, data, data,...]
a = [1, 2, 3, 4, 5]
a[0]
c = [1, 'a', True, 1.0]
print(c[3])
输出:
1
True
(data, data, data,...)
b = (1, 2, 3, 4, 5)
print(b[0])
c = (1, 'a', True, 1.0)
print(c[3])
输出:
1
True
{key1: value1, key2: vaule2,...}
son = {201701: '小黑', 201702: '小强'}
print(son[201701])
dic = {1001: '小黑', 1002: True, "错误": False}
print(dic["错误"])
输出:
小黑
False
{data1, data2, data3,...}
s = {'小明', '小红', '小明', 192, 198.1, 192, True, False, False}
print(s)
print(s[0])
输出:
{192, True, False, '小明', 198.1, '小红'}
----------------------------------------------------------
TypeError Traceback (most recent call last)
in ()
1 s = {'小明', '小红', '小明', 192, 198.1, 192, True, False, False}
2 print(s)
----> 3 print(s[0])
TypeError: 'set' object does not support indexing
与其他语言基本一致,就是不需要声明类型,直接赋值,比如:
a = 3
而不是:
int a = 3;
而且python中不存在x++
操作,应使用x += 1
还有就是python中存在打包赋值
x, y = 1, 2
print(x, y)
x, y = y, x
print(x, y)
1 2
2 1
另外命名最好符合规范,增加代码可读性,像:
比较好的命名规范:
附:python保留字
顺序(不讲!任性)
循环
遍历:
for
元素 in
可迭代对象:
语句
顺便说一下for i in range(3)
相当于for (int i = 0; i < 3' i++)
for i in range(1, 5)
相当于for (int i = 1; i < 5; i ++)
while
while
条件:
语句
res = 0
for i in [1,2,3,4,5]: # 每次迭代,取出一个i
res += i # 对每次迭代取出的i 进行相应操作
print(res) # 遍历结束后,执行后续语句
while res>8:
res -= 1
print(res)
15
8
分支
if 条件:
条件为真,执行
else :
条件为假,执行
或者
if 条件1:
条件1为真,执行
elif 条件2:
条件1为假的条件下,条件2为真,执行
else:
上述条件都为假,执行
money = 15
if money < 10:
print('买的起')
else:
print('买不起')
if money < 10:
print('买的起')
elif money <= 15:
print('用花呗')
else:
print('彻底买不起')
买不起
用花呗
input()
:动态交互输入
x = input("请输入一个数字:")
print(x)
print(type(x))
请输入一个数字:4
4
可以看出,input()
方法返回的是字符串。也就是说,无论我们输入的什么都会被当做字符串处理
eval()
上面说到input()
方法返回的是字符串,那么我们要输入数值类型怎么办,就用eval()
去除引号
y = eval(input("请输入一个数字:"))
print(y)
print(type(y))
请输入一个数字:4
4
print()
:打印输出
相当于java
的System.out,println()
,默认自动换行。
for i in range(1,5):
print(i)
1
2
3
4
若不向自动换行,则用换行控制end =
for i in range(1,6):
if i == 5:
print(i)
else:
print(i, end = ' ')
print('hahaha',end = ' 你哈哈个锤子 ')
print('嘤嘤嘤')
1 2 3 4 5
hahaha 你哈哈个锤子 嘤嘤嘤
format()
:格式化输出方法
“字符{0: 修饰}字符{1: 修饰}字符.format(v0,v1)”
可以没有修饰,没有修饰就是将后面的参数填入前面对应的大括号内,v0填进0,v1填进1,如果大括号内没有内容,则默认顺序为0123。
"四是{0},10是{1}".format(4, '十')
Out[61]:
'四是4,10是十'
"14是{},四十是{}".format('十四', 40)
Out[63]:
'14是十四,四十是40'
"不要把14说成{1},也不要把四十说成{0}".format('十四', 40)
Out[63]:
'不要把14说成40,也不要把四十说成十四'
"四是{0},10不是{0}".format(4, '十')
"14是{},四十是{}".format('十四', 40)
Out[63]:
'14是十四,四十是40'
带修饰的:
修饰符优先级,越往上优先级越高:
上案例:
# 填充
print("{0:_^20}".format('test'))
输出 -> ________test________
print("{0:*<30}".format('test'))
输出 -> test**************************
# 数字千分位符
print("{0:,}".format(10000000))
输出 -> 10,000,000
# 精度
print("{0:.3f}".format(3.1415926))
输出 -> 3.142
# 百分数
print("{0:.1%}".format(0.818727))
输出 -> 81.9%
# 科学计数法
print("{0:.2e}".format(0.818727))
输出 -> 8.19e-01
# 类型
print("二进制 {0:b},Unicode码 {0:c},十进制 {0:d},八进制 {0:o},十六进制 {0:x}".format(250))
输出 -> 二进制 11111010,Unicode码 ú,十进制 250,八进制 372,十六进制 fa
I/O 太累了,不写了,以后再说吧
话不多说,上链接:
Python PEP-8编码风格指南中文版
PEP 8 – Style Guide for Python Code
给大家象征性的总结一下:
编码规范是为了增加代码可读性,但不要保持盲目,具体情况具体分析。
代码的布局靠缩进,4个字符,也就是一个Tab键(用空格缩进的代码是在蓝翔学的吗)
每行最大长度在79个字符之内,要不看不过来,太长了。
二元运算符前后有空格,并且前或后换行(看自己项目规定),逗号后有空格,混合运算低优先级有空格。
空行分隔函数(2)和类(2)还有方法(1)
UTF-8
要有注释
要有注解
注释分两种
# 这叫单行注释
'''
这叫多行注释
啊!
大海啊!
你都是水!
太累了!
告辞!
'''