python控制结构实训_《python 从入门到精通》§5 控制结构

news/2024/11/24 9:39:02/

§5控制结构

2009-8-17

磁针石:xurongzhong#gmail.com

§5.1关于print和import更多的东东

打印多个值:

>>>

print 'Age:', 42

Age: 42

输出时会有空格分隔。为了避免空格,可以使用“+".

在脚本中,这样就不会换行:

print

'Hello,',

print 'world!'

输出Hello,

world!.

import的格式:

import

somemodule

from

somemodule import somefunction

from

somemodule import somefunction, anotherfunction, yetanotherfunction

from

somemodule import *

import

math as foobar

§5.2赋值技巧

>>> x, y, z = 1, 2, 3

>>> print x, y, z

1 2 3

>>> x, y = y, x

>>> print x, y, z

2 1 3

>>> values = 1, 2, 3

>>> values

(1, 2, 3)

>>> x, y, z = values

>>> x

1

注意这种情况要求左右的值个数相同。Python 3.0中可以:a, b, rest* = [1, 2, 3, 4]。

x

= y = somefunction()

§5.3块

:表示缩进

§5.4条件判断

代表False的有:False None

0 "" () [] {},其他都为True.

>>>

bool('I think, therefore I am')

True

python会自动进行这种类型转换。

name

= raw_input('What is your name? ')

if

name.endswith('Gumby'):

if

name.startswith('Mr.'):

print

'Hello, Mr. Gumby'

elif

name.startswith('Mrs.'):

print

'Hello, Mrs. Gumby'

else:

print

'Hello, Gumby'

else:

print

'Hello, stranger'

比较操作:

x

== y x equals y.

x < y x is less than y.

x > y x is greater than y.

x >= y x is greater than or equal to y.

x <= y x is less than or equal to y.

x != y x is not equal to y.

x is y x and y are the same object.

x is not y x and y are different objects.

x in y x is a member of the container

(e.g., sequence) y.

x not in y x is not a member of the

container (e.g., sequence) y.

COMPARING INCOMPATIBLE

比较也可以嵌套:0 < age < 100

>>>

x = y = [1, 2, 3]

>>> z = [1, 2, 3]

>>> x == y

True

>>> x == z

True

>>> x is y

True

>>> x is z

False

不要在基本的,不可改变的类型,比如numbers and strings中使用is,这些类型在python内部处理。

三元运算:a if b else c

断言:

>>>

age = -1

>>> assert 0 < age < 100,

'The age must be realistic'

Traceback (most recent call last):

File "", line 1, in

?

AssertionError: The age must be realistic

§5.5循环

name = ''

while not name:

name = raw_input('Please enter your name:

')

print 'Hello, %s!' % name

for number in range(1,101):

print number

xrange一次只产生一个数,在大量循环的时候可以提高效率,一般情况没有明显效果。

与字典配合使用:

d

= {'x': 1, 'y': 2, 'z': 3}

for key in d:

print key, 'corresponds to', d[key]

不过排序的为您提要自己处理。

names

= ['anne', 'beth', 'george', 'damon']

ages = [12, 45, 32, 102]

for i in range(len(names)):

print names[i], 'is', ages[i], 'years old'

>>>

zip(names, ages)

[('anne', 12), ('beth', 45), ('george',

32), ('damon', 102)]

for name, age in zip(names, ages):

print name, 'is', age, 'years old'

>>> zip(range(5),

xrange(100000000))

[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]

for index, string in enumerate(strings):

if 'xxx' in string:

strings[index] = '[censored]'

from math import sqrt

for n in range(99, 0, -1):

root = sqrt(n)

if root == int(root):

print n

break

from math import sqrt

for n in range(99, 81, -1):

root = sqrt(n)

if root == int(root):

print n

break

else:

print "Didn't find it!"

可见for语句也可以有else。

§5.6List Comprehension

[x*x for x in range(10) if x % 3 == 0]

[0, 9, 36, 81]

>>> [(x, y) for x in range(3) for

y in range(3)]

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1),

(1, 2), (2, 0), (2, 1), (2, 2)]

>>> girls = ['alice', 'bernice',

'clarice']

>>> boys = ['chris', 'arnold',

'bob']

