一、输入输出
例子1:
print默认情况下自带了一个 换行符
a = input("请输入:")
print(a)
print源码
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
"""
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
"""
pass
sep参数:print语言以逗号拼接时,默认以空格拼接
a = input("请输入:")
print("你输入的是:",a)
print("你输入的是:"+a)
print("你输入的是:",a,sep='')
end参数:指定输出结尾的方式,默认以/n换行
a = input("请输入:")
print("你输入的是:"+a)
print('很高兴见到你')
print("你输入的是:"+a,end=',')
print('很高兴见到你')
二、变量
1、注意事项
(1)不能以数字开头
(2)不能是python的关键字
(3)由大写或小写字母、数字、下划线组成
2、起名格式
(1)驼峰式:首个单词全部小写,从第二个单词开始,首字母大写,其他小写
例如:highStudent
(2)下划线式:单词全部小写,用下划线拼接
例如:high_student
三、基本数据类型
1、字符串str
使用单引号或者双引号或者三个单引号将若干个字符括起来的序列,叫做字符串。
s1 = '123456'
s2 = "123456"
s3 = '''123456'''
print(s1,s2,s3,type(s1),type(s2),type(s3))
内存中字符串本身不能被改变,变量赋值只是改变其地址值
s1 = "hello"
print(s1,id(s1))
s1 = "world"
print(s1,id(s1))
注意:
1、字符串调用完功能后,会返回一个新的字符串结果
2、Python的字符串具有索引的概念
(1)独有功能
·转大写upper()
s1 = "Hello"
s2 = s1.upper()
print(s1)
print(s2)
·转小写lower()
s1 = 'HelLOWorld'
s2 = s1.lower()
print(s1)
print(s2)
应用场景:用户登录
while True:
name = input("请输入用户名:")
if name.upper() == 'Q': #当用户输入q就会推出循环
break
password = input("请输入密码:")
if name == 'root' and password == '123456':
print("ok")
break
else:
print("no")
·判断字符串内容是否为数字isdecimal()
s1 = '100'
b1 = s1.isdecimal() #判断是否是数字
print(b1)
应用场景:
num1 = input("请输入一个数字:")
if num1.isdecimal():
num1 = int (num1)+100
print(num1)
else:
print("输入错误")
·判断字符串是否以xxx前缀开头startswith()
·判断字符串是否以xxx后缀结尾endswith()
s1 = 'nihao'
b1 = s1.startswith('n') #判断是否以n开头
print(b1)
b2 = s1.endswith('m')
print(b2)
·切分split()
s1 = '你好,18,19'
res1 = s1.split(',')
print(res1,type(s1))
print(res1[0])
·maxsplit参数:表示切分次数
s = 'n.h.a'
res2 = s.split('.')
print(res2)
res3 = s.rsplit('.',maxsplit=1)
print(res3)
·替换字符replace()
s1 = '你好 nihao 你好'
res1 = s1.replace('你好','-')
print(res1)
res2 = res1.replace(' ','')
print(res2)
·去除字符串两边所有的空白字符strip()
注意无法去除字符串中间的
s = ' nihao nihao '
print(s)
print(s.strip())
·字符串连接join():先切分,再连接
s = 'n.h.a'
res = s.split('.')
print(res)
res = '-'.join(res)
print(res)
(2)公共功能
·获取字符串长度len()
s = 'helloworld'
print(s,len(s))
可以通过遍历获取字符串的每一个字符:
注:这里产生了一个报错,len(s)只是一个数字,for循环没有这种用法
s = 'helloworld'
print(s,len(s),type(len(s)))
for i in len(s):
print(s[i])
s = 'helloworld'
print(s,len(s),type(len(s)))
for i in s:
print(i)
s = 'helloworld'
print(s,len(s),type(len(s)))
for i in range(len(s)):
print(s[i])
·通过索引获取字符串元素
s = 'helloworld'
print(s[0])
print(s[len(s)-1])
·切片
s = 'helloworld'
print(s[:])
print(s[-4:-1])
print(s[1:3])
2、整数int
num = 100
print(num,type(num))
3、小数float
f = 11.22
print(f,type(f))
4、布尔bool
print(1>2,type(1>2))
5、列表list
是一个可变的,允许发生重复元素的有序序列。
列表调用功能后,是在原有的列表上做改变的,所以不需要返回值。
(1)独有功能
添加元素
append():在原有列表后追加元素
list1 = []
list1.append('nihao') #在原有的列表上修改,不需要返回值
print(list1)
insert():指定索引位置添加元素
list1 = [11,22,33,55,77]
print(f'原始列表{list1}')
list1.insert(2,66)
print(f'修改的列表{list1}')
删除元素
remove():根据元素值删除,没有返回值
list1 = [11,22,33,55,77,99]
a = list1.remove(11)
print(a)
list1.remove(22)
print(list1)
pop():根据索引删除元素,有返回值
list1 = [33,55,77,99]
list1.pop(2)
print(list1)
b = list1.pop(2)
print(b)
del :关键字删除
list1 = [33,55,77,99]
del list1[0]
print(list1)
修改元素
list1 = [33,55,77,99]
list1[0] = 100
print(list1)
反转列表
list1 = [33,55,77,99]
list1.reverse()
print(list1)
例子:判断一个字符串是否是对称字符串
list1 = []
s1 = input('请输入一个字符串:')
for i in s1:
list1.append(i)
list1.reverse()
s2 = ''
for i in list1:
s2 = s2 + i
if s1 == s2:
print('是对称字符串')
else:
print('不是')
排序sort()
list1 = [2,3,1,5,44,33]
list1.sort()
print(list1)
浅拷贝copy()
list1修改元素不会影响到list2
list1 = [11,22,99]
list2 = list1.copy()
print(list1)
print(list2)
list1[2] = 66
print(list1)
print(list2)
count()查找指定值出现的次数
list1 = [2,1,3,4,4,2,1,77,88,6,1]
print(list1.count(1))
(2)公共功能
长度功能
list1 = [11,22,2,32,44,43,1]
print(len(list1))
索引功能
list1 = [11,22,2,32,44,43,1]
print(list1[0])
print(list1[len(list1)-1])
切片功能
list1 = [11,22,2,32,44,43,1]
print(list1[::2])
print(list1[1:4:])
in 可以判断元素是否存在于列表中
list1 = [11,22,2,32,44,43,1]
if 3 in list1:
print('yes')
else:
print('no')
6、元组tuple
元组是一个可以存储有序且重复元素的序列,但是元组不可以改变,即不允许增删改。
(1)独有功能
count()
tuple1 = (1,2,3,2)
print(tuple1.count(2))
index()
tuple1 = (1,2,3,2)
print(tuple1.index(2))
(2)公共功能
长度功能
tuple1 = (1,2,3,2)
print(tuple1,type(tuple1),len(tuple1))
索引功能
tuple1 = (1,2,3,2)
print(tuple1[0])
print(tuple1[len(tuple1)-2])
切片
tuple1 = (1,2,3,2)
print(tuple1[::2])
print(tuple1[0:2:])
in
tuple1 = (1,2,3,2)
if 2 in tuple1:
print("yes")
else:
print("no")
for
tuple1 = (1,2,3,2)
for i in tuple1:
print(i)
注意:
当元组中的元素个数大于等于二时,最后一个逗号加不加没有影响
tuple1 = (1,2,3,4)
tuple2 = (1,2,3,4,)
print(tuple1,type(tuple1))
print(tuple2,type(tuple2))
当元组中的元素个数为一个时,加结尾的逗号才是一个元组,不加就是一个整数
a1 = (11)
print(type(a1))
a2 = (11,)
print(type(a2))
创建空元组
a = tuple()
print(a,type(a))
7、字典
特点:
(1)字典中的元素是以<key,value>的形式存在的,一个键对应一个值
(2)键是唯一的
(3)值是可以重复的
(4)一个字典中可以有多个键值对
(5)字典里的键和值可以是不一样的数据类型
注意:不是所有的数据类型都可以当作键,只有可哈希的类型才可以当键
(1)独有功能
keys():获取字典中的所有键,组成一个dict_keys类型
dict1 = {'name':'ni','age':18,'like':['1','2'],'dog':{'name':'xx','age':4}}
keys = dict1.keys()
print(keys,type(keys))
get(key):根据键获取对应的value值
dict1 = {'name':'ni','age':18,'like':['1','2'],'dog':{'name':'xx','age':4}}
keys = dict1.keys()
list1 = list(keys)
for key in list1:
value = dict1.get(key)
print(f'键:{key},值:{value}')
values():获取所有值
dict1 = {'name':'ni','age':18,'like':['1','2'],'dog':{'name':'xx','age':4}}
values = dict1.values()
print(values,type(values))
items():获取所有的键值对
dict1 = {'name':'ni','age':18,'like':['1','2'],'dog':{'name':'xx','age':4}}
items = dict1.items()
print(items,type(items))
pop():根据键删除一个元素,返回被删除键对应的值
dict1 = {'name':'ni','age':18,'like':['1','2'],'dog':{'name':'xx','age':4}}
s = dict1.pop('dog')
print(dict1)
print(s)
clear():清空字典中所有的键值对
dict1 = {'key1':1,'key2':2,'key3':3}
print(dict1.clear())
(2)公共功能
len():获取字典中键值对的个数
dict1 = {'key1':1,'key2':2,'key3':3}
print(len(dict1))
索引:通过键获取值
dict1 = {'key1':1,'key2':2,'key3':3}
print(dict1['key1'])
无切片功能
in只能判断键是否存在字典里
dict1 = {'key1':1,'key2':2,'key3':3}
if 'key1' in dict1:
print('yes')
for
先获取所有键,在根据键获取所有的值
dict1 = {'key1':1,'key2':2,'key3':3}
keys = dict1.keys()
key_list = list(keys)
for key in key_list:
value = dict1.get(key)
print(f'键:{key}-值:{value}')
直接获取所有的键值对,再依次遍历每一个键值对中的键和值
dict1 = {'key1':1,'key2':2,'key3':3}
key_values = list(dict1.items())
for i in key_values:
key = i[0]
value = i[1]
print(f'键:{key},值:{value}')
8、集合set
集合是一个无序(存储和取出的顺序不一致)且唯一的序列
(1)独有功能
union()并集
set1 = {11, 22, 33, 44}
set2 = {22, 44, 77, 88}
set3 = set1.union(set2)
print(f'set1:{set1}')
print(f'set2:{set2}')
print(f'set3:{set3}')
difference()或者减法- 差集
set1 = {11, 22, 33, 44}
set2 = {22, 44, 77, 88}
set3 = set1.difference(set2)
set4 = set1 - set2
print(f'set1:{set1}')
print(f'set2:{set2}')
print(f'set3:{set3}')
print(f'set4:{set4}')
add()添加元素
set1 = {11,22,33,44}
set1.add(55)
print(set1)
remove()通过元素的值进行移除,如果元素不存在,就报错
set1 = {11, 22, 33, 44}
print(set1)
set1.remove(22)
print(set1)
discard()移除元素,如果元素不存在,不会报错
pop()根据集合中的结果按照睡许弹出
set1 = {11, 22, 33, 44}
print(set1)
res = set1.pop()
print(res)
res1 = set1.pop()
print(res1)
intersection()取交集
set1 = {11, 22, 33, 44}
set2 = {22, 44, 77, 88}
set3 = set1.intersection(set2)
print(f'set1:{set1}')
print(f'set2:{set2}')
print(f'set3:{set3}')
(2)公共功能
长度
set1 = {12,34,11,22,33,44,11,22,33}
print(set1,type(set1)) # 显示的是去重之后的元素个数
print(len(set1))
无索引、无切片
in
set1 = {12, 34, 11, 22, 33, 44, 11, 22, 33}
if 11 in set1:
print("yes")
for
set1 = {12, 34, 11, 22, 33, 44, 11, 22, 33}
for i in set1:
print(i)
四、类型转换
s1 = '100'
s1 = s1 + '100'
print(s1,type(s1))
s2 = int('100')+100 #注意:python不允许字符串与数值相加
print(s2,type(s2))
1、int()
转数值:字符串中的要符合数值的样式才能转换
s1 = '111'
s2 = 'hello'
print(int(s1))
print(int(s2))
2、str()
s1 = 100
s2 = str(s1)
print(s1,type(s1))
print(s2,type(s2))
3、bool()
print(bool(0))
print(bool(0.0))
print(bool(''))
print(bool(""))
print(bool(-1))
print(bool(1))
print(bool('nihao'))
五、字符串格式化
1、字符串拼接做法
name = input("请输入你的名字:")
age = input("请输入你的年龄:")
text = "你的名字是"+name+",你的年龄是"+age
print(text)
2、format()
适用于所有版本的python
(1)按索引位置填充
ame = input("请输入你的名字:")
age = input("请输入你的年龄:")
text1 = "你的名字是{0},年龄是{1}".format(name,age)
print(text1)
(2)索引的复用
name = input("请输入你的名字:")
age = input("请输入你的年龄:")
text = "你的名字是{0},年龄是{1},出生到现在多少年{1}".format(name,age)
print(text)
(3)默认按照顺序填充
me = input("请输入你的名字:")
age = input("请输入你的年龄:")
text2 = "你的名字是{},年龄是{}".format(name,age)
print(text2)
(4)用变量的方式填充
name = input("请输入你的名字:")
age = input("请输入你的年龄:")
text3 = "你的名字是{a},年龄是{b}".format(a=name,b=age)
print(text3)
(5)用%填充
name = input("请输入你的名字:")
age = input("请输入你的年龄:")
text4 = "你的名字是%s,年龄是%s" % (name,age)
print(text4)
(6)用f"xxx{}"的方式填充
name = input("请输入你的名字:")
age = input("请输入你的年龄:")
text5 = f"你的名字是{name},年龄是{age}"
print(text5)
六、语句结构
1、选择结构
if语句
注意:Python中严格使用缩进来表示包含关系·
一个选择:只有满足if条件才会有输出
age = input("请输入你的年龄:") #age是字符串型
if int(age) > 18:
print("adult")
两个选择
age = input("请输入你的年龄:") #age是字符串型
if int(age) > 18:
print("adult")
else:
print("child")
多个选择
score = input("成绩:")
score = int(score)
if 100 > score >= 90: #python 允许连续比较
print("reward")
elif 90 > score >= 60:
print("reward1")
else:
print("punish")
2、循环结构
range()的使用:
(1)range(10)
0,1,2,3,4,5,6,7,8,9
(2)range(1,11)
1,2,3,4,5,6,7,8,9,10
(3)range(1,11,2)
1,3,5,7,9
(4)range(11,1,-2)
11,9,7,5,3
(1)for循环
for j in range(11, 1, -2): # 从11往后跳
print(j)
else:
print(0)
(2)while循环
num = 0
while num < 10:
print(num)
num += 1
else:
print(0)
while True:
print(1)
一直循环
3、控制条件语句
(1)continue跳过当次循环
跳过5
for i in range(10):
if i == 5:
continue
print(i)
(2)break终止循环
for i in range(10):
if i == 5:
break
print(i)
从5开始 结束循环