python学习01——基础、数据类型、运算符

[TOC]

1. print()函数

换行打印:

print('helloworld')  # 输出字符
print(33) # 输出数字
print(3 + 1) # 输出表达式

print("hello", "word") # 不换行输出

ft = open("D:/test.txt", "a+") # a+表示追加输入
print("helloword", file=ft) # 将输出存储到指定目录

输出:

helloworld
33
4
hello word

2. Python关键字

import keyword

print(keyword.kwlist) # python 关键字

输出:

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue',
 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 
'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

3. 定义变量&变量的地址和值

name = "张三"
print("变量地址:", id(name))
print("变量类型:", type(name))
print("变量值:", name)

输出:

变量地址: 2008011485136
变量类型: 
变量值: 张三

4. 常用的数据类型

# 常用数据类型
value1 = 98
print("变量类型:", type(value1)) # int

value2 = 3.14159
print("变量类型:", type(value2)) # float

value3 = True
print("变量类型:", type(value3)) # bool

value4 = "你好"
print("变量类型:", type(value4)) # str

4.1 整数型进制

print("十进制:", 108) # 108
print("二进制:", 0b10101101) # 二进制0b开头
print("八进制:", 0o1272) # 八进制 0o开头
print("十六进制:", 0x12FE31) # 十六进制 0x开头

输出:

十进制: 108
二进制: 173
八进制: 698
十六进制: 1244721

4.2 浮点数计算不准确

from decimal import Decimal
f1 = 1.1
f2 = 2.2
print("不准确结果:", f1+f2) # 计算不准确
print("准确结果:", Decimal("1.1") + Decimal("2.2")) # 计算准确,用字符相加,不能用浮点数

输出:

不准确结果: 3.3000000000000003
准确结果: 3.3

4.3 浮点数可以进行整数运算

F1 = True; # = 1
F2 = False; # = 0
print(F1+1) # 2
print(F2+1) # 1

4.4 字符类型输入格式

# 单引号,只能在一行输入
str1 = 'hello world'

# 双引号,只能在一行输入
str2 = "hello world"

# 三引号,可以在多行输入
str3 = '''hello 
world'''

print("str1:", str1)
print("str2:", str2)
print("str3:", str3)

输出:

str1: hello world
str2: hello world
str3: hello 
world

4.5 类型转换

Python中不同类型的值不能使用+进行数据拼接,,需要用str()int()float()进行数据拼接。

s = "178"
i = 138
f = 122.88
b = True

print("value: ", str(s), "类型:", type(str(s)))
print("value: ", str(i), "类型:", type(str(i)))
print("value: ", str(f), "类型:", type(str(f)))
print("value: ", str(b), "类型:", type(str(b)))

print('----------int-----------')
print("value: ", int(s), "类型:", type(int(s)))
print("value: ", int(i), "类型:", type(int(i)))
print("value: ", int(f), "类型:", type(int(f)))
print("value: ", int(b), "类型:", type(int(b)))

print('-----------float----------')
print("value: ", float(s), "类型:", type(float(s)))
print("value: ", float(i), "类型:", type(float(i)))
print("value: ", float(f), "类型:", type(float(f)))
print("value: ", float(b), "类型:", type(float(b)))

输出:

value:  178 类型: 
value:  138 类型: 
value:  122.88 类型: 
value:  True 类型: 
----------int-----------
value:  178 类型: 
value:  138 类型: 
value:  122 类型: 
value:  1 类型: 
-----------float----------
value:  178.0 类型: 
value:  138.0 类型: 
value:  122.88 类型: 
value:  1.0 类型: 

其中要特别注意:

s1 = "178.8" # 不能转换成int
s2 = "sdf" # 不能转换成int 和 float
f2 = 178.8 # 转换成int 为178

5. 注释

写在开头,表示python文件的编码方式:

# coding:utf-8

多行注释:

'''
我是多行注释
嘿嘿嘿
'''

6. input()输入函数

可以让用户输入类容的函数,返回结果是str类型。

result = input("请输入一个数字:")
print("结果:", result, "类型:", type(result))

输出:

请输入一个数字:10
结果: 10 类型: 

7. 运算符

7.1 算数运算符

