python基础(一)
一、python简介
1.python定义
是一种免费、开源、跨平台、动态、面向对象的编程语言。
2.python的执行方式
第一种是交互式:
在命令行输入指令,回车即可得到结果。
>>> print("hello world!")hello world!>>> 1+2*37
第二种是文件式(常用):
将指令编写到.py文件,可以重复运行程序。
3.程序的执行过程
- 计算机只能识别机器码(1010),不能识别源代码(python)。
- 由源代码转变成机器码的过程分成两类∶编译和解释。
- 编译:在程序运行之前,通过编译器将源代码变成机器码,例如:C语言。
优点∶运行速度快。
缺点∶开发效率低,不能跨平台。 - 解释:在程序运行之时,通过解释器对程序逐行翻译,然后执行。例如:Javascript。
优点∶开发效率高,可以跨平台。
缺点︰运行速度慢。 - python是解释型语言,但为了提高运行速度,使用了一种编译的方法,得到pyc文件,存储了字节码(特定于Python的表现形式,不是机器码)
python执行过程:源代码–编译–>字节码–解释–>机器码
注意:编译过程只存在于第一次,解释过程每次都要做。
4.解释器类型
- CPython (C语言开发)
- Jython (java开发)
- lronPython (.net开发)
二、数据基本运算
1.pycharm常用快捷键
如果想知道更多的快捷键,直接上网搜pycharm常用快捷键,有些快捷键会和自己电脑上的软件冲突。
- 注释代码:ctrl + /
- 复制行:ctrl+d
- 移动到本行开头:home键
- 移动到本行末尾:end键盘
- 选择列:鼠标左键+alt
- 移动行:shift + alt + 上下箭头
- 智能提示:Ctrl + Space
2.注释
是对代码的描述信息。
- 单行注释:以#号开头。·
- 多行注释:三引号开头,三引号结尾。
""" 汇率转换器""" # 1.获取数据 str_usd = input("请输入美元:") int_usd = int(str_usd) # 2.逻辑处理 result = int_usd * 6.9 # 3.显示结果 print(result)
3.函数
表示一个功能,函数定义者是提供功能的人,函数调用者是使用功能的人。
- 变量 = input(“需要显示的内容”):将用户输入的内容赋值给变量。
- print(数据):将括号中的内容显示在控制台中。
""" print input"""# 字面意思∶输入功能# 作用∶从终端中获取输入的信息,存到程序(变量)中。name = input("请输入姓名∶")# 字面意思∶打印功能# 作用∶将括号中的内容﹐显示到终端。print(name)
4.变量
定义∶关联一个对象的标识符。
命名︰必须是字母或下划线开头,后跟字母、数字、下划线。
注意:不能使用关键字,否则出现语法错误,变量没有类型。
""" 变量:在内存中存储数据"""# 语法∶ 变量名称 = 对象# 例如∶name = "张无忌"print(name)# 变量名称∶真实内存地址的别名,注意见名知意# 赋值号∶将右边对象的地址复制给左边内存空间name = "赵敏"a01 = a02 = "周芷若"b01, b02 = "苏大强", "苏明玉"class_name = "1905"
变量内存图
练习:在控制台中获取两个变量,然后交换数据,最后显示结果。
a = input("请输入第一个变量:")b = input("请输入第二个变量:")# 交换版本1:所有语言通用思想# c = a# a = b# b = c# 交换版本2:适合pythona, b = b, aprint("第一个变量是:"+a)print("第一个变量是:"+b)运行结果:请输入第一个变量:1请输入第二个变量:2第一个变量是:2第一个变量是:1
5.核心数据类型
""" 核心数据类型"""# 1.Nonea01 = "苏大强"a01 = None # 解除变量与数据的绑定关系sex = None # 使用None占位# 2.整型intnum01 = 20# 二进制:0 1 10 11 100print(0b100) # 4# 八进制∶0 1...7 10 11 ...print(0o10) # 8# 十六进制∶0 -- 9 a(10) - f(15)print(0x10)# 16# 3.浮点数floatprint(1.5)# 科学计数法:表示过小或过大的值很明确print(0.00000000000000000000000000123)#1.23e-27# 4.字符串strprint("1.5")a = 10print(a) # 打印变量 10print("a") # 打印字符串 a
6.数据类型转换
""" 数据类型转换 运算符 算法运算符 增强运算符 运算符优先级"""# 1.数据类型转换# int float strstr_usd = input("请输入美元:") # 输入的是字符串# 类型转换 str -->intint_usd = int(str_usd)result = int_usd * 6.9# str + 数值--> str + 数值# result = str(result)# print("结果是: "+result)print("结果是:"+str(result))# 2.算数运算符print(1+2)print(1-2.5)# 地板除(保留整数)print(5//2)# 商2# 余print(5 % 2)# 余1# 除print(5/2)# 2.5# 获取整数的个位print(27 % 10) # 7# 幂运算# 5的2次方:5*5print(5**2) #25# 5的3次方:5*5*5print(5**3) #125# 3.增强运算符number01 = 200print(number01 +1)print(number01) # 200number01 = 200# 变量加上另外一个数﹐再赋值给自身# number01 = number01 + 1# 累加(在自身基础上增加)number01 += 1print(number01) # 201# 4.运算符优先级# 算数运算符优先级从高到低︰# 1. ()# 2. **、# 3. *、/、%、//、# 4. +、-优先级从高到低︰ 1. 算数运算符 2. 比较运算符 3. 快捷运算符 4. 身份运算符 5. 逻辑运算符
练习1:在控制台中,录入一个商品单价,再录入一个数量,最后获取金额,计算应该找回多少钱?
str_goods_price = input("请输入商品单价:")str_goods_num = input("请输入商品数量:")str_goods_totalprice = input("请输入金额:")int_goods_price = int(str_goods_price)int_goods_num = int(str_goods_num)int_goods_totalprice = int(str_goods_totalprice)change = int_goods_totalprice - int_goods_price * int_goods_numprint("找零:"+str(change))运行结果:请输入商品单价:2请输入商品数量:1请输入金额:4找零:2
练习2:在控制台中获取分钟,再获取小时,再获取天,计算总秒数?
mm = int(input("请输入分钟:"))hh = int(input("请输入小时:"))dd = int(input("请输入天数:"))result = dd*24*60*60+hh*60*60+mm*60print("总秒数是:"+str(result))运行结果:请输入分钟:2请输入小时:1请输入天数:1总秒数是:90120
练习3:古代的秤一斤是16两,在控制台中获取两,计算是几斤零几两?
weight = int(input("请输入两:"))w1 = weight // 16w2 = weight % 16print("总计:"+str(w1)+"斤零"+str(w2)+"两")运行结果:请输入两:33总计:2斤零1两
练习4:在控制台中获取总秒数,计算几小时零几分钟零几秒。
#方法一total_second = int(input("请输入总秒数:"))hour = total_second // 3600minute = total_second % 3600 // 60second= total_second % 3600 % 60print("总计:"+str(hour)+"小时零"+str(minute)+"分钟零"+str(second)+"秒")#方法二total_second=int(input("请输入总秒数∶"))#商∶分钟数 余数∶零几秒second = total_second % 60#分钟∶总秒数 除以60 取商表示总分钟数# 总分钟数 除以60 取商表示总小时hour = total_second // 60 // 60#分钟∶总秒数 除以60 取商表示总分钟数# 总分钟数 除以60 取余数表示总小时剩下的分钟数minute = total_second // 60 % 60print("总计:"+str(hour)+"小时零"+str(minute)+"分钟零"+str(second)+"秒")运行结果:请输入总秒数:19120总计:5小时零18分钟零40秒请输入总秒数∶19120总计:5小时零18分钟零40秒
练习5:在控制台中录入距离,时间,初速度,计算加速度?
【匀变速直线运动的位移与时问公式∶加速度=(距离-初速度×时间)* 2/时间平方】
distance = float(input("请输入距离:"))time = int(input("请输入时间:"))initial_velocity = float(input("请输入初速度:"))accelerated_speed = (distance - initial_velocity * time)* 2 / time ** 2print("加速度是:"+str(accelerated_speed))运行结果:请输入距离:100请输入时间:10请输入初速度:5加速度是:1.0
练习6:已知∶加速度,初速度,时间,计算距离?【加速度=(距离-初速度×时间)* 2/时间平方】
accelerated_speed = float(input("请输入加速度:"))initial_velocity = float(input("请输入初速度:"))time = int(input("请输入时间:"))distance = accelerated_speed * (time ** 2) / 2+initial_velocity * timeprint("距离是:"+str(distance))运行结果:请输入加速度:1.0请输入初速度:5请输入时间:10距离是:100.0
练习7:在控制台中录入一个四位整数,计算每位相加和,显示结果?
num = int(input("请输入四位数字:"))#方法1:分别计算出每位,再相加ge = num % 10# shi = num % 100 // 10shi = num // 10 % 10bai = num // 100 % 10qian = num // 1000result = ge+shi+bai+qianprint("结果是:"+str(result))# 方法2:累加每位# 个位result = num % 10# 累加十位result += num // 10 % 10# 累加百位result += num // 100 % 10# 累加千位result += num // 1000print("结果是:" + str(result))运行结果:请输入四位数字:1234结果是:10结果是:10
练习8:温度
摄氏度=(华氏度- 32)/ 1.8
华氏度=摄氏度* 1.8+32
开氏度=摄氏度+273.15
(1)在控制台中获取华氏度,计算摄氏度。
(2)在控制台中获取摄氏度,计算华氏度。
(3)在控制台中获取摄氏度,计算开氏度。
fagoting = int(input("请输入华氏度:"))centigrade = (fagoting - 32)/1.8print("摄氏度是:"+str(centigrade))centigrade = int(input("请输入摄氏度:"))fagoting = centigrade * 1.8+32kelvin = centigrade +273.15print("华氏度是:"+str(fagoting))print("开氏度是:"+str(kelvin))运行结果:请输入华氏度:1摄氏度是:-17.22222222222222请输入摄氏度:1华氏度是:33.8开氏度是:274.15
知识点补充
""" bool 运算符 比较运算符 > < >= <= 等于== 不等于!= 结果是: bool类型 逻辑运算符∶判断两个bool值关系 与 或 非"""# 1.bool类型# 取值∶(真,对的)True (假,错的)False# 命题:带有判断性的陈逑句。# 例如∶我是个女生。 True# 1 > 2 -- > Falseprint(1 > 2) # False# 2.逻辑运算符# 与:一假俱假,表示并且的关系print(True and True) # True 都得满足条件,结论才满足条件print(False and True) # Falseprint(True and False) # Falseprint(False and False) # False# 或:一真俱真,表际或者(一个满足就行)的关系print(True or True) # True 都得满足条件,结论才满足条件print(False or True) # Trueprint(True or False) # Trueprint(False or False) # False# 非:取反print(not True) # False
练习:判断年份是否为闰年?【闰年:年份能被4整除,但是不能被100整除。也能被400整除。闰年是True】
year = int(input("请输入年份:"))result = year % 4 ==0 and year % 100 !=0 or year % 400== 0print(result)运行结果:请输入年份:2000True
注意:结果为False : bool(0)、bool(0.0)、bool(None)、bool(“”),bool里面有值都是True
# 问题∶控制台中会出现什么num = 1re = num > 1 and input("请输入∶") == "a"执行num > 1为Flase,程序退出,运行结果不会出现请输入。num = 1re = num + 1 > 1 and input("请输入∶") == "a"执行num + 1 > 1为True,程序继续执行后面的,运行结果出现请输入。num = 1re = num > 1 or input("请输入∶") == "a"print(re)执行num > 1为Flase,程序继续执行后面的,运行结果会出现请输入。num = 1re = num + 1 > 1 or input("请输入∶") == "a"print(re)执行num + 1 > 1为True,程序退出,运行结果不会出现请输入。总结:and发现False,就有了结论,后续条件不再判断。 or发现True,就有了结论,后续条件不再判断。启发:(现象称为短路逻辑),逻辑运算时,尽量将复杂(耗时)的判断放在后边。
知识点补充
""" 身份运算符"""a = 800b = 1000# id 函数,可以获取变量存储的对象地址。print(id(a))print(id(b))#falseprint(a is b) # is的本质就是通过id函数进行判断的。c = aprint(id(c))#trueprint(c is a)#trued = 1000print(d is b)
#文件式python是true,交互式python是false
#小整数对象池:CPython中整数-5至256,永远存在小整数对象池中,不会被释放,并可重复使用。
内存图
7.del语句
作用∶用于删除变量,同时解除与对象的关联,如果可能则释放。
自动化内存管理的引用计数:每个对象记录被变量绑定(引用)的数量,当为0时被销毁。
""" del"""a = "悟空"b = ac = a# 删除变量a,b,不释放对象"悟空”del a, b# 由于变量c不再引用对象"悟空",而悟空的引用计数为0,所以被标记为可回收。c = None