# 程序思维与 Python 语言基础

# 选择题

# 1. 题目

在Python3中下列__________语句是非法的。
A.m=(n=a+1)
B.m,n=3,4
C.a,b=b,a
D.m,n='ab'

答案:A

选项 Am=(n=a+1) → 非法。Python 不支持「赋值表达式嵌套在括号里直接赋值」,因为 n=a+1 是赋值语句,不是表达式(无法返回值),而括号里必须是能计算出结果的表达式。

选项 Bm,n=3,4 → 合法。这是 Python 的多变量赋值语句。

选项 Ca,b=b,a → 合法。这是 Python 中交换变量值的常用方法。

选项 Dm,n='ab' → 合法。这是 Python 的序列解包赋值,将字符串 'ab' 的两个字符分别赋值给 m 和 n。


# 2. 题目

关于Python字符串,以下选项中描述错误的是( )
A.字符串可以保存在变量中,也可以单独存在
B.可以使用datatype()测试字符串的类型
C.输出带有引号的字符串,可以使用转义字符
D.字符串是一个字符序列,字符串中的编号叫’索引’

答案:B

选项 A:字符串可以保存在变量中,也可以单独存在 → 正确。如 "hello"x = "hello" 都是合法的。

选项 B:可以使用 datatype () 测试字符串的类型 → 错误。Python 中没有 datatype () 这个内置函数,正确的函数是 type ()。

选项 C:输出带有引号的字符串,可以使用转义字符 → 正确。如 print("He said \"hello\"")

选项 D:字符串是一个字符序列,字符串中的编号叫 "索引" → 正确。字符串是有序的字符序列,下标称为索引。


# 3. 题目

如下语句:
    str1 = "Runoob example....wow!!!"
    str2 = "exam";
    print(str1.find(str2, 5)) 输出的结果是( )
A.8
B.-1
C.7
D.6

答案:C

选项 A:8 → 错误。find () 方法从索引 5 开始查找,"exam" 实际从索引 7 开始。

选项 B:-1 → 错误。"exam" 在 str1 中存在。

选项 C:7 → 正确。字符串 "Runoob example....wow!!!" 中,"example" 从索引 7 开始,"exam" 也从索引 7 开始。

选项 D:6 → 错误。索引 6 位置是空格字符。


# 4. 题目

哪个选项是下面代码的执行结果? ( )
name="Python语言程序设计课程"
print(name[0],name[2:-2],name[-1])
A.Python语言程序设计 课
B.P ython语言程序设计课 程
C.P thon语言程序设计 程
D.Python语言程序设计课 课

答案:C

解析:

1. 解析 name[0]

name[0] 是字符串的正向第 1 个字符,对应字符串 "Python语言程序设计课程" 的第一个字符 "P"

2. 解析 name[2:-2]

这是切片操作, 起始索引=2结束索引=-2

  • 起始索引 2 :正向索引第 3 个字符(跳过 0 对应的 P1 对应的 y ),对应字符 "t"
  • 结束索引 -2 :反向索引倒数第 2 个字符(对应字符串中的 "课" ),根据「左闭右开」原则,切片会包含到 -2 的前一个字符(即倒数第 3 个字符 "计" )。
  • 切片结果:从 "t" 开始,到 "计" 结束,即 "thon语言程序设计" (组合起来为 "thon语言程序设计" )。

3. 解析 name[-1]

name[-1] 是字符串的反向最后 1 个字符,对应字符串的最后一个字符 "程"


# 5. 题目

哪个选项是下面代码的执行结果?( )
s='PYTHON'
print("{0:3}".format(s))
A.'PYTHON'
B.PYT
C.PYTHON
D.PYTH

答案:C

选项 A:'PYTHON' → 错误。print () 输出时不会包含引号。

选项 B:PYT → 错误。{0:3} 表示最小宽度为 3,不是截断长度。当字符串长度大于指定宽度时,不会被截断,而是原样输出。

选项 C:PYTHON → 正确。字符串 "PYTHON" 长度为 6,大于指定的最小宽度 3,所以直接输出原字符串。

选项 D:PYTH → 错误。理由同选项 B。


# 6. 题目

val=pow(2,1000),请用一行代码返回val结果的长度值.(  )
A.len(val)
B.len(pow(2,1000))
C.其它均不正确
D.len(str(val))

答案:D

