对新手来说,一句 Hello World 能有多少坑?

2023-08-29 15:12:40 浏览数 (1)

大家好,欢迎来到 Crossin的编程教室 !

在编程届,有一个不成文的习惯:在教授/学习一门新语言时,会以输出“Hello World”作为第一个代码实例。

因此,相信很多同学的第一行 Python 代码都是:

代码语言:javascript复制
print('Hello World')

不过别小看这一行代码,据我所知,有不少人都不是一次就运行成功的,严重的甚至卡壳到必须求助外援才最终搞定。

正确的程序千篇一律,而出错的代码却各有各的bug,以下列举一些可能踩到的坑:

1. 没加引号

代码语言:javascript复制
print(Hello World)

报错:

SyntaxError: invalid syntax

字符串没有加引号,就会被当做变量名来处理,这里相当于在括号中写了两个变量名,既没有定义,也不符合语法。

2. 用了中文标点

代码语言:javascript复制
print(“Hello World”)

或者

代码语言:javascript复制
print("Hello World")

报错:

SyntaxError: invalid character in identifier

Python中的所有符号都必须是英文半角符号。

3. 引号/括号未关闭

代码语言:javascript复制
print("Hello World)

或者

代码语言:javascript复制
print("Hello World"

报错:

SyntaxError: EOL while scanning string literal

引号、括号都必须成对出现。这种bug发生时,报错信息常会报在出错代码的下一行,增加了调试的难度。

4. 引号不匹配

代码语言:javascript复制
print("Hello World')

报错:

SyntaxError: EOL while scanning string literal

虽然在Python中单引号、双引号都可以表示字符串,但不可混用。否则等同于没有关闭引号。

5. 大小写混淆

代码语言:javascript复制
Print("Hello World")

报错:

NameError: name 'Print' is not defined

Python是大小写敏感的语言,语法关键字、变量名、函数名、类名、模块名等等都需要严格按照定义时的大小写输入。

6. 缩进错误

代码语言:javascript复制
  print("Hello World")

报错:

IndentationError: unexpected indent

“缩进”在Python中决定着代码的运行逻辑,所以不可以随便在行首增加空格。

7. 版本错误

代码语言:javascript复制
print "Hello World"

报错:

SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello World")?

这行代码在 Python2 里是可以正常运行的,但到了 Python3 里,print是一个函数,必须加上括号来调用。此时你应该检查一下正在学习的教程,是否已经过时了。

你在写「Hello World」的时候还遇到过什么奇葩的bug?欢迎来留言讨论~

0 人点赞