Python学习记录01
1、编译型语言和解释型语言
解释型语言:程序不需要预先编译,以文本方式存储程序代码,会将代码一句一句直接运行。在发布程序时,看起来省了道编译工序,但在运行程序时必须先解释再运行。
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。
区别:
1.速度:编译型语言比解释型语言执行速度快
2.跨平台性:解释型语言比编译型语言跨平台性好
2、python的注释
单行注释:以#和空格开头,可以注释掉从**#**开始后面一整行的内容
多行注释:三个引号开头,三个引号结尾
3、pycharm的常用快捷键
ctrl+/:单行注释快捷键
ctrl+alt+l:全局格式化快捷键,适合强迫症患者使用hh
ctrl+d:添加与当前行相同的行
ctrl+y:删除当前行
我这里的keymap选用windows版本的;
可以自行修改快捷键,教程如下:https://jingyan.baidu.com/article/9faa7231805ca8063c28cb82.html)
4、变量
格式:变量名 = 值
python属于弱语言,变量声明的时候对数据类型不是很严格。
Java:int a = 100; float b = 0.1;
python:a = 100 //变量的数据类型取决于后面赋的值类型
name = ‘zhangsan’
5、数据类型
# 声明变量
money = 20
# 查看变量类型
type(money) # 这里不打印值
print(type(money)) # <class 'int'>
print(money) # 20
# 无论是单引号、双引号或三引号都是字符串类型
# 三引号是保留格式输出的字符串
a1 = '''
晚晴
李商隐
深居俯夹城,春去夏犹清。
天意怜幽草,人间重晚晴。
并添高阁迥,微注小窗明。
越鸟巢干后,归飞体更轻。
'''
print(a1)
6、类型转换
# input() 输入语句
# print() 输出语句
a2 = input("请输入一个数字:") # 输入10
print(a2) # 打印10 类型是string
print(type(a2)) # <class 'str'>
# 类型转换
print(type(int(a2))) # <class 'int'>
# ----------------------------------
c1 = 3.1
print(int(c1)) # 浮点型转整型没问题,打印3
c2 = input("请输入一个浮点数:") # c2是浮点型的字符串类型,如输入3.1,若输入的是整型的字符串类型如10,则不报错
print(int(c2)) # 浮点型的字符串类型转整型会报错,ValueError: invalid literal for int() with base 10: '3.1'
7、运算符
(1)算术运算符:+ - * / % // **
a = 1
b = 2
c = a + b # 3
print(a, b, c, sep=',') # 1,2,3
print(a + b) # 3
print(c - a) # 2
print(c * a) # 3
print(10 / 7) # 1.4285714285714286 除法
print(11 // 2) # 5 取商
print(11 % 2) # 1 取余
print(2 ** 3) # 2的3次幂=8
# --------------------------------
# 将输入三位数的个十百位分别输出
d1 = int(input("请输入一个三位数"))
ge = d1 % 10
shi = d1 // 10 % 10
bai = d1 // 100
print(bai, shi, ge)
(2)赋值运算符:= += -= *= /= //= **= %=
a = 8
b = 4
a += 2
print(a) # 10
a -= 2
print(a) # 8
a *= 2
print(a) # 16
a /= 2
print(a) # 8.0
a //= 3
print(a) # 2.0
a %= 3
print(a) # 2.0
a **= 3
print(a) # 8.0
(3)关系运算符:> < == != >= <= is
结果:true false
# 输入考试分数,判断成绩是否在80到100之间
score = float(input("输入分数:"))
print(80 <= score <= 100) # 这里和Java的处理手法不同:score<=100&&score>=80
(4)逻辑运算符:and or not
# 逻辑与 只要有假即假
# and 两边都是非0数字,结果是最后的数字值
a = 1
b = 3
print(a and b) # 3
c = 4
print(a and c) # 4
# and 两边只要有一边为0数字,结果就是0
d = 0
print(a and d) # 0
print(d and a) # 0
# ------------------------------
# 逻辑或 只要有真即真
# or
a = 1
b = 2
print(a or b) # 1
c = 3
print(c or b) # 3
d = 0
e = 0
print(a or d) # 1
print(d or a) # 1
print(d or e) # 0
# -----------------------------
# 逻辑非
# not
flag = True
print(not flag) # false
a = 1 # 非0即true
print(not a) # false
(5)位运算符
位运算是针对二进制进行的运算
& | ^ ~ << >>
n1 = 0b0110 # ---->6
n2 = 0b0010 # ---->2
# 与&
print(n1 & n2) # 2
"""
0b0110
0b0010
0b0010 -----> 2
"""
print(5 & 9) # 1
"""
0b0101 ----->5
0b1001 ----->9
0b0001 ----->1
"""
# 或|
print(n1 | n2) # 6
"""
0b0110
0b0010
0b0110 ----->6
"""
# 异或^:相同为0不同为1
print(n1 ^ n2)
"""
0b0110
0b0010
0b0100 ----->4
"""
# 取反~
print(~n1) # 9
print(~9)
"""
0b 0 0110
0b 1 1001 补码
0b 1 1000 反码
0b 1 0111 原码 -7
~9
0b 0 1001
0b 1 0110
0b 1 0101
0b 1 1010 原码 -10
"""
取反部分的详细解说请看这个链接:https://blog.csdn.net/weixin_42348856/article/details/125133270
# 移位运算
n = 12 # 0000 1100
# 左移一位相当于乘2
print(12 << 1) # 0001 1000 ----> 24 = 12 * 2
print(12 << 2) # 0011 0000 ----> 48 = 12 * 2 * 2
print(12 << 3) # 0110 0000 ----> 96 = 12 * 2 * 2 * 2
# 右移一位相当于除2
print(12 >> 1) # 0000 0110 ----> 6 = 12 // 2
print(12 >> 2) # 0000 0011 ----> 3 = 12 // 2 // 2
print(12 >> 3) # 0000 0001 ----> 1 = 12 // 2 // 2 // 2
(6)运算符优先级
8、格式化输出
字符串只能与字符串拼接
name = '小米'
age = 20
# print(name + "今年" + age + "岁了") 字符串只能与字符串拼接
print(name + "今年" + str(age) + "岁了")
python格式化输出符号列表:
格式化输出用法:中间的%是一个分隔符,它前面是格式化字符串,后面是要输出的表达式,多个表达式必须使用小括号( )包围起来
# 格式化输出
# 中间的%是一个分隔符,它前面是格式化字符串,后面是要输出的表达式,多个表达式必须使用小括号( )包围起来
print('%s今年%d岁了' % (name, age)) # 小米今年20岁了
print('%s今年%s岁了' % (name, age)) # 小米今年20岁了,任何类型都可以自动转型为字符串
money = 99.99
print('%s今年%d岁了,他有%f钱' % (name, age, money)) # 小米今年20岁了,他有99.990000
print('%s今年%d岁了,他有%.2f钱' % (name, age, money)) # 小米今年20岁了,他有99.99
9、进制转换
前缀:0b:二进制 0o:八进制 0x:十六进制
转十进制int(n);转八进制oct(n);转十六进制hex(n);转二进制bin(n)
# 十进制转二进制
n = 149
result = bin(n)
print(result) # 0b10010101
# 十进制转八进制
result = oct(n)
print(result) # 0o225
# 十进制转十六进制
result = hex(n)
print(result) # 0x95
# ---------------------------
n = 0x558
# 十六进制转化为十进制
result = int(n) # int 默认将字符串或数字转成十进制整型
print(result) # 1368
# 十六进制转化为二进制
result = bin(n) # bin 是向二进制转换,无论当前参数是几进制
print(result) # 0b10101011000
print(int(0b10101011000)) # 1368
# 十六进制转化为八进制
result = oct(n)
print(result) # 0o2530
print(int(0o2530)) # 1368