跳转至

一. Python语言概述

理论

判断题

1 高级语言程序要被机器执行,只有用解释器来解释执行。

错误: 计算机高级语言按程序的执行方式可以分为编译型和解释型两种,编译型是通过编译器把源码编译为机器语言,再执行,解释型是把每行代码逐行‘翻译’成目标代码。可以看出,应用程序不能脱离解释器,但是这种方式比较灵活。我们上面配置的Python环境,就是在安装Python的解释器。编译型每次修改,都需要修改源代码,再重新编译才能执行。编译型语言包括:C,C++,汇编语言等,解释型语言包括:Python,JavaScript等。

2 不可以在同一台计算机上安装多个不同的Python解释器版本。

错误: 可以。

3 Python是一种跨平台、开源、免费的动态编程语言。

正确: 跨平台:可以在不同操作系统和硬件平台上运行而不需要太多修改。开源、免费:所有人都可以免费使用Python和查看源代码。动态:运行时才确定数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型。比如Python、Php、Asp、JavaScript、Perl等等。静态语言使用变量时需要先声明数据类型。

4 math模块是python语言的数学模块。

正确: Python模块(Module),是一个Python文件,以```.py```结尾,包含了Python对象定义和Python语句。模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包含可执行的代码。```math```就是数学模块。

5 在Python 3.x中,input()函数把用户的键盘输入作为字符串返回。

正确: input()函数作为字符串输入,返回值是一个字符串。你可以通过 a=input() print(type(a)) 来查看返回值的类型。

6 print()函数是输出函数。

正确

7 在Python中,可以用else作为变量名。

错误: python的变量名命名规则如下:1.变量名必须以字母(a-z, A-Z)或下划线(_)开头,不能以数字开头。2.变量名只能包含字母、数字和下划线(a-z, A-Z, 0-9, _)。3.变量名是大小写敏感的,这意味着MyVar和myvar是两个不同的变量。4.避免使用Python的关键字作为变量名,例如True, False, None, and, as, assert, break等。你可以通过 ``` import keyword print(keyword.kwlist) ``` 来查看关键字。

8 已知 x=3, 则执行“ x=7”后,id(x)的返回值与原来没有变化。

错误: 在Python中,id()函数用于获取对象的唯一标识符,该标识符是一个整数,通常代表对象在内存中的地址。Python为了提高内存利用效率,对于一些简单且常用的对象(如小整数和短字符串)会重用对象内存。例如,两个变量指向同一个整数对象时,它们实际上指向相同的内存地址。当变量被赋予新值时,Python并不是修改原有对象的值,而是在内存中创建一个新对象,并更新变量的引用。因此,变量在赋予新值前后的id()值会不同。

9 字母A的ASCII编码值和Unicode编码值相同。

