1、了解python历史、优缺点和安装步骤
略
2、第一个python程序
1)交互式环境
Python 3.9.4 (default, Apr 5 2021, 01:49:30)
[Clang 12.0.0 (clang-1200.0.32.29)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
2)更好的交互环境ipython
3)文本编辑器
4)集成开发环境-PyCharm
表1. PyCharm常用快捷键
说明:使用macOS系统,可以将上面的ctrl键换成command键,在macOS系统上,可以使用ctrl + space组合键来获得万能提示,在Windows系统上不能使用该快捷键,因为它跟Windows默认的切换输入法的快捷键是冲突的,需要重新设置。
'''
我的第一个python程序
Version:1.0
Author:kk
'''
#print("Hello,World!")
print("您好,世界!")
3、python语言元素之变量
1)常用数据类型:
整型(int):Python中可以处理任意大小的整数,而且支持二进制(如0b100,换算成十进制是4)、八进制(如0o100,换算成十进制是64)、十进制(100)和十六进制(0x100,换算成十进制是256)的表示法。
浮点型(float):浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456)之外还支持科学计数法(如1.23456e2)。
字符串型(str):字符串是以单引号或双引号括起来的任意文本,比如'hello'和"hello"。
布尔型(bool):布尔值只有True、False两种值,要么是True,要么是False。
2)变量命名
硬性规则:
规则1:变量名由字母、数字和下划线构成,数字不能开头。需要说明的是,这里说的字母指的是Unicode字符,Unicode称为万国码,囊括了世界上大部分的文字系统,这也就意味着中文、日文、希腊字母等都可以作为变量名中的字符,但是像!、@、#这些特殊字符是不能出现在变量名中的,而且我们强烈建议大家尽可能使用英文字母。
规则2:大小写敏感,简单的说就是大写的A和小写的a是两个不同的变量。
规则3:变量名不要跟Python语言的关键字(有特殊含义的单词,后面会讲到)和保留字(如已有的函数、模块等的名字)发生重名的冲突。
非硬性规则:
规则1:变量名通常使用小写英文字母,多个单词用下划线进行连接。
规则2:受保护的变量用单个下划线开头。
规则3:私有的变量用两个下划线开头。
3)变量的使用
举例说明变量的类型和变量的使用
'''
使用变量保存数据并进行加减乘除
Version:1.0
Author:kk
'''
a = 60 #变量a保存了60
b = 20 #变量b保存了20
print(a + b)#80
print(a - b)#40
print(a * b)#1200
print(a / b)#3.0
'''
使用type函数检查变量类型
Version:1.0
Author:kk
'''
a = 60
b = 20.123
c = 'hello world'
d = True
print(type(a))#
print(type(b))#
print(type(c))#
print(type(d))#
4)变量的转换
不同类型的变量可以相互转换,这一点可以通过Python的内置函数来实现
int():将一个数值或字符串转换成整数,可以指定进制。
float():将一个字符串转换成浮点数。
str():将指定的对象转换成字符串形式,可以指定编码。
chr():将整数转换成该编码对应的字符串(一个字符)。
ord():将字符串(一个字符)转换成对应的编码(整数)。
举例说明变量的转换
'''
python类型转换
Version:1.0
Author:kk
'''
a = 60
b = 20.123
c = 'hello world'
d = True
#整数转换为浮点数
print(float(a))#60.0
#浮点型转换为字符串(输出字符串时不会看到引号哦)
print(str(b))#20.123
#字符串转为布尔型(有内容的字符串都会变成True)
print(bool(c))#True
#布尔型转为整数(true为1,false为0)
print(int(d))#1
#整数转为对应字符(97刚好对应字符表中的字母a)
print(chr(97))#a
#将字符转为对应整数(Python中字符和字符串表示法相同)
print(ord('a'))#97
小结:在python程序中,我们可以使用变量来保存数据,变量有不同的类型,变量可以进行运算,也可以通过内置函数转换变量类型
4、python语言元素之运算符
1)运算符
说明: 上面这个表格实际上是按照运算符的优先级从上到下列出了各种运算符。所谓优先级就是在一个运算的表达式中,如果出现了多个运算符,应该先执行哪个运算再执行哪个运算的顺序。在实际开发中,如果搞不清楚运算符的优先级,可以使用圆括号来确保运算的执行顺序。
2)算术运算符
举例
'''
python算术运算符
Version:1.0
Author:kk
'''
print(456 + 123)#加法
print(456 - 123)#减法
print(456 * 123)#乘法
print(456 / 123)#除法
print(456 % 123)#求模
print(456 // 123)#整除
print(456 ** 123)#求幂
3)赋值运算符
赋值运算符应该是最为常见的运算符,它的作用是将右边的值赋给左边的变量
举例
'''
python赋值运算符
Version:1.0
Author:kk
'''
a = 10
b = 3
a += b #相当于a=a+b
a *= a + 2#相当于a=a*(a+2)
print(a)
比较运算符有的地方也称为关系运算符,包括==、!=、<、>、<=、>=
逻辑运算符有三个,分别是and、or和not
'''
比较运算符和逻辑运算符的使用
Version:1.0
Author:kk
'''
flog0 = 1 == 1
flog1 = 3 > 2
flog2 = 2 < 1
flog3 = flog1 and flog2
flog4 = flog1 or flog2
flog5 = not (1 != 2)
print("flog0 = ",flog0)#true
print("flog1 = ",flog1)#true
print("flog2 = ",flog2)#false
print("flog3 = ",flog3)#false
print("flog4 = ",flog4)#true
print("flog5 = ",flog5)#false
说明:比较运算符的优先级高于赋值运算符,所以
flag0 = 1 == 1
先做1 == 1
产生布尔值True
,再将这个值赋值给变量flag0
。,
进行分隔,输出的内容之间默认以空格分开。
4)举例
例子1:华氏温度转换为摄氏温度。
提示:华氏温度到摄氏温度的转换公式为:C = (F - 32) / 1.8。
'''
将华氏温度转换为摄氏温度
注:华氏温度到摄氏温度的转换公式为:C = (F - 32) / 1.8
Version:1.0
Author:kk
'''
f = float(input("请输入华氏温度:"))
c = (f - 32) / 1.8
print("%.1f华氏度 = %.1f摄氏度" % (f,c))
说明:在使用print函数输出时,也可以对字符串内容进行格式化处理,上面print函数中的字符串%.1f是一个占位符,稍后会由一个float类型的变量值替换掉它。同理,如果字符串中有%d,后面可以用一个int类型的变量值替换掉它,而%s会被字符串的值替换掉。除了这种格式化字符串的方式外,还可以用下面的方式来格式化字符串,其中{f:.1f}和{c:.1f}可以先看成是{f}和{c},表示输出时会用变量f和变量c的值替换掉这两个占位符,后面的:.1f表示这是一个浮点数,小数点后保留1位有效数字。
例子2:输入圆的半径计算计算周长和面积。
提示:圆的周长:C=πd=2πr,圆的面积S=πr
'''
输入圆的半径计算圆的周长和面积
注:提示:圆的周长:C=πd=2πr,圆的面积S=πr
Version:1.0
Author:kk
'''
radius= float(input('请输入圆的半径: '))
perimeter = 2 * 3.1416 * radius #计算周长
area = 3.1416 * radius #计算面积
print('周长:%.2f' % perimeter)
print('面积:%.2f' % area)
例子3:输入年份判断是不是闰年。
提示:闰年是有规律可循的。
能被4整除但不能被100整除的年份为普通闰年,比如2004年是闰年,1999就不是闰年。能被400整除的为世纪闰年,比如2000是闰年,但1900年不是闰年
'''
输入年份判断是否为闰年
Version:1.0
Author:kk
'''
year = int(input('请输入年份:'))
is_leap = year % 4 == 0 and year % 100 != 0 or year % 400 == 0
print(is_leap)
说明:比较运算符会产生布尔值,而逻辑运算符and和or会对这些布尔值进行组合,最终也是得到一个布尔值,闰年输出True,平年输出False。
小结:运算符和表达式对于任何一门编程语言都是非常重要的。
5、分支结构
1)if语句的使用
在Python中,要构造分支结构可以使用if、elif和else关键字。所谓关键字就是有特殊含义的单词,像if和else就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名。
例子:
'''
用户身份判断
Version:1.0
Author:kk
'''
username = input('请输入用户名:')
password = input('请输入密码:')
#
if username == 'admin' and password == '123456':
print("身份验证成功!")
else:
print("身份验证失败!")
提示:if和else 的最后面有一个:,它是用英文输入法输入的冒号;程序中输入的'、"、=、(、)等特殊字符,都是在英文输入法状态下输入的。有很多初学者经常不注意这一点,结果运行代码的时候就会遇到很多莫名其妙的错误提示。强烈建议大家在写代码的时候都打开英文输入法(注意是英文输入法而不是中文输入法的英文输入模式),这样可以避免很多不必要的麻烦。
如果要构造出更多的分支,可以使用if...elif...else...结构或者嵌套的if...else...结构,下面的代码演示了如何利用多分支结构实现分段函数求值。
'''
分段函数求值
Version:1.0
Author:kk
'''
x = float(input('x = '))
if x > 1:
y = 3 * x - 5
elif x >= -1:
y = x + 2
else:
y = 5 * x + 3
print(f'f({x}) = {y}')
#还可以写成
x = float(input('x = '))
if x > 1:
y = 3 * x - 5
else:
if x >= -1:
y = x + 2
else:
y = 5 * x + 3
print(f'f({x}) = {y}')
2)例子
例子1:英制单位英寸与公制单位厘米互换。
'''
英制单位英寸与公制单位厘米互换。
Version:1.0
Author:kk
'''
value = float(input('请输入长度:'))
unit = input('请输入单位:')
if unit == 'in' or unit == '英寸':
print('%.2f英寸 = %.2f厘米' % (value, value * 2.54))
elif unit == 'cm' or unit == '厘米':
print('%.2f厘米 = %.2f英寸' % (value, value / 2.54))
else:
print('请输入有效单位')
例子2:百分制成绩转换为等级制成绩。
要求:如果输入的成绩在90分以上(含90分)输出A;80分-90分(不含90分)输出B;70分-80分(不含80分)输出C;60分-70分(不含70分)输出D;60分以下输出E。
'''
百分制成绩转换为等级制成绩
Version:1.0
Author:kk
'''
score = float(input('请输入成绩:'))
if score >= 90:
grade = 'a'
elif score >= 80:
grade = 'b'
elif score >= 70:
grade = 'c'
elif score >= 60:
grade = 'd'
else:
grade = 'e'
print('您成绩所在的等级是:',grade)
例子3:输入三条边长,如果能构成三角形就计算周长和面积。
'''
1、判断是否为三角形,a+b>c,a+c>b,b+c>a
2、周长:三边相加
3、面积:用海伦公式求三角形面积。海伦公式是如下。其中 s 是三角形的半周长, a、b和c是三角形三条边的长度。s*(s-a)(s-b)(s-c) ** 0.5
Version:1.0
Author:kk
'''
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
#判断是否可以组成三角形
if a + b > c and a + c > b and b + c > a:
#计算周长
peri = a + b + c
print(f'周长:{peri}')
#计算半周长
half = peri / 2
#计算面积
area = half * (half - a) * (half - b) * (half - c) ** 0.5
print(f'面积:{area}')
else:
print('不能构成三角形')
6、循环结构
1)for-in循环
如果明确的知道循环执行的次数,我们推荐使用for-in循环,例如计算1到100的和。
'''
用for循环实现1~100求和
Version:1.0
Author:kk
'''
total = 0
for x in range(1,101):
total += x #也可以写成total = x + total
print(total)
range(101):可以用来产生0到100范围的整数,需要注意的是取不到101。
range(1, 101):可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。
range(1, 101, 2):可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。
range(100, 0, -2):可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
实现1~100之间的偶数求和
'''
用for循环实现1~100偶数求和
Version:1.0
Author:kk
'''
total = 0
for x in range(2,101,2):
total += x
print(total)
2)while循环
如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环。while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True则继续循环;表达式的值为False则结束循环。
猜数字游戏的规则是:计算机出一个1到100之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息(大一点、小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。
'''
猜字游戏
Version:1.0
Author:kk
'''
import random
#产生1个1~100的随机数
answer = random.randint(1,100)
counter = 0
while True:
counter += 1
number = int(input("请输入0~100数字:"))
if number > answer:
print("猜大了!")
elif number < answer:
print("猜小了!")
else:
print("您猜对了!")
break
print(f'您共猜了{counter}次!')
break和continue
上面的代码中使用while True构造了一个条件恒成立的循环,也就意味着如果不做特殊处理,循环是不会结束的,这也就是常说的“死循环”。为了在用户猜中数字时能够退出循环结构,我们使用了break关键字,它的作用是提前结束循环。需要注意的是,break只能终止它所在的那个循环,这一点在使用嵌套循环结构时需要引起注意,下面的例子我们会讲到什么是嵌套的循环结构。除了break之外,还有另一个关键字是continue,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。
3)嵌套的循环结构
'''
九九乘法表
Version:1.0
Author:kk
'''
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{i}*{j}={i * j}',end = '\t')
print()
例子1:输入一个正整数判断它是不是素数。
提示:素数指的是只能被1和自身整除的大于1的整数。
'''
输入一个正整数判断是否为素数
Version:1.0
Author:kk
'''
num = int(input('请输入一个正整数:'))
end = int(num ** 0.5)
is_prime = True
for x in range(2,end + 1):
if num % x ==0:
is_prime = False
break
if is_prime and num != 1:
print(f'{num}是素数')
else:
print(f'{num}不是素数')
例子2:输入两个正整数,计算它们的最大公约数和最小公倍数。
提示:两个数的最大公约数是两个数的公共因子中最大的那个数;两个数的最小公倍数则是能够同时被两个数整除的最小的那个数。
'''
输入两个正整数计算它们的最大公约数和最小公倍数
Version:1.0
Author:kk
'''
x = int(input('x = '))
y = int(input('y = '))
if x > y:
x, y = y, x
for factor in range(x, 0 , -1):
if x % factor == 0 and y % factor ==0:
print(f'{x}和{y}的最大公约数为{factor}')
print(f'{x}和{y}的最小公倍数为{x * y // factor}')
break
小结:如果知道循环的次数,我们通常使用for循环;如果循环次数不能确定,可以用while循环。在循环中还可以使用break来提前结束循环