问题:1+2+3+...100=?
在c/java中:
sum = 0 ;
for(int i =1;i < 100;i++):
sum += i;
在python中:
sum = 0
for i in range(1,101):
sum = sum + 1
print(sum)
python中使用range( )函数作为循环数组
range函数
range(stop):0 ~ stop - 1
range(start,stop):start ~ stop - 1
range(start,stop,step):start ~ stop-1,step为步长
例如:
>>> # 拿出1~10之间所有的偶数
... range(2,11,2)
[2, 4, 6, 8, 10]
注:python2与python3中range和xrange的对比
python2:
- range(5): 即刻生成数据, 消耗时间并占用内存;
- xrange(5): 先生成一个xrange对象, 使用值时才生成数据, 占用内存;
python3:
- range(5) 相当与python2里面的xrange;
循环语句中的中断语句:
break: 跳出整个循环, 不会再循环里面的内容;
continue:跳出本次循环, continue后面的代码不再执行, 但是还会继续循环;
exit: 结束程序的运行
例题:
# 倒入os模块,os模块提供了多数操作系统的功能接口函数。
# 当os模块被导入后,它会自适应于不同的操作系统平台,
# 根据不同的平台进行相应的操作,
# 在python编程时,经常和文件、目录打交道,所以离不了os模块。
import os
#for i in range(100):
# 死循环
while True:
cmd = input("[kiosk@test ]$ ")
if cmd:
if cmd == 'exit':
print('logout')
break #跳出循环
print("hello") # 不会执行
else:
print("run %s" %(cmd))
# 运行shell命令
os.system(cmd)
else:
continue #之后命令不会执行,但会继续执行循环语句
print("hello") # 不会执行
编译结果如下:
for循环使用的语法:
1) for 变量 in range(10):
循环需要执行的代码
2) for 变量 in range(10):
循环需要执行的代码
else:
循环执行结束执行的代码
例:
1.用户输入一个整形数, 求该数的阶乘;
num = int(input('Num:')) # num = 3 1*2*3 3*2*1
res = 1
for i in range(1, num+1): # num:3 range(1, 4) === 1,2,3
res = res * i
print("%d阶乘的结果为:%d" %(num, res))
编译结果如下:
2.用户登陆程序需求:
1.输入用户名和密码;
2.判断用户和密码正确?
3.为了防止暴力破解,仅有三次机会,超过三次。报错提示;
for i in range(3):
name = input("用户名:")
passwd = input("密码:")
if name == 'root' and passwd == 'westos':
print("登陆成功")
break
else:
print("登陆失败")
print("您还剩余%d次机会" %(2-i))
else:
print("登陆次数超过三次, 请等待100s后再次登陆")
编译结果如下:
成功登陆
登录失败
while循环
while 条件语句:
满足条件执行的语句
else:
不满足条件执行的语句
例
1. 用户输入一个整形数, 求该数的阶乘;
num = int(input('Num : '))
res = 1
i =1
while i < num:
i += 1
res *= i
print("res = %d" %(res))
编译结果如下:
2.把用户登陆的代码for循环部分改写为while循环;
trycount = 0
while trycount < 3:
name = input("用户名:")
passwd = input("密码:")
if name == 'root' and passwd == 'villa':
print("登陆成功")
break
else:
trycount += 1
print("登陆失败")
print("您还剩余%d次机会" % (2 - trycount))
else:
print("登陆次数超过三次, 请等待100s后再次登陆")
编译结果如下:
3.猜数字游戏
使用语法if,while,break
-1.系统随即生成一个1~100的数字;
*random模块,随即生成数
-2.用户一共5次猜数字机会
-3.如果用户猜测的数字大于系统给出数字,则打印“too big”
-4.如果用户猜测的数字小于系统给出数字,则打印“too small”
-5.如果用户猜测的数字等于系统给出数字,则打印“congratulation”,并退出循环
使用for实现:
import random
num = random.randint(1,100)
print(num)
for i in range(1,6):
guess = int(input("plese guess:"))
if guess > num :
print("too big")
elif guess < num :
print("too small")
else :
print("congratulation!!!")
exit()
else:
print("game over")
编译结果如下:
使用while实现:
import random
x = random.randint(1, 100)
print(x)
trycount = 0
while trycount < 5:
tk = int(input("plese guess:"))
if tk == x:
print("congratulation!!!")
break
elif tk < x:
print("too small")
trycount += 1
else:
print("too big")
trycount += 1
else:
print("game over")
编译结果如下:
如果条件设置为 True 并且没有退出的条件,程序便会陷入死循环。
死循环猜数字练习:
import random
x = random.randint(1, 100)
trycount = 0
while True:
guess = int(input("plese guess:"))
if guess == x:
print("congratulation!!!")
break
elif guess < x:
print("too small")
trycount += 1
else:
print("too big")
trycount += 1
编译结果如下: