Python入门
基础语法
字面量
字面量:在代码中,背写下来的固定的值。
常见的值类型:
注释
注释:在程序代码中对程序代码进行解释说明的文字。(不会被执行)
单行注释:#
多行注释:“”" 123 “”"三引号
变量
变量:在程序运行时,能储存计算结果或能表示值的抽象概念。
变量名称 = 变量的值
# 定义一个变量,来记录钱包余额
money = 50
print("钱包余额还有:",money)
# 买了一个冰淇淋,花费十元
money = money - 10
print("买了一个冰淇淋,钱包余额还有:",money)
# 假设,每隔一小时,输出一下钱包的余额
print("现在时下午1点,钱包余额剩余:",money)
print("现在时下午2点,钱包余额剩余:",money-10)#ctrl+D 直接复制
print("现在时下午3点,钱包余额剩余:",money-20)
print("现在时下午4点,钱包余额剩余:",money-30)
数据类型
# 使用type查看数据类型, type(要查看的数据)
print(type("上海师范大学"))
print(type(666))
print(type(13.14))
# 用变量存储type得到结果
string_type = type("上海师范大学")
int_type = type(666)
float_type = type(13.14)
print(string_type)
print(int_type)
print(float_type)
# 查看变量的存贮类型
school = "上海师范大学"
school_type = type(school)
print(school_type)
变量是没有类型的,有类型的是变量存贮的数据
数据类型转换
数据类型在特定的场景下转换,如字符串转数字,数字转字符串等。
# 将数字类型转换成字符串
num_str = str(123)
print(num_str,"的数据类型是",type(num_str))
# 将字符串转换成数字
str_num = int("123")
print(str_num,"的数据类型是",type(str_num))
# 将字符串转换成数字
str_flo = float("123")
print(str_flo,"的数据类型是",type(str_flo))
# 浮点数转整数
float_int = int(13.14)
print(float_int,"的数据类型是",type(float_int)) #会丢失精度,小数部分丢失
标识符
在python中,我们可以给很多东西取名字,比如:
- 变量的名字
- 方法的名字
- 类的名字,等等
这些名字,我们把它统一的称之为标识符,用来做内容的标识。
所以,标识符:用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名。
标识符命名有三大规则:
- 内容限定(只限:英文,中文,数字,下划线(_))
数字不可以在开头
- 大小写敏感
- 不可使用关键字
# 内容限定(只限:英文,中文,数字,下划线(_))`数字不可以在开头`
name = 1
名字 = 2
_name = 3
# 大小写敏感
Item = 123
item = 456
print(Item)
print(item)
# 不可使用关键字
# class = 1 报错
Class = 1 #大小写规则
运算符
算数运算符:
# 算数运算符
print("1+1=",1+1)
print("2-1=",2-1)
print("2*3=",2*3)
print("4/2=",4/2)
print("11//2=",11//2) # 整除
print("9%2=",9%2) # 取余
print("4**2=",4**2) # 指数
复合运算符:
# 复合运算符
num = 10
num += 1 # num = num + 1
print(num)
num -= 1
print(num)
num *= 2
print(num)
num /= 2
print(num)
num %= 2
print(num)
num //= 2
print(num)
num **= 2
print(num)
字符串扩展
字符串的定义
字符串在python中有多种定义方式:
- 单引号:name = ‘上海师范大学’
- 双引号:name = “上海师范大学”
- 三引号:name = “”“上海师范大学”“”
如果想要在定义的字符串中本身就含有引号,有多种办法
# 字符串本身含有双引号
name4 = "shnu'sh'"
print(name4)
name5 = 'shnu"sh"'
print(name5)
name6 = ' shnu\'sh\' ' # 用\ 来解除符号的效用
print(name6)
字符串的拼接
# 字符串字面量之间的拼接
print("我是一个"+"大傻逼")
# 字符串字面量与字符串变量的拼接
name = "猪猪人"
addrees = "溧杉矶"
print(name+"住在"+addrees)
字符串变量不能和数值型变量直接拼接
字符串格式化(占位)
因为字符串拼接过于繁琐、无法与其他类型完成拼接,所以我们要用到字符串格式化。
%:表示占位
s:将变量变成字符串放入占位的地方
d:将变量变成整数放入占位的地方
f:将变量变成浮点数放入占位的地方
message = "学java的%s" % name
print(message)
# 通过占位的形式,完成数字和字符串的拼接
class_num = 57
avg_sal = 16000
message2 = "班级里有%s人,平均生活费%s" % (class_num,avg_sal)
print(message2)
message3 = "班级里有%d人,平均生活费%f" % (class_num,avg_sal)
print(message3)
格式化(占位)的精度控制
我们可以使用辅助符号"m,n"来控制数据的宽度和精度
- m:控制宽度,要求是数字(很少使用),设置的宽度小于数字本身,不生效。
- n:控制小数点精度,要求是数字,会进行四舍五入。
# 格式化中的精度控制
message3 = "班级里有%5d人,平均生活费%7.2f" % (class_num,avg_sal) #宽度限制为7,精度限制为2,如果不限制宽度则为(.2)
print(message3)
字符串格式化(快速格式化)
语法:f“内容{变量}”
缺点:没法做精度控制
# 快速格式化
print(f"班级里有{class_num}名学生,平均生活费是{avg_sal}元")
对表达式进行格式化
表达式:一条具有明确的执行结果的代码语句
#对表达式进行字符串格式化
print("1 * 1 的结果是:%d" %(1*1))
print(f"1 * 2 的结果是:{1 * 2}")
print("这个字符串的类型是:%s" %type("字符串"))
数据输入 (input)
input输入的永远是字符串类型
name = input("告诉我你是谁")
print("你是:%s" %name)
#输入数字类型
num = input("请输入数字密码")
print(type("num"))
Python的判断语句
布尔(bool)类型和比较运算符
布尔类型的字面量:
- True表示为真(是、肯定)
- False表示假(否、否定)
定义变量存贮布尔类型数据: 变量名称 = 布尔类型字面量
比较运算符:
# 定义变量存储布尔类型的数据
bool_1 = True
bool_2 = False
print(f"bool_1的内容是:{bool_1},类型是:{type(bool_1)}")
print(f"bool_1的内容是:{bool_2},类型是:{type(bool_2)}")
#比较运算符的使用:==、!=、>、<、>=、<=
num1 = 10
num2 = 10
print(f"10 == 10的结果是:{num1 == num2}")
print(f"10 == 10的结果是:{10 == 10}")
#字符串型
name1 = "tom"
name2 = "pig"
print(f"tom = pig的结果是:{name1 == name2}")
#演示>、<、>=、<=
print(f"15 >= 10的结果是:{15 >= 10}")
if语句的基本格式
age = int(input("请输入您的年龄:"))
if age >= 18:
print("您已经成年啦")
print("时间过的真快")
if else 语句
age = int(input("请输入您的年龄:"))
if age >= 18:
print("您可以去网吧了")
else:
print("还是个小屁孩")
print("时间过的真快")
if elif else 语句
num = 5
if int(input("请猜一个数字:")) == num:
print("恭喜第一次就猜对了")
elif int(input("请再猜一次:")) == num:
print("恭喜您猜对了")
else:
print("很遗憾,您没有猜对")
注意细节:
1、所有条件只会有一个满足,按顺序来
2、else也可以省略不写,效果等同3个独立的if判断
判断语句的嵌套
print("欢迎来到动物园")
if int(input("请输入您的身高(cm):")) >= 120:
print("您的身高过高,不满足免费条件")
print("如果您的VIP等级大于等于4级,仍可免费游玩")
if int(input("请输入您的VIP等级(1-5):")) >= 4:
print("恭喜您,您的VIP等级大于等于4级,可以免费游玩")
else:
print("不好意思,请购票")
else:
print("欢迎您,您可以免费游玩")
公司要发礼物,条件是:
1、级别大于3
2、年龄必须再18-30岁之间,并且工龄大于两年
if work_level > 3:
print("恭喜您,您可以领取礼物")
elif age >= 18:
if age < 30:
if work_age <= 2:
print("您无法领取礼物")
else:
print("恭喜您,您可以领取礼物")
else:
print("sorry")
else:
print("sorry")
实战案例(猜数字)
定义一个数字,通过三次判断来猜出数字。
要求:
1、数字1-10,随机产出
2、有三次机会。
3、猜错会提示大了还是小了
import random
num = random.randint(1,10)
num_guess = int(input("请猜一个数字"))
if num_guess == num:
print("恭喜您,一次就猜对啦")
else:
if num_guess > num:
print("大了,您还有两次机会")
else:
print("小了,您还有两次机会")
num_guess2 = int(input("请猜一个数字,第二次机会"))
if num_guess2 == num:
print("恭喜您在第二次猜对啦")
else:
if num_guess2 > num:
print("大了,您还有一次机会")
else:
print("小了,您还有一次机会")
num_guess3 = int(input("请猜一个数字,第三次机会"))
if num_guess3 == num:
print("恭喜您在最后一次猜对啦")
else:
print("sorry")
Python循环语句
while循环的基础语法
i = 0
while i < 100:
print(f"倒了{i}次")
i += 1
# 练习:求1累加到100的和
x = 1
y = 0
while x < 101:
y += x
x += 1
print(f"1累加到100的和是{y}")
while循环的基础案例
"""
设置一个范围1-100的随机整数变量,通过while循环,配合input语句,判断输入的数字是否等于随机数
要求:
1、无限次机会,直到猜中为止
2、每一次猜不中,会提示大了还是小了
3、猜完数字后,提示猜了几次
"""
import random
num = random.randint(1,100)
flag = True
i = 1
while flag:
num_guess = int(input("请猜一个数字(1-100):"))
if num_guess == num:
print(f"猜对了,猜了{i}次")
flag = False #终止循环的意思
else:
if num_guess > num:
print(f"猜大了,猜了{i}次")
else:
print(f"猜小了,猜了{i}次")
i += 1
while循环的嵌套应用
i = 1
while i <= 100:
print(f"今天是表白第{i}天")
# 内存循环的控制变量
j = 1
while j <= 10:
print(f"送给小妹第{j}只玫瑰")
j += 1
print("i like u")
i += 1
print(f"坚持到第{i-1}天,表白成功")
while循环的嵌套案例
"""
# 自动不换行end=''
print("hello", end='')
print("world",end='')
# 自动不换行并对齐,制表符\t
print("hello\tworld")
print("item\tzmx")
"""
# 通过while循环输出九九乘法表
i = 1
while i <= 9:
# 定义内层循环的控制变量
j = 1
while j <= i:
# 内存循环,不要换行,再用制表符对齐
print(f"{j} * {i} = {j * i}\t", end='')
j += 1
i += 1
print() # print(),就是输出一个换行
for 循环
基础语法
遍历
name = "zhaomengxuan"
# for循环处理字符串
for x in name:
print(x)
运行结果
案例
# 案例,统计字符串中有多少个a
name2 = "asnodiqhwiuabiaasadbuaaaadinihuoouadaadas"
count_a = 0
for x in name2:
if x == 'a':
count_a += 1
print(f"name2中一共有{count_a}个a")
range语句
左闭右开
语法:
- 1、range(num):获取一个从0开始,到num结束的数字序列(
不含num
)。 - 2、range(num1,num2):获取一个从num1开始,到num2结束的数字序列(
不含num2
)。 - 3、range(num1,num2,step):获取一个从num1开始,到num2结束的数字序列(
不含num2
),数字之间的步长为step,默认为1。
# range案例:定义num,range(1,num),统计有多少个偶数
num = 10213
count_num = 0
for x in range(1,num+1):
if x % 2 == 0:
count_num += 1
print(f"num中有{count_num}个偶数")
for循环临时变量作用域
# 临时变量作用域
i = 0 #提前定义
for i in range(5):
print(i)
print(i)
for循环的嵌套应用
# 坚持表白100天
# 每天送花10束
i = 1
for i in range(1,101):
print(f"今天是表白的第{i}天")
for j in range(1,11):
print(f"送出第{j}朵花")
print(f"第{i}表白结束")
print(f"表白第{i}天,表白成功")
案例:九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print(f"{j} * {i} = {j * i}\t",end='')
print()
循环中断:break和continue
break
continue
综合案例
"""
某公司,账户余额有1w元,给20名员工发工资,要求
1、员工编号从1-20,从编号1开始依次领取工资,没人可领1000元
2、领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位
3、如果工资发完了,结束发工资
"""
import random
sal_total = 10000
for i in range(1,21):
print(f"第{i}位员工开始领取工资")
performance = random.randint(1,10)
if sal_total <= 0:
print("工资已经发放完毕,请下个月再来")
break
elif performance < 5:
print(f"第{i}号员工的绩效不合格,不发放工资,下一位")
continue
else:
sal_total -= 1000
print(f"向员工{i}支付1000元工资,账户余额{sal_total}元")
函数
函数的介绍
函数:是组织好的,可重复使用的,用来实现特定功能的代码段。
# 统计字符串的长度,不使用内置函数len()
str1 = "ithiema"
str2 = "itcast"
str3 = "python"
def my_len(data):
count = 0
for i in data:
count += 1
print(f"字符串{data}的长度是{count}")
my_len(str1)
my_len(str2)
my_len(str3)
函数的定义
def say_hi():
print("Hi, im pig")
say_hi()
函数的参数
传入参数的功能:再函数进行计算的时候,接受外部(调用时)提供的数据。
def add(x,y):
result_add = x + y
print(f"{x} + {y}的结果是{result_add}")
add(1123,1544235)
"""
定义一个函数,接受参数输入(数字类型表示体温),在参数内进行体温判断(正常范围:<=37.5)
"""
def temp(x):
x = float(x)
if x <= 37.5:
print("体温正常")
else:
print("发烧了,立即枪毙")
temp(37.6)
函数的返回值
返回值的定义
返回值:可以将结果返回给调用者
def add(a,b):
result_add = a + b
return result_add # 函数在return处直接结束
r = add(23,43)
print(r)
返回值的None类型
None表示:空的、无实际意义的意思,在python中返回为空。
None 写不写无所谓,不写默认返回None。
def say_hi():
print("Hi, im pig")
x = say_hi()
print(x) # 返回值为None
print(type(x)) # 结果为<class 'NoneType'>
#None在if中使用
def check_age(age):
if age >= 18:
return "success"
else:
return None
result_age = check_age(16)
print(result_age) # 返回值为None
if not result_age: # not false(none) == true
print("未成年")
# None赋值
name = None # 暂时不提供值
函数的说明文档
注意:说明内容应写在函数体之前
def add(x,y):
"""
add函数可以接受两个参数进行参加
:param x: 1
:param y: 2
:return: 相加的结果
"""
result_add = x + y
return result_add
add(5,6)
函数的嵌套调用
函数的嵌套调用是指在一个函数里面又调用了另一个函数。
def func_b():
print("-2-")
def fun_a():
print("-1-")
func_b()
print("-3-")
fun_a()
变量的作用域
变量的作用域指的是变量的作用范围(在哪可以用,在哪不可以用)
主要分为两类:局部变量和全局变量
局部变量
所谓局部变量是定义在函数内部的变量,即只在函数体内部生效。
# 其中的result_add就是一个局部变量
def add(x,y):
"""
add函数可以接受两个参数进行参加
:param x: 1
:param y: 2
:return: 相加的结果
"""
result_add = x + y
return result_add
print(result_add) # 报错,出了函数体,无法使用
全局变量
num = 200
def tes_a():
print(f"tes_a={num}")
tes_a()
def tes_b():
# global num # 将内部变量设置为全局变量,不然函数体的num是始终与外部的num无关
num = 500 # 依旧是一个局部变量,与外部的num无关
print(f"tes_b={num}")
tes_b() # tes_b=500
print(num) # 还是200
综合案例
"""
1、定义一个全部变量money,用来记录银行卡余额,初始为5000000
2、定义一个全部变量name,用来记录客户姓名(启动程序时输入)
3、定义如下函数:余额查询函数、存款函数、取款函数、主菜单函数
要求:
- 程序启动后要求输入客户姓名
- 程序余额、存款、取款后都会返回主菜单
- 取款、存款后,都显示一下当前余额
- 客户选择退出或者输错时程序才会推出,不然程序会一直允许
"""
# 定义全局变量
money = 5000000
name = input("请输入您的姓名")
# 定义查询函数
def query(show):
if show:
print("---------------------余额查询---------------------")
print(f"{name},您好,您的余额剩余{money}元")
# 定义存款函数
def deposit(num):
global money
money += num
print("---------------------存款--------------------")
print(f"存款{num}元成功")
# 调用query函数查询余额
query(False)
# 定义取款函数
def withdraw(num):
global money
money -= num
print("---------------------取款--------------------")
print(f"取款{num}元成功")
# 调用query函数查询余额
query(False)
# 定义主菜单函数
def main():
print("---------------------主菜单--------------------")
print(f"{name},您好,欢迎来到atm,请选择操作:")
print("