for-in循环:确定具体次数的循环
while循环:不确定要循环多少次
total = 0
# range(a,b)函数[a,b)左闭右开
for i in range(1, 101):
total += i
print(total)
range()函数:左闭右开的区间
只写一个数字,默认左侧为0
range(101):产生0-100之间的整数
range(2,101):产生2-100之间的整数
range(0,101,2):产生0-100之间的偶数(设置了步长——2)
for i in range(0, 101, 2):
print(i)
1、一个死循环
i = 0
while i >= 0:
i += i
2、while使用的示例
sum = 0
flag = True
i = 1
while flag:
if i <= 100:
sum += i
i += 1
else:
flag = False
print(sum)
break:终止break所在循环
continue:终止当前本次循环,进入下一次循环
for i in range(1, 101):
if i == 50:
# break
continue
else:
print(i)
for i in range(1, 10):
for j in range(1, i + 1):
# print('%d X %d = %d'%(i,j,i*j))
# print('{}*{}={}'.format(i,j,i*j)) #两行作用一样,但是都在一列(需要更改最后一个默认字符)
# 修改print()的end参数
print('{} * {} = {}'.format(i, j, i * j), end='\t')
# 每行打印完成之后换行
print()
num = int(input('输入一个正整数:'))
judge = False
if num == 1 or num == 2:
print('{}是素数'.format(num))
else:
for i in range(2, num // 2 + 1):
if num % i == 0:
print('%d不是素数' % num)
judge = True
break
else:
continue
# print('{}是素数'.format(num))
# 问题:为什么这里不会循环输出{}是素数?
if not judge:
print('%d是素数' % num)
由零个或者多个字符组成的有限序列
在Python中,单个或者多个字符由单引号或双引号引起来的,就叫做字符串
s1 = 'Hello,World!'
s2 = 'Violets'
s1 = 'Hello,World!'
s2 = 'Violets'
print(s1 + s2)
print(s1 + '!')
s1 = 'Hello,World!'
s2 = 'Violets'
print(s1 * 3)
1、ASCII码比较大小
print('a' > 'b')
print('boy' > 'girl')
2、ord()将字符转换成ASCII码
print(ord('a'), ord('o'))
print(ord('李'))
3、成员运算:in\not in
s1 = 'abcd'
print('a' in s1)
print('c' not in s1)
print(len(s1))
s1 = 'abcd'
print(s1[2])
print(s1[-1])
# 结果是d
print(s1[-4])
# 结果是a
默认步长为1
切片也是左闭右开区间
第一个冒号前不写参数,默认从0开始
第一个冒号后不写参数,默认取到字符串末尾
s2 = '醉里挑灯看剑,梦回吹角连营。'
print(s2[0:])
print(len(s2))
print(s2[3:7])
# 第三个参数也是步长
print(s2[::2])
# 倒取
print(s2[-1:-11:-2])
# 循环遍历字符串
# 输出字符串的每个元素
for i in s2:
print(i)
# 输出字符串每个位置索引
for i in range(len(s2)):
print(i)
for i in range(len(s2)):
print(i,s2[i])
s3 = 'Hello!World!'
# 将字符串首字母变大写:capitalize()
print(s3.capitalize())
# 将字符串每个单词的首字母变大写
print(s3.title())
# 将字符串所有字母变大写
a = s3.upper()
print(a)
# 将字符串所有字母变小写:lower()
print(a.lower())
# index()\find()默认从左向右查找,查找到元素立即停止
print(s3.index('l'))
# index()找不到元素报错:ValueError: substring not found
# print(s3.index('a'))
# find()
# find()找不到元素,返回-1
print(s3.find('l'))
print(s3.find('a'))
# find()可以指定从索引N的位置开始查找
print(s3.find('l', 4))
# rfind()从右往左开始查找
print(s3.rfind('d'))
s3 = 'hello world'
# center()将字符串补成长度为N的字符串,空白位置用指定字符串补全,原字符串放入现字符串中间位置
print(s3.center(20, '*'))
# rjust()
print(s3.rjust(20, '*'))
# ljust()
print(s3.ljust(20, '*'))
s = ' hello world \n\t'
# strip()将字符串左右两边的空格,转义字符去掉
print(s.strip())
列表是一系列元素按照一定的顺序进行的排列
列表中可以存多种数据
列表中可以存重复数据
一行代码多行显示,使用反斜杠\连接
list = ['hello world', 2022, 6, \
16, 3.1415, [1, 2, 3], \
{10, 20}, {'name': '张三'}]
list1 = [10, 20, 30]
list2 = ['a', 'b', 'c']
print(list1 + list2)
print(list1 * 3)
print(10 in list1)
print(list1[0])
print(list1[-1])
list3 = [10, 20, 30, 40, 50, 60, 70, 80]
print(list3[:])
print(list3[2:5])
print(list3[::2])
print(list3[-1:-7:-1])
print(list3[-1::-1])
'>'not supported between instance of 'int' and 'str'
list1 = [10, 20, 30]
list2 = ['a', 'b', 'c']
print(list1 > list2)
两个列表比较大小,比较的是列表相同索引位置元素的大小
比较大小的两个列表相同索引位置的元素必须是同数据类型
list1 = [10, 20]
list2 = [20, 30]
print(list1 > list2)
for i in list1:
print(i)
# 两个循环不要写在一起了
# for i in range(len(list1)):
# print(i)
# print(i, list1[i])
list3 = []
list3.append(10)
list3.append(10)
list3.append('Python')
print(list3)
list3.insert(0, 'java')
print(list3)
# del
# 删除指定的索引位置元素
del list3[0]
print(list3)
# pop():将删除元素存在某个元素中
a = list3.pop(0)
print(list3)
print(a)
# remove():删除列表中具体的某个元素
list3.remove('Python')
print(list3)
list4 = ['abc', 10, 50, 80, 40]
# index()
print(list4.index('abc'))
# # 不在列表中的元素,index()报错
# print(list4.find(10))
# count():没有输出0
print(list4.count(10))
print(list4.count(30))
list5 = [10, 90, 40, 20, 70]
# sort():默认从小到大排序
list5.sort()
print(list5)
# reverse():倒序排列
list5.reverse()
print(list5)
list6 = []
for i in range(1, 11):
list6.append(i)
print(list6)
list7 = [i for i in range(1, 11)]
print(list7)
函数是将相对独立的一部分代码封装起来
def是定义函数的关键字、fac函数名、num要传的参数
def fac(num):
pass
pass保持代码结构的完整性,不参与程序的执行
fac(12)
# 示例,没有执行
def total(num):
sum = 0
for i in range(1, num + 1):
sum += i
print(sum)
return sum
total(100)
# return 将函数内部结果返回到外部,不写return则在外部调用函数内数据的结果为空(none)
a = total(1000)
print(a)
在某些语句正确的情况下,可能会出现错误结果,为了保证程序不会终止运行,引入了异常处理
错误案例:
try……except……finally
num = int(input('请输入一个整数:'))
print(num)
# ValueError: invalid literal for int() with base 10: 'abc'
try案例:
num = int(input('请输入一个整数:'))
print(num)
except Exception as error:
print(error)
# invalid literal for int() with base 10: 'abc'
print('出现异常')
finally:
print('程序结束')
# fianlly下面的代码无论是否出现异常,最终都会被执行
list1 = [10, 20, 30, 'abc', 20, 'UFO']
for i in list1:
try:
a = i / 10
print(a)
except Exception as err:
print(err)
continue
容器型数据类型
tuple
一元组、二元组、多元组
tuple_1 = (25,)
print(type(tuple_1))
# type()获取数据类型的方法
创建一元组不加逗号都不是一元组
tuple_2 = (25)
print(type(tuple_2))
tuple_3 = ('abc')
print(type(tuple_3))
tuple_2 = (10, 20)
# 获取元组长度len()
print(len(tuple_2))
t1 = (20,)
t2 = (30, 10)
print(t1 + t2)
print(t1 * 3)
print(10 in t2)
print(t2[0])
print(t2[-1])
t3 = (10, 20, 30, 40, 50)
print(t3[:])
print(t3[2:4])
print(t3[::2])
print(t3[-1:-6:-1])
t4 = ()
print(type(t4))
# 元组是不可变类型,一旦创建,不可再更改,即不能进行添加,删除等类似操作
a = 1, 2, 3
print(a, type(a))
# 等号左边变量数量要和需要打包的元组长度相等
i, j, z = a
print(i, j, z)
# 错误示例1
# ValueError: too many values to unpack (expected 2)
# i, j = a
# print(i, j)
# 错误示例2
# 等号左边变量数量大于元组长度
# i, j, z, h =a
# print(i, j, z, h)
# ValueError: not enough values to unpack (expected 4, got 3)
# 星号表达式:用来解决等号左边变量数量不足
# 优先考虑没有星号的变量,最好考虑有星号的变量
b = (1, 2, 3)
i, *j = b
print(i, j)
c = (1, 2, 3, 4)
i, *j, z = c
print(i, j, z)
i, j, *z = c
print(i, j, z)
i = 1
j = 2
# C语言版本
z = i
i = j
j = z
print(i, j)
# Python版本
i, j = j, i
print(i, j)