1991年,第一个Python解释器诞生,是用C语言实现的,并能够调用C语言的库文件
计算机不能理解除机器语言外的语言,把程序员写的语言翻译成机器语言,计算机才能够执行,将其他语言翻译成机器语言的工具,成为编译器。
编译器翻译两种方式:一个是编译,另一个为解释。两种方式之间在于翻译时间点不同。当编译器以解释方式运行时,称之为解释器。
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成机器语言的文件,运行时不需要重新翻译,直接使用编译的就行。程序执行效率高,依赖编译器,跨平台性差,如 C、C++
解释型语言:编写的程序不进行预先编译,以文本方式储存程序代码,会将代码一句句直接运行。在发布程序时,看起来省了一道编译,但是在运行程序时,必须先解释再运行。
执行速度:编译型语言比解释型语言执行速度快
跨平台性:解释型语言更容易跨平台,如 Java、Python
python就是存放Python代码的文本文件
扩展名必须以.py结尾
找一个目录;新建文本文件 hello.py;用记事本打开文件
print('hello world')
print('hello python')
保存退出;打开cmd;在命令行输入python hello.py
1、命令行运行 python 程序
python 文件.py
2、Pycharm 运行 python 程序
通过集成开发环境 Pycharm 编写并运行 python 代码
集成开发环境(IDE,Integrated Development Environment)–集成了开发软件需要的所有工具,包括一些一般:
图形用户界面
代码编辑器(支持 代码补全/自动缩进)
编译器/解释器
调试器(断点/单步执行)
注释的作用:使用自己熟悉的语言,在程序中对某种代码进行标注说明,增强程序的可读性。
单行注释:以 # 号开头, # 右边的所有东西都被当作说明文字,而不是真正要执行的程序,起辅助说明作用。
# 注释内容
示例如下:
# 当行注释
print(''hello world)
为保证代码可读性,# 后面建议先添加一个空格,然后再编写相应的说明文字。
多行注释:如果注释信息很多,一行无法显示,可以使用多行注释。
要在python程序中使用多行注释,可以用一对连续的三个引号(单双引号都可)
'''
注释内容
注释内容
'''
示例如下:
'''
多行注释
用三个引号来注释
'''
print('''hello python''')
在pycharm 中也可以用 ctrl + / 快速注释一行代码
什么时候需要注释?
1、注释不是越多越好,对于一目了然的代码,不需要注释
2、对于复杂的操作,应在操作前写上多行注释
3、对于不是一目了然的代码,在其行尾添加注释(为提高可读性,注释至少离开代码2个空格)
4、不是描述代码,如果阅读代码的人更懂python ,只是不知道你的代码要做什么
1、算数运算符的定义
算数运算符是运算符的一种。
是完成基本的算术运算符使用的符号,用来处理四则运算。
在 python 中 * 运算符还可以用于字符串,计算结果就是字符串重复指定次数的结果。
python 中字符串需要引号,数字不需要
字符串可以和一个整数相乘(字符串可以重复整数次数)
print('hello' * 3)
2、算数运算符的优先级
在python 中进行数学计算时,先乘除后加减,同级运算符从左到右计算
可以使用()调整运算优先级
** 最高
* / // %
+ -最低
可以通过括号改变优先级
print((3 + 2) * 5)
1、变量的定义与赋值
在python中,每个变量在使用前都必须赋值,变量赋值后 该变量才会被创建
等号(=)用来给变量赋值
= 左边是一个变量名
= 右边是储存在变量中的值
变量名 = 值
变量定义后,后续可以直接使用
2、变量演练
python 中字符串用单、双引号引起来,数字不需要引号
在程序中,如果要输出变量的内容,需要使用 print 函数
变量
在计算机语言中可变的量
变量在使用前必须先定义赋值
变量名 = 值
# 定义了一个变量名叫name ,值为字符串 张三
name = '张三'
# 定义了一个变量名叫 age,值为26
age = 26
print(name) # 如果print 里写的是变量名,那输出的是变量的值
print(age)
price = 8.5
weight = 7.5
money = price * weight
print(money)
price = 8.5
weight = 10
money = price * weight
# 变量定义之后,再 = 号赋值,只是改变变量的值而已
money = money - 5 # 改变了 money 变量的值
print(money)
课堂练习一:算术运算符
a = 12
b = 3
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a % b) 取余数
print(a // b) 取整除
print(a ** b)
课堂练习二:两个变量(a和b)的值交换
# 交换 a 和 b 的值
a = 10
b = 20
c = a
a = b
b = c
print(a, b) # 如果一个print 输出两个变量的值,两个变量需要用逗号隔开
1、标识符
就是程序员定义的 变量名、函数名;
变量命名规则
2、显示python关键字
# coding: utf-8 (防止中文乱码)
# 显示python关键字
import keyword
print(keyword.kwlist)
3、变量名的命名规则
为了增强代码的识别和可读性
(python 中的标识符是区分大小写的)
变量名习惯
# coding:utf-8
frist_name = '张三' # 所有字母都小写
firstName = '张三' #小驼峰,只有第二个单词首字母大写
FirstName = '张三' #大驼峰,每个单词首字母都大写
# 变量名不会所有字母都大写,FIRSTNAME
数据类型可以分为数字型和非数字型
1、数字型
# coding: utf-8
a = 10 # int
b = 3.5 # float
c = False # bool
d = True # bool
e = 'aaaaaa' # str
# coding: utf-8
name = '小明'
age = 18
sex = '男'
height = 1.75
isStudent = True
print(name, age, sex, height, isStudent)
变量赋值的时候,等号右边是什么数据类型,变量就是什么数据类型
4、数字型变量计算
i = 10
f = 10.5
b = True
print(i + f)
print(i + b)
print(i - b)
5、字符串的计算
# coding: utf-8
str1 = '你好'
str2 = 'python'
str3 = str1 + str2
print(str3)
str3 = str1 * 5
print(str3)
# str3 = str1 - str2 字符串和字符串不能减
6、字符串和整数的区别
# coding: utf-8
a = 10 # 数字 10
b = '10' # 字符串 1和 字符串 2
c = 1
d = '1'
print(a + c)
print(b + d)
7、不同数据类型转化
# coding: utf-8
a = 10
b = '1'
# 要把b转化成int,与a相加
print(a + int(b))
# 要把a转化成 str 与b相加
print(str(a) + b)
c = '你好'
# print(a + int(c)) # 如果c不能转化,代码报错
d = '3.5'
print(a + float(d))
四舍五入
# coding:utf-8
a = 5
b = 2
# 2.5 + 0.5 = 3
print(int(a / b + 0.5))
# 任意两个数字除,结果加 0.5 ,最后只保留整数位,就是对一个小数四舍五入取整的结果
变量名 = input('提示文字')
name = input('请输入') # 代码执行到input 就停止了,等待用户通过键盘输入
print(name)
# 用户通过键盘输入什么,name变量的值就变成什么
name = input('请在次输入')
print(name)
age = input('请输入')
print(age + '1')
# 输入的任何数字都是字符串
转化input 输入的结果
a = input('请输入第一个数字')
b = input('请输入第二个数字')
print(int(a) + int(b))
# 上下面代码运行结果一样
a = int(input('请输入第一个数字'))
b = int(input('请输入第二个数字'))
print(a + b)
练习
price = float(input('请输入苹果单价'))
weight = float(input('请输入购买重量'))
money = price * weight
print(money)
格式化字符串
格式化字符串主要功能
print('格式化字符串'% (变量1,变量2,......))
name = '张三'
age = 20
print('姓名' + name + '年龄' + str(age) + '岁')
# 上下两个print输出结果一样
print('姓名%s, 年龄%d岁'% (name, age))
f = 3.14
str1 = '圆周率是'
print(str1 + str(f))
print('%s%f' % (str1, f))
print('%s%.3f' % (str1, f))
a = 10
print('变量a的值是%05d'% a )
格式化字符串—名片
company = input('请输入公司名称')
name = input('请输入姓名')
tel = input('请输入电话号码')
mailbox = input('请输入邮箱地址')
print('*' * 20)
print('公司名称:%s' % company)
print('姓名:%s' % name)
print('电话:%s' % tel)
print('邮箱:%s' % mailbox)
print('*' * 20)
name = '小明'
print('我的名字叫%s,请多多关照!' % name)
num = 1
print('我的学号是%06d' % num)
price = 8.5
weight = 5
print('苹果单价%.2f元/斤,购买了%.2f斤,需要支付%.2f元' % (price, weight, price * weight))
scale = 10.01
print('数据是%.2f%%' % scale)
多条print输出到一行
print('输出的字符串',end='')
转义字符
\\
:输出一个\t
:输出 tab 键\n
:输出回车\"
:输出双引号"\'
:输出单引号’print("我\t你")
print("我\n你")
print("我\\你")
print("我\"你")
print("我\'你")
print(r"我\n你")
判断的定义
条件满足就做,反之就做另一件事或者不做()判断语句又称“分支语句”
比较运算符
>大于
>= 大于等于
< 小于
<= 小于等于
== 等于
在python 中是变量赋值使用的,判断是否相等用 ==
!= 不等于
if基本语法
if 条件:
条件成立要执行的代码
# coding: utf-8
a = 10
if a < 3:
print('你好') # 这个print 和if 是一个代码块
print('hello') # 这的print 和上面的 if 没关系
pass占位符
if 练习
# coding: utf-8
age = int(input('请输入年龄'))
if age >= 18:
print('可以上网')
print('程序结束')
练习—判断除数是否为 0
# coding:utf-8
# num1通过input输入的数字
# num2通过input输入的数字
num1 = int(input('请输入num1的值'))
num2 = int(input('请输入num2的值'))
# 如果num2不等于0,计算num1,除以num2的结果
if num2 != 0:
print(num1/num2)
练习-计算器
# coding: utf-8
num1 = int(raw_input('请输入num1的值'))
num2 = int(raw_input('请输入num2的值'))
a = raw_input('请输入a的值')
if a == '+':
print(num1 + num2)
if a == '-':
print(num1 - num2)
if 条件:
条件成立执行的代码
else:
条件不成立执行的代码
# if和else要对齐,else必须放到if后面,不能单独使用
# coding:utf-8
age = int(input('请输入年龄'))
if age >= 18:
print('可以进网吧')
else:
print('不能进')
判断奇偶数
# coding:utf-8
num1 = int(input('请输入num1的值'))
# 如何判断一个整数是否为偶数,可以和2取余数;余数为0就是偶数,反之奇数
if num1 % 2 == 0:
print('偶数')
else:
print('奇数')
判断正负数
# coding: utf-8
num1 = int(input('请输入num1的值'))
# 判断num1是否为正数,只要num1大于等于1就是正数
if num1 >= 0:
print('正数')
else:
print('负数')
逻辑运算符
# coding: utf-8
name = '小明'
age = 19
if name == '小明' and age > 20:
print('通过')
else:
print('不通过')
# coding: utf-8
name = '小'
age = 20
if name == '小明' or age > 20:
print('通过')
else:
print('不通过')
# coding: utf-8
name = '小'
if not name == '小明':
print('通过')
else:
print('不通过')
# coding: utf-8
name=raw_input('请输入账号')
passwd=raw_input('请输入密码')
if name=='itcast' and passwd=='123456':
print('通过登录')
else:
print('登录失败')
if多分支
if 条件1:
条件1满足执行代码
elif 条件2:
条件2满足执行代码
elif 条件3:
条件3满足执行代码
else:
以上条件都不满足,执行代码
# elif和else要和if对齐,elif和else都需要写在if后面
# coding: utf-8
oday = raw_input('请输入')
if oday == '情人节':
print('买玫瑰')
elif oday == '平安夜':
print('吃苹果')
elif oday == '生日':
print('party')
else:
print('上班')
# coding: utf-8
age = int(input('请输入年龄'))
if age < 10 and age > 0:
print('小孩')
elif age >= 10 and age <= 20:
print('小朋友')
elif age >= 20 and age <= 30:
print('年轻人')
elif age >= 30 and age <= 50:
print('中年人')
elif age > 50:
print('老年人')
else:
print('年龄不对')
判断正负数 0 排除
# coding: utf-8
a = int(input('请输入一个整数'))
if a > 0:
print('正数')
elif a == 0:
print('既不是正数也不是负数')
else:
print('负数')
if嵌套
if 条件:
if 条件:
要执行代码
else:要执行代码
else:
要执行代码
# 只有最外面的if条件满足,才会执行嵌套在里面的if语句
# coding: utf-8
a=int(input('请输入一个数字'))
# 判断0-100之内,任意一个数字是否能被3整除
# 首先判断这个数字是否在0-100之内
# 如果一个数字大于0并且小于100,就是在0-100之内
if a > 0 and a < 100:
print('在范围内')
# 如果条件满足,再判断是否能被3整除
# 如果一个数字和3取余数,如果余数为0,代表可以被3整除
if a % 3 == 0:
print('能被3整除')
else:
print('不能被3整除')
else:
print('不在0-100之间')
# coding: utf-8
name = raw_input('请输入姓名')
if name == 'tom':
age = int(input('请输入年龄'))
if age >= 30:
print('大叔')
else:
print('小弟')
else:
print('姓名错误')
练习-计算机加强
# coding: utf-8
num1 = int(raw_input('请输入num1的值'))
num2 = int(raw_input('请输入num2的值'))
a = raw_input('请输入a的值')
if a == '+':
print(num1 + num2)
if a == '-':
print(num1 - num2)
if a == '/':
if num2 != 0:
print(num1/num2)
else:
print('除数不能为0')
else:
print('a的值必须为=-*/')
运算符
=
a += 1 a = a + 1 +=中间没有空格
a -= 1 a = a - 1
a *= 1 a = a * 1
a /= 1 a = a / 1
a //= 3 a = a // 3
a %= 3 a = a % 3
a **= 3 a = a ** 3
a -= 1 a = a + 1
运算符优先级
算数运算符优先级最高
比较运算符
赋值运算符
逻辑运算符最低
括号优先级最高
生成随机数
# coding: utf-8
import random
# 要定义一个变量,来存放随机数
a = random.randint(1, 5) # 从1-5之间随机生成一个整数(包括1和5)
print(a)
随机数生成
# coding:utf-8
# 1代表坦克
# 2代表飞机
# 3代表大炮
import random
a = random.randint(1, 3)
if a == 1:
print('坦克')
elif a == 2:
print('飞机')
else:
print('大炮')
# coding:utf-8
# 1:石头
# 2:剪刀
# 3:布
# 石头赢剪刀 1赢2
# 剪刀赢布 2赢3
# 布赢石头 3赢1
# 玩家通过键盘输入数字1或2或3
# 电脑随机产生数字1或2或3
# 比较胜负
import random
# pc代表电脑随机出的拳
pc = random.randint(1, 3)
# player代表玩家要出的拳
player = int(input('请输入1或2或3'))
if (pc == 1 and player == 2) or (pc == 2 and player == 3) or (pc == 3 and player == 1):
print('电脑出了%d,玩家出%d,电脑赢了' % (pc, player))
elif (pc == player):
print('电脑出了%d,玩家出%d,平局' % (pc, player))
else:
print('电脑出了%d,玩家出%d,玩家赢了' % (pc, player))
while基本语法
while 条件:
要循环执行的代码
# 如果条件成立,循环执行;条件不成立,循环终止
# coding: utf-8
a = 0
while a < 3:
print('hello world')
a += 1
如果要输出100个?
# coding: utf-8
a = 0
while a < 100:
print('hello world')
a += 1
# coding: utf-8
a = 0
while a < 5:
print('hello world')
# a的值永远不会变,所以循环条件永远成立
a = 0
while a < 6:
print(a)
a += 1
# coding: utf-8
a = 5
while a >= 0:
print(a)
a -= 1
循环计算
# coding: utf-8
# 定义一个变量,来存放累加的和
sum = 0
# 开始循环,从0-100
a = 0
while a <= 100:
sum = sum + a # sum += 1
a += 1
# 在循环内部没有任何的print 语句,因为不需要在循环内部输出任何数字
# 在循环完成后,输出sum的值,因为sum就是从0-100所有整数累加的和
print(sum)
# coding: utf-8
sum = 0
a = 300
while a <= 415:
sum += a
a += 1
print(sum)
break终止循环
# coding: utf-8
a = 0
while a < 10:
print(a)
if a == 3:
break # break执行,代码终止 # break 在 if 语句,注意缩进
a += 1
# break 之后,代码就到这
# coding: utf-8
a = 0
while a < 10000000:
str1 = input('请输入一个字符串')
if str1 == ('exit'):
break
print(str1)
a += 1
人造死循环
# coding: utf-8
# 如果while后面的条件为true,这个while就是认为的循环
# 循环内部一定要有 if 结合break 来让循环退出的机制
while True:
str1 = input('请输入一个字符串')
if str1 == ('exit'):
break
print(str1)
continue(继续)
# coding: utf-8
a = 0
while a < 5:
a += 1
if a == 3:
continue
print(a)
使用continue一定要注意,使用不当容易死循环
# coding: utf-8
a = 0
while a < 5:
if a == 3:
continue # a = 3 的时候,就没机会执行 a += 1 这个代码了
print(a)
a += 1
# coding: utf-8
# a 还是一个循环计数器
# b 决定了循环的最大次数
a = 0
b = int(input('请输入b的值')) # 假设用户输入数字10
while a < b:
print('*')
a += 1 # 在循环内部, a 的值一直在变化,但b的值从来都不变
if a == 20: # 不管b 的值多大,一旦a 到了20,循环就退出
break
循环嵌套
while 条件:
while 条件
代码
3个⭐循环2行
# coding: utf-8
# ***
# ***
# 一个print输出一个星号,如何连续输出三个
b = 0
while b < 2: # 外循环一共循环2次,每次循环时,内循环循环3 次
a = 0
while a < 3:
print('*', end='')
a += 1
print() # 输出一个空的回车换行
b += 1
print('end')
5个⭐循环5行
# coding: utf-8
b = 0
while b < 5:
a = 0
while a < 5:
print('*',end='')
a += 1
print()
b += 1
print('end')
循环嵌套输出三角形
# coding: utf-8
# 一个print只能输出一个星号
# *
# **
# ***
# ****
# *****
b = 0
while b < 5:
a = 0
while a <= b:
print('*',end='')
a += 1
print()
b += 1
# coding: utf-8
b = 0
while b < 5:
a = 0
while a <= b:
print(a+1,end='')
a += 1
print()
b += 1
for循环
for 变量名 in 字符串
循环代码
# coding: utf-8
# for 主要用于遍历,字符串中有几个字符,for就会循环几次
str1 = 'hello'
for a in str1: # a 是自己定义的一个变量
print('*')
print(a)
# coding: utf-8
str1 = 'hello,itcast'
sum = 0
for a in str1:
sum += 1
print(sum)
while 和 for 的不同
range函数
range (start , stop , step )
start 代表范围的开始值
stop 代表范围的结束值,但不包含 stop
step 步长,可以为负数,正数代表升序范围,负数代表降序范围
# coding: utf-8
range(1,5,1) # 生成 1,2,3,4
range(1,5) # 生成 1,2,3,4
range(1,6,2) # 生成 1,3,5
range(6,2,-1) # 生成 6,5,4,3
range(6,2,-2) # 生成 6,4
用for实现指定次数的循环(用for 替换 while)
for 变量名 in range(开始值,结束值,步长)
执行代码
# coding: utf-8
# a = 0
# while a < 6:
# print(a)
# a += 1
for a in range(0,6): # for用于遍历,这的遍历是个范围,a是范围中每个数字
print(a)
# coding: utf-8
# 外循环5次
# 内循环5次
# 内循环 print('*',end='')
# 每次内循环完成外循环都有个print()
for a in range(0,5):
for b in range(0,5):
print('*',end='')
print()
# coding: utf-8
# 循环外,定义个变量存放累加和
# 再循环内计算
# 循环完成后,输出这个变量的计算结果
sum = 0
for a in range(50,125,2):
sum += a
print(sum)