【官方攻略】小舞编程题目答案与解析
《我的公司996》为了高度还原程序员的日常工作生活,加入了一些硬核的编程题目。鉴于对不懂编程的玩家不够友好,制作组决定公布所有题目答案并附带解析。
玩家可直接在速查表中找到最佳答案。如对编程感兴趣,可查看答案解析,也请各位程序员大佬多提宝贵意见。
题目答案速查表
题目 | 答案 |
---|---|
小舞零基础初学编程,应该学哪门语言? | Python |
这段Python程序无法执行,以下哪个问题可以忽略? | 使用中文做变量名 |
跳出循环语句是什么? | break |
如何生成0-99间的随机整数? | random.randint(0,99) |
用哪种数据结构存放题目相关信息? | 字典 |
用什么存储答案信息的数据? | 元组 |
为了使用random.shuffle随机乱序,应该把变量强制转化为哪种类型? | 列表 |
换行应该怎么写? | \n |
如何实现列表切片,取出其中最前面的28个元素? | [:28] |
以下哪个概念不属于面向对象范畴内? | 递归 |
self究竟是什么? | 实例本身 |
@staticmethod方法没有self参数,怎么解释? | 正常现象 |
有将Unicode数值转化为字符本身的函数吗? | chr |
能将多行循环代码简写为一行的特殊语法是? | 生成式 |
题目答案解析
提问:小舞零基础初学编程,应该学哪门语言?
- 回答:Python
- 解析:哪一种语言更适合初学见仁见智,此处选择Python有三点原因:
- 1.容易上手。
- 2.游戏引擎用Python编写。
- 3.作者也不会别的语言。
提问:这段Python程序无法执行,以下哪个问题可以忽略?
- 回答:使用中文做变量名
- 解析:Python中可以使用中文做变量名,但是不建议。其余的三项不可忽略错误:
- 1.第4行的等于必须使用双等于,否则代表赋值。
- 2.第4行结尾使用了中文冒号,不符合语法。
- 3.第5行和第7行都不符合Python的缩进规则。
提问:跳出循环语句是什么?
- 回答:break
- 解析:
break
跳出循环。continue
跳过本次循环。return
直接返回函数。- exit是不存在的用法。
提问:如何生成0-99间的随机整数?
- 回答:random.randint(0,99)
- 解析:
random.random()
只能生成[0,1)之间的实数。random.shuffle(x)
用于打乱x序列中的元素。random.choice(x)
会从x序列中随机抽取一个值。random.sample(x,n)
会从x序列中随机抽取n个值。- 其余random.int,random.range,random.random.get均为不存在的用法。
提问:用哪种数据结构存放题目相关信息?
- 回答:字典
- 解析:题目信息的结构类似:
{'题目一:XXX':answer1,'题目二:XXX':answer2...}
- 由一个字符串作为题目信息,并指向唯一的答案信息,是比较典型的键值对,比较适合用Python的字典存储。
- 其余数据结构也不是不能完成,只是可能会涉及到更多其它知识。
提问:用什么存储答案信息的数据?
- 回答:元组
- 解析:答案信息的结构类似:
answer1 = ( '答案1',2,'答案2',3,... )
- 一个答案字符串加一个答案的分值交替出现,存储在元组内。
- 列表也可以完成存储,但列表是可变的,不如元组安全。
- 数组是Python中没有的概念。
- 文件存储此时没有必要,而且读取后仍然需要体现为一定的数据结构。
提问:为了使用random.shuffle
随机乱序,应该把变量强制转化为哪种类型?
- 回答:列表
- 解析:列表适合作为乱序抽取的内容。
- 元组由于不可变,不可乱序。
- 字典本身就是无序的,也无法乱序。
- 字符串并不支持
random.shuffle
方法。
提问:换行应该怎么写?
- 回答:\n
- 解析:固定写法,要使用反斜杠。
\t
类似tab键。<br/>
是html的换行。
提问:如何实现列表切片,取出其中最前面的28个元素?
- 回答:[:28]
- 解析:
[:28]
是[0:28]
的简写,Python切片是前取后不取,因此所获得的元素下标为:0,1,2,3…27,共计28个。
提问:以下哪个概念不属于面向对象范畴内?
- 回答:递归
- 解析:递归概念在普通函数中就会涉及。类,实例,方法,都是典型的面向对象概念。
提问:self究竟是什么?
- 回答:实例本身
- 解析:此处第8行的self位于初始化函数
__init__
内,表示的是新创建的Fighter类对象的实例本身。简单理解,可以认为self就是__init__
函数的参数,是一种固定写法,但此处的self一定不是类本身。
提问:@staticmethod
方法没有self参数,怎么解释?
- 回答:正常现象
- 解析:
@staticmethod
是静态方法的装饰器,静态方法无需传递实例本身,因此不需要也不能添加self参数。
提问:有将Unicode数值转化为字符本身的函数吗?
- 回答:chr
- 解析:chr可将Unicode数值转为字符。
- ord的功能正好相反,是把字符转为数值。
- str只能起到强制转换字符串的作用。
- 注意:chr和ord这两个内置函数只有在Python3中才能完美实现此功能(然而游戏语言其实是Python2的……)。
提问:能将多行循环代码简写为一行的特殊语法是?
- 回答:生成式
- 解析:生成式是Python的一种特殊语法,通常可将循环语句写在一行中。以获取列表[1,3,5,7,9]的写法为例:
# 常规写法
result = []
for i in range(10):
if i % 2:
result.append(i)
print(result)
# 生成式写法
print([i for i in range(10) if i % 2])
- 其余答案提到的概念均与特殊语法无关。