1.使用位運算判斷壹個數是否是奇數
num & 1 ==0 num 是偶數
num & 1 ==1 num 是奇數
2.表達式0x13&0x17的值是(19 )
print(0x13)
print(0x17)
print(19&23)
3.若x=-20,y=3則x&y的結果是( 0)
4.表達式 -97 | 120 的運算結果是( -1)
5.在位運算中,操作數每右移壹位,其結果相當於(b )
A.操作數乘以2 B.操作數除以2
C.操作數除以4 D.操作數乘以4
6.設x 是壹個整數(16位).若要通過x|y使x低度8位置1,高8位不變,則y的二進制數是( )
7.總結常用的位運算使用技巧(自己查自己,覺得好用記得住的)
判斷壹個數的奇偶性(如果壹個數的二進制的最低位是1就是奇數,否則是偶數)
快速乘2的次方/除2的次方
加密,快速判斷兩個數是否相等
""" author = 余婷"""
"""
1.變量
a.怎麽聲明?
變量 = 值
a = b = c = 10
a, b = 10, 20
b.聲明變量和給變量賦值的原理
2.數字數據類型
整型(int),浮點型(float), 布爾(bool), 復數(complex)
3.運算符
數學: +,-,*, /, %, //, **
比較: >, <, ==, !=, >=, <=
邏輯: and, or, not
賦值: =, +=, -=, *=, /=, %=, //=, **=
位運算:
4.字符串
a.怎麽表示字符串
'字符串', "字符串",'''字符串'''
b.
'abc0-數\nkill\u4e00'
c.r/R - 阻止轉義
d.字符編碼-Unicode
ASCII
chr(編碼)
ord(字符)
e.獲取字符
字符串[下標]
字符串[開始下標:結束下標:步長]
f.相關運算
+, *
g.相關方法
5.分之和循環
if
if-else
if-elif-else
for 變量 in 序列:
循環體
range(N), range(M,N), range(M,N,step)
while 條件語句:
循環體
continue,break,else
6.列表
a.怎麽表示列表
[元素1,元素2,....]
[]
b.元素增刪改查
列表[下標]
列表[開始下標:結束下標:步長]
列表.append(元素)
列表.insert(下標,元素)
列表.extend(序列) - 了解
del 列表[下標]
列表.remove(元素)
列表.pop(), 列表.pop(下標)
列表.clear()
列表[下標] = 新值
c.相關操作
+,*
in / not in
len(), max(), min(), sum(), list(序列)
d.方法
列表.count(元素)
列表.index(元素)
列表.sort() -> 從下到大
列表.sort(reverse=True) -> 從大到小
列表.reverse() 類似 列表[::-1]
列表.copy() == 列表[:]
"""
list1 = [1, 2, 3]
list1.extend('abc')
list1.extend(range(15,21))
list1.extend([100, 200])
list1.append([111, 222])
print(list1)
print(3/1)
print(4/2)
print(4//3)
print(5.3//2)
""" author = 余婷"""
"""
numbers = 1
x = 0 ~ 19(循環20次)
x = 0 numbers = 1 2 = 2 = 2 1
x = 1 numbers = 2 2 = 2 2
x = 2 numbers = 2 22 = 2* 3
...
x = 19 ..... 2 20
"""
numbers = 1
for x in range(0, 20):
numbers *= 2
print(numbers)
"""
summation = 0
num = 1 (num = 1 ~ 100)
"""
summation = 0
num = 1
while num <= 100:
# 當num小於等於100的時候就執行下面語句
if (num % 3 == 0 or num % 7 == 0) and num % 21 != 0:
summation += 1
# 當num能被三整除或者被七整除的同時不能被21整除的時候,summation自加壹
num += 1
# num自加壹
print(summation)
"""
規律:當前數是前兩個數的和; 第n個數 = 第n-1個數+第n-2個數
n_2 = 0
n_1 = 1
"""
n = 6
n_2 = 0 # 當前數前兩個數
n_1 = 1 # 當前數的前壹個數
current = 1 # 當前數
for x in range(2, n+1):
current = n_2+n_1
n_2 = n_1
n_1 = current
print('第%d個數是%d' % (n, current))
"""
num = 101
x = 2 ~ 100
num = 102
x = 2 ~ 101
x = 2 , break
num = 103
x = 2 ~ 102
x = 2
x = 3
x = 4
...
x = 102
num = 104
...
"""
count = 0 # 個數
for num in range(101, 201):
# 判斷是否是素數, x範圍是2 ~ num-1
for x in range(2, num):
# 如果2~num-1之間有壹個數能被num整除,說明這個數不是素數!
if num % x == 0:
# print(num, '不是素數!')
break
else:
print(num, '是素數')
count += 1
print('101-200之間素數有:%d個' % count)
for num in range(100, 1000):
# 個位
ge_wei = num % 10
# 十位
shi_wei = num // 10 % 10
# 百位
bai_wei = num // 100
# 判斷是否是水仙花數
if ge_wei 3 + shi_wei 3 + bai_wei**3 == num:
print('%d是水仙花數' % num)
fen_zi = 1
fen_mu = 1
n = 20
for x in range(n):
fen_zi, fen_mu = fen_zi + fen_mu, fen_zi # fen_zi, fen_mu = 2+1, 2
print('%d/%d' % (fen_zi, fen_mu))
a = 10
b = 20
a, b = b, a # a, b = 20, 10
print(a, b)
""" author = 余婷"""
list1 = [1, 10, 220, 12, 9, 0] # 5//2
length = len(list1)
if length % 2 == 0:
print(list1[length//2 -1], list1[length//2])
else:
print(list1[length//2])
list1 = [1, 10, 220, 12, 9, 0]
print(sum(list1))
"""
isinstance(數據, 類型) --> 判斷指定的數據是否是指定的類型,返回值是布爾
例如:isinstance(10, int) --> 判斷10是否是整型
"""
list1 = [20, 'abc', [1, 2], 12.5, '123', -100]
sum1 = 0
for item in list1:
if isinstance(item, int) or isinstance(item, float):
sum1 += item
print(sum1)
list1 = [1, 2, 3]
for index in range(len(list1)):
list1[index] *= 2
print(list1)
"""
['張三', '李四', '大黃', '大黃', '張三', '張三']
name = '張三' , 3 > 1 ,names = ['李四', '大黃', '大黃', '張三', '張三']
name = '李四', 1 > 1
name = '大黃', 2 > 1, names = ['李四', '大黃', '張三', '張三']
name = '大黃', 1 > 1
name = '張三', 2 > 1, names = ['李四', '大黃', '張三']
name = '張三', 1 > 1
"""
names = ['張三', '李四', '大黃', '大黃', '張三', '張三']
for name in names[:]:
if names.count(name) > 1:
names.remove(name)
print(names)
list1 = [34, 892, 928, 10, 9282, 10023, 97]
for index in range(len(list1)):
list1[index] = chr(list1[index])
print(list1)
scores = [89, 89, 60, 90, 98, 100]
scores.remove(max(scores))
scores.remove(min(scores))
print(scores)
print('平均分:', sum(scores)/len(scores))
A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]
C = []
for item in A:
if item in B:
C.append(item)
print(C)
""" author = 余婷"""
"""
1.十進制
a.基數:0,1,2,3,4,5,6,7,8,9
b.進位:逢10進1
c.位權:123(10) = 3 10 0 + 2 10 1 + 1 10*2
2.二進制
a.基數:0,1
0111, 1100, 101010101, 1111100011
b.進位:逢2進1
100(2) == 4(10) 101(2) == 5(10)
c.位權:101(2) = 1 2 0 + 0 2 1 + 1 2*2 = 5
3.八進制
a.基數:0,1,2,3,4,5,6,7
76, 26, 11
b.進位:逢8進1
c.位權:123(8) = 3 8 0+2 8 1+1 8 2 = 3+16+64 = 83
111(8) = 8 0+8 1+8 *2 = 1+8+64 = 73
4.十六進制
a.基數:0~9,a/A ~ f/F -- a/A(10), b/B(11), c/C(12), d/D(13), e/E(14), f/F(15)
1f, ff, abc, a00bf
b.進位:逢16進1
c.位權: 123(16) = 3 16 0 + 2 16 1 + 1 16*2 = 3+32+256=291
"""
num = 110 # 這是壹個10進制數
print(num) # 直接打印其他進制數就會顯示他的十進制
num = 0b1110
print(num) # 2+4+8
print(bin(800)) # 獲取壹個數對應的二進制表示方式
print(bin(0o671)) # 110111001
print(bin(0xaf)) # 10101111
print(bin(100))
num = 0o176
print(num)
print(oct(800))
print(oct(0b111000101)) # 0o705
num = 0xaf2
print(num)
print(hex(19968))
print(hex(175))
print(hex(255))
print(hex(0o456))
num1 = 17
num2 = 0b10001
num3 = 0o21
num4 = 0x11
print(num1, num2, num3, num4)
print(ord('壹'))
print('aaa\u4e00kl')
""" author = 余婷"""
"""
計算機存儲數據只能存儲數字數據,而且存的是數字的補碼。
計算機對數據進行運算的時候是使用補碼進行運算的,將數據從計算機中讀出來看到的是原碼
1.原碼:符號位+真值
說明:
符號位: 最高位用0表示正數,1表示負數
真值: 去掉正負,數字對應的二進制值
100的原碼:01100100
-100的原碼:11100100
2.反碼:
正數的反碼:就是原碼
負數的反碼:原碼的符號位不變,其余的位數取反(0->1, 1->0)
100的反碼:01100100
-100的反碼: 10011011
3.補碼
正數的補碼:還是原碼
負數的補碼: 反碼加1
100的補碼:01100100
-100的反碼:10011100
"""
"""
原碼:1110010
反碼:1001101
補碼:1001110
"""
"""
因為計算中只有加法器,沒有減法器
3 - 2 --> 3 + (-2) = 1
2 - 3 --> 2 + (-3) = -1
-3的原碼: 111 反碼:100 補碼:101
2的原碼: 010
原碼算:
2-3 = 111+010 = 001(原) = 1
補碼算:
010+101 = 111(補) = 110(反) = 101(原) = -1
-3 + -2 = -5
-3原碼: 1011 反:1100 補:1101
-2原碼: 1010 反: 1101 補: 1110
原碼算:
-3 + -2 = 1011+1010 = 0101(原) = 5
補碼算:
1101+1110 = 1011(補)=1010(反)=1101(原) = -5
"""
"""
數字1 & 數字2 --> 每壹位上的數都為1結果就是1,有0就是0
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
特點: 壹個位上的數如果和1與,可以保留這個位上的數; 和0與可以置0
應用:判斷壹個數的奇偶性(如果壹個數的二進制的最低位是1就是奇數,否則是偶數)
num % 2 == 0 --> num是偶數 (傳統)
num & 1 == 0 --> num是偶數
num & 1 == 1 --> num是奇數
"""
print(3 & 2) # 0011 & 0010 = 0010(補)
print(-3 & -2)
"""
-3: 1011(原) 1100(反) 1101(補)
-2: 原:1010 反: 1101 補: 1110
1101 & 1110 = 1100(補)=1011(反)=1100(原)
"""
print(2 & 1, 200 & 1, -100 & 1)
print(5 & 1, 111 & 1, -13 & 1)
"""
數字1 | 數字2: 只要有1結果就是1,兩個都為0結果才是0
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
特點: 和1或,置1
"""
print(3 | 2) # 0011 | 0010 = 0011(補)
print(-3 | -2) # 1101 | 1110 = 1111(補)=1110(反)=1001(原碼)
"""
~數字 : 將數字上的每壹位取反
~1 = 0
~0 = 1
"""
print(~3) # ~0011 = 1100(補)=1011(反)=1100
print(~-4) # ~~3 = 3
"""
數字1 ^ 數字2 : 相同為0,不同為1
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
應用: 加密
"""
print(3 ^ 10997) # 3 ^ 2 = 1
print(10998 ^ 10997) # 1 ^ 2 = 3
"""
數字1 << N:數字1左移N位, 數字1 * 2 N
數字1 >> N: 數字1右移N位,數字1 // 2 N
應用:快速乘2的次方/除2的次方
"""
print(4 << 1)
print(-3 << 2)
print(5 >> 2)