初识python
岗位 | 用途 |
---|---|
it | 自动化脚本(运维、测试开发) |
大数据 | 大数据开发(spark、flink) |
后端 | 数据计算(生物、化学、物理) |
科学家 | web应用程序 |
机器学习 | 开发ai程序 |
编程语言
自然语言→代码→【解释器(编译器)】→二进制→计算机
python安装
解释器
安装python环境实质上是安装解释器程序,cmd是调用.exe
开发环境
ctrl alt S 打开设置
ctrl D 复制当前行
shift alt ↑↓ 将当前行上下移动
shift F6 重命名
ctrl F 搜索
基础语法
字面量
含义:被写下来的固定的值
类型 | 描述 | 说明 |
---|---|---|
数字number | 支持四种,和现实写法一致 | 整数int、浮点数float、复数complex、布尔bool |
字符串string | 中文英文各类符号和数字组成 | 任意数量的字符组成,字符串要用双引号包围 |
列表list | 有序可变 | 有序记录可变 |
元组tuple | 有序不可变 | 有序记录不可变的数据集合 |
集合set | 无序不重复 | 无序记录不重复的集合 |
字典dictionary | 无序key-value | 无序记录key-value型的集合 |
注释
单行# 空格 +内容
多行以一对三个双引号包裹,支持换行
变量
程序运行时能存储计算结果 或 能表示值的抽象概念(即 记录数据)
变量名称=变量值,支持加减乘除
money = 50
print("Now you have:", money)
money = money - 10
print("After buying ice-cream,you remain:",money,"dollar")
数据类型
type() 语句查看 字面量 数据类型
print(type(666))
会输出 < class 'str' >
也可以查看 变量 中的数据类型
name="这是示例文字";name_type=type(name);print(name_type)
“变量无类型而数据有类型”:一个盒子装篮球或足球并不会变成某种球,他依然是个盒子,我们说“字符串变量”,是指“这个变量存贮的是字符串”。
数据类型转换
str、int和float之间:
特定场景下可以互换,当需求是“从文件中读取数字”时,默认是字符串,我们就要转换成数字类型;当需求是“input”语句时,他的默认结果也是字符串,我们要按需转换
int(x)、float(x)、str(x)都是带有结果(即 返回值)的,就是说可以用print直接输出或用变量存储结果值
num_STR = str(11)
# 现将numSTR的类型查看,为验证未破坏原结构则再输出一份原数据
print(type(num_STR) , num_STR)
运行结果:<class 'str'> 11
原则:万物皆可转字符串(通过添加双引号),但将字符串转数字则要确保字符串内容都是数字才可以
注意:浮点数转整数会丢失小数部分的精度
标识符
在python中我们给 变量、方法、类 等很多东西起名字,这些名字称之为标识符;
-
内容限定
中英数字下划线四类元素(不推荐中文、数字不可以开头)
-
大小写敏感
字母的大小写是完全能够区分的
Andy = "111" andy = "000" print(Andy) print(andy)
-
不可使用关键字
不可占用false、true/if、and/... ,同时注意,关键字也是大小写敏感的
运算符
//,取整除 | 返回商的部分(9//2结果是4,9.0//2.0结果是4.0) |
%,取余 | 返回除法的余数(20%10的结果是0) |
**,指数 | 即“次方”(10**2结果是100) |
print("1 + 2 - 3 * 4 =",1 + 2 - 3 * 4)
赋值运算符(把等号右边结果赋给左边变量)
复合赋值运算符
c ± =a等效c=c±a,同理,c * =a等效于c=c*a
字符串扩展
三种定义
单引号、双引号、三引号(此处三引,若用变量接收,则不成为注释)
如果想定义的字符串本身包含单双引号?
①单引号来定义 自身带双引号的内容 ,反之同理,用双引号来定义自身含单引号的内容;
②转移字符“\”右斜杠,来解除引号的效用
name="\"这是自带引号的内容"\"
拼接
一般用于字面量和字面量或变量和变量之间拼接
name = "这是将要被拼接的示例文字"
print("我是:" + name + ",很高兴认识你")
格式化
为什么引入占位?因为上述方法①变量过多时拼接起来太麻烦;②字符串无法和数字或其他类型拼接;
message = "我的名字是 %s" % name
其中,百分号表示此处发生占位,s则表示将变量变成字符串放入占位的位置
多个变量占位时,变量要括起来,且要按顺序填入
class_num = 114514
avg_salary = 19198.10
message = "第%s期的数值是%s" % (class_num , avg_salary)
print(message)
格式化精度控制
上式代码块会将19198.10输出为19198.100000;
所以通过辅助符号“m.n”控制数据的宽度和精度;m很少使用,m小于自身时不生效;n控制小数点,会四舍五入
%5d:以11为例,会显示:
【空格】【空格】【空格】11,即被空格补足了宽度 ;
%7.2f:以11.354为例:
【】【】11.35 ;
格式化方式二
更优雅的解决方式:快速格式化的语法 f"内容{变量}"
, 不控制精度而原样输出
name = "传智"
setupyear = 2006
stockprice = 19.99
print(f"我是{name},我成立于{setupyear},我今天的股价是{stockprice}")
对表达式格式化
什么是表达式?
一条具有明确执行结果的代码语句 , 不存储数据时可以直接格式化:
print("1*1的结果是:%d" % (1*1))
print(f"1*1的结果是:{1*1}")
print(f"字符串的类型是:{type('字符串')}")
数据输入
input函数
上图 print("请告诉我你是谁")
是多余的,可以直接 name = input("请告诉我你是谁")
实现;
注意:input默认接收的都是字符串,想得到其他类型需要自行转换
判断语句
布尔和比较运算符
布尔:表示真假
比较运算符:计算真假
==、!=、>、<、>=、<=
num1 = 10
num2 = 10
print(f"10 >= 10:{num1 >= num2}")
print(f"10 <= 10:{num1 <= num2}")
if基本
if age >= 18 :
print ("成年,请缴费")
if else
else :
print("未成年,可以免费游玩")
if elif else语句
某些场景下判断条件不止一个:(以猜数字游戏为例)
import random
# 生成随机数
secret_number = random.randint(1, 10)
# 限定猜测次数
guesses_taken = 0
max_guesses = 3
while guesses_taken < max_guesses:
# 调用input来获取输入者的猜想数字
guess = int(input("猜一个1到10之间的数字: "))
# 猜测次数加一
guesses_taken += 1
# 比较猜测的与既定的随机数字
if guess == secret_number:
print("芜湖!猜对了!")
break
else:
print("朋友,这是一场豪赌,再来一次")
# 次数达到上限仍未猜对
if guesses_taken == max_guesses:
print("それは残念です,你没有猜对。数字是: ", secret_number)
判断的嵌套
场景:不仅条件并列,还会有满足前置才会二次判断的多层判断需求;
关键点在于空格缩进,python据此判断层次关系
if、elif、else可以自由组合,满足缩进即可;
案例
import random
secret_number = random.randint(1, 10)
guess_num = int(input("你想蒙几:"))
# 以上是构建了一个随机的数字变量,下面开始用if
if guess_num == secret_number:
print("恭喜第一次就猜对了")
else:
if guess_num > secret_number:
print("你猜大了")
else:
print("你猜小了")
# 第二次机会:
guess_num = int(input("第二次机会,再蒙一次:"))
if guess_num == secret_number:
print("还不错,第二次猜中也不赖了")
else:
if guess_num > secret_number:
print("你猜大了")
else:
print("你猜小了")
# 第三次,最后一次机会:
guess_num = int(input("最后一次机会咯:"))
if guess_num == secret_number:
print("勉勉强强,千钧一发")
else:
print("怎么回事?不大行啊你这,机会没了")
循环语句
循环广泛存在,图片或音乐轮播、动态壁纸、批量修图等
while基础语法
i = 0
while i <= 100 :
print ...
i += 1
案例和嵌套应用
# 无限机会直到猜中、每次猜错提示大小、猜完显示已使用的次数
import random
secret_number = random.randint(1, 100)
# 通过count来计数:
count = 0
# 通过Bool来做是否继续循环的标记
flag = True
while flag:
guess = int(input("来了哟~:"))
count += 1
if guess == secret_number:
print("什么欧皇,猜中了???")
flag = False
# 这里是终止条件
else:
if guess > secret_number:
print("猜大了哟~( ̄︶ ̄)")
else:
print("小了,嘿嘿(●'◡'●)")
print(f"猜了{count}次,你也真够闲的(笑)")
while循环也是基于空格缩进的
- 默认print语句是自动换行的,在句尾加上
end=''
,即可输出不换行- 符号
\t
相当于tab键,可让多行字符串对齐(制表符)
下面打印乘法表:分别用两个循环控制行(i≤9)
和每一行的内容(j≤i)
、每行都在进行 j*i
、注意换行和对齐关系;
执行流程如上示;
for语法和应用
区别
-
for 临时变量 in 待处理数据集 :
此循环条件满足时执行的代码
for x in name : print ( x )
从运行结果(竖排列出name里的每个字母)看,是将字符串依次取出,因此for也叫 遍历循环 ;
注意:无法定义循环条件,只能从被处理的数据集中依次取出内容;
理论上python无法无限处理(无限循环数据集),处理多少次完全取决于数据;
练习:计数一串句子里有多少个“a”
sentence = "Now let's count how many E there are in this sentence."
# 定义一个变量,以调用它来统计E的个数
count = 0
#开始统计
for x in sentence:
if x == "e":
count += 1
print(f"被统计的句子中有{count}个字母e")
range
待处理数据集严格叫 “序列类型” ,其指,内容可以一个个依次取出的,包括
-
字符串
-
列表
-
元组等
语法①为
range(num)
,是获取一个从0开始到num结束的数字序列,比如range(5)取得的是 [0,1,2,3,4]②
range(5,10)
[5,6,7,8,9]
③
range(5,10,2)
,step默认1,是步长/步进[5,7,9]
变量作用域
for后面跟的临时变量在规范中,作用范围只在循环内部,不应该在外部被访问到(但实际上是可行的),如果确实需要访问,则需要在循环开始前就定义好 i = 0
。
循环中断break和continue
特殊情况:暂时跳过某次循环直接进行下一次 或 提前退出循环
-
- 用于终止本次,直接进入下一次,在for和while效果一致
- 只作用自己所在的循环,对其他循环不生效
-
-
直接结束循环,for和while一致
-
遇到break就去运行外面的语句
for i in range(1,6): print("这是第①条语句,会被显示") for j in range(1,6): print("这是第②条语句,会被显示") break print("这是第③条语句,因为被break阻断所以不会显示") print("这是第④条语句,会被显示") # 综上,四句话应该按①②④的排列出现五次
-
综合
工资案例,需求如下:
-
公司余额10000给20名员工,员工编号1~20依次领取,每人可领1000
-
判断绩效分:1到10随机生成,低于5则不发工资,轮到下一位
-
余额发完则结束
要求:
-
使用循环
-
continue用于跳过员工,break直接停止全程
-
随机数用random生成
money = 10000 for i in range(1,21): import random score = random.randint(1,10) if score < 5: print(f"社畜{i}号的绩效分是{score},不及格,来下一位~") continue # 先判断 公司的余额 还够不够发所有人工资的 if money >= 1000: money -= 1000 print(f"社畜{i}号,来拿钱吧,你拿完之后公司就剩 :{money} 了") else: print(f"别抢了 , 地主家余粮就剩 :{money} 了, 谁都甭想要啦!") break
-