基本接触每一种语言,都须要做的:1.print 一个"Hello world!" 2.了解主要的数据类型 3.学习控制语句。

当我们学习控制语句,一般都离不开if,for ,while,switch(case)。本文就做一个简单的介绍python的基本控制语句。当中我们用if while来做一个经典的“猜数字游戏”,if for来做一个“输出完美数”。

在此之前,对于一些没用过python的同学而熟悉c/c++等用{}来做块的要注意了,python的是利用缩进来分块的,小小烦恼。可是习惯一段时间还是能够接受的,这种优点就是从直观上看来大家的代码是基本一样的格式。所谓的简单易读。

来说一下缩进的烦恼,属于我们刚開始学习的人的烦恼。

a=3
b=5
if a>b:
print a
else:
print b
print a+b

上面的代码所做的就是输出a,b中最大,最后输出a+b,注意到最后一行print a+b没有顶格,所以就error了,缩进问题。

之后,我们来说一下缩进的优点。假设你写过C/C++类似的

你会不会犯过这个错误

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; int main(){ int a=160,b=170;
//1案例,当a比b大时候,假设a为奇则输出a,否则输出Error,这样是没有问题的
if(a>b)
if(a&1)
cout<<a;
else
cout<<"Error";
else
cout<<b;
//2案例,当a比b大时候,假设a为奇则输出a,当b不比a小输出a,这样就是所谓的悬挂else
//这程序第二个案例就是没有输出,而不是 170。在python。这个问题就不会出现了! if(a>b)
if(a&1)
cout<<a;
else
cout<<b;
return 0;
}


好了,本文的主要是讲述基本控制语句

首先,大家都写过的输出a,b最大者,用伪代码看来就是

if a>b
print a
else
print b
endif

而这里就是用到了最主要的if条件语句,python中的if的使用方法

if expression:  #注意到  ":",漏了可不行,在写脚本时时常范的小错误
if_suit

example

age=19
if age>18:
print 'You are adult!'

result

You are  adult!

当然。有if自然有else

if expression:
if_suit
else:
else_suit

example

IQ=250
if IQ>250:
print "Your IQ is very high!"
else:
print "Normal guy!"

result

Normal guy!

还有不能少的else if,可是python的elseif写的是和shell一样的elfi

example

IQ=250
if IQ>250:
print "Your IQ is very high!"
elif IQ==250:
print "You are 250!"
else:
print "Normal guy!"

result

You are 250!

(以上样例内容仅供娱乐,不要认真,基础总是枯燥的,多多调侃自己找乐子!)

接下来是while了,基本使用方法就是

while expression:
while_suit

exmple

cnt=0
while cnt<5:
print cnt
cnt+=1

result

0
1
2
3
4

另外,有while,我们还必须提到break。break就是打破循环嘛,和c++基本一样。举个样例

cnt=1
while cnt<10:
print cnt
if cnt%2==0:
break;
cnt+=1

这时候结果就是

1
2

猜数字大家都清楚,就是在设定一个随机数作为答案(也能够手动设置),之后输入数字,系统判别。大了或者小了,假设相等就跳出循环

code

#!/usr/bin/env python
# coding=utf-8 import random
a=1
b=1000
ans=random.randint(a,b)
cnt=0
while True :
num=int(raw_input('Guess the number:'))
cnt+=1
if num==ans:
print "Great!%d is the answer!"%num
print "You guessed %d times"%cnt
break
elif num>ans:
print "%d is greater than the ans"%num
else:
print "%d is less than the ans"%num

当中要用到random,大概的使用方法就是从a,b之间产生一个随机数。如样例所说

result

Guess the number:0
0 is less than the ans
Guess the number:1000
1000 is greater than the ans
Guess the number:500
500 is greater than the ans
Guess the number:250
250 is greater than the ans
Guess the number:125
125 is less than the ans
Guess the number:185
185 is greater than the ans
Guess the number:155
155 is less than the ans
Guess the number:170
170 is less than the ans
Guess the number:177
177 is greater than the ans
Guess the number:173
173 is greater than the ans
Guess the number:172
172 is greater than the ans
Guess the number:171
Great!171 is the answer!
You guessed 12 times

这个二分还是不错的^_^,懂二分的程序猿是非常值钱的。回忆五月中的广东省赛。我们就是死在了一条二分题上,罚时太多了!

遗憾铁牌。

for

实际上。python的for 跟c++的for感觉是不一样的,他更像for each迭代。

基本使用方法就是:

for iterating_var in sequence:
statements(s)

举个样例来看。

ProLan=['C','CPP','JAVA','PYTHON']
for item in ProLan:
print item

这样输出的结果是:

C
CPP
JAVA
PYTHON

假设不想换行。那么就在item后增加" ,"

ProLan=['C','CPP','JAVA','PYTHON']
for item in ProLan:
print item,

结果就是

C CPP JAVA PYTHON

还有我们想做

for(int i=0;i<100;i++)

    printf ("%d ",i);

这样的事情,在python要这么写

