python学习
- 位运算:
(1)计算机中存储数据是补码的形式,除此之外,二进制还有原码和反码。具体内容已在计算机导论中学习过,在此不再赘述。
(2)按位非操作:~1=0, ~0=1。
(3)按位与操作:对应位都为1结果为一
(4)按位或操作:对应位有一个为1结果就为1
(5)按位异或操作:相同为0,不同为1
(6)按位左移操作,按位右移操作 - 位运算的实际应用
(1)利用位运算可以i实现快速计算
num = 4
num = num << 2
print(num)
16
(2)利用^可以交换两个整数
a,b=2,1
a ^= b
b ^= a
a ^= b
print(a,b)
1 2
(3)通过a&(-a)可以获取a的最后为1(二进制补码)位置的整数
c = 31
print(c & (-c))
1
(4)利用位运算实现整数集合
一个数的二进制可以看成一个集合,比如{1,3,4,8}就表示 01 00 01 10 10,其中1分别对应8,4,3,1。0表示没有。
s = 31
s = s | (1<<9)
print(s)
s = 31
s = s & ~(1 << 2)
print(s)
s = 31
s = (s & (1<<3))
print(s)
543
27
8
(5)整数在python里是以补码形式存在,按理说输出也应该都是补码。但是却有例外。
print(bin(3))
print(bin(-3))
0b11
-0b11
从结果中我们可以看出当bin()中的值为负数时,输出的是所对应的正数的原码前面加上一个负号,所以如果要得到负数的补码,需要进行以下操作
print(bin(-3 & 0xffffffff))
0b11111111111111111111111111111101
3.if语句,if else 语句, if elseif … else语句。这些和C++中一致,在此不做过多赘述。
4.assert关键词
这个关键词我们称为断言,其后面跟一个boll类型的值,当其为真实,系统正常执行,当其为假时,系统自动终止并会抛出异常
assert 2>1
assert 2<1
Traceback (most recent call last):
File "D:/PC项目/dream/TEST0.py", line 25, in <module>
assert 2<1
AssertionError
5.while语句和C++一样
6.while else语句:
首先执行while的内容,执行完整个循环体后,再执行else的内容,如果执行while语句中有break,则直接跳出整个循环,并不执行else的内容。
7.for循环:这个和C++就不是很相同了
for循环是一个迭代循环,可以遍历任何有序序列。
for i in "Ilovemyschool":
print(i,end=' ')
I l o v e m y s c h o o l
8.for each循环和while each循环一样。
9.range()函数:这个函数由三个参数,start, stop,和step,分别表示起始,终止,和跳跃间隔。包括start,不包括stop。一般可以与循环语句连起来使用
for i in range(1,10, 2):
print(i,end=" ")
1 3 5 7 9
10.enumerate()函数,由两个参数构成,一个是支持迭代的对象,另一个是start,其中start默认是0。
seasons = {'spring','summer','fall','winter'}
list = list(enumerate(seasons))
print(list)
seasons = {'spring','summer','fall','winter'}
list = list(enumerate(seasons,start=100))
print(list)
[(0, 'summer'), (1, 'spring'), (2, 'winter'), (3, 'fall')]
[(100, 'fall'), (101, 'winter'), (102, 'spring'), (103, 'summer')]
enumerate()还可以和for循环结合起来
languages = ['Chinese','math','English']
for i , language in enumerate(languages,start=100):
print(i,'I love', language)
100 I love Chinese
101 I love math
102 I love English
11.break语句。break可以跳出当前所在层的循环体。
12.continue语句。continue可以跳出本次循环。
13.pass语句。pass相当于什么都不做,虽然没有实际意义,但是确是必不可少的。为了保持结构的完整性,有些地方就需要pass语句,没有的话就会出错。
def a_func():
SyntaxError: unexpected EOF while parsing
def a_func():
pass
不会报错
14.推导式:推导式就是对一个含有多个对象的数据类型进行一个改变,方式可以是条件语句。
具体看下面这个例子
a = [i for i in range(1500,2700) if i % 7 == 5]
print(a)
[1503, 1510, 1517, 1524, 1531, 1538, 1545, 1552, 1559, 1566, 1573, 1580, 1587, 1594, 1601, 1608, 1615, 1622, 1629, 1636, 1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1720, 1727, 1734, 1741, 1748, 1755, 1762, 1769, 1776, 1783, 1790, 1797, 1804, 1811, 1818, 1825, 1832, 1839, 1846, 1853, 1860, 1867, 1874, 1881, 1888, 1895, 1902, 1909, 1916, 1923, 1930, 1937, 1944, 1951, 1958, 1965, 1972, 1979, 1986, 1993, 2000, 2007, 2014, 2021, 2028, 2035, 2042, 2049, 2056, 2063, 2070, 2077, 2084, 2091, 2098, 2105, 2112, 2119, 2126, 2133, 2140, 2147, 2154, 2161, 2168, 2175, 2182, 2189, 2196, 2203, 2210, 2217, 2224, 2231, 2238, 2245, 2252, 2259, 2266, 2273, 2280, 2287, 2294, 2301, 2308, 2315, 2322, 2329, 2336, 2343, 2350, 2357, 2364, 2371, 2378, 2385, 2392, 2399, 2406, 2413, 2420, 2427, 2434, 2441, 2448, 2455, 2462, 2469, 2476, 2483, 2490, 2497, 2504, 2511, 2518, 2525, 2532, 2539, 2546, 2553, 2560, 2567, 2574, 2581, 2588, 2595, 2602, 2609, 2616, 2623, 2630, 2637, 2644, 2651, 2658, 2665, 2672, 2679, 2686, 2693]
950

被折叠的 条评论
为什么被折叠?