选项 A:len (val) → 错误。val 是一个整数,len () 函数无法直接计算整数的长度。

选项 B:len (pow (2,1000)) → 错误。pow (2,1000) 返回的是一个整数,同样无法直接用 len () 计算长度。

选项 C:其它均不正确 → 错误。选项 D 是正确的。

选项 D:len (str (val)) → 正确。将整数转换为字符串后,就可以用 len () 函数计算其长度。


# 判断题

# 1. 题目

在IDLE交互模式下,一个下划线“_”表示解释器中最后一次显示的内容或最后一次语句正确执行的输出结果  ( )

答案:对

解析:在 Python IDLE(及 CPython 解释器的交互模式)中,下划线 _ 是一个特殊的内置变量,它会自动保存「解释器最后一次显示的输出结果」(或最后一次正确执行语句的返回值)。仅在交互模式下生效,脚本模式中 _ 无此特殊含义(除非手动定义)。


# 2. 题目

已知 x = 3,那么赋值语句 x = 'abcedfg' 是无法正常执行的。  ( )

答案:错

解析:Python 是动态类型语言,变量没有固定类型,变量只是 “引用”,可以随时指向不同类型的对象。执行 x = 3 后,x 指向整数对象;执行 x = 'abcedfg' 后,x 改为指向字符串对象,这是完全合法的。


# 3. 题目

max = x > y ? x : y    ( )

答案:错

解析? : 是 C/C++/Java 的三目运算符,Python 不支持这种写法。Python 的三目表达式应写成: max = x if x > y else y


# 4. 题目

if (x > y) print(x)    ( )

答案:错

解析:Python 的 if 语句必须有冒号 : ,且不能直接在条件后写语句(不像 C 语言)。正确写法应为:

if x > y:
    print(x)

# 5. 题目

3+4j不是合法的Python表达式。  ( )

答案:错

解析:在 Python 中,复数是内置数据类型,可以直接用 a + bj 的形式表示,其中 j 表示虚数单位(等价于数学中的 i )。 3+4j 是完全合法的 Python 表达式,类型是 complex


# 6. 题目

s = "My Python" print(s[3:-1]) 上述代码能够显示输出Python  ( )

答案:错

解析:字符串及索引如下:

M  y     P  y  t  h  o  n
0  1  2  3  4  5  6  7  8

切片规则: s[start : end] 左闭右开,end 不包含。
s[3:-1] 中:

  • start = 3 → 从 'P' 开始
  • end = -1 → 到倒数第 1 个字符之前(不包含 'n'
    等价于 s[3:8] ,实际取到的是 'Pytho' ,而不是 'Python'

# 填空题

# 1. 题目

表达式 abs(3+4j) 的值为______

答案:5.0

解析abs() 是 Python 的内置函数,用于计算绝对值 / 模长。对复数(形如 a+bj),计算复数的模长,公式为:模长 = √(a² + b²)。复数 3+4j 中,实部 a=3 ,虚部 b=4 ,代入公式得:√(3² + 4²) = √(9+16) = √25 = 5。Python 中复数的模长返回值为浮点数类型,因此最终结果是 5.0


# 2. 题目

Python 3.x语句 print(1, 2, 3, sep=':') 的输出结果为______

答案:1:2:3

解析print() 默认用空格分隔多个输出对象, sep=':' 参数表示用冒号代替空格。因此, print(1, 2, 3, sep=':') 的输出结果为 1:2:3


# 3. 题目

查看变量内存地址的 Python 内置函数是:______

答案:id ()

解析id(obj) 是 Python 的内置函数,用于返回对象的唯一标识。在 CPython 中,这个值通常就是对象的内存地址。


# 4. 题目

已知 x = 3,并且id(x)的返回值为 496103280,那么执行语句 x += 6 之后,表达式 id(x) == 496103280 的值为______

答案:False

解析:在 Python 中,整数是不可变类型。对不可变对象做 “修改”,不会在原地改,而是创建新对象,再让变量指向新对象。执行 x += 6 后,x 改为指向新的整数对象 9,其内存地址与原来的整数对象 3 不同,因此 id(x) == 496103280 的值为 False。


# 5. 题目

表达式 int('123', 16) 的值为______

答案:291

解析int('123', 16) 表示将十六进制字符串 '123' 转换为十进制整数。计算过程:1*16*16 + 2*16 + 3 = 256 + 32 + 3 = 291。