135
社区成员




作用域是编程语言里的一个重要的概念,特别是块作用域,编程语言一般会使用明确的符号标记一个作用域的开始和结束。
例如 C、C++、Java、C#、Rust、Go、JavaScript 等常见语言都是用"{"
和"}"
来标记一个块作用域的开始和结束:
// 这是一个C语言程序
if(i<10){
if(i<5){
print("win more!");
}else{
print("win");
}
}else{
print("loose");
}
// 这是一个 Rust 语言程序
if i<10 {
if i<5 {
println!("win more!");
}else{
println!("win");
}
}else{
println!("loose");
}
而 Python 程序则是用缩进来表示块作用域的开始和结束:
# 这是一个 Python 程序
if i<10:
if i<5:
print("win more!")
else:
print("win")
else:
print("loose")
Python 对缩进有严格的要求,同一个源文件里,缩进必须保持一致,例如都是2个空格或者4个空格。Python 这么做的理由是使用缩进更简洁,同时不用考虑"{"
要放在哪一行,而且是用缩进足够Python解释器正确解析。但是使用缩进如果没有编辑器自动检测和格式化也会带来一些不必要的麻烦。
请选出下面的 Python 代码中,缩进错误 的选项。
错误答案使用了两种缩进规则
选项D中的代码存在缩进错误。在Python中,缩进是用来定义代码块的,例如循环、条件语句等。正确的缩进是非常重要的,因为它决定了代码的结构和逻辑。
在选项D中,if abs(d) < 3: 后面的代码块 print(i, max-i) 和 else: 后面的 pass 以及 i += 1 应该在同一缩进级别上,因为它们都是 while 循环的一部分。然而,print(i, max-i) 和 else: 后面的 pass 的缩进比 i += 1 多了一级,这导致了缩进错误。
正确的代码应该是这样的:
if name == 'main':
i = 0
c = 5
max = 10
while i < max:
d = max-i-i
if abs(d) < 3:
print(i, max-i)
else:
pass
i += 1
在这个修正后的代码中,所有的 while 循环内部的代码块都在同一缩进级别上。因此,答案是选项D。
选项 A 展示了一个缩进不一致的情况。在 Python 中,同一个代码块的行必须具有相同的缩进水平。在选项 A 中,if abs(d) < 3: 和 i += 1
应当具有相同的缩进层级,但它们的缩进并不一致。
下面是选项 A 中的代码,正确的缩进应该是这样的:
if __name__ == '__main__':
i = 0
c = 5
max = 10
while i < max:
d = max-i-i
if abs(d) < 3:
print(i, max-i)
else:
pass
i += 1
选项 B、C 和 D 的缩进是正确的,它们都遵循了 Python 编程中的缩进规范,也适用于各自的代码块上下文。
这章开始可以了,没有“{” “}” 很容易乱吧
Python通过缩进来规定格式,同时它也是解释型语言,没有缩进,也就没有严格规定
if __name__ == '__main__':
i = 0
c = 5
max = 10
while i < max:
d = max-i-i
if abs(d) < 3:
print(i, max-i)
else:
pass
i += 1
上面这个代码中存在一些缩进错误和一些逻辑错误。这样修改代码:
if __name__ == '__main__':
i = 0
c = 5
max = 10
while i < max:
d = max - i - i
if abs(d) < 3:
print(i, max - i)
else:
pass
i += 1
这里首先将缩进错误进行了修正,while循环中的if条件也进行了修正。现在,当条件abs(d) < 3满足时,将会打印(i, max-i)的值。
没有在标准ide上看,其实内容还是比较隐晦的