参考:http://www.kuqin.com/abyteofpython_cn/index.html
Learn Python in Y minutes:http://www.jianshu.com/p/1062bdd071cc
python 部落:https://python.freelycode.com/
简介
Python语言是少有的一种可以称得上即简单又功能强大的编程语言。你将惊喜地发现Python语言是多么地简单,它注重的是如何解决问题而不是编程语言的语法和结构。
Python的官方介绍是:
Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。
Python的特色
Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。
Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么Python如此优秀的原因之一——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。
当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。
这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC!
这一点需要一些解释。
一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。
而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。
Python即支持面向过程的编程也支持面向对象的编程。在 面向过程 的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在 面向对象 的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。
如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。
除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
安装python
怎么安装python,可以上网找安装教程。在此不再说明。python 安装
执行python
用Python编写一个传统的“Hello World”程序。通过它,你将学会如何编写、保存和运行Python程序。有两种使用Python运行你的程序的方式:
1. 使用交互式的带提示符的解释器
2. 使用源文件。我们将学习这两种方法。
使用带提示符的解释器
在命令行的shell提示符下键入python,启动解释器。现在输入print 'Hello World'
,然后按Enter键。你应该可以看到输出的单词Hello World。 对于Windows用户,只要你正确的设置了PATH变量,你应该可以从命令行启动解释器。或者你可以选择使用IDLE程序。IDLE是集成开发环境的缩写。点击开始->程序->Python 2.3->IDLE(Python GUI)。Linux用户也可以使用IDLE。
注意,>>>是你键入Python语句的提示符。
$ python
Python 2.3.4 (#1, Oct 26 2004, 16:42:40)
[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'hello world'
hello world
>>>
注意,Python会在下一行立即给出你输出!你刚才键入的是一句Python 语句 。我们使用print
(不要惊讶)来打印你提供给它的值。这里,我们提供的是文本Hello World
,它被迅速地打印在屏幕上。
如何退出Python提示符
如果你使用的是Linux/BSD shell,那么按Ctrl-d退出提示符。如果是在Windows命令行中,则按Ctrl-z再按Enter。
使用源文件
现在让我们重新开始编程。当你学习一种新的编程语言的时候,你编写运行的第一个程序通常都是“Hello World”程序,这已经成为一种传统了。在你运行“Hello World”程序的时候,它所做的事只是说声:“Hello World”。
启动你选择的编辑器,输入下面这段程序,然后把它保存为helloworld.py。
#!/usr/bin/python
# Filename : helloworld.py
print
'Hello World'
为了运行这个程序,请打开shell(Linux终端或者DOS提示符),然后键入命令python helloworld.py。如果你使用IDLE,请使用菜单Edit->Run Script或者使用键盘快捷方式Ctrl-F5。输出如下所示。
输出
$ python helloworld.py
Hello World
如果你得到的输出与上面所示的一样,那么恭喜!——你已经成功地运行了你的第一个Python程序。
万一你得到一个错误,那么请确保你键入的程序 准确无误 ,然后再运行一下程序。注意Python是大小写敏感的,即print
与Print
不一样——注意前一个是小写p
而后一个是大写P
。另外,确保在每一行的开始字符前没有空格或者制表符——我们将在后面讨论为什么这点是重要的。
它如何工作
程序的前两行。它们被称作 注释 ——任何在#符号右面的内容都是注释。注释主要作为提供给程序读者的笔记。
Python至少应当有第一行那样的特殊形式的注释。它被称作 组织行 ——源文件的头两个字符是#!,后面跟着一个程序。这行告诉你的Linux/Unix系统当你 执行 你的程序的时候,它应该运行哪个解释器。这会在下一节做详细解释。注意,你总是可以通过直接在命令行指定解释器,从而在任何平台上运行你的程序。就如同命令python helloworld.py一样。
重要
在你的程序中合理地使用注释以解释一些重要的细节——这将有助于你的程序的读者轻松地理解程序在干什么。记住,这个读者可能就是6个月以后的你!
跟在注释之后的是一句Python 语句 ——它只是打印文本“Hello World”。print
实际上是一个操作符,而“Hello World”被称为一个字符串——别担心我们会在后面详细解释这些术语。
这部分内容只对Linux/Unix用户适用,不过Windows用户可能也对程序的第一行比较好奇。首先我们需要通过chmod命令,给程序可执行的许可,然后 运行 程序。
$ chmod a+x helloworld.py
$ ./helloworld.py
Hello World
chmod命令用来 改变 文件的 模式 ,给系统中所有用户这个源文件的执行许可。然后我们可以直接通过指定源文件的位置来执行程序。我们使用./来指示程序位于当前目录。
为了更加有趣一些,你可以把你的文件名改成仅仅helloworld
,然后运行./helloworld。这样,这个程序仍然可以工作,因为系统知道它必须用源文件第一行指定的那个解释器来运行程序。
只要知道程序的确切位置,你现在就可以运行程序了——但是如果你希望你的程序能够从各个位置运行呢?那样的话,你可以把你的程序保存在PATH环境变量中的目录之一。每当你运行任何程序,系统会查找列在PATH环境变量中的各个目录。然后运行那个程序。你只要简单地把这个源文件复制到PATH所列目录之一就可以使你的程序在任何位置都可用了。
$ echo $PATH
/opt/mono/bin/:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/swaroop/bin
$ cp helloworld.py /home/swaroop/bin/helloworld
$ helloworld
Hello World
我们能够用echo命令来显示PATH变量,用$给变量名加前缀以向shell表示我们需要这个变量的值。我们看到/home/swaroop/bin
是PATH变量中的目录之一。swaroop是我的系统中使用的用户名。通常,在你的系统中也会有一个相似的目录。你也可以把你选择的目录添加到PATH变量中去——这可以通过运行PATH=$PATH:/home/swaroop/mydir完成,其中“/home/swaroop/mydir
”是我想要添加到PATH变量中的目录。
当你想要在任何时间、任何地方运行你的程序的时候,这个方法十分有用。它就好像创造你自己的指令,如同cd或其他Linux终端或DOS提示符命令那样。
提示
对于Python来说,程序、脚本或者软件都是指同一个东西。
如果你需要某个Python函数或语句的快速信息帮助,那么你可以使用内建的help
功能。尤其在你使用带提示符的命令行的时候,它十分有用。比如,运行help(str)
——这会显示str
类的帮助。str类用于保存你的程序使用的各种文本(字符串)。类将在后面面向对象编程的章节详细解释。
注释
按q退出帮助。
类似地,你可以获取Python中几乎所有东西的信息。使用help()
去学习更多关于help
本身的东西!
如果你想要获取关于如print
那样操作符的帮助,那么你需要正确的设置PYTHONDOCS环境变量。这可以在Linux/Unix中轻松地通过env命令完成。
$ env PYTHONDOCS=/usr/share/doc/python-docs-2.3.4/html/ python
Python 2.3.4 (#1, Oct 26 2004, 16:42:40)
[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> help('print')
注意特意在“print
”上使用了引号,那样Python就可以理解我是希望获取关于“print”的帮助而不是想要它打印东西。
基本概念
字面意义上的常量
一个字面意义上的常量的例子是:如同5
、1.23
、9.25e-3
这样的数,或者如同'This is a string'
、"It's a string!"
这样的字符串。它们被称作字面意义上的,因为它们具备 字面 的意义——你按照它们的字面意义使用它们的值。数2
总是代表它自己,而不会是别的什么东西——它是一个常量,因为不能改变它的值。因此,所有这些都被称为字面意义上的常量。
数
在Python中有4种类型的数——整数、长整数、浮点数和复数。
2
是一个整数的例子。- 长整数不过是大一些的整数。
3.23
和52.3E-4
是浮点数的例子。E标记表示10的幂。在这里,52.3E-4
表示52.3 * 10
-4。(-5+4j)
和(2.3-4.6j)
是复数的例子。
字符串
字符串是 字符的序列 。字符串基本上就是一组单词。
在每个Python程序中都要用到字符串,所以请特别留心下面这部分的内容。下面告诉你如何在Python中使用字符串。
- 使用单引号(')
你可以用单引号指示字符串,就如同
'Quote me on this'
这样。所有的空白,即空格和制表符都照原样保留。 - 使用双引号(")
在双引号中的字符串与单引号中的字符串的使用完全相同,例如
"What's your name?"
。 - 使用三引号('''或""")
利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。例如:
'''This is a multi-line string. This is the first line. This is the second line. "What's your name?," I asked. He said "Bond, James Bond." '''
-
转义符
-
假设你想要在一个字符串中包含一个单引号('),那么你该怎么指示这个字符串?例如,这个字符串是
What's your name?
。你肯定不会用'What's your name?'
来指示它,因为Python会弄不明白这个字符串从何处开始,何处结束。所以,你需要指明单引号而不是字符串的结尾。可以通过转义符 来完成这个任务。你用\'
来指示单引号——注意这个反斜杠。现在你可以把字符串表示为'What\'s your name?'
。另一个表示这个特别的字符串的方法是
"What's your name?"
,即用双引号。类似地,要在双引号字符串中使用双引号本身的时候,也可以借助于转义符。另外,你可以用转义符\\
来指示反斜杠本身。值得注意的一件事是,在一个字符串中,行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行。例如:
"This is the first sentence.\ This is the second sentence." 等价于"This is the first sentence. This is the second sentence."
-
-
另一个表示这个特别的字符串的方法是
"What's your name?"
,即用双引号。类似地,要在双引号字符串中使用双引号本身的时候,也可以借助于转义符。另外,你可以用转义符\\
来指示反斜杠本身。值得注意的一件事是,在一个字符串中,行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行。例如:
"This is the first sentence.\ This is the second sentence." 等价于"This is the first sentence. This is the second sentence."
- 自然字符串
如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀
r
或R
来指定。例如 r"Newlines are indicated by \n" 和 "Newlines are indicated by \n"
- Unicode字符串
Unicode是书写国际文本的标准方法。如果你想要用你的母语如北印度语或阿拉伯语写文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀
u
或U
。例如,u"This is a Unicode string."
。记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。
- 字符串是不可变的
一旦你创造了一个字符串,你就不能再改变它了。虽然这看起来像是一件坏事,但实际上它不是。我们将会在后面的程序中看到为什么我们说它不是一个缺点。
-
按字面意义级连字符串。如果你把两个字符串按字面意义相邻放着,他们会被Python自动级连。
例如,'What\'s' 'your name?'会被自动转为"What's your name?"。
给C/C++程序员的注释
在Python中没有专门的char
数据类型。确实没有需要有这个类型,我相信你不会为此而烦恼。
给Perl/PHP程序员的注释
记住,单引号和双引号字符串是完全相同的——它们没有在任何方面有不同。
给正则表达式用户的注释
一定要用自然字符串处理正则表达式。否则会需要使用很多的反斜杠。例如,后向引用符可以写成'\\1'
或r'\1'
。
缩进
空白在Python中是重要的。事实上行首的空白是重要的。它称为缩进。
每行的行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。
这意味着同一层次的语句必须有相同的缩进。每一组这样的语句称为一个块。
你需要记住的是错误的缩进会引发错误。
如何缩进
不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。
强烈建议 你在每个缩进层次使用 单个制表符 或 两个空格 或 四个空格 。
选择这三种缩进风格之一。更加重要的是,选择一种风格,然后一贯地使用它,即 只 使用这一种风格。
运算符与它们的用法
运算符 | 名称 | 说明 | 例子 |
---|---|---|---|
+ | 加 | 两个对象相加 | 3 + 5得到8。'a' + 'b'得到'ab'。 |
- | 减 | 得到负数或是一个数减去另一个数 | -5.2得到一个负数。50 - 24得到26。 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 | 2 * 3得到6。'la' * 3得到'lalala'。 |
** | 幂 | 返回x的y次幂 | 3 ** 4得到81(即3 * 3 * 3 * 3) |
/ | 除 | x除以y | 4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333 |
// | 取整除 | 返回商的整数部分 | 4 // 3.0得到1.0 |
% | 取模 | 返回除法的余数 | 8%3得到2。-25.5%2.25得到1.5 |
<< | 左移 | 把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1) | 2 << 2得到8。——2按比特表示为10 |
>> | 右移 | 把一个数的比特向右移一定数目 | 11 >> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。 |
& | 按位与 | 数的按位与 | 5 & 3得到1。 |
| | 按位或 | 数的按位或 | 5 | 3得到7。 |
^ | 按位异或 | 数的按位异或 | 5 ^ 3得到6 |
~ | 按位翻转 | x的按位翻转是-(x+1) | ~5得到6。 |
< | 小于 | 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 | 5 < 3返回0(即False)而3 < 5返回1(即True)。比较可以被任意连接:3 < 5 < 7返回True。 |
> | 大于 | 返回x是否大于y | 5 > 3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。 |
<= | 小于等于 | 返回x是否小于等于y | x = 3; y = 6; x <= y返回True。 |
>= | 大于等于 | 返回x是否大于等于y | x = 4; y = 3; x >= y返回True。 |
== | 等于 | 比较对象是否相等 | x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。 |
!= | 不等于 | 比较两个对象是否不相等 | x = 2; y = 3; x != y返回True。 |
not | 布尔“非” | 如果x为True,返回False。如果x为False,它返回True。 | x = True; not y返回False。 |
and | 布尔“与” | 如果x为False,x and y返回False,否则它返回y的计算值。 | x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算。 |
or | 布尔“或” | 如果x是True,它返回True,否则它返回y的计算值。 | x = True; y = False; x or y返回True。短路计算在这里也适用。 |
运算符优先级
运算符 | 描述 |
---|---|
lambda | Lambda表达式 |
or | 布尔“或” |
and | 布尔“与” |
not x | 布尔“非” |
in,not in | 成员测试 |
is,is not | 同一性测试 |
<,<=,>,>=,!=,== | 比较 |
| | 按位或 |
^ | 按位异或 |
& | 按位与 |
<<,>> | 移位 |
+,- | 加法与减法 |
*,/,% | 乘法、除法与取余 |
+x,-x | 正负号 |
~x | 按位翻转 |
** | 指数 |
x.attribute | 属性参考 |
x[index] | 下标 |
x[index:index] | 寻址段 |
f(arguments...) | 函数调用 |
(experession,...) | 绑定或元组显示 |
[expression,...] | 列表显示 |
{key:datum,...} | 字典显示 |
'expression,...' | 字符串转换 |
#!/usr/bin/python
# Filename: expression.pylength = 5
breadth = 2
area = length * breadth
print 'Area is', area
print 'Perimeter is', 2 * (length + breadth)输出
$ python expression.py
Area is 10
Perimeter is 14
计算顺序
默认地,运算符优先级表决定了哪个运算符在别的运算符之前计算。然而,如果你想要改变它们的计算顺序,你得使用圆括号。例如,你想要在一个表达式中让加法在乘法之前计算,那么你就得写成类似(2 + 3) * 4
的样子。
结合规律
运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算。例如,2 + 3 + 4
被计算成(2 + 3) + 4
。一些如赋值运算符那样的运算符是由右向左结合的,即a = b = c
被处理为a = (b = c)
。
控制流
在Python中有三种控制流语句——if
、for
和while
使用if语句
#!/usr/bin/python
# Filename: if.py number = 23
guess = int(raw_input('Enter an integer : '))if guess == number:print 'Congratulations, you guessed it.'# New block starts hereprint "(but you do not win any prizes!)"# New block ends here
elif guess < number:print 'No, it is a little higher than that'# Another block# You can do whatever you want in a block ...
else:print 'No, it is a little lower than that'# you must have guess > number to reach hereprint 'Done'
# This last statement is always executed, after the if statement is executed
输出:
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done
注意:我们使用了缩进层次来告诉Python每个语句分别属于哪一个块。这就是为什么缩进在Python如此重要的原因。elif
和else
从句都必须在逻辑行结尾处有一个冒号,下面跟着一个相应的语句块(当然还包括正确的缩进)。
Python中没有switch
语句。可以使用if..elif..else
语句来完成同样的工作(在某些场合,使用字典会更加快捷。)
使用while语句
#!/usr/bin/python
# Filename: while.pynumber = 23
running = Truewhile running:guess = int(raw_input('Enter an integer : '))if guess == number:print 'Congratulations, you guessed it.'running = False # this causes the while loop to stopelif guess < number:print 'No, it is a little higher than that'else:print 'No, it is a little lower than that'
else:print 'The while loop is over.' # Do anything else you want to do hereprint 'Done'
输出
$ python while.py
Enter an integer : 50
No, it is a little lower than that.
Enter an integer : 22
No, it is a little higher than that.
Enter an integer : 23
Congratulations, you guessed it.
The while loop is over.
Done
我们把raw_input
和if
语句移到了while
循环内,并且在while循环开始前把running
变量设置为True
。首先,我们检验变量running
是否为True
,然后执行后面的while-块 。在执行了这块程序之后,再次检验条件,在这个例子中,条件是running
变量。如果它是真的,我们再次执行while-块,否则,继续执行可选的else-块,并接着执行下一个语句。
当while
循环条件变为False
的时候,else
块才被执行——这甚至也可能是在条件第一次被检验的时候。如果while
循环有一个else
从句,它将始终被执行,除非你的while
循环将永远循环下去不会结束!
True
和False
被称为布尔类型。你可以分别把它们等效地理解为值1
和0
。在检验重要条件的时候,布尔类型十分重要,它们并不是真实的值1
。
else块事实上是多余的,因为你可以把其中的语句放在同一块(与while
相同)中,跟在while
语句之后,这样可以取得相同的效果。
使用for语句
#!/usr/bin/python
# Filename: for.pyfor i in range(1,5):print i
else:print 'The for loop is over'
我们所做的只是提供两个数,range
返回一个序列的数。这个序列从第一个数开始到第二个数为止。例如,range(1,5)
给出序列[1, 2, 3, 4]
。默认地,range
的步长为1。如果我们为range
提供第三个数,那么它将成为步长。例如,range(1,5,2)
给出[1,3]
。记住,range向上 延伸到第二个数,即它不包含第二个数。
for
循环在这个范围内递归——for i in range(1,5)
等价于for i in [1, 2, 3, 4]
,这就如同把序列中的每个数(或对象)赋值给i,一次一个,然后以每个i
的值执行这个程序块。在这个例子中,我们只是打印i的值。
记住,else
部分是可选的。如果包含else,它总是在for
循环结束后执行一次,除非遇到break语句。
记住,for..in
循环对于任何序列都适用。这里我们使用的是一个由内建range
函数生成的数的列表,但是广义说来我们可以使用任何种类的由任何对象组成的序列!
break语句
break
语句是用来 终止 循环语句的,即哪怕循环条件没有称为False
或序列还没有被完全递归,也停止执行循环语句。
一个重要的注释是,如果你从for
或while
循环中 终止 ,任何对应的循环else
块将不执行。
#!/usr/bin/python
# Filename: break.py
while
True
:
s =
raw_input
(
'Enter something : '
)
if
s ==
'quit'
:
break
print
'Length of the string is'
,
len
(s)
print
'Done'
continue语句
continue
语句被用来告诉Python跳过当前循环块中的剩余语句,然后 继续 进行下一轮循环。
#!/usr/bin/python
# Filename: continue.py
while
True
:
s =
raw_input
(
'Enter something : '
)
if
s ==
'quit'
:
break
if
len
(s) <
3
:
continue
print
'Input is of sufficient length'
# Do other kinds of processing here...