Python 是一种解释型语言,所以可以一行一行地进入处理,按顺序执行。(C 语言是编译型语言)
你也可以把它写在一个源文件中(扩展名是 .py),一次性全部执行。
本页为那些学过 C 语言的人简要介绍了 Python3。
Windows3默认没有安装Python3,需要从下面下载安装。Sieve Python2 是 MacOSX 的标配,所以下载安装新版本。此外,iOS 还提供了(付费)Python 开发环境,让你在旅途中 也能轻松编程。
安装完成后,尝试在命令提示符下键入以下内容。
- Windowsの場合
- Z:\> python
-
- Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
-
- >>> (<- このようなプロンプトが出ればOK)
- Macの場合
-
- % python3
-
- Python 3.7.2 (v3.7.2:9a3ffc0492, Dec 24 2018, 02:44:43)
- [Clang 6.0 (clang-600.0.57)] on darwin
- Type "help", "copyright", "credits" or "license" for more information.
- >>>
-
-
- % python (ふるい Python2 が起動してしまうので注意!)
-
- Python 2.7.10 (default, Feb 22 2019, 21:55:15)
- [GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin
- Type "help", "copyright", "credits" or "license" for more information.
- >>>
无论哪种情况,您都可以通过键入 exit () 退出 Python 输入提示。
由于 Python 是一种解释型语言,您可以逐行输入和执行程序。启动 python,从键盘依次输入以下红色部分。
- >>> print('Hello world!')
- Hello world!
- >>> i=5+3
- >>> print('i=', i)
- i= 8
- >>>
这样,在解释型语言中,就可以像计算器一样轻松编写计算程序。
如果处理的过程很长,输入起来很麻烦,错误也很多,所以可以像C语言一样提前写好源文件,一次性全部执行。
- 以下を test.py として保存
-
- print(' --- Calc. prog. ---')
-
- i = 3 + 5
- j = 4 * 5
-
- print('ans = ', i * j)
- (実行方法) Z:\> python test.py --- Calc. prog. --- ans = 160
这样,Python 允许您以以下两种方式执行程序。
建议小测试执行1,重复多次的过程执行2。
如果使用安装Python的同时安装的集成开发环境(IDE)“IDLE Editor”,可以立即查看执行结果,很方便。
编辑器画面 执行结果
您还可以使用 VSCode 或 VSCodium 编辑源文件并从终端执行它。
- # This is comment
- print('Hello World!')
- print('This is a "pen".')
- 执行结果 Hello World! This is a "pen".
这就是你所需要的。 #之后,它被视为评论。// 相当于C++ 。
串括在,"和 '由所述一个所包围,如果均匀的开始和结束是OK。( C 中的"字符串,C 中的'1 个字符 )
如上例所示,这很方便,因为每次要显示“和”时都不必转义。
print 与 C 语言不同,自动添加换行符。如果您想抑制 this end,请指定为空,如果end你设置了任何一个字符串,它每次都会被添加到字符串的末尾。
- print('ABC', end='') # ''は,シングルクオーテーション2つ
- print('XYZ')
- 执行结果 ABCXYZ
print 允许您连续输出多个值和变量,以逗号分隔。
这时候会自动插入一个空格作为字符和数字之间的分隔符。指定一个变量来更改分隔符sep。
- print(100, 200, 300)
- print(100, 200, 300, sep = ',')
- print(100, 200, 300, sep = '----')
- print(100, 200, 300, sep = ' | ')
- print(100, 200, 300, sep = '') # ''は,シングルクオーテーション2つ
- 実行例 100 200 300 100,200,300 100----200----300 100 | 200 | 300 100200300
用于键盘输入input。scanf()它对应于C语言,但有点不同。
- ret = input('Input a number:')
scanf 不同的是,它很方便,因为您可以将输入消息作为 input 的参数传递。
重要提示:键盘输入首先作为字符串返回。在以下示例中,将输入字符串 ret 分配给变量。
- str1 = input('input a number 1:')
- str2 = input('input a number 2:')
-
- sum = str1 + str2
- print(sum)
- 実行例: input a number 1:10 input a number 2:20 1020
这样输入的字符作为字符串返回,所以显示为1020而不是(预期的)30。
换句话说,代替数字 1000 和 20,显示字母 Ichi Zero Ni Zero。
如果要将其计算为int(), float()数字,请使用将其转换为数字。(在 C 中atoi, atof, strtol, strtof)
- str1 = input('input a number 1:')
- str2 = input('input a number 2:')
-
- sum = int(str1) + int(str2)
- print(sum)
- 実行例: input a number 1:10 input a number 2:20 30
或者,从一开始就将其转换为数值并将其分配给变量。变量名x,y已更改为。
- x = int ( input('input a number 1:') )
- y = int ( input('input a number 2:') )
-
- sum = x + y
- print(sum)
相反,如果要将数值转换为字符串,请 str(数値)使用。
您可以将其视为变量类型 == 类。由于变量类型是在运行时动态确定的,所以不需要在声明时提前确定类型名称。(首先,您不必在使用变量之前声明它。)
- # こんなのもOK.
-
- i = 10 # 整数
- print(i)
- i = 'Hello' # 文字列
- print(i)
- 执行结果 10 Hello
但是,由于变量的类型在途中变得不清楚,因此type()使用 use来检查变量的类型。
- # 対話モードなら,printは不要.
-
- print( type(10) )
- print( type(10.0) )
- print( type("10") )
- print( type('10') )
- 执行结果 <class 'int'> <class 'float'> <class 'str'> <class 'str'>
print 所以,如果要同时显示字符串和变量的值:
- i = 100 # 型名の指定は不要.
- print('Hello World! i=', i)
变量可以是字符串也可以是数值。
- i = 'OMG!'
- print('Hello World! i =', i)
- print(i) # これもOK
- print(i + ' --- ' + i) # 文字列の連結
- print(i + '1' ) # これはOK
- print(i + 1) # これはNG. i は文字なので,数値を足せない
在执行最后一行时,您应该收到以下错误。由于 Python 是一种解释型语言(不是编译型语言),它从源代码的顶部开始按顺序执行,只有在发生错误时才停止执行。
如果 Traceback (...) 出现这样的消息,则可能发生了某种错误,因此让我们使用行数和内容作为提示来修改源代码。
- Traceback (most recent call last):
- File "C:\....\test.py", line 6, in
- print(i + 1)
- TypeError: can only concatenate str (not "int") to str
printf如果要使用 C风格的格式规范,写如下。 %(...) 列出变量的格式与C语言不同,但非常相似。
- name = 'Paul'
- age = 90
- height = 170.5
-
- print('%s is %04d years old, height=%.2fcm.' % (name, age, height))
- Paul is 0090 years old, height=170.50cm.
+, -, *, /, //, %, **
请注意,Python3 和 C 语言之间的划分略有不同。
**很方便。
- print(12 + 5)
- print(12 - 5)
- print(12 * 5)
-
- print(12 / 5) # 浮動小数.C言語と違う!
- print(12 // 5) # 整数で割り算.小数点以下は切り捨て
-
- print(12 % 5)
-
- print(12 ** 5) # べき乗
- 执行结果 17 7 60 2.4 2 2 248832
比较数字(和字符代码)大小的运算符。符号本身与 C 语言中的相同。
比较、整个表达式True或False取值的结果。(在 C 语言中,true, false用非零值和零表示,在 C++ 中。)
<, > <=, >=, ==, !=
- print(2 > 3)
- print(2 < 3)
- 执行结果 False True
按原样and, or, not编写逻辑运算符。(在 C 中,它是 &&、||、!)
- print(1>2 or 1<2)
- print(not True)
- 执行结果: True False
- 如果条件表达式:
与 C 不同的是,条件表达式不需要用括号 () 括起来,但条件表达式的末尾:需要一个冒号。
- i = int(input('i=?'))
-
- if i > 0:
- print('正です.')
- elif i < 0:
- print('負です.')
- else:
- print('ゼロです.')
-
- print('おわり.')
- 执行结果: i=?10 正です. おわり.
elif ...:else:如果不需要,可以省略箭头。
在 python 中,代码块是缩进的,所以如果缩进不正确,就会出错!
在C语言中,{} 如果是括起来,有无缩进都可以。
在 Python 中,缩进不是源代码外观的问题,它是 一种美妙的语言规范,除非缩进写得整齐,否则程序无法正确执行。
- while 条件表达式:
格式与 if 语句几乎相同。这对于缩进也很重要。
- i=0
- while i<=10:
- print(i)
- i+=1 # インクリメント.i++ は,何と文法エラー!
- 对于对象中的变量:
在 C 语言中,计数器变量是用来计算迭代次数的,但在 Python 中,放置的是可迭代的“对象”。一组一些数据,如列表。
很难理解它是什么,但是例如,range 要重复数字的序列号,请使用。
range(n) 表示一组值最大为 0,1,2, ..., n-1。
- for i in range(5):
- print(i)
- 执行结果 0 1 2 3 4
range 可以写成(初始值,结束值,要增加的值)。如果省略要增加的值,则变为1,可以给出负数。
- for i in range(20, 10, -2):
- print(i)
- 执行结果 20 18 16 14 12
即使在多个循环的情况下,也要整齐地写出缩进。
- print('---------------------')
-
- for i in range(1,10):
- for j in range(1,10):
- print(i*j, end=' ')
-
- print('\n')
-
- print('---------------------')
range注意没有达到最终值!
- def func():
- print('Hello!') # 字下げ重要
-
- # ↑↑↑↑ ここまでが関数 func() ↑↑↑↑
-
-
- # ↓↓↓↓ ここから処理が開始される ↓↓↓↓
- func()
- func()
- func()
- 执行结果 Hello! Hello! Hello!
有序通过。不需要型号名称。
- def func(a, b):
- print('a=', a, 'b=', b)
-
- func(1, 2)
- func(3.2, 4.9)
- func('AAA', 'ZZZ')
- 执行结果 a= 1 b= 2 a= 3.2 b= 4.9 a= AAA b= ZZZ
形式参数是所谓的值引用吗?
更改函数中的参数不会影响调用者。
- def func(a):
- a=100
-
- a=1
- print('a=', a)
- func(a)
- print('a=', a)
- 执行结果 a= 1 a= 1
列表就像 C 中的数组,在 Python 中你可以混合不同的类型。
(处理变量的函数一般称为“容器”。)
与普通变量一样,不需要在声明时指定类型。 在
声明中使用方括号[ ],并写出用逗号分隔的元素。
与 C 一样,下标从偏移量 0 开始。
- a = [10, 20, 30] # リストの初期化
-
- print('a =', a)
- print('a[0] =', a[0])
- print('a[1] =', a[1])
- print('a[2] =', a[2])
- 执行结果 a = [10, 20, 30] a[0] = 10 a[1] = 20 a[2] = 30
每个元素都可以更改。还有一个“元组”,它的值不能改变。
- a = [10, 20, 30]
- print('a =', a)
-
- a[0] = 100
- print('a =', a)
- 执行结果 a = [10, 20, 30] a = [100, 20, 30]
它是一个负下标,可以从数组的末尾访问。
- a = [10, 20, 30]
- print('a = ', a)
- print('a[-1] =', a[-1])
- print('a[-2] =', a[-2])
- print('a[-3] =', a[-3])
- 执行结果 a = [10, 20, 30] a[-1] = 30 a[-2] = 20 a[-3] = 10
当它超出数组的边界时。
- a = [10, 20, 30]
- print('a =', a)
- print('a[2] =', a[2]) # これはOK
- print('a[3] =', a[3]) # ???
- print('a[4] =', a[4]) # OMG!
- 执行结果 a = [10, 20, 30] a[2] = 30 Traceback (most recent call last): File "test.py", line 4, in <module> print('a[3] =', a[3]) # ??? IndexError: list index out of range
我收到一个错误。
列表的内容不必是数字。(对于字符串数组,C 需要“指针数组”)
- a = ['Oh', 'My', 'Goodness']
- print('a = ', a)
- print('a[0] =', a[0])
- print('a[1] =', a[1])
- print('a[2] =', a[2])
- 执行结果 a = ['Oh', 'My', 'Goodness'] a[0] = Oh a[1] = My a[2] = Goodness
列表的内容可能是数字和字母的混合。
- a = ['Oh', 10, 'My', 20, 'Goodness']
- print('a = ', a)
- print('len(a) = ', len(a) )
-
- print('a[0] =', a[0])
- print('a[1] =', a[1])
- print('a[2] =', a[2])
- print('a[3] =', a[3])
- print('a[4] =', a[4])
- 执行结果 a = ['Oh', 10, 'My', 20, 'Goodness'] len(a) = 5 a[0] = Oh a[1] = 10 a[2] = My a[3] = 20 a[4] = Goodness
- array = [1, 3, 5, 10] # リスト
-
- for i in array: # リストを使った繰り返し文
- print(i)
- 执行结果 1 3 5 10
混合数字和字母的列表是可以的。(你用它来做什么?)
- array = ['Oh', 'My', 'goodness', 10, 20] # 混在リスト
-
- for i in array:
- print(i)
- 执行结果 Oh My goodness 10 20
- def func(a):
- print('a=', a)
-
- a = [1,2,3]
- func(a)
- 执行结果 a = [1,2,3]
列表中,键入名称的大小 len(),type() 以获得。
- a = ['Oh', 10, 'My', 20, 'Goodness']
- print('a = ', a)
- print('len(a) = ', len(a) )
-
- print(type(a))
- print(type(a[0]))
- print(type(a[1]))
-
- 执行结果 a = ['Oh', 10, 'My', 20, 'Goodness'] len(a) = 5 <class 'list'> <class 'str'> <class 'int'>
整个列表的类型是list,第一个是str,第二个是int
基本中基本
- f = open('sample.txt', 'w') # 引数はCのfopen()と同じ.ファイル名とモード
- f.write('Hello World!\nGood Bye!')
- f.close()
使用变量作为文件名等。
- fname = 'sample.txt'
- f = open(fname, 'w') # 'w' は書き込みモード
-
- data = 'Hello World!\nGood Bye!'
- f.write(data)
-
- f.close()
- fname = 'sample.txt'
- f = open(fname, 'r') # 'r' は読み込みモード
-
- line = f.readline() # (改行コードも含め)1行読み込み
- print(line)
-
- f.close()
这样,只读取一行,所以:
- fname = 'sample.txt'
- f = open(fname, 'r')
-
- for line in f:
- print(line) # line は1行分のデータ
-
- f.close()
- 执行结果 Hello World! Good Bye!
print 如果用 with 显示,会多出一个换行码,所以会创建一个空行。
这样,读取和处理就可以分开了。如果文件很大怎么办?
- f = open('sample.txt', 'r')
- lines = f.readlines()
- f.close()
-
- print(lines)
- 执行结果 ['Hello World!\n', 'Good Bye!']
文件处理会导致某种错误。
要写入的文件被另一个应用程序锁定。
没有要读取的文件。这样的。
“异常处理”用于错误处理。此处省略详细说明。
- fname = 'non-existing-file.txt' # 存在しないファイル名
-
- try:
- f = open(fname, 'r')
- lines = f.readlines()
-
- except:
- print('読み込めなーい')
-
- else:
- print('読み込みました.')
- print(lines)
- f.close()
-
- finally:
- print('おしまい.')
-
- 执行结果: 読み込めなーい おしまい.
此处不再详细解释,更详细的解释请参考官方的“教程”、“语言参考”和“库参考”。
此外,还有许多其他重要的编程主题。
如果你有兴趣,让我们积极研究互联网站点和书籍来学习。
在 Python 中,最好使用现有包的良好组合,而不是自己编写算法。为了加速,包的内部处理是用 C 语言编写的。