Python学习第一周总结
? 经过一周的学习后,对这一周学习的重要知识点进行一下总结,第一个重要的知识点就是:Python语言元素之变量。
一、变量和类型
1.1 变量
1.2 变量命名
- 字母,数字,下划线。不能使用特殊字符,数字不能开头
- 变量名是区分大小写的(x和X是两个不一样的变量名)
- 不能用python中的关键字和保留字(python中已经有含义的)
- 见名知意(看到变量的名字,就能知道它代表了什么意思)
- 变量的命名使用全小写,多个单词用下划线进行分隔(snake case)
2、类型
? Python中的数据类型很多,而且也允许我们自定义新的数据类型,这里我们需要先了解几种常用的数据类型。
-
整型(int ):Python中可以处理任意大小的整数,而且支持二进制(如0b100 ,换算成十进制是4)、八进制(如0o100 ,换算成十进制是64)、十进制(100 )和十六进制(0x100 ,换算成十进制是256)的表示法。 -
浮点型(float ):浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456 )之外还支持科学计数法(如1.23456e2 )。 -
字符串型(str ):字符串是以单引号或双引号括起来的任意文本,比如'hello' 和"hello" 。 -
布尔型(bool ):布尔值只有True 、False 两种值,要么是True ,要么是False 。
二、Python语言元素之运算符
运算符 | 描述 |
---|
[] [:] | 下标,切片 | ** | 指数 | ~ + - | 按位取反, 正负号 | * / % // | 乘,除,模,整除 | + - | 加,减 | >> << | 右移,左移 | & | 按位与 | ^ \| | 按位异或,按位或 | <= < > >= | 小于等于,小于,大于,大于等于 | == != | 等于,不等于 | is is not | 身份运算符 | in not in | 成员运算符 | not or and | 逻辑运算符 | = += -= *= /= %= //= **= &= |= ^= >>= <<= | (复合)赋值运算符 |
三、分支结构(选择结构)
? 分支结构就是指代码中有多条路劲,但是只有其中一条会被执行。在Python中,要构造分支结构可以使用if 、elif 和else 关键字。
具有代表性的例子就是数学上的分段函数求值:
x = float(input('x = '))
if x > 1:
y = 3 * x - 5
elif x >= -1:
y = x + 2
else:
y = 5 * x + 3
print(f'f(x) = {y}')
四、循环结构
4.1 for-in循环
- 如果明确的知道循环执行的次数,我们推荐使用
for-in 循环
例如求两个数的最大公约数
x = int(input('x = '))
y = int(input('y = '))
for i in range(x, 0, -1):
if x % i == 0 and y % i == 0:
print(i)
break
print(f'{x}和{y}的最大公约数:{i}')
4.2 while循环
- 如果要构造不知道具体循环次数的循环结构,我们推荐使用
while 循环。while 循环通过一个能够产生或转换出bool 值的表达式来控制循环,表达式的值为True 则继续循环;表达式的值为False 则结束循环。
如:输入三角形三条边的长度,如果能构成三角形就计算周长和面积,如果不能构成三角形,提示用户重新输入,直到正确。
while True:
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
if a + b > c and a + c > b and b + c > a:
x = a + b + c
p = x / 2
s = (p * (p - a) * (p - b) * (p - c)) ** 0.5
print(f'周长为{x}, 面积为{s}')
break
else:
print('不能构成三角形,请重新输入')
上面的代码中使用while True 构造了一个条件恒成立的循环,也就意味着如果不做特殊处理,循环是不会结束的,这也就是常说的“死循环”。为了能够退出循环结构,我们使用了break 关键字,它的作用是提前结束循环。
4.3 嵌套循环
? 和分支结构一样,循环结构也是可以嵌套的,也就是说在循环中还可以构造循环结构
如果知道循环的次数,我们通常使用for 循环;如果循环次数不能确定,可以用while 循环。在循环中还**可以使用break **来提前结束循环。
例子:嵌套循环例子:求1-100之间的所有质数
for n in range(2, 100):
is_prime = True
for i in range(2, n):
if n % i == 0:
is_prime = False
break
if is_prime:
print(n, end=' ')
五、容器型数据类型(用一个变量可以保存多个数据)
-
列表(list) -
元组(tuple) -
集合(set) -
字典(dict)
5.1 操作
-
通过[]建立 -
append :在末尾追加元素 -
insert :在指定位置插入元素 -
pop :删除最后的元素
nums = [10, 100, 1000]
print(type(nums))
print(nums)
rules = ['富强,民主,文明,和谐',
'自由,平等,公正,法治',
'爱国,敬业,诚信,友善', ]
print(type(rules))
print(rules)
nums.append(10000)
nums.insert(0, 1)
print(nums)
rules.pop()
print(rules)

