python简单例子
python 简易猜数字游戏
用户可以一直猜,每猜一次都要重复运行一次程序,直到猜对为止。 这巧妙地阐述了 while 语句的用法。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19number = 23
running = True
while running:
guess = int(input('Enter an integer : '))
if guess == number:
print('Congratulations, you guessed it.')
# 这会导致 while 循环停止
running = False
elif 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.')
# 你可以在此处继续进行其它你想做的操作
print('Done')
输出1
2
3
4
5
6
7
8
9$ 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
else语句块会在 while 循环的条件变为 False 时执行——甚至有可能在第一次检查条件时,条件就是 False 。如果 while 循环中有一个 else 从句,它总是会执行到,除非用 break 语句跳出循环。
我们将True 和 False 称为布尔类型,而且你可以认为它们分别等于数值 1 和 0 。
for 循环
for..in 语句是另一种循环语句,它会 迭代 对象序列,即会遍历序列中的的每个项。在后面的章节中,我们将详细了解 序列 。目前你只需要知道的是,序列只是一个有序的项的集合。
示例(保存为 for.py):1
2
3
4for i in range(1, 5):
print(i)
else:
print('The for loop is over')
输出:1
2
3
4
5
6$ python for.py
1
2
3
4
The for loop is over
查找字符串
1 | # 这是一个字符串对象 |
输出:1
2
3
4
5$ python ds_str_methods.py
Yes, the string starts with "Swa"
Yes, it contains the string "a"
Yes, it contains the string "war"
Brazil_*_Russia_*_India_*_China
模块的 __name__
每一个模块都有一个名称,在模块中我们可以通过判断语句来确定模块的名称。这在一种情形下特别有用:确定模块被导入了?还是在独立的运行。如之前提到过的,当模块第一次被导入的时候,模块的代码将被执行。
我们可以通过这一点,让模块在被导入和独立运行时执行不同的操作。通过模块的 __name__ 属性可以实现这个功能。
示例(另存为 module_using_name.py):1
2
3
4if __name__ == '__main__':
print('我是自己运行时显示')
else:
print('我是在被import时显示的')
输出:1
2
3
4
5
6
7$ python module_using_name.py
我是自己运行时显示
$ python
import module_using_name
我是在被import时显示的
>>>
代码是如何工作的?
每一个 Python 模块都定义了各自的 __name__。如果其值为 __main__,这说明用户正在单独运行这个模块,这时我们可以进行合适的操作
__init__ 方法
对 Python 类来说,许多方法名有特别的重要性。现在,我们来考察一个重要的 __init__ 方法。
__init__ 方法将在类的对象被初始化(也就是创建)的时候自动的调用。这个方法将按照你的想法 初始化 对象(通过给对象传递初始值)。请注意这个名字的开头和结束都是双下划线。
例子(保存为文件 oop_init.py ):1
2
3
4
5
6
7
8
9
10
11class Person:
def __init__(self, name):
self.name = name
def say_hi(self):
print('Hello, my name is', self.name)
p = Person('Swaroop')
p.say_hi()
# 上面两行也可以写成下面这种形式
# Person('Swaroop').say_hi()
输出1
2$ python oop_init.py
Hello, my name is Swaroop
这是如何工作的
这里,我们定义了 __init__ 方法。这个方法除了通常的 self 变量之外,还有一个参数 name 。 这里我们创建了一个新的也叫做 name 的域。注意这里有两个不同的变量却都被叫做 name 。这是没有问题的,因为带点的标记 self.name 表示有一个叫做 name 的域是这个类的一部分,而另外一个 name 是一个局部变量。这里我们显式地指出使用哪个变量,因此没有任何冲突。
当新建一个新的 Person 类的实例 p 的时候,我们通过调用类名的方式来创建这个新的实例,在紧跟着的括号中填入初始化参数: p = Person('Swaroop') 。
我们没有显式的调用 __init__ 这个方法,这是这个方法特殊之处。
正如 say_hi 方法所示的,现在我们在我们的方法之中可以使用 self.name 这个域了。