正确: 1. ASCII编码是8bit的等长编码,可以表示常见的英文字母,符号和数字。保存了128个,码值分别为0-127(为什么不是2^8=256个呢?因为第一个二进制位都是0)。例如常见的'a'字母ASCII码值为97,'A'字母ASCII码值为65,'0'的ASCII码值为48。字母和数字的ASCII码值是连续的。2. Unicode编码是一个符号集,可容纳100多万个符号,每个符号都有独一无二的编码,其中ASCII编码是Unicode编码的子集。不过Unicode编码的问题是,如果传递很长一串编码,接收者不知道第一个字是一个字节还是两个字节还是其他字节数量。如果统一,又会占据较大空间。3. UTF-8编码是Unicode的实现方式之一。采用变长的编码方式,利用少数几位字节来表示字节数,从而节约了空间且不会出错。python采用的默认编码方式为UTF-8。如果想了解更多信息,可以查看[链接](https://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html)。

10 下面程序输入是3 5,输出是8。

  m,n=int(input().split())
  print(m+n)
错误: 如果你放到编译器里跑一下,会出现这样的提示:3 5 Traceback (most recent call last): File "e:\vspy\text.py", line 1, in module m,n=int(input().split()) ^^^^^^^^^^^^^^^^^^^^ TypeError: int() argument must be a string, a bytes-like object or a real number, not 'list' 这是因为split()函数返回的是一个列表,而int()函数只能接受字符串作为参数。如果想要修改,可以写成 m,n=map(int,input().split()) ,这是因为map()函数可以将一个函数作用在可迭代对象上,返回一个迭代器。即对每个输入的数据都使用int()函数来转换。大家可以记住这个写法,编程题会经常用到。

11 下面程序的输出是5。

print=3
print(5)
错误:

选择题

1 计算机存储器的单位是字节(B,Byte),1B等于____。

A. 一位二进制

B. 四位二进制

C. 八位二进制

D. 十六位二进制

C: 单位换算:一个二进制位是一个比特(bit),1b,8个bit是一个字节(byte),1B(荒野乱斗有个觉得叫8-bit哈哈哈哈哈哈哈哈) 我们日常在电脑中见到的kb,mb,gb,1kb,1mb,1gb都是以byte为单位的。分别是1024(2^10),2^20,2^30,因为2^10=1024和1k比较接近,所以一般用k来方便表示。(其实具体说1KB表示1000bytes,1KiB才是1024bytes,不过一般已经混淆化,不是特别关键)。

2 Python程序在Windows上的扩展名是___。

A. py

B. exe

C. docx

D. jpg

A: .exe是可执行文件的后缀(executable),.docx是文档文件,.jpg是图片文件

3 Python的输出函数是__。

A. input()

B. print()

C. math()

D. turtle()

B: input()是输入函数,math()不是一个函数,math是数学模块,turtle是Python的绘图模块。

4 10的二进制值是____。

A. 1100

B. 1010

C. 0011

D. 1110

B: 进制转换:二进制转十进制:最低位代表2^0,如果为1,就给十进制加上2^0*1,如果为0就不加,倒数第二位代表2^1,如果为1就加上2^1*1,以此类推。十进制转二进制:把这个十进制数拆成2的立方数的和:例如把45拆成2^5+2^3+2^2+2^0,即写成101101。其他进制之间的转换也是类似的。一般的数字默认十进制,二进制的前缀是(0B/0b,binary)。需要注意的是,这只是二进制原码的转换方法,二进制还具有反码和补码,下面遇到题目了再详细说明。

5 八进制35的十进制值是___。

A. 30

B. 25

C. 19

D. 29

D: 3*8^1+5*8^0=24+5=29

6 计算机系统由硬件和__组成。

A. 语言

B. 控制器

C. 存储器

D. 软件

D: 这个题目不展开说了,关于计算机组成的知识,大家看着也就像硬件和软件吧hhhhhh。

7 ______是不等长编码。

A. ASCII码

B. Unicode码

C. UTF-8码

D. 以上都不

C: UTF-8是不等长编码。上面两个是等长。

8 _号表示同一行的后面部分是Python程序的注释。

A. *

B. %

C. /

D. #

D: C语言,C++是//,Python是#。

9 Python语言正确的标识符是_

A. 2you

B. my-name

C. _item

D. abc*234

C: 上面说到是大小写字母或者下划线开头,变量中间不能有这个-,只能有数字、字母和下划线,当然也不能有*。

10 Python语言的官方网站地址是_

A. www.python.org

B. www.python.com

C. www.python.edu

D. www.pythontutor.com

C: 就是这个.org。网站的域名后缀代表着网站的性质,例如.edu是教育相关等等。这个不重要。

11 不是面向对象的程序设计语言是__。

A. Java

B. C

C. C++

D. Python

B: 面向对象语言(Object-Oriented Language)是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、对象、封装、继承、多态等成分,有识认性、多态性、类别性和继承性四个主要特点。大家常见的语言中,只有C不是面向对象的,这个记住就好,Python中这个不是重点。

12 下面程序的输出是什么?

a,b=5,9
print(a, b)

A. 59

B. 5,9

C. 5□9 (□表示空格)

D. 5□□9 (5和9之间二个空格)

C: 需要注意,大家不要认为是因为b前面有空格才是中间隔一个空格的,无论中间有没有空格或者有几个空格,中间都是一个空格。这是因为Python的print()函数会默认输出的多个值之间是一个空格,如果想要调整,可以写成print(a,b,sep='')。sep参数用来调整间隔,你可以自己在单引号中定义分隔符。 此外,print()函数默认会空一行,默认是'\n'(即为跳到下一行)。如果你想要调整,可以用print(a,b,end='')来调整输出完之后的空行。

填空题

1 十进制19.625的二进制是 00010011.101 。(整数部分用八位二进制表示)

转换:整数部分就是16+2+1.小数部分也是一样的,0.5(2^-1)+0.125(2^-3),所以是.101。

2 十六进制2AC的八进制表示是 1254 。

可以先转换为二进制(先转换成十进制就复杂了,因为成次方的进制转换更简单),2AC是0010 1010 1100,转成八进制就是001 010 101 100就是1254.

3 十进制106的原码是 01101010 ,反码是 01101010 ,补码是 01101010 。 (用八位表示)

需要注意,二进制整数(正、零、负,需要注意只是整数!)有三种码方式,原码,反码,补码。首先我们需要引入一个符号位,为二进制数的左边第一位,正数是0,负数是1。
正数的三种码都是一样的,就是之前讲到的计算方式。负数的原码就是原码除了符号位为1以外,每一位都取反。补码是反码+1。例如,下一题的例子,-78原码是11001110(符号位是1,后面几位就是78的二进制,2^6+2^3+2^2+2^1),反码就是原码除了符号位别的取反,补码就是反码+1(最后一位1+1,写0,往前一位写1,这一步就是和普通的加法一样)。所以如果是有符号的二进制数,8bit可以表示的数字范围是-128到127,-128是10000000,127是01111111.如果是无符号的二进制数,范围就变成了0-255,255是11111111.(可以注意到有符号的二进制数,11111111表示的值是-1)。
如果快速从补码转成二进制数,(以8bit为例,其余情况类推),可以把最高位当成2^-7来计算,如果是0,就是0*2^-7,如果是1,就是1*2^-7。所以10110010就是2^-7+2^5+2^4+2^1=-128+32+16+2=78。二进制数转补码可以先写原码,然后从反码,补码转换,也可以用上述计算规则来逆向得到。
可能有同学会问为什么会设计一套这么复杂的体系呢?补码是一项伟大的设计,他使得计算机可以顺利解决减法的问题,同时对溢出也有很好的处理。

4 -78的原码是 11001110 ,反码是 10110001 ,补码是 10110010 。 (用八位表示)

见上一题解释。

实验

  • 编程题就只放题目名和代码了,大家学习的时候可以对应着pta看一下~

7-1 输出“人生苦短,我学Python”

print("人生苦短,我学Python")

7-2 写字母H

for i in range(1,6):
    if i==3:
        print("*****")
    else:
        print("*   *")

7-3 从键盘输入两个数,求它们的和并输出

a=int(input())
b=int(input())
print(a+b)

7-4 从键盘输入三个数到a,b,c中,按公式值输出

a,b,c=map(int,input().split())
print(b*b-4*a*c)