首页 > 技术文章 > PTA

jiayibingi 2021-09-12 23:05 原文

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.在三引号字符串中可以包含换行回车等特殊字符

字符串没有结束标志

关于字符串单引号、双引号、三引号的用法:

这里常规的用法不做赘述,关于特殊情况。

  1. 如果使用单引号字符串中出现单引号:

    chb='what\'s you name?'
    print(chb)
    # 输出结果:what's you name?
    

    要么直接使用双引号,要么使用转义符

  2. 多行输入的换行问题

    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的格式化输出:

  1. 整数的输出:

    %o 八进制

    %d 十进制

    %x 十六进制

  2. 浮点数的输出

    (1).格式化输出:

    • %f 保留小数点后六位有效数字,%.3f,保留三位小数
    • %e 保留小数点后六位有效数字,指数形式输出,%.3e,保留三位小数,使用科学计数法
    • %g 在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法,%.3g,保留三位小数,使用小数或者科学计数法

    (2).字符串输出:

    • %10s 右对齐,占位符10位
    • %-10s 左对齐,占位符10位
    • %.2s截取两位字符串
    • %10.2s 10位占位符,截取两位字符串
  3. 常用转义字符:

    转义字符 描述
    \ 续行符,在行未
    \\ 反斜杠符号
    \' 单引号
    \" 双引号
    \a 响铃(电脑提示音)
    \b 退格
    \e 转义
    \000
    \n 换行
    \v 纵向制表符
    \t 横向制表符
    \r 回车
    \f 换页
    \oyy 八进制数yy代表的字符
    \xyy 十进制数yy代表的字符
    \other 其他字符以普通格式输出
  4. 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)编写程序,计算序列近似和。近似和定义为小于序列和的最大整数。

99.jpg

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

推荐阅读