5.2 遍历
? 列表的遍历是指把列表中的每个元素依次取出来
1、先从简单的取一个元素开始,如:
nums = [8, 15, 5, 4, 7, 20]
print(nums[5])
表示从0开始,第5个下标位置的数,一定要注意,python中是从0开始取下标的

2、替换列表中指定位置的元素
nums = [8, 15, 5, 4, 7, 20]
print(nums[5])
nums[2] = 120
print(nums)
表示将下标为2的位置的元素替换成120

nums = [8, 15, 5, 4, 7, 20]
for i in range(6):
print(nums[i])
表示把列表里的元素依次取出来(即遍历)

上面这个代码只能对列表进行读取的操作,而有时候我们还需要对列表中的数进行改写,那么我们就需要用到下面这种循环结构
nums = [8, 15, 5, 4, 7, 20]
for i in range(len(nums)):
print(nums[i])
nums[i] = 100
print(nums)

这个我们可以从运行结果看到,不仅可以遍历列表,还可以把列表中的数进行改写
有时候我们不仅需要得到列表里的数,而且还需要知道它每个数对应的下标。那么就需要用到以下的代码
nums = [8, 15, 5, 4, 7, 20]
for i, x in enumerate(nums):
print(i, x)

5.3 例题
例子01——将一颗骰子掷60000次,统计每一个点数出现的次数
import random
f1 = f2 = f3 = f4 = f5 = f6 = 0
for _ in range(60000):
i = random.randrange(1, 7)
if i == 1:
f1 += 1
elif i == 2:
f2 += 1
elif i == 3:
f3 += 1
elif i == 4:
f4 += 1
elif i == 5:
f5 += 1
else:
f6 += 1
print(f'1点出现的次数{f1},2点出现的次数{f2},3点出现的次数{f3},4点出现的次数{f4},5点出现的次数{f5},6点出现的次数{f6},')

上面这个需要一一打出,可能有点冗余了,所有我们可以用遍历改进一下
import random
fs = [0] * 6
for _ in range(60000):
x = random.randrange(1, 7)
fs[x - 1] += 1
print(fs)
for i, value in enumerate(fs):
print(f'{i + 1}点摇出了{value}次')

你看,这样就看上去舒服得多
例子02
输入10个整数,计算平均值、方差、标准差和极差,并找出最大值和最小值
nums = []
for _ in range(10):
temp = int(input('请输入数据: '))
nums.append(temp)
print(nums)
mean_value = sum(nums) / len(nums)
total = 0
for num in nums:
total += (num - mean_value) ** 2
var_value = total / (len(nums) - 1)
std_value = var_value ** 0.5
max_value, min_value = max(nums), min(nums)
print(f'均值: {mean_value}')
print(f'方差: {var_value}')
print(f'标准差: {std_value}')
print(f'极差(全距): {max_value - min_value}')

总结:遍历很重要,一定要通过大量的练习来达到融会贯通。
rd deviation —> std / stdev std_value = var_value ** 0.5 max_value, min_value = max(nums), min(nums) print(f’均值: {mean_value}’) print(f’方差: {var_value}’) print(f’标准差: {std_value}’) print(f’极差(全距): {max_value - min_value}’)
[外链图片转存中...(img-3cKuUoPX-1627184185374)]
### 总结:遍历很重要,一定要通过大量的练习来达到融会贯通。
|