学生:老师!今天讲什么!
老师:今天咱们开启Python编程第一课:“编写一个“Hello World”程序。不过,在开始前,希望你已经安装好了Python和Pycharm,这样,我们可以保持同步。
1-创建项目
首先,让我们创建一个主题为“学习Python”的项目。
单击“新建项目”按钮,在新建项目面板中,找到“位置”,这是默认的项目存储位置,如果你想修改存储位置
点击后面的“浏览”按钮
我选择存储在桌面上,再点击“新建文件夹”,起名叫“learn-python”,点击新建,需要注意的是:尽量不要使用中文命名。
单击“打开”按钮,这样就修改了项目存储位置
接下来,解释器类型和Python版本,保持默认即可。注意,这里有一句话:Python虚拟环境将在项目根目录中创建,稍后我们会看到这个虚拟环境。
最后,点击“创建”按钮。这样就创建好了项目。可以看到项目根目录下默认生成一个“venv”的虚拟环境文件夹,python解释器就在这里,把它折叠起来,不必理会。
2-编写第一个Python程序
首先,创建一个python文件
右键单击项目文件夹
选择新建一个python文件
输入文件名称:“01-helloworld", 按下回车。
创建好文件之后,一定要清楚,我们学习编程的过程:就是学习编写指令,指挥计算机做事情的过程。
接下来,我们要编写一条指令,指挥计算机向控制台输出一句“Hello World”
但是,要怎么写呢?当然不能乱写,要按照Python的语法编写。Python语法中内置了很多指令,其中print()
就是一条指令,这条指令用于向控制台输出内容。我们直接调用它就可以了。在第一行输入一个小写的英文单词:“print”,后面紧跟一对英文的小括号
print()
在小括号内, 填写你希望计算机输出的内容,你喜欢输出什么就填写什么,但是要注意,你的内容必须用引号包裹起来。我希望输出Hello world,就填写“Hello world”
print("Hello World")
输入完成后,点击窗口右上方的“运行”按钮,在下方控制台中,如果你能看到“Hello world”,这说明我们成功地通过指令指挥了计算机,向控制台输出了内容。
到这里,我们的第一个Python程序就编写完毕。你可能会问:这就是程序吗?
那程序又是什么?DeepSeek是这样解释的:
程序是一组指令的集合,用于指导计算机执行特定任务。
与我们编写的“Hello World”程序对比一下:
我们的程序只有一行指令:print("Hello World") ,不是一组指令,貌似不太符合。
再对比一下后半句:指令用于指导计算机执行特定的任务。这一条,我们的程序是完全符合的。因为我们编写Hello World的主要目的就是为了了解Python的基础语法,同时也为了测试Python解释器是否正常工作。你在控制台看到了Hello world,就说明语法正确,解释器工作正常,我们的目的就达到了。这也是无论学习哪种编程语言,几乎都是从编写“Hello World”开始的原因。
3-字符串
在这里要注意的是,小括号内输入的hello world,是被一对引号包裹的。之所以要加引号,是因为我要告诉计算机,这不是代码,这是数据,数据是程序运行过程中操作的信息。数据不像print()指令那样具有某种功能。引号内包裹的仅仅是我创建的一些文本,是我想输出的文本。这些带有引号的文本在编程术语中被称为字符串。
字符串就是被引号包裹的一串字符。
引号的主要作用是为了明确文本的边界,告诉Python解释器:我的字符串从哪里开始,到哪里结束。
引号可以是单引号,也可以是双引号;比如,再次输入print指令,使用单引号包裹helloworld,点击运行,可以看到:单引号定界的文本也可以成功输出
print("Hello World1")
print('Hello world2')
这里有一些特殊情况,就是在实际工作中,定界的引号会和字符串中的引号发生冲突,从而引发系统报错。比如:
print("他的外号叫"胖子"。") # 错误
print('It's an apple.') # 错误
# 点击运行,系统会报错,就是因为引号定界冲突造成的。
print('他的外号叫"胖子"。') # 正确
print("It's an apple.") # 正确
遇到这种情况,只需记住引号的嵌套规则就可以了:外单内双 或 外双内单,里面是双引号,外面就改用单引号;里面是单引号,外面就改用双引号
4-换行符与分号
在Python中,一条指令也是一条语句。为了保持代码的简洁和可读性,通常在一条语句的末尾,直接敲击回车,换到下一行,再输入下一条语句。回车会产生一个看不见的换行符。换行符就表示一条语句的结束。
print("Hello world")
print('Hello world')
print('他的外号叫"胖子"。')
print("It's an apple.")
print("Hello world")
当你想在一行内输入多条语句时,请使用英文的分号分割。否则就会产生语法错误。
print("Hello world")
print('Hello world')
print('他的外号叫"胖子"。')
print("It's an apple.")
print("Hello world")
除此之外,当我们把光标放到最后一行代码的末尾时,编辑器会给我们一个黄色的警告,警告不是语法错误,警告提示我们:按照 PEP 8 的建议,当前文件的末尾缺少新行。PEP 8是Python官方的书写代码格式风格的建议书,按照这个建议书:通常都要在文件末尾敲一下回车,保留一个空行。这样,警告就消失了。
print("Hello world")
print('Hello world')
print('他的外号叫"胖子"。')
print("It's an apple.")
print("Hello world");print("Hello Python")
5-注释
在Python中,“#”被用来当作单行或多行注释符。注释就是不会被解释器执行的文本。注释常用来解释代码、临时禁用代码。比如:为我们的代码添加单行注释,可以这样做:在你想添加注释的位置输入# 敲一下空格,输入你的注释文字
# 双引号单引号定界字符串
print("Hello world")
print('Hello world')
# 外单内双 外双内单
print('他的外号叫"胖子"。')
print("It's an apple.")
# 换行符与分号
print("Hello world");print("Hello Python")
最后点击运行,可以看到注释不会被执行。
6-会写代码 也要会调试代码
当我们执行“Hello world”程序的时候,控制台中,除了显示“Hello world”以外,还有两行代码:第一行和第三行
第一行代码的后半句表示:表示当前运行的文件的位置
前半句:表示PyCharm使用的是虚拟环境中的 Python 解释器的位置
/Users/zj/Desktop/learn-python/.venv/bin/python /Users/zj/Desktop/learn-python/01-helloworld.py
"Hello world"
进程已结束,退出代码为0
第三行代码:进程已结束,退出代码为0。 这是解释器给我们的反馈,就好比解释器在说:嘿!哥们,能解释的我都为你解释完了,我要休息了,数字0表示:你的程序运行成功,没有任何问题。
再看一个示例:如果不小心丢掉了结束的引号,再次运行后
print("Hello world)
输出
/Users/zj/Desktop/learn-python/.venv/bin/python /Users/zj/Desktop/learn-python/01-helloworld.py
File "/Users/zj/Desktop/learn-python/01-helloworld.py", line 1
print("Hello World)
^
SyntaxError: unterminated string literal (detected at line 1)
进程已结束,退出代码为 1
第三行代码的数字变为了1,数字1表示:你的程序运行失败,我尽力了,你自己看错误提示吧。
看着这些英文的错误提示,如果让你感到各种不适,头皮发麻。大可不必,因为
编程的过程本来就是解决问题的过程,每解决一个问题就意味着水平的提升。
编程路上我们会遇到各种报错,我们是人类,怎么可能不写bug。
不过一个优秀的程序员总是能够快速精准的找到问题并解决问题。
最后一句,也是最重要的一句:如今有了ChatGPT、有了DeepSeek,老子谁也不怕。
请你把这条语法错误复制下来,丢给DeepSeek,问问DeepSeek报错的意思是什么。
其他
通过使用 print()
,你可以打印变量、表达式、字符串、数据结构等,并且可以灵活地调整输出格式。
print()
函数的基本语法:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
参数说明:
*objects
:一个或多个要输出的对象,print()
可以接受多个参数,这些参数会被转换为字符串并打印到控制台。sep
:可选参数,指定多个对象之间的分隔符,默认为空格' '
。end
:可选参数,指定输出结束时的字符,默认为换行符'\n'
,即输出完之后会换行。file
:可选参数,指定输出的目标文件,默认为标准输出sys.stdout
,即控制台。可以将输出重定向到文件或其他流。flush
:可选参数,布尔值,默认为False
,表示是否强制刷新缓冲区。若为True
,则会立即输出内容,不会等待缓冲。
1. 基础用法
最简单的用法就是将某个值输出到控制台:
print("Hello, World!")
输出:
Hello, World!
2. 打印多个对象
print()
可以同时接受多个对象并打印它们,默认情况下,这些对象之间用空格分隔:
print("Hello", "World", 123)
输出:
Hello World 123
3. 自定义分隔符 sep
你可以通过 sep
参数来改变多个对象之间的分隔符,默认是空格 ' '
,但你可以设置为其他字符,如逗号、短横线等:
print("Hello", "World", 123, sep="-")
输出:
Hello-World-123
4. 自定义结束符 end
默认情况下,print()
输出完之后会自动换行。如果你不希望换行,可以通过修改 end
参数来指定其他字符。例如,如果你希望打印内容后继续在同一行输出:
print("Hello", end=" ")
print("World!")
输出:
Hello World!
5. 输出到文件
你可以将输出重定向到一个文件,而不是打印到控制台。通过 file
参数,你可以指定输出目标:
with open("output.txt", "w") as file:
print("Hello, World!", file=file)
这会将 "Hello, World!"
写入 output.txt
文件,而不是显示在控制台上。
6. 刷新输出缓冲区
默认情况下,print()
会将输出缓存,直到缓冲区满或程序结束时才会写入。你可以通过设置 flush=True
强制刷新缓冲区,立即输出内容:
import time
print("Hello", flush=True)
time.sleep(2)
print("World")
这样,Hello
会立即显示,而不是等到 2 秒后才显示。
7. 打印不同数据类型
print()
可以自动将各种数据类型转换为字符串,并打印输出,包括数字、列表、字典等:
print(42) # 输出: 42
print(3.14) # 输出: 3.14
print([1, 2, 3]) # 输出: [1, 2, 3]
print({"name": "Alice", "age": 30}) # 输出: {'name': 'Alice', 'age': 30}
8. 字符串格式化
print()
可以结合字符串格式化(f-string
或 format
方法)打印变量:
使用 f-string(Python 3.6+):
name = "Alice"
age = 30
print(f"My name is {name} and I am {age} years old.")
输出:
My name is Alice and I am 30 years old.
使用 str.format()
:
name = "Bob"
age = 25
print("My name is {} and I am {} years old.".format(name, age))
输出:
My name is Bob and I am 25 years old.
使用旧式的 %
格式化:
name = "Charlie"
age = 22
print("My name is %s and I am %d years old." % (name, age))
输出:
My name is Charlie and I am 22 years old.
9. 打印包含换行符
你可以在打印文本中使用 \n
来插入换行符:
print("Hello\nWorld")
输出:
Hello
World
10. 打印带制表符(Tab)的字符串
使用 \t
可以插入制表符,通常用来对齐文本:
print("Name\tAge")
print("Alice\t30")
print("Bob\t25")
输出:
Name Age
Alice 30
Bob 25
11. 打印带颜色的文本
虽然 print()
本身不直接支持输出带颜色的文本,但你可以使用 ANSI 转义码来改变输出文本的颜色:
print("\033[31mHello, World!\033[0m") # 输出红色文本
输出:
Hello, World!(这段文字会显示为红色)
\033[31m
设置文本颜色为红色。\033[0m
重置颜色。
12. 输出多个空行
如果要打印多个空行,可以在 print()
函数中使用换行符,或者通过乘法来实现:
print("\n" * 3) # 输出 3 个空行
总结
print()
函数是 Python 中非常重要和灵活的工具,能够输出多种格式的文本,支持多个参数,可以控制输出的分隔符、结束符、输出目标等。它不仅适用于普通的文本输出,也支持字符串格式化、数据结构的打印、文件输出等多种需求。通过灵活使用这些选项,能够帮助你创建清晰、有序的输出内容。
练习
输出下面的图形
*****
* *
* O O *
* ^ *
* \___/ *
* *
*****
代码:
def print_smiley():
print(" ***** ")
print(" * * ")
print(" * O O * ")
print("* ^ * ")
print("* \\___/ * ")
print(" * * ")
print(" ***** ")
print_smiley()
you