Python 2-2 編程基礎(變量與數據類型)
一、判斷題
1-1.已知 x=3, 則其后的語句:x='3'是錯誤的。F
x=3
x='3'
print(x)
其中第一個x引用的3是int類型,第二個x引用的類型是 str
x=3
print(type(x))
x='3'
print(x)
print(type(x))
輸出結果:
<class 'int'>
3
<class 'str'>
1-2.已知 x=3, 則執行“ x=7”后,id(x)的返回值與原來沒有變化。F
x=3
print(id(x))
x=7
print(id(x))
在Python中變量引用對象,而對象可以關聯多個變量,變量在被賦值才能被創建,變量沒有類型,而對象有。
函數id()查詢引用對象的內存地址
1-3.下面程序輸入是30 50,輸出是80。F
m,n=int(input().split())
print(m+n)
函數input().split()
代表輸入並且默認以空格分隔,所以在存儲這個字符串的時候就會
這里涉及到了int的用法
補充int()的用法:
class int(x,base=10) #x是數字或者字符串,base是進制數,默認是十進制,返回整型數據
int() #無參數時返回0
int(3.6) #3
int('12',16) #如果是帶參數base的話,參數要用字符串形式,因為輸入純數字的時候int()的作用是取整
int("3.5",8) # 報錯,str必須為整數
int("1010",2) # 1010是正確的二進制格式
總結:int()對純數字的作用是取整,進行進制轉換必須用字符串類型,而且字符串中的數字為整數,base為2時進行的是將前面的二進制轉換為十進制,其余base則是將前面的字符串轉換成對應的進制數。
m,n=input().split()
print(int(m)+int(n))
print(int(m+n))
'''
輸入:1 2
輸出:
3
12
'''
補充:
str="abcdefg"
print(str.split('c',2))
# 輸出結果:['ab', 'defg']
說明:以‘c’為分隔符,將str分為兩部分
1-4.下面程序的輸出是5。F
print=3
print(5)
Python中的關鍵字不可以做標識符
# 查詢當前版本的關鍵字
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
1-5.當輸入是:45,8 時,下面程序的輸出結果是37。F
a,b = input().split(',')
b=int(b)
c=int('a',b) # 這么寫並不是將a轉化為字符串類型,這么寫只是一個字符串a而已
print(c)
關於int()的用法參考上面的補充
正確代碼:
a,b = input().split(',')
b=int(b)
c=int(str(a),b)
print(c)
1-6.當輸入是10.0時,下面程序的輸出是f(10.0) = 0.1。F
x=int(input())
if x==0:
result=0
else:
result=1/x
print('f({0:.1f}) = {1:.1f}'.format(x,result))
正確方法:
x=int(float(input()))
if x==0:
result=0
else:
result=1/x
print('f({0:.1f}) = {1:.1f}'.format(x,result))
input() 函數總是以字符串的形式來處理用戶輸入的內容,所以用戶輸入的內容可以包含任何字符。
int()不能將字符串類型的含有小數點的數字直接轉化為整數類型,所以需要先將x轉化為浮點型,然后再進行取整。
1-7.int(True)
的返回值是1。T
1-8.bool(False)
的返回值是True。F
0(整型)
0.0(浮點型)
0.0+0.0j(復數)
(空字符串)""
(空列表)[]
(空元組)()
(空字典){}
None
False(布爾類型)
以上的布爾值均為False
1-9.bool('False')
的返回值是True。T
此時是字符串的布爾值,不為空,就是true
1-11.print(bin(12.5))
的輸出是:0b1100.1 F
bin()返回一個整型的二進制形式
1-12.print(int("82",9))
語句的執行結果是:74。 T
base=9,這個暫時未弄明白
1-13.'age'+23不是正確的表達式。 T
字符串類型和整型不能整合在一起,類型不統一
1-20.Python 支持單字符類型,一個字符在 Python 中作為字符類型數據使用。 F
Python不支持字符類型,單個字符也是字符串類型。
二、選擇題
2-3. Python 語句print(type(1/2))的輸出結果是______________。
C.<class 'float'>
在Python中的分數屬於浮點型數據,而不是像java中直接按照int類型輸出。
2-5.Python 下述語句的輸出結果是_____________。
a=121+1.21;
print(type(a))
B.<class ‘float’>
在運算的優先級中,bool->int->float->complex
2-6.Python 語句 print(0xA + 0xB)
的輸出結果是______________。
D.21
print()函數中進行直接的算數運算,都會轉化為十進制。
2-8.Python 語句 print(chr(65))的運行結果是___________。
print(chr(65))
D.A
關於chr()函數的用法:
def chr(__i: int) -> str Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.
返回整數值代表的Unicode
2-7.關於Python中的復數,下列說法錯誤的是______C__ 。
A.表示復數的語法是real + imag j
B.實部和虛部都是浮點數
C.虛部必須后綴j, 且必須是小寫
D.方法conjugate 返回復數的共軛復數
2-9.關於Python字符串,下列說法錯誤的是___B________。
A.字符即長度為1的字符串
B.字符串以\0標志字符串的結束
C.既可以用單引號,也可以用雙引號創建字符串
D.在三引號字符串中可以包含換行回車等特殊字符
字符串沒有結束標志
關於字符串單引號、雙引號、三引號的用法:
這里常規的用法不做贅述,關於特殊情況。
-
如果使用單引號字符串中出現單引號:
chb='what\'s you name?' print(chb) # 輸出結果:what's you name?
要么直接使用雙引號,要么使用轉義符
-
多行輸入的換行問題
cha='''123 123 123''' print(cha) chc="456\n456\n456" print(chc)
使用換行符或者三引號。
2-18.返回數字x的絕對值或復數x的模的函數是(C )。
A.id(x) 返回引用對象的內存地址
B.absolute(x)
C.abs(x) 絕對值和復數的模
D.hash(x) 去給對象生成哈希值
2-19.( )函數用來對參數進行類型檢查。
A.type()查看變量屬於那種類型
B.sum()求和
C.isinstance()用來判斷一個函數是否是一個已知的類型
D.eval()能夠以Python表達式的方式解析並執行字符串,並將返回結果輸出。
2-21.如下power函數的使用,哪個說法是錯誤的? B
A.pow(-2,3)=-8
B.pow(-2,3,5)=-3
C.power(2,3)=8
D.pow(-2,3,5)=2
首先pow()函數:pow(x,y[,z]),(x**y)%z
關於取余的算法,按照B中的算法是-8%5=-1*5-3,所以余數是-3,但是在Python2.6中-8%5=2,這里的算法是-8%5=-2*5+2,按照現在計算機算法的共同標准,應該讓商盡可能的小。
2-26.欲輸出0.333,如下哪項對數據進行格式化的方法是錯誤的( )?
A.print('{0:.3f}'.format(1/3))
B.print('%.3f'.format(1/3))
C.print('%.3f' %(1/3))
D.print('{:.3f}'.format(1/3))
Python的格式化輸出:
-
整數的輸出:
%o 八進制
%d 十進制
%x 十六進制
-
浮點數的輸出
(1).格式化輸出:
- %f 保留小數點后六位有效數字,%.3f,保留三位小數
- %e 保留小數點后六位有效數字,指數形式輸出,%.3e,保留三位小數,使用科學計數法
- %g 在保證六位有效數字的前提下,使用小數方式,否則使用科學計數法,%.3g,保留三位小數,使用小數或者科學計數法
(2).字符串輸出:
- %10s 右對齊,占位符10位
- %-10s 左對齊,占位符10位
- %.2s截取兩位字符串
- %10.2s 10位占位符,截取兩位字符串
-
常用轉義字符:
轉義字符 描述 \ 續行符,在行未 \\ 反斜杠符號 \' 單引號 \" 雙引號 \a 響鈴(電腦提示音) \b 退格 \e 轉義 \000 空 \n 換行 \v 縱向制表符 \t 橫向制表符 \r 回車 \f 換頁 \oyy 八進制數yy代表的字符 \xyy 十進制數yy代表的字符 \other 其他字符以普通格式輸出 -
format的用法
相對基本格式化輸出采用‘%’的方法,format()功能更強大,該函數把字符串當成一個模板,通過傳入的參數進行格式化,並且使用大括號‘{}’作為特殊字符代替‘%’
三、編程題
設計一個類Complex,用於封裝對復數的下列操作:
成員變量:實部real,虛部image,均為整數變量;
構造方法:無參構造方法、有參構造方法(參數2個)
成員方法:含兩個復數的加、減、乘操作。
復數相加舉例: (1+2i)+(3+4i)= 4 + 6i
復數相減舉例: (1+2i)-(3+4i)= -2 - 2i
復數相乘舉例: (1+2i)*(3+4i)= -5 + 10i
要求:對復數進行連環算術運算。
提示:如果用PYTHON語言實現,不必設計Complex類,可以使用內置的復數數據類型,完成復數的算術運算。
輸入格式:
輸入有多行。
第一行有兩個整數,代表復數X的實部和虛部。
后續各行的第一個和第二個數表示復數Y的實部和虛部,第三個數表示操作符op: 1——復數X和Y相加;2——復數X和Y相減;3——復數X和Y相乘。
當輸入0 0 0時,結束運算,輸出結果。
輸出格式:
輸出一行。
第一行有兩個整數,代表復數的實部和虛部,實部和虛部之間用1個空格分開。
輸入樣例:
1 1
3 4 2
5 2 1
2 -1 3
0 2 2
0 0 0
輸出樣例:
5 -7
結尾無空行
a,b=map(int,input().split()) #第一行沒有運算符的復數
x=complex(a,b)
while 1: #1的布爾值為true,所以這是一個死循環
a,b,c=map(int,input().split()) #輸入有符號的復數
y=complex(a,b)
if(y==0&c==0): #輸出的條件
print(int(x.real),int(x.imag))
break #跳出循環
if c==1: #加法
x=x+y
elif c==2: #減法
x=x-y
else: #乘法
x=x*y
關於map()
函數:map()
是Python的高階函數,它接收一個函數 f 和一個 list,並通過把函數 f 依次作用在 list 的每個元素上,得到一個新的 list 並返回。
Python2-3 編程基礎(運算符和表達式)
一、編程題
計算球的體積
根據輸入的半徑值,計算球的體積。
提示:PI=3.1415926。
輸入格式:
輸入數據有多組,每組占一行,每行包括一個實數,表示球的半徑。
輸出格式:
輸出對應的球的體積,對於每組輸入數據,輸出一行,計算結果保留三位小數。
提示:PYTHON3輸出三位小數的語句:print("%.3f" % (v))
;其中,v為變量。
輸入樣例:
1
1.5結尾無空行
輸出樣例:
4.189
14.137結尾無空行
PI=3.1415926
from math import *
while True:
try:
r = input()
r = float(r)
v = (4 * (r ** 3) * PI) / 3
print("%.3f" % (v))
# except EOFError:break
except:
break
# except 寫哪兒個都行,甚至兩個都寫都可以,不可以不寫
7-3 sdut-常用類-驕傲的代價 (10 分)
E_star由於在上次考試中取得了很好的成績他開始驕傲起來,此時von看不下去了,於是他把E_star叫來說,最近一道A+B編程題目不會,想讓E_star來幫他解答,E_star二話沒說結一口答應了,等到von把題目發給E_star的時候他傻眼了。這下,知道驕傲的后果了吧。
JAVA語言實現提示:可使用JDK標准API中的類:java.math.BigInteger。
輸入格式:
題目有多組數據,處理到文件結束。輸入的第一行包含一個數T,代表測試組數;
接下來有T行,每行有兩個整數A和B,中間用空格分隔。
提示:整數可能超出long類型的取值范圍。B不為0。
輸出格式:
對於每一組數據,輸出5行數據,分別為2個數的和、差、積、商(整除)、余數。形式為:
A+B=C,其中C是A與B的加和。
A-B=D,其中D是A與B的差。
A*B=E,其中E是A與B的乘積。
A/B=F,其中F是A與B的商(整數)。
A%B=G,其中G是A除以B的余數。
n=input()
n=int(n)
i=0
for i in range(0,n): # 循環輸入n次
a,b=map(int,input().split())
if b==0: #b不為0
break
else:
print("{0}+{1}={2}".format(a,b,a+b))
print("{0}-{1}={2}".format(a, b, a-b))
print("{0}*{1}={2}".format(a, b, a*b))
print("{0}/{1}={2}".format(a, b, int(a // b))) #注意整除!!!!
print("{0}%{1}={2}".format(a, b, a % b))
7-4 sdut-輸出指定圖形 (10 分)
輸入正整數(1<=n<=7),輸出指定圖形。
輸入格式:
輸入字符ch和正整數n。中間有一個空格。
輸出格式:
輸出有n行的圖形。
輸入樣例1:
* 3
結尾無空行
輸出樣例1:
*
* *
* * *
結尾無空行
c,n=input().split()
n=int(n) #循環次數
i=1
for i in range(1,n+1): # 外層循環,一共幾行
for j in range(0,i): # 內層循環,一行幾個
print(c+" ",end="")
if i==n: # 防止多輸出空行
break
print("") # 下一行
7-5 sdut-求奇數分之一序列的前N項近似和 (10 分)
計算序列 1 + 1/3 + 1/5 + ... 的前N項近似和。
Python提示:用math模塊的ceil函數。 ceil函數幫助信息:Return the ceiling of x as an Integral. This is the smallest integer >= x.
ceil函數使用舉例:
import math
print(math.ceil(12.23)) #輸出:13
輸入格式:
在一行中給出一個正整數N。
輸出格式:
在一行中按照“sum≈S”的格式輸出近似和S。S是大於序列和的最小整數。
輸入樣例:
23
結尾無空行
輸出樣例:
sum≈3
結尾無空行
import math
n=input()
n=int(n)
i=1
s=1 # 第一個奇數
for i in range(i,n+1): #循環次數
i = 2 * i + 1 #奇數
s=s+1/i #奇數相加
print("sum≈%d" %math.ceil(s))
7-6 sdut-求平方與倒數序列的近似和 (10 分)
對兩個正整數m和n(m≤n)編寫程序,計算序列近似和。近似和定義為小於序列和的最大整數。
Python實現提示:用math模塊的floor函數。floor函數幫助信息:Return the floor of x as an Integral. This is the largest integer <= x.
floor函數使用舉例:
import math
print(math.floor(12.43)) #輸出:12
輸入格式:
在一行中給出兩個正整數m和n(m≤n),其間以空格分開。
輸出格式:
在一行中按照“sum≈S”的格式輸出近似和S。
輸入樣例:
5 10
結尾無空行
輸出樣例:
在這里給出相應的輸出。例如:
sum≈355
結尾無空行
import math
m,n=map(int,input().split())
s=0
i=m
for i in range(m,n+1):
s+=i**2+1/i
print("sum≈%d" %math.floor(s))
7-7 sdut-入門-求兩個整數之和 (10 分)
求兩個整數之和。從鍵盤輸入2個整數,然后它們的和,按規定格式輸出。
輸入格式:
從鍵盤輸入2個正整數A和B,中間有1個空格。
輸出格式:
計算它們的和,按如下形式輸出:A+B=C。
輸入樣例:
1 2
結尾無空行
輸出樣例:
1+2=3
結尾無空行
a,b=map(int,input().split())
print("{}+{}={}".format(a,b,a+b))
7-8 sdut-入門-三個整數和、積與平均值 (10 分)
給出三個整數,請你設計一個程序,求出這三個數的和、乘積和平均數。
輸入格式:
輸入只有三個正整數a、b、c。數據之間用一個空格隔開。
輸出格式:
輸出一行,包括三個的和、乘積、平均數。 數據之間用一個空格隔開,其中平均數保留小數后面兩位。
輸入樣例:
2 3 3
結尾無空行
輸出樣例:
8 18 2.67
結尾無空行
a,b,c=map(int,input().split())
s=a+b+c
s1=a*b*c
v=s/3
print("{} {} {:.2f}".format(s,s1,v))
7-9 sdut-入門-買糖果 (10 分)
小瑜是個愛吃糖果的饞鬼,天天嚷着要爸爸買糖果,可是爸爸很忙,哪有時間啊,於是就讓小瑜自己去了。
糖果3角錢一塊,爸爸給小瑜n元錢,請你告訴小瑜最多能買幾塊糖,還剩幾角錢?
輸入格式:
輸入爸爸給小瑜的錢n元,n為整數。
輸出格式:
小瑜最多能買回的糖塊數以及剩下的錢(單位為:角),用1個空格分隔。
輸入樣例:
2
結尾無空行
輸出樣例:
6 2
結尾無空行
a=input()
a=int(a)
a=a*10
print("{} {}".format(a//3,a%3)) #注意整除
二、判斷題
1-1.下面程序的運行結果是4。F
i=3
++i
在Python中是不能用++和--實現自增和自減的,++和--是用來判斷正負的:
i=2
++i #2
-+i #-2
--i #2
1-3.表達式3 and 0 and "hello"
的值是False。F
關於and的用法:
當a為True,b為True,返回b
當a為True,b為False,返回b
當a為False,b為True,返回a
當a為False,b為False,返回a
所以返回結果為0
and和or符合它們的邏輯用法,and“一假全加,全真為真”,所以在第一個變量為真的情況下,檢查第二個,第二個為不論為什么都返回第二個變量,若是第一個變量都為false,直接返回第一個。
or符合“一真就真,全假才假”,若是第一個為真,就直接返回第一個,不會往下找,第一個為假,那么就返回第二個。
1-4.下面程序的輸出是 [3, 2, 3, 4, 5]
。
x = [1, 2, 3, 4, 5]
i = 0
i = x[i] = 3
print(x)
i=3->x[3]=3
在Python中給變量賦值實際上是讓變量指向對象,不是變量之間的運算
1-5.z已賦值,x=(y=z+1)
語句是錯誤語句。T
語句:x=(y=z+1)
非法,x被賦值y=z+1,但是這個y=z+1不返回任何值,這是非法的。
語句:x=y=z+1
,先將z+1賦值給y,然后再將y賦值給x
1-6.表達式-2**4
等於16。F
print((-2)**4) # 16
print(-2**4) # -16
1-7.表達式:"34" in "1234"==True
返回值是True。F
print("34" in "1234" == True) #False,只是后面的“1234”==True的運算結果
print(("34" in "1234")==True) #True
1-8.運算符“%” 可以對浮點數進行求余數操作。T
1-9.一個數字“5”不是合法的 Python 表達式。F
1-10.如果變量出現在賦值運算符或復合賦值運算符(如+=、*=等)的左邊則表示創建變量或修改變量的值。T
1-11.關於同一性測試運算符is,如果兩個對象是同一個,兩者具有相同的內存地址.F
a=1
b=1
print(a is b)
print(id(a))
print(id(b))
'''
True
140721807653952
140721807653952
'''
過於is和==的區分:
is是同一性判斷,也就是兩個變量是否指向同一個對象,==是等值判斷,用於判斷兩個變量引用對象的值是否一樣,關於為什么對象的值相同但是內存地址不同:
a=[1,2,3]
b=a[:] #a和b數值一樣,但是引用的是兩個不同的對象
print(a)
print(b)
print(a is b)
print(a==b)
'''
[1, 2, 3]
[1, 2, 3]
False
True
'''
實際上,只有在數值型和字符串型的情況下,a is b才是true,其余的四種類型都是false
同時在數字類型中,Python為了優化速度,使用了小整數對象池,避免為整數頻繁申請和銷毀內存空間。而Python對於小整數的定義是[-5,257),只有在-5到256之間他們的id才會相等,超過了這個范圍就不行了,同樣的道理,字符串對象也有一個類似的緩沖池,超過區間范圍內自然就不會相等了。
總的來說,之后字符串和數字類型,並且在通用的對象池中的情況下,a is b才是true,取余均為false。
1-12.邏輯運算and、or、not的運算結果一定是True或者False。F
關於bool邏輯表達式,許多Python關鍵字的使用都能構造出來,對於說法“邏輯運算符用於操作bool類型的表達式,執行結果也是bool類型。”這種說法是錯誤的。
事實上,Python邏輯運算符可用於任何類型的表達式,表達式為bool類型只是充分不必要條件;同時,邏輯運算結果可以為任意類型,不一定為bool類型(注意:用於運算的表達式及其結果的布爾邏輯值一定為false和true)
以下是例子:
# 只要bool邏輯值為false和true之一,無論什么類型都可以使用邏輯表達式
print(1 and 'csgo')
print([1,2] or [2,3])
# 用於運算的表達式,其bool值一定為true或false
print(bool(1))
print(bool('csgo'))
'''
csgo
[1, 2]
True
True
'''
引用自博客:[詳解 邏輯運算符 (and / or / not) + 布爾邏輯 (bool)]((7條消息) 【Python】詳解 邏輯運算符 (and / or / not) + 布爾邏輯 (bool)_聞韶-CSDN博客)
1-13.Python使用兩個浮點數之間的差異的絕對值小於某個可以接受的值來判斷它們是否相等,而不用“==”號來判斷2個實數判斷其值是否相等。T
對於兩個浮點數的比較:
a=1.6
b=0.3
c=a+b
d=1.9
print(c==d)
'''
False
'''
也就是說以上兩個浮點數並不相同,浮點數不能通過==和!=來直接判斷,因為浮點數有精度,而且不能精確的表達數軸上的每一個點,只能表示部分的點,而且是不均勻的,如果要比較來自浮點數,需要借助一定的誤差值。
詳細介紹來自文章:[python判斷浮點數是否相等_浮點數比較:判斷兩個浮點數是否相等(近似)]((7條消息) python判斷浮點數是否相等_浮點數比較:判斷兩個浮點數是否相等(近似)_釘釘p的博客-CSDN博客)
1-14.在Python中的關系運算符可以連續使用。如:3<a<4. T
a=2
print(1<a<3)
print(1<a>5)
'''
True
False
'''
1-15.Python中條件表達式中不允許使用賦值運算符“=”。T
在Python中,條件表達式不允許使用賦值運算符“=”,避免了其他語言中誤將關系運算符“==”寫作賦值運算符“=”帶來的麻煩,例如,下面的代碼在條件表達式中使用賦值運算符“=”將拋出異常,提示語法錯誤。
if a=3 #語法錯誤
三、單選題
2-1.表達式1+2*3.14>0
的結果類型是:____bool。
python中比較運算符的結果是bool值。
python中有邏輯運算符、條件運算符、算術運算符、賦值運算符、比較運算符,其中比較運算符返回bool值,邏輯運算符則可以返回任何類型的值。
2-2.執行下面程序產生的結果是______相等___。
x=2;y=2.0 #分號可把兩個語句寫在一行
if(x==y):
print("相等")
else:
print("不相等")
在數字類型中,兩個值數值相等在==判斷中就是true,但是注意條件,見判斷題。
2-3.Python 語句print(type(1//2))的輸出結果是________<class ‘int’>______。
因為//是整除,所以返回的值為整數
2-4.thon 語句 a=121+1.21; print(type(a))的輸出結果是____<class ‘float’>_________。
因為在優先級中,bool->int->float->complex(從左往右優先級依次增大)
2-5.Python 語句x='car’; y = 2; print (x+y)的輸出結果是______語法錯誤______。
因為兩個變量的類型不同,不能相加。
2-6.從math庫導入sqrt函數之后,Python 表達式 sqrt(4)*sqrt(9)的值為____6.0____。
關於sqrt()
函數:
import math
math.sqrt(x)
sqrt()
函數不能直接訪問,需要導入math模板,通過靜態對象調用該方法。
返回值:返回數字x的平方根。
2-9.位運算符只能用於(整數 )。
關於位運算:
1.前言:在Python中,位運算符包括位與(&)、位或(|)、位求反(~)、位異或(^)、左移位(<<)和右移位(>>)。
2.運算方法與規則:位運算符只能適用於整數,其總體運算規則為:首先把整數轉換為二進制表示形式,按最低位對齊,短的高位補0,然后進行位運算,最后把得到的二進制轉換為十進制數。
3.舉例說明:
以13&17為例,首先把13轉換為二進制數1101,把17轉換為10001,然后按最低位對齊,13的二進制形式高位補0得到01101,按位進行與運算:
位與運算符運算規則:0&0=0&1=1&0=0,1&1=1
位或運算符運算規則:0|1=1|0=1|1=1,0|0=0
位求反運算符運算規則:0=1,1=0,對於整數x有~x=-(x+1)
位異或運算符運算規則:00=11=0,01=10=1
左移位運算符運算規則:原來的所有位左移,最低位補0,相當於乘以2
右移位運算符運算規則:原來的所有位右移,最低位丟棄,最高位使用符號位填充,相當於整除2
01101 <====13
10001 <====17
00001 ====>1
如果要計算13|17,則計算方法如下:
01101 <====13
10001 <====17
11101 ====>29
如果要計算13^17,則計算方法如下:
01101 <====13
10001 <====17
11100 ====>28
以13<<1為例,首先將13轉換為二進制形式1101,然后左移1位,最低位補0,得11010,轉換為十進制數為26,相當於13*2。
以13>>1為例,首先將13轉換為二進制形式1101,然后右移1位,最低位丟棄,最高位使用符號位0補充,得110,轉換為十進制數為6,相當於13//2。
位求反比較難理解一些,並不是簡單地按位求反。這里的關鍵在於,計算機內部是使用二進制補碼形式來存儲數據的,整數的補碼與原碼相同,而負數的補碼為其絕對值的原碼各位求反再加1,這是理解位求反運算的關鍵。以13為例,計算過程為:首先把13轉換為二進制形式00001101(這里以8位為例,這不影響計算過程和結果),各位求反得到11110010,這是一個負數的二進制補碼形式,其對應的數值是-14。再以(-123)為例,首先將其轉換為二進制補碼形式10000101,然后按位求反得01111010,轉換為十進制為122。
原文鏈接:https://blog.csdn.net/william_hehe/article/details/85005630
2-10.Python運算符@的功能說明是(矩陣相乘運算符 )
[@作為運算符](python 中的@運算符使用_python_腳本之家 (jb51.net))
具體代碼實現暫時沒實現,留作后續
2-14.表達式3 < 5 <2 的計算結果是:(False )
這個表達式的意思是3 < 5 and 5 <2
2-17.成員運算符in,不可以測試下面的哪些類型中是否包含一個數據對象。 答案:整數
2-18.關於 pass語句,以下哪個描述是正確的?
pass 不做任何事情,一般用做占位語句
四、多選題
3-1.Python運算符”-”的功能包括:(全選 )。
A.算術減法
B.字符串格式化(左對齊)
C.集合差集(找出前一個集合不包括后一個集合的數值)
D.相反數
3-3.邏輯運算符常用來連接條件表達式,(and )和( or)具有邏輯短路(惰性求值)的特點,當連接多個表達式時只計算必須要計算的值。
邏輯運算符and、or、not常用來連接條件表達式構成更加復雜的條件表達式,並且and和or具有惰性求值或者邏輯短路的特點,即當連接多個表達式時只計算必須要計算的值。在編寫復雜條件表達式時可以充分利用這個特點,合理安排不同條件的先后順序,在一定程度上可以提高代碼的運行速度。另外要注意的是,運算符and和or並不一定會返回True或False,而是得到最后一個被計算的表達式的值,但是運算符not一定會返回True或False。
原文鏈接:浙大python第二章整理(數據類型)
五、填空題
4-3.Python 表達式 round(17.0/3**2,2)
的值為1.89
round()
函數:
語法:round(x[,n])
其中x是數值表達式,n是保留的小數位數
返回值:返回浮點數的四舍五入值
關於四舍五入的拓展:
[你真的搞懂了Python中的四舍五入嗎?1.45保留小數點后1位,四舍五入后得多少? - 知乎 (zhihu.com)]
4-11.表達式 ((2>=2) or (2<2)) and 2
的值為2
4-14.表達式 32.2//6-24//6
的值是1.0
4-15.Python 表達式 0 and 1 or not 2<True 的值為True
4-16.Python 語句 print(hex(16), bin(10))的輸出結果是0x10 0b1010