>>> [b+'+'+g for b in boys for g

in girls if b[0] == g[0]]

['chris+clarice', 'arnold+alice', 'bob+bernice']

这里类似数据库里面的连接。一种更有效的方法:

girls

= ['alice', 'bernice', 'clarice']

boys = ['chris', 'arnold', 'bob']

letterGirls = {}

for girl in girls:

letterGirls.setdefault(girl[0],

[]).append(girl)

print [b+'+'+g for b in boys for g in

letterGirls[b[0]]]

§5.7pass, del,和exec

pass:什么都不做

del:删除变量

>>> from math import sqrt

>>> scope = {}

>>> exec 'sqrt = 1' in scope

>>> sqrt(4)

2.0

>>> scope['sqrt']

1

>>> len(scope)

2

>>> scope.keys()

['sqrt', '__builtins__']

eval是内置的,和exec类似。exec针对陈述,eval针对表达式。Python 3.0中,raw_input被命名为input.此处尚未完全理解。


http://www.ppmy.cn/news/848033.html

相关文章

RSD 教程 —— §3.2 创建的层

3.2 创建的层 仔细观察图像3.5左上角的“层列表”窗口&#xff0c;可见创建了2个层&#xff0c;图3.6。 图 3.6 加载数据后的层列表 第1行0层是框架&#xff0c;每一个任务都要有这个框架层。第2行1层是我们刚刚加载的数据集。注意层0前面打了一个小勾&#xff0c;说明该层是…

如何用python打印一段文字,如何在PYTHON中正确打印阿拉伯文字

I am using Python 2.7 and i try to print Arabic strings like these print "ذهب الطالب الى المدرسة" its give the following output: طظ‡ط طظ„ططظ„ط طظ„ظ‰ طظ„ظ…طططط© The purpose is to print the text cor…

python中的打印是什么意思_对python:print打印时加u的含义详解

对python:print打印时加u的含义详解 u:表示unicode字符串 不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码。 一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般不带u;但是中文, 必须表明所需编码, 否则一旦编码转换就会出现乱码。 建议…

如何用计算机打出love,游戏中名字的LOVE怎么用符号打出来?

这个需要你切换到相应的输入法状态再进行输入。如果你电脑上有装搜狗输入法&#xff0c;你可以尝试输入“dian”&#xff0c;其他输入法&#xff0c;你开启特殊字符键盘也是可以输入的。 一般常用的特殊符号 &#xff0c; 、 。 &#xff0e; &#xff1f; &#xff01; &#…

python中如何打出字符π

文章目录 简介键值对表 简介 html是python标准库中比较鸡肋的一个模块&#xff0c;主要提供了escape和unescape两个功能&#xff0c;用于转换字符串中的<,>等字符&#xff0c;从而保证可被正确地用于网页中。所以大部分人都直接用第三方库了。 但html的子模块entities封…

滑稽(1)§(* ̄▽ ̄*)§

ACAnswer Coarse粗劣的答案 WAWonderful Answer好答案 TLETime Limit Enough时间充裕 MLEMemory Limit Enough内存充裕 CECompile Easily轻松通过编译 RERun Excellently完美运行 Score难以置信地保持足够的分数 AUAll Unaccepted全都不正确 OLEOutput Limit Excellent…

用计算机打cf,CF能用的特殊符号有什么 CF特殊符号怎么打

今天给大家介绍一下CF中什么特殊符号可以用&#xff0c;CF特殊符号的输入方法&#xff0c;给大家分享一下&#xff0c;希望大家喜欢 可用的cf名字符号&#xff1a; .! ❀ ♀ ♂ ― &#xffe3; _ & # * ■ № ○ ● → ※ ▲ △ ← ◎ ↑ ◇ ↓ ◆ 〓 □ ℃ ‰ € ∑ の…

用计算机打根号怎么打,根号在电脑上怎么打出来啊?

满意答案 我们利用“智能ABC”中提供的自定义词组功能,可以把经常使用的数学符号,定义为“新词”,来提高我们的录入速度。 具体做法是:启动“智能ABC”,右键点击输入法提示条最左侧的图标,在弹出的菜单中选中“定义新词”,在“新词”框中输入所需定义的词;在“外码”处…