print(1 + 1) # 2 加法
print(1 - 1) # 0 减法
print(3 * 5) # 15 乘法
print(11 / 2) # 5.5除法
print(11 // 2) # 5 整除
print(11 % 2) # 1 取余
print(2 ** 3) # 8 幂运算

特别注意:

7.1.1 除法和整除、幂运算

print(10/3) #3.3333333333333335 结果有误差
print(11 / 2) # 5.5除法
print(11 // 2) # 5 整除
print(2 ** 3) # 8 幂运算

7.1.2 整除遇到正负时,向下取整

print(9 // 4) # 2
print(-9 // -4) # 2
print(9 // -4) # -3 向下取整!
print(-9 // 4) # -3 向下取整!

7.1.3 取余计算公式

取余计算公式为:

print(9 % 4) # 1  ----> 1 = 9 - (4 * 2)
print(-9 % -4) # -1 !!!!!!  ----> -1 = -9 - (-4 * 2)
print(9 % -4) # -3 !!!!!!!  ----> -3 = 9 - (-4 * -3)
print(-9 % 4) # 3 !!!!!!!!!  ----> 3 = -9 - (4 * -3)

7.2 赋值运算符

赋值运算符的顺序是从右到左。

a = 1+1
print(a, "type: ", type(a))

输出:

2 type:  

7.2.1 链式赋值

链式赋值的结果是指向地址都一样,但是计算后,会赋予它新的地址

a=b=c=10
print(a, "地址:", id(a))
print(b, "地址:", id(b))
print(c, "地址:", id(c))

print("----------------")

a=a/2
print(a, "地址:", id(a))
print(b, "地址:", id(b))
print(c, "地址:", id(c))

输出:

10 地址: 1724792832528
10 地址: 1724792832528

10 地址: 1724792832528
----------------

5.0 地址: 1724793866096
10 地址: 1724792832528
10 地址: 1724792832528

经过计算后,a的地址改变了

7.2.2 参数赋值

a = 5
a += 2 # 等于 a = a + 2  
print(a) # 7

7.2.3 解包赋值

a,b,c = 20.1,30,40.1
print(a, "类型:", type(a))
print(b, "类型:", type(b))
print(c, "类型:", type(c))

输出:

20.1 类型: 
30 类型: 
40.1 类型: 

7.3 比较运算符

a, b = 10, 20

print("a 等于 b? ", a == b)  # False
print("a 大于 b? ", a > b)  # False
print("a 小于 b? ", a < b)  # True
print("a 大于等于 b? ", a >= b)  # False
print("a 小于等于 b? ", a <= b)  # True
print("a 不等于 b? ", a != b)  # True

7.3.1 ===is符号比较

  • =:赋值
  • ==:比较的大小
  • isis not:比较地址的大小
x, y = 10, 10
print("x,y值相等?", x == y)  # True
print("x,y地址相等?", x is y)  # True
print("x地址:", id(x))  # x地址: 2303641059856
print("y地址:", id(y))  # y地址: 2303641059856

list1 = [1, 2, 3]
list2 = [1, 2, 3]
print("list值相等?", list1 == list2)  # True
print("list地址相等?", list is list2)  # False
print("list地址不相等?", list is not list2)  # True
print("list1地址:", id(list1))  # list1地址: 2558597854592
print("list2地址:", id(list2))  # list2地址: 2558597938816

7.4 布尔运算符

7.4.1 与运算 and

只有全部为True才为True,只要有一个为False,结果为False

t1 = t2 = True
f1 = f2 = False

print(t1 and t2)  # True
print(t1 and f1)  # False
print(f1 and t1)  # False
print(f1 and f2)  # False

7.4.2 或运算 or

只要有一个为True,结果就为True

print(t1 or t2)  # True
print(t1 or f1)  # True
print(f1 or t1)  # True
print(f1 or f2)  # False

7.4.3 非运算 not

结果取反。

print(not t1)  # False
print(not f1)  # True

7.4.4 innot in

s = "helloword"
list = [1, 2, 3, 4]
print("w" in s)  # True
print("w" not in s)  # False
print(1 in list)  # True
print(1 not in list)  # False

7.5 位运算

先转换成二进制再进行计算。

7.5.1 位与&

所有位都为1,结果才为1。

"""
位与:& 结果都为1才为1

     8: 00001000
     4: 00000100
result: 00000000  结果为0

"""
print(4 & 8)  # 0

7.5.2 位或|

所有位都为0,结果才为0。

"""
位或:| 结果都为0,才为0

     8: 00001000
     4: 00000100
result: 00001100  结果为12

"""
print(4 | 8)  # 12

7.5.3 异或^

两个位相同取0,相反取1。

"""
异或:^ 两个位相同取0,相反取1

     8: 00001000
     4: 00000100
result: 00001100  结果为12

"""
print(4 ^ 8)  # 12

7.5.4 左移运算<<

左移运算<<,向左移动,高位溢出,低位补0,相当于乘以2。

"""
左移运算<<,向左移动,高位溢出,低位补0,相当于乘以2

4<<1:
     4: 00000100
result: 00001000  结果为8

4<<2:
     4: 00000100
result: 00010000  结果为16

"""
print(4 << 1)  # 8
print(4 << 2)  # 16

7.5.5 右移运算>>

右移运算>>,向右移动,低位溢出,高位补0,相当于除以2。

"""
右移运算<<,向右移动,低位溢出,高位补0,相当于除以2

4>>1:
     4: 00000100
result: 00000010  结果为2

4>>2:
     4: 00000100
result: 00000001  结果为1

"""
print(4 >> 1)  # 2
print(4 >> 2)  # 1

7.5.6 位运算技巧

"""
&清零:

     4: 00000100 
     0: 00000000
result: 00000000  结果为0

"""
print(4 & 0)  # 0

"""
&判断奇偶:尾数为1就是奇数,尾数为0就是偶数

     4: 00000100 
     1: 00000001
result: 00000000  结果为0

"""
print((4 & 1) == 0)  # True

"""
^异或的定律:
  1.  a^b = c  ==>  a^c = b  ==> b^c = a
  2.  (a^b)^c  ==> a^(b^c)  
  3.  x^x = 0, x^0 = x
"""
# 交换两个数的值
m = 10
n = 20
m = m ^ n
n = m ^ n  # n = m ^ n ^ n = m
m = m ^ n  # m = m ^ n ^ m = n
print("m: ", m, "n: ", n)

"""
    a >> b & 1 代表检查 a 的第 b 位是否为 1,有两种可能性 0 或者 1
    a += 1 << b 代表将 a 的第 b 位设置为 1 (当第 b 位为 0 的时候适用)
"""

你可能感兴趣的:(python学习01——基础、数据类型、运算符)