天池AI训练营python基础task1
一、运算符的类型以及优先级
1.算术运算符
操作符 | 名称 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
// | 整除 |
% | 取余 |
** | 幂 |
2.比较运算符
基本都是大于、小于、不等于、大于等于、小于等于、等于和不等于这几类
3.逻辑运算符
名称 | 计算口诀 |
---|---|
与 | 同一为一,有零为零 |
或 | 全零为零,有一为一 |
非 | 一变零,零变一 |
4.位运算符
位运算的意思就是按照二进制的位数进行的运算
特别注意:左移和右移
【举个栗子1】num<<i
就是num这个数字的二进制向左移i位
比如:0110<<2(就是6左移两位)
变成:011000(也就是24)
重大发现1!🙋♂️
发现24=6x2x2
根据规则得出:左移一位就是原来的num乘以2
所以🎈
num<<i 的等于num*(2^i)
num>>i的等于num/(z^i)
5.三元运算符
if else
x,y=4,5
s=x if x<y else y
6.其他运算符
操作符 | 名称 |
---|---|
is | 是 |
is not | 不是 |
in | 存在 |
not in | 不存在 |
重大发现2!🙋♂️
请问is、is not与==、!=之间的区别!
is 用于判断两个变量引用对象是否为同一个,
== 用于判断引用变量的值是否相等。
【举个栗子2】当他们用于地址相同的地方时结果相同:
当他们用于地址不相同的地方时结果不同:
二、数据类型
1.数据类型
int、float、bool
2.浮点型如何保留小数?
使用decimal包里的getcontext()函数,
这个函数的参数中有一个prec参数代表精度
默认28位
3.布尔型
bool(0)和bool(0.00)为False
bool(空):比如bool([])、bool({})为False
其余都是True
三、位运算
1.原码、反码、补码
原码:二进制表示
反码:正数不变、负数符号位不变,其余取反
补码:正数不变,负数的反码+1
2.为什么通过^可以交换两个整数?
a^=b
b^=a
a^=b
证明:
因为:a′=a^b
又因为b=a′^b
b=a^b ^b=a
a=a′^b=a ^b ^a(因为现在b=a了)
所以a=b
所以完成了交换
练习题:
leecode136:
暴力&位运算
补充:
完成leecode137题目
Counter()函数
from collections import Counter
Counter函数:统计一个容器里某个元素的个数
4.条件语句
if语句
if-else语句
if-elif-else语句:else指的是if和elif之外的其他情况
特别注意:assert关键词,加入assert后面的关键词后面的条件是False,程序自动崩溃
5.循环语句
while循环
while-else循环:如果while语句正常执行,那么再执行else语句的内容,如果while循环里面使用break跳出循环,那么不执行else的内容
for循环
for-else循环
6.range()函数
7.enumerate()函数:给元素加序号,可利用start参数决定下标的起始数
8.break语句:跳出循环
9.continue语句:终止本次循环,开始下次循环
10.pass语句:不作任何操作
11,推导式
练习题:
1.
2.龟兔赛跑游戏
v1, v2, t, s, l = map(int, input().split())
sum_1, sum_2 = 0, 0
time_1, time_2 = 0, 0
while True:
if (sum_1 - sum_2) >=t:
if (sum_2+v2*s)>l:
time_2+=(l-sum_2)/v2
sum_2=l
else:
time_2+=s
time_1+=s
sum_2+=v2*s
else:
time_1 += 1
time_2 += 1
sum_1+=v1
sum_2+=v2
if sum_1 >= l and sum_2 >= l:#一起到达终点
print('D')
print(time_2)
break
elif sum_2 >= l and sum_1 < l:#乌龟获胜
print('T')
print(time_2)
break
elif sum_1 >= l and sum_2 < l:#兔子获胜
print('R')
print(time_1)
break
结果: