一、Python基础语法
1、常用快捷键
2、数据类型
3、类型转换
4、算术运算符
5、数字精度控制
6、字符串的三种定义方式
7、字符串的拼接
8、字符串的格式化
格式化方法一、
格式化方法二、
9、字符串格式化的精度控制
10、对表达式进行格式化
11、练习:股价计算小程序
运行j结果:
name="传智播客"
stcok_price=19.99
stock_code="003032"
stock_price_daily_growth_factor=1.2
growth_days=7
finally_stock_price=stcok_price*stock_price_daily_growth_factor**growth_days
print(f"公司:{name},股票代码:{stock_code},当前股价:{stcok_price}")
print("每天增长系数是:%.1f,经过%d天的增长后,股价达到了:%.2f" %(stock_price_daily_growth_factor,growth_days,finally_stock_price))
12、输入input语句
1、需要将intput()赋值给变量
2、 input() 语句中,不管输入什么,默认接收类型为字符串
如果想传入其他数据类型,需要进行数据类型转换
二、Python判断语句
1、布尔类型和比较运算符
通过比较运算符来实现布尔的结果
代码:
运算结果:
2、if语句的基本格式
if语句后面是冒号,下面的语句没有大括号,但是有4个空格的缩进
3、练习:成年人判断
错误代码:
print("欢迎来到黑马儿童游乐场,儿童免费,成人收费。")
age1=input("age")
age1=int(age1)
print("请输入你的年龄:%s"%age1)
if age1>=18:
print("您已成年,游玩需要补票10元。")
print("祝您游玩愉快")
正确代码:
print("欢迎来到黑马儿童游乐场,儿童免费,成人收费。")
age=int(input("请输入你的年龄:"))
if age>=18:
print("您已成年,游玩需要补票10元。")
print("祝您游玩愉快")
注意:Int数据类型转换 在input语句外
4、if else 语句
5、if - elif 语句
注意:不是 else if,是elif
只有最后一种条件,写成else
6、练习:猜猜心里数字
num=5
if input("请猜一个数字:")==num:
print("恭喜第一个次就猜对了呢。")
elif int(input("猜错了,再猜一次:")==num):
print("猜对了。")
elif int(input("猜错了,再猜一次:"))==num:
print("恭喜,最后一次机会,您猜对了。")
else:
print("Sorry 猜错了。")
7、判断语句的嵌套
练习一、
嵌套的关键点,在于空格的缩进
通过空格的缩进,来表示语句之间的层次关系
# 简单嵌套
print("欢迎来到黑马动物园。")
if int(input("输入你的身高:"))>120:
print("你的身高大于120cm,不可以免费")
print("不够如果你的vip等级高于3,可以免费游玩")
if int(input("请告诉我你的vip级别:"))>3:
print("恭喜你,你的vip级别大于3,可以免费游玩。")
else:
print("Sorry,你需要补票,10元。")
else:
print("欢迎你小朋友,可以免费游玩。")
练习二、
有小bug,如果是第三次猜中,输出“三次 机会用完了,没有哦猜中,找不到哪里有问题
# 产生一个随机数字
import random
num=random.randint(1,10)
print(num)
guess_num=int(input("输入你要猜测的数字:"))
if guess_num==num:
print("恭喜,第一次就猜中了")
else:
if guess_num>num:
print("你猜测的数字大了")
else:
print("你猜测的数字小了")
guess_num=int(input("再次输入你要猜测的数字:"))
if guess_num==num:
print("恭喜,第二次猜中了")
else:
if guess_num>num:
print("你猜测的数字大了")
else:
print("你猜测的数字小了")
guess_num=input("第三次输入你要猜测的数字:")
if guess_num==num:
print("第三次猜中了")
else:
print("三次机会用完了,没有猜中。")
8、while循环语句
注意while条件语句后面的冒号不要忘记
# 告白一百次
i=0
while i<100:
print("小美,我喜欢你")
i+=1
9、练习:求1-100的和
sum=0
i=1
while i<=100:
sum+=i
i+=1
# print("从1累加到100的和为:%d"%sum)
print(f"1-100累加的和是:{sum}")
10、while循环基础案例:猜数字
代码一、
# 得到一个随机数字
import random
num=random.randint(1,100)
print(num)
x=0
flag=0
while x!=num:
x=int(input("请输入你猜测的数字:")) #输入的猜测数字
flag+=1
if x>num:
print("猜大了")
elif x<num:
print("猜小了")
print("太好了,你只用了%d次就猜中了"%flag)
代码二、
# 的带==得到一个随机数字
import random
num=random.randint(1,100)
print(num)
cnt=0
flag=True
while flag:
x=int(input("请输入你猜测的数字:")) # 输入的猜测数字
cnt+=1
if x==num:
print("猜中了")
flag=False
else:
if x>num:
print("你猜的大了")
else:
print("你猜的小了")
print(f"太好了,你只用了{cnt}次就猜对了")
11、while循环的嵌套
# 表白100天,每天都会送10朵玫瑰花
i=1
while i<=100:
print(f"今天是第{i}天,准备表白")
j=1
while j<=10:
print(f"送给小美第{j}只玫瑰花")
j+=1
print("小美,我喜欢你")
i+=1
print(f"坚持到第{i-1}天,表白成功")
12、练习:打印九九乘法表
小知识1:
在print语句中,默认自动换行,在print语句中加上end=’ ',就可以不换行了
小知识2:
思想:
九九乘法表打印出来是j*i,
注意输出语句是:
print(j*i,end=' ')
1、控制行的循环:i<=9
2、控制每一行输出的循环:j<=i
错误代码:
i=1
j=1
while i<=9:
# 问题1:j=1应该放在这里,每一行的开始都是1*x=x
while j<=i:
print(f"{i}*{j}={i*j}\t",end=' ') # 不换行
j+=1
# 问题2:换行有问题
if j==i:
print(f"{i}*{j}={i*j}") # 换行
i+=1
正确代码:
i=1
while i<=9:
# 定义内层循环的控制变量
j=1
while j<=i:
#内层循环的print语句,不要换行,通过\t制表符进行对齐
print(f"{j}*{i}={j*i}\t",end=' ')
j+=1
i+=1
print() # print空内容,就是输出一个换行
13、for循环
语法:
for 变量 in被处理的数据
for循环无法定义循环条件
只能被动地去除数据集
注意for循环后面的冒号,以及下面语句的空格缩进
理论上,Python的for循环无法构建无限循环,因为被处理的数据集不可能无限放大
name="itheima"
for x in name:
# 将name的内容,挨个去除赋予x临时变量
# 就可以在循环体内对x进行处理
# 注意空格缩进
print(x)
14、练习:数一数有多少个a
name="itheima is a brand of itcast"
x=name
cnt=0
for x in name:
if x=="a":
cnt+=1
print(f"被统计的字符串中有{cnt}个a")
15、range语句
一般range语句是配合for循环使用的
语法一:
range(num)
表示:从0开始,到num结束的数字序列,不含num本身
如:range(5)取得的数据是:0, 1,2, 3,4
例:
打印从0开始到9的数字
for x in range(10):
print(x)
语法二:
range(num1,num2)
获得一个从num1开始,到num2结束的数字序列,不含num2本身
如:range(5,10)取得的数据是:5, 6, 7, 8, 9
例:
打印从5到9的数字:
for x in range(5,10):
print(x)
语法三:
range(num1,num2,num3)
获取一个从num1开始,到num2结束的数字序列,不含num2本身
数字之间的步长,以step为准(step默认为1)
如:range(5,10,2)取得的数据是:5, 7,9
例:
for x in range(5,10,2):
print(x)
16、range用法
打印10次“送玫瑰花”
i=1
while i<=10:
print("送玫瑰花")
i+=1
将上面的while循环转换成for循环
for x in range(10):
print("送玫瑰花")
17、练习:有几个偶数
num=100
cnt=0
for x in range(1,num):
print(x)
if x%2==0:
cnt+=1
print(f"1到100(不含100)范围内,有{cnt}个偶数")
18、变量作用域
如果想在for循环外部访问临时变量,应该在for循环前,将临时变量先定义好
i=0
for i in range(5):
print(i)
print(i)
19、for循环的嵌套使用
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}天,表白成功")
20、练习:for循环打印九九乘法表
注意;
1、end=’ '可以不换行
2、\t可以对齐
for i in range(1,10):
# 注意:i要+1
for j in range(1,i+1):
print(f"{j}*{i}={j*i}\t",end=' ')
print()
21、循环中断:break,continue
break:中断所在循环的当次执行,直接进行下一次循环
continue:直接结束所在循环
continue示例1:
for i in range(1,6):
print("语句1")
continue #本次循环结束,下面的代码不再执行,直接执行下一次循环
print("语句2")
运行结果:
continue示例2:
for i in range(1,6):
print("语句1")
for j in range(1,6):
print("语句2")
continue
print("语句3")
print("语句4")
break示例1:
for i in range(1,6):
print("语句1")
for j in range(1,6):
print("语句2")
break
print("语句3")
print("语句4")
输出:
22、练习:发工资
代码1:
x=10000
for i in range(1,21):
import random
num=random.randint(1,10)
if x>0:
x-=1000
if num < 5:
print(f"员工{i},绩效分{num},低于5,不发工资,下一位。")
else:
print(f"向员工{i}发放工资1000元,账户余额还剩{x}元.")
else:
print("工资发完了,下个月领取吧。")
break
代码2:
money=10000
# for循环对员工发放工资
for i in range(1,21):
import random
num=random.randint(1,10)
if num<5:
print(f"员工{i}绩效分{num},不发工资,下一位。")
# continue跳过发放
continue
# 要判断余额足不足
if money>=1000:
money-=1000
print(f"员工{i},满足条件,发放1000工资,公司账户月:{money}。")
else:
print("工资发完了,下个月领取吧。")
break
三、Python函数
1、函数介绍
函数三特性:
已组织好的
可重复使用
针对特定功能
统计字符串长度
方法一、用len()Python内置的函数
name="itheima"
length=len(name)
print(length)
运行结果:
方法二、用计数器统计
str1="itheima"
str2="itcast"
str3="python"
# 定义一个奇数的变量
count=0
for i in str1:
count+=1
print(f"字符串{str1}的长度是:{count}")
count=0
for i in str2:
count+=1
print(f"字符串{str2}的长度是:{count}")
count=0
for i in str3:
count+=1
print(f"字符串{str3}的长度是:{count}")
运行结果:
方法三、自定义函数统计(优化)
str1="itheima"
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)
运行结果:
2、函数定义
语法:
def 函数名(传入参数):
函数体
return 返回值
传入参数和返回值可以省略
基础定义形式
# 定义一个函数,输出相关信息
def say_hi():
print("hi!我是黑马程序员")
# 调用函数
say_hi()
输出结果:
3、函数的传入参数
有如下代码,完成了两个数字的相加功能
# 定义函数
# 括号内为形参
def add(x,y):
result=x+y
print(f"{x}+{y}的结果是:{result}")
# 调用函数
# 括号内为实参
add(1,3)
运行结果:
4、练习:升级版自动查核酸
def check(a):
print("欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!",end=' ')
print("体温测量中,您的体温是:",end=' ')
# a=float(a)
if a<=37.5:
print(f"{a}度,体温正常请进!")
else:
print(f"{a}度,需要隔离!")
check(37.5)
5、函数的返回值
定义一个函数,我那成两个数字相加的功能
# 定义函数
def add(a,b):
result=a+b
return result
# 函数的返回值,可以通过变量去接收
r=add(5,6)
print(r)
6、函数返回值——None类型
函数中如果没有声明返回值,那么默认返回None
def say_hi():
print("你好呀")
result=say_hi()
print(f"无返回值函数,返回的内容是:{result}")
print(f"无返回值函数,返回的内容类型是:{type(result)}")
输出结果;
def say_hi():
print("你好呀")
return None
result=say_hi()
print(f"有返回值函数,返回的内容是:{result}")
print(f"有返回值函数,返回的内容类型是:{type(result)}")
输出结果: