目录
一、设计一个小游戏
""" 用python设计第一个游戏 """
import random
counts = 3
answer = random.randint(1,10)
while counts > 0:
temp = input("请输入一个数字")
guess = int(temp)
if guess == answer:
print("回答正确")
break
else:
if guess < answer:
print("小了")
else:
print("大了")
counts = counts - 1
print("游戏结束")
这里import random的意思是添加随机数
random.randint(1,10)是一个1-10的随机数
二、数字类型
2.1、浮点型
python和c语言一样都是采用IEEE754的标准来储存浮点数的,会产生一定精度的误差
x = 0
while x < 1:
x = x + 0.1
print(x)
输出结果
解决办法
import decimal
a = decimal.Decimal('0.1')
b = decimal.Decimal('0.2')
print(a + b)
0.3
2.2、虚数
x.real是实部,x.imag是虚部
2.3、运算符号
//---地板除 ,取比目标数小的最大整数
pow内置函数
pow(x,y)---x ** y
pow(x,y,z)---- x ** y % z
三、逻辑运算符
3.1、短路逻辑
第一个表达式:and是两个都为真才为真,3为真还要判断4,所以输出为4
第二个表达式:or是有一个为真就为真,判断3为真,4的结果对于最终结果无关紧要了
第三个表达式:判断0为假,无论3为真为假,结果都是假,所以不去判断3
第四个表达式:判断到0为假,如果3为真,结果为真,如果3为假,结果为假所以要判断后面那个
综上所述
3.2、运算符优先级
从下往上
例
四、流程图
五、分支和循环语句
上面这种是通常的语法,下面的条件表达式好处就是把四行变成了一行
一般还是用第一种方法
while循环
有else的情况:
""" 七天打卡学习 """
day = 1
while day <= 7:
temp = input("今天有好好学习吗")
if temp != "有":
break
day += 1
else:
print("你已连续七天打卡")
输出结果
没有else的情况:
""" 七天打卡学习 """
day = 1
while day <= 7:
temp = input("今天有好好学习吗")
if temp != "有":
break
day += 1
#else:
print("你已连续七天打卡")
输出结果
显而易见,有else的时候,while循环只有正常结束循环才会执行else中的代码。
while循环打印9*9乘法表
i = 1
while i <= 9:
j = 1
while j <= i:
print(i, '*', j, "=", i * j, end = " ")
j += 1
print()
i += 1
for循环
for循环很多时候搭配range函数一起使用,range函数有三种用法
用for循环找出十以内全部的素数
for n in range(2,10):
for x in range(2,n):
if n % x == 0:
print(n, "=", x, "*", n // x)
break
else:
print(n,"是一个素数")
输出结果:
六、列表
6.1、初识列表
6.2、增删改查
6.2.1、增
在末尾增
在指定位置增
用到insert函数
6.2.2、删
remove函数,pop函数和clear函数
6.2.3、改
6.2.4、排序
6.2.5、查
这里的copy函数是浅拷贝
6.3、列表的加法和乘法
6.4、嵌套列表
这里两种不同的方式建立出来一样的列表A和B为什么不同呢?
6.5、is运算符
字符串是不可变的
列表是可变的,尽管两个列表是一样的,但是python还是要为他们开辟两个空间分别存放
B试图通过乘号对一个嵌套列表进行拷贝,它拷贝的只是对同一个列表的引用
6.6、浅拷贝和深拷贝
python中,将一个变量赋值给另一个变量,其实就是将一个变量的引用传递给另一个变量
浅拷贝
这两种方式都是浅拷贝
浅拷贝处理一级列表是没问题的,但是涉及到嵌套列表,就会出现问题
深拷贝
要实现深拷贝,要借助copy模块
这个模块中有两个函数,copy和deepcopy,copy模块中的copy函数和上面的copy函数一样,是浅拷贝,而deepcopy函数就是深拷贝
6.7、列表推导式
怎么把一个整数列表中所有元素都乘2呢
对字符串的使用也是一样的
那如果要把字符串中的字符变成对应的编码呢
这里可以用到code函数
获得列表的某一列元素
当用循环和列表推导式实现同样的一个结果的时候,他们的效果是不完全一样的
循环是通过迭代来逐个修改原列表中的元素,而列表推导式是重新创建一个列表,再重新赋值为原先的这个变量名
6.8、如何真正的创建一个二维列表
使用列表推导式可以很快地创建出一个二维列表
6.9、列表推导式语句执行顺序
先执行for语句,再执行if语句,最后执行i + 1
如何从字符串列表中取出首字母为F的元素
6.10、嵌套的列表推导式