for i in range(0,100):
print i,

到此为止,我们就能够做事情了。输出0~10000完美数

首先,先科普一下完美数,完美数就是全部非本身的因子加起来为本身。比方6就是一个完美数,6的非本身因子有1,2,3,1+2+3=6。

我们能够用for 和 if 来实现

一个很粗糙的方法,全然讲不算是算法

#!/usr/bin/env python
# coding=utf-8 for i in range(1,10000):
fact=0
for j in range(1,i):
if i%j==0:
fact+=j
if fact==i:
print i

一个略微的改良nlogn,这个大家都懂。就不废话了。

#!/usr/bin/env python
# coding=utf-8
import math for i in range(1,10000):
fact=1
end=int(math.sqrt(i))+1
for j in range(2,end):
if i%j==0:
fact+=j
if j*j!=i:
fact+=i/j;
if fact==i:
print i

result

1
6
28
496
8128

另外,还值得一提的是。还有for..else,While ...else

对于我们这样的习惯写C/C++的人来说,甚是“新奇”!只是我认为还是不要用好~多写点,避免混淆啊。亲!

举个样例

for i in range(1,10):
if i&1:
break
else:
print "for-else"

这样break掉就不会走else,也就是正常结束才会走else.实际上我理解为

for i in range(1,10)

//do somting

if i==10

//do else

即假设是

for i in range(1,10):
if i>250:
break
else:
print "for-else"

这样就会输出

for-else

while..else也如此。

至此。基本上的控制语句已经讲完了。

在python 2.X中是没有case的,这不知道是好是坏,我们仅仅能用

if..elif..else来取代了!

Python基础二--基本控制语句的更多相关文章

  1. python基础(二) —— 流程控制语句

    编程语言中的流程控制语句分为以下几类: 顺序语句 分支语句 循环语句 其中顺序语句不需要单独的关键字来控制,就是按照先后顺序一行一行的执行,不需要特殊的说明. 下面主要是 分支语句 和 循环语句的说明 ...

  2. Python 基础 二

    Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...

  3. python 基础二-----数据类型和控制语句

    一.数据类型: 1)数据类型 1.整数(int) 2.浮点数(float) 3.字符串(string) 4.列表(list) 5. 元组(tuple) 6.字典(dict): key和value是一一 ...

  4. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  5. Python基础(二) —— 字符串、列表、字典等常用操作

    一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 二.三元运算 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为 ...

  6. python基础(二)----数据类型

    Python基础第二章 二进制 字符编码 基本数据类型-数字 基本数据类型-字符串 基本数据类型-列表 基本数据类型-元组 可变.不可变数据类型和hash 基本数据类型-字典 基本数据类型-集合 二进 ...

  7. python基础二(基础数据类型)

    一. 引子 1. 什么是数据 x=10,10是我们要存储的数据 2. 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3.数据类型 数字 字符串 列表 元组 字 ...

  8. Python菜鸟之路:Python基础(二)

    一.温故而知新 1. 变量命名方式 旧的方式: username = 'xxxx' password = 'oooo' 新的方式: username, password = 'xxxx', 'oooo ...

  9. python基础二(list,tuple元祖、dic字典,字符串)

    一.列表list 1.list定义 列表即数组 ,list或array..列表中的每个元素都有自己的编号,从0开始,编号也可叫做下标,角标,索引.最后一个元素的下标也可用-1表示.: list定义时, ...

随机推荐

  1. 【LeetCode】Maximum Subarray(最大子序和)

    这道题是LeetCode里的第53道题. 题目描述: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1 ...

  2. NYOJ 722 数独

    数独 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 数独是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一 ...

  3. Clickomania(区间DP)

    描述 Clickomania is a puzzle in which one starts with a rectangular grid of cells of different colours ...

  4. 九度oj 题目1090:路径打印

    题目描述: 给你一串路径,譬如:a\b\c a\d\e b\cst d\你把这些路径中蕴含的目录结构给画出来,子目录直接列在父目录下面,并比父目录向右缩一格,就像这样:a   b     c   d  ...

  5. pmm metrics 数据采集来源

    handler状态参数 mysql> show global status like '%handler%'; +----------------------------+----------- ...

  6. hdu6061[NTT推公式] 2017多校3

    /*hdu6061[NTT推公式] 2017多校3*/ #include <bits/stdc++.h> using namespace std; typedef long long LL ...

  7. NOIP一系列模拟赛小结

    NOIP越发接近了,于是自己也跟着机房的几位师兄一起做了几次NOIP模拟赛,收获颇多. #1-T1:求点集中的点能否只用三条与坐标轴平行的直线就能全部被经过,其实只要将横纵坐标排序后逐个点检查下就行. ...

  8. bzoj1063【Noi2008】道路设计

    题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1063 用一种划分方式将树划为重链和轻链,使得所有点到根节点的路径经过的轻链最大值最小 sol: ...

  9. 刷题总结——mokia(bzoj1176)

    题目: 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. Inp ...

  10. log4j详细配置解析

    出自:http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记录 ...