终端输入信息
如何打开终端
windows键+R键打开运行,输入cmd,点击确定
语法
name = input("请输入员工姓名:") # 终端里输入 小龙
print(name) # 小龙
print(type(name)) # <class 'str'>
age = input("请输入员工年龄:") # 终端里输入 96年
print(age) # 96年
print(type(age)) # <class 'str'>
字符串与数字的相互转化
所有输入的信息都是字符串,字符串不能进行加减运算,可转换为数字后再进行运算
#字符串转数字 int(字符串)
age = input("请输入员工年龄:") # 终端里输入 25
print(int(age)*2) # 50
print(age*2) # 2525
print(type(int(age))) # <class 'int'>
#数字转字符串 str(数字)
name = input("请输入员工姓名:") # 终端里输入 小龙
age=12
print(type(age)) # <class 'int'>
# print(name+"的年纪为"+12) # 会报错
print(type(str(12))) # <class 'str'>
print(name+"的年纪为"+str(12)) # 小龙的年纪为12
打印print
#格式化输出
name = input("请输入你的姓名:") # 终端输入 小龙
sex = input("请输入你的性别:") # 终端输入 男
age = int(input("请输入你的年龄:")) # 终端输入 25
print(name+",欢迎登录!") # 小龙,欢迎登录!
print("%s,欢迎登录!"%(name)) # 小龙,欢迎登录!
# 小龙,性别:男,欢迎登录
print("%s,性别:%s,欢迎登录"%(name,sex)) # 小龙,性别:男,欢迎登录
# 小龙,性别:男,年龄:25,欢迎登录
print("%s,性别:%s,年龄:%d,欢迎登录"%(name,sex,age)) # 小龙,性别:男,年龄:25,欢迎登录
pi = 3.1415926
print(pi) # 3.1415926
# 格式化小数,展示总的空间是10位,小数点后保留一位,靠右对齐
print("%10.1f为pi的值"%(pi)) # 3.1为pi的值
# 格式化小数,展示总的空间是10位,小数点后保留一位,靠右对齐,左边没有数字的显示0
print("%010.1f为pi的值"%(pi)) # 00000003.1为pi的值
# 格式化小数,展示总的空间是10位,小数点后保留一位,靠左对齐
print("%-10.1f为pi的值"%(pi)) # 3.1 为pi的值
# 格式化小数,展示总的空间是10位,小数点后保留一位,靠右对齐,显示正负号
print("%+10.1f为pi的值"%(pi)) # +3.1为pi的值
# format 函数
a = "张三对李四说:{},{}".format("今天天气好",90)
判断语句
if就是判断符合什么条件,执行什么代码,就好比我们在一个岔路口,我们要去哪个目的地,那我们就会去选择哪条路。if语句最多只会走到里面的某一个判断,不会走多条分支
if 布尔表达式:
符合该条件执行代码
elif 布尔表达式:
上面条件不符合,符合该条件,执行代码
elif 布尔表达式:
上面条件不符合,符合该条件,执行代码
else:
以上条件都不符合,执行代码
单条件判断
# elif 和 else 可省略
a = 9
if a == 9: # 判断 a 是否等于9
print(a) # 如果 a 等于 9,则打印 a;如果不是,则执行elif语句
elif a >9: # 判断 a 是否大于9
print(a) # 如果 a 大于 9 ,则打印 a;如果不是,则执行else语句
else:
print("a<9") # 以上条件都不符合,直接打印 a < 9
# 这里最后打印 9
多条件判断
并且 and
# a=9或b=9
if a == 9 or b == 9:
print(a)
print(b)
elif a >9:
print(a)
else:
print("a<9")
或 or
# a=9或b=9
if a == 9 or b == 9:
print(a)
print(b)
elif a >9:
print(a)
else:
print("a<9")
练习:
| 里程 | 收费 |
|---|---|
| <= 3公里 | 20 元/每公里 |
| >3公里 且 <= 5公里 | 15 元/每公里 |
| >5公里 且 <= 8公里 | 12 元/每公里 |
| >8公里 | 10 元/每公里 |
# 从终端获取任意里程数,获取下当前里程数单价
a = input("请输入里程数:")
price = 0 # 初始设为0
if int(a) <= 3:
price = 20
elif int(a) <= 5: #elif: else if缩写
price = 15
elif int(a) <= 8:
price = 12
else: # 以上所有条件都没满足,会走到这个条件判断
price = 10
print("{}公里的单价为:{}".format(a,price))
# 从终端输入一个里程,然后求打车的总价
a = input("请输入里程数:")
if a.isalpha():
print("输入有误")
else:
a = eval(a)
print(type(a))
sum = 0
if isinstance(a, float) or isinstance(a, int):
if 0 < a <= 3:
sum = 20 * a
elif a <= 5:
sum = 20 * 3 + (a - 3) * 15
elif a <= 8:
sum = 20 * 3 + 15 * 2 + (a - 5) * 12
else:
sum = 20 * 3 + 15 * 2 + 12 * 3 + (a - 8) * 10
print("{}里程的总价为:{}".format(a, sum))
| 里程 | 总时间 | 收费 |
|---|---|---|
| <= 3公里 | <= 1小时 | 20元/每公里 |
| > 1小时 | 22元/每公里 | |
| >3公里 | <= 1小时 | 15元/每公里 |
| > 1小时 | 18元/每公里 |
# 从终端输入一个里程和开车消耗的时间,然后求打车的总价
# 1. 获取公里数和总时长
route = float(input("请输入公里数:"))
hour = float(input("请输入时长:"))
# 初始化总价
sum = 0
# 2. 判断
# 2.1 公里数小于等于3,时长小于等于1
if route<=3 and hour<=1:
sum = 20*route
# 2.2 公里数小于等于3,时长大于1
elif route <= 3 and hour > 1:
sum = 22*route
# 2.3 公里数大于3,时长小于等于1
elif route > 3 and hour <= 1:
sum = 20*3 + (route-3)*15
# 2.4 公里数大于3,时长大于1
else:
sum = 22*3 + (route-3)*18
print("{}公里路程,{}小时,车费的总价为{}".format(route,hour,sum))
循环语句
循环语句在生活中很常见,比如交通灯,一直在循环变颜色;点餐系统也是循环机制,每次输入就餐人数就能打印就餐凭证。
while循环
'''
while 布尔表达式:
循环里面的语句(一般循环都有退出条件,某些场景没有退出条件,比如红绿灯)
'''
#循环打印从1到10
i = 1 # 赋予i初始值1
while i < 11: # i < 11才会进入循环
print(i) # 打印变量i
# i = i + 1 把i+1的值赋值给i
i += 1 # 等价于 i = i + 1
for循环
for i in range(10):
执行里面的代码
for i in range(10): # 循环从0到9,不包含10
print(i)
a = "hello world" #a[2:10]
for i in range(2,10): # 循环从2到9,不包含10
print(i)
for i in range(2,10,2): # 循环从2到9,步长为2
print(i)
a = [1,2,3,4,5,12,3,12] # a[0] 列表长度len(a)
b = len(a)
for i in range(b):
print(a[i])
分别用while循环和for循环:
求阶乘, 从终端输入任意一个正整数,求对应的阶乘,比如输入4,阶乘4 * 3 * 2 * 1
使用while循环实现
# 1. 从终端获取一个正整数
n = int(input("请输入正整数:"))
# 2. 初始化阶乘的结果 sum = 1
sum = 1
# 3. 循环
# 初始化一个循环的变量i
i = 1
while i<=n:
sum *= i # 等价于sum = sum*i
i += 1
print("{}的阶乘为{}".format(n,sum))
使用for循环实现
# 1. 从终端获取一个正整数
n = int(input("请输入正整数:"))
# 2. for循环 比如输入5,for循环就循环5次,从1到5
# 初始化阶乘结果
sum = 1
for i in range(1,n+1):
sum *= i
print("{}的阶乘为:{}".format(n,sum))
break
在循环里面执行break,表示退出整个循环
while True:
command = input("请输入命令:")
if command == 'exit':
break
print("输入的命令是:{}".format(command))
print('程序结束')
当循环里嵌套循环时,break:退出循环,只能跳出最近的一层循环
while True:
print("第一层循环")
while True:
n = input("第二层循环,请输入命令:")
if n == "exit":
break
continue
退出当次循环,当次循环后面的语句不会执行
while True:
command = input("请输入命令:")
if command == 'exit':
break
if command == 'cont':
continue
print("输入的命令是:{}".format(command))
print('程序结束')
continue: 退出当次循环,继续下一次循环
for i in range(10):
if i == 3: # 当 i = 3时,退出这一次的循环,不打印出3,继续下一次循环,执行i = 4,进行打印
continue
print(i)
练习
定义一个循环
第一步:从终端获取输入n
第二步: 判断n == "exit", 如果是,则退出循环
第三步: 判断n == "cont", 如果是,退出当前循环,进入下一次循环
第四步: 打印"你输入的指令为:"
while True:
n = input("请输入指令:") # 获取终端输入
if n == "exit": # 判断输入的指令是否是"exit",如果是,就走里面的代码
break # 退出整个循环
elif n == "cont":
continue # continue: 退出当前循环,进入下一次循环
print("continue") # continue下面的一些代码不会执行
else:
print("您输入的指令为:{}".format(n))
print("111111")
列表
1、可以被随意修改
2、使用[]或list()来创建,元素间用逗号分隔
3、列表中各元素类型可以不同,没有长度限制
| 方法 | 函数 | 备注 |
|---|---|---|
| 列表增 | name.append(a) | append函数,往最后一个元素加 |
| name.insert(下标,a) | insert函数,要输入下标位置,根据下标位置来新增元素。 不加下标位置会报错 | |
| name.extend(列表) | extend函数,先是把俩个列表拆开,把俩个列表的元素拼接在一块 | |
| 列表改 | name[下标]="新名字" | |
| 列表查 | if temp in name: if temp not in name: | |
| 列表删 | del name[下标] | del ,根据索引来删除元素 |
| name.pop() | pop函数,能根据index来删除列表里的元素 (pop里面不加index,默认删除最后一个) | |
| name.remove("值") | remove函数,输入值,会根据这个值,来去除列表里第一个出现的这个值 | |
| 列表排序 | name.sort() | sort函数,从小到大排序 |
| name.sort(reverse=True) | 从大到小排序 |
元组
1、元组一旦创建就不能被修改
2、使用()或者tuple()来创建,元素之间用逗号分隔
3、可以使用或不使用小括号,但是必须要有逗号分隔
元组的几种形式:
a = (1,) #只有一个元素,必须加逗号
a = 1, #括号可以去掉
a = 1, 2, 3.14, 'hello'
字典
1、是键值对的集合,键值对之间没有顺序且不能重复
2、使用大括号{}或者dict()创建,键和值通过冒号链接,多个键值对通过逗号隔开。格式:{键:值,键:值...}
3、可以根据 键 索引 值的内容,没有长度限制
特性:键是唯一的,不可能俩个元素具有相同的键
新增/修改字典元素
info = {"name" : "hxx", "age" : "18"}
# 当字典里没有这个key时,为新增
info["sex"] = "男"
print(info) # {'name': 'hxx', 'age': '18', 'sex': '男'}
# 当字典里有这个key时,为修改
info["age"] = "25"
print(info) # {'name': 'hxx', 'age': '25', 'sex': '男'}
删除字典元素
info = {'name': 'hxx', 'age': '25', 'sex': '男'}
# 字典,pop、del函数,需要输入key,来删除健值对。 若删除的key不存在则会报错
info.pop("age")
print(info) # {'name': 'hxx', 'sex': '男'}
del info["sex"]
print(info) # {'name': 'hxx'}
清空字典
info = {'name': 'hxx'}
info.clear()
print(info) # {}
合并字典
dic = {"name" : "hss", "age" : "24"}
new = {"hobby" : "basketball"}
dic.update(new)
print(dic) # {'name': 'hss', 'age': '24', 'hobby': 'basketball'}
获取字典个数
dic = {'name': 'hss', 'age': '24', 'hobby': 'basketball'}
# 字典,len函数,获取字典的个数
print(len(dic)) # 3
items,keys,values函数
dic = {"name" : "hss", "age" : "24", "sex" : "男"}
# 字典,items函数, 获取字典里所有的健值对。 用元组把所有字典里的健值对拼接起来,塞进列表里。
print(dic.items()) # dict_items([('name', 'hss'), ('age', '24'), ('sex', '男')])
# 字典,keys函数, 获取字典里所有的key
print(dic.keys()) # (['name', 'age', 'sex'])
# 字典,values函数, 获取字典里所有的值
print(dic.values()) # dict_values(['hss', '24', '男'])
遍历字典元素
dic = {"name" : "hss", "age" : "24", "sex" : "男"}
for key,val in dic.items():
print("key为{},value为{}".format(key,val))
# key为name,value为hss
# key为age,value为24
# key为sex,value为男
# 遍历查询字典里的keys
for key in dic.keys():
print(key)
# name
# age
# sex
# 遍历查询字典里的values
for val in dic.values():
print(val)
# hss
# 24
# 男
集合
1、集合是多个元素的无序组合
2、集合元素之间是无序的,每个元素唯一,不存在相同元素 (应用于数据去重,即集合类型所有元素无重复)
3、集合元素不可更改,不能是可变数据类型
4、建立集合类型用{}或set(),元素间用逗号分隔
注意:建立空集合类型,必须用set()
合并集合或添加列表 、字典、元组
# 集合,获取集合时会自动去重 并且集合是没有顺序
se = { 2, 3, "1", 2, 3, 4}
print(se) # {2, 3, 4, '1'}
# 合并或者添加时,会去除重复的元素
se2 = {"hhh","1"} # 集合
se.update(se2) # 集合,update函数,能合并集合
print(se) # {2, 3, 4, '1', 'hhh'}
#
se3 = [9, 0] # 列表
se.update(se3) #集合 里添加列表
print(se) # {0, 2, 3, 4, '1', 'hhh', 9}
#
se4 = {"zidian" :"age"} # 字典
se.update(se4) #集合 里添加字典 只会添加key, 字典里的值 不会添加进去
print(se) # {0, 2, 3, 4, '1', 'hhh', 9, 'zidian'}
#
se5 = ("yuan",88) # 元组
se.update(se5) #集合 里添加元组
print(se) # {0, 2, 3, 4, '1', 9, 'yuan', 'hhh', 88, 'zidian'}
删除集合里的元素
se = {0, 2, 3, 4, '1', 9, 'yuan', 'hhh', 88, 'zidian'}
# 集合,remove函数,输入key,删除这个key。 若输入的key不是这个集合里的,会报错
se.remove(0)
print(se) # {2, 3, 4, 9, '1', 'zidian', 'hhh', 88, 'yuan'}
#集合,discard函数,输入key,删除这个key。 若输入的key不在集合里,不会报错
se.discard(99)
print(se) # {2, 3, 4, 9, '1', 'zidian', 'hhh', 88, 'yuan'}
遍历集合
jihe = {"name","age","sex"}
for item in jihe:
print(item)
# name
# sex
# age
集合、列表、元组转换
# 元素去重
l1 =[1,2,3,1,2,3] # 列表
s = set(l1) # 列表 转 集合
lis =list(s) # 集合 转 列表
print(lis) # [1, 2, 3]
t = (1, 2, 3, 1, 3) # 元组
se = set(t) # 元组 转 集合
tu =tuple(s) # 集合 转 元组
print(tu) # (1, 2, 3)
#for 循环去重
a = [1,2,3,4,1,1,2,3]
kong =[]
for i in a:
if i in kong:
kong.pop(i)
else:
kong.append(i)
print(kong) # [1, 4, 2, 3]
可变类型和不可变类型
不可变类型:字符串、数字、tuple元组,这些变量如果值变更,之前赋值到其它变量的值不会变,因为值变更之后地址变化
可变类型:字典、集合、列表,这些变量如果值变更,之前赋值到其它变量的值会变,因为指向的都是同一个地址
#数字
a = 1
b = a
print(id(a)) # 140341948901680
print(id(b)) # 140341948901680
a = 2
print(id(a)) # 140341948901712
#字典
dic = {"name":"张三"}
dic1 = dic
print(id(dic)) # 140476032712512
print(id(dic1)) # 140476032712512
dic["hobbit"] = "打球"
print(id(dic)) # 140476032712512