for 语句
作用:
用来遍历可迭代对象的数据元素
可迭代对象是指能依次获取数据元素的对象
可迭代对象包括:
字符串str
列表list
元组tuple
字典dict
集合det
range函数返回的对象等
语法:
    for变量列表 in 可迭代对象:
        语句块1
    else
        语句块2

例:
1.任意输入一个字符串:
计算你输入的空格个数,并打印

a=input("输入:")
b=0
for x in a:
    if x==" ":
        b+=1
print (b)

计算你输入的“a”个数,并打印

a=input("输入 :")
b=0
for x in a:
    if x=="a":
        b+=1
print (b)

思考:
用while能否实现上述功能

a=input("输入 :")
b=0
c=0
while b<len(a):
    if a[b]==" ":
        c+=1
    b+=1
print(c)

range 函数
格式:见:>>>help(range)

函数
range(stop)
从0开始,每次生成一个整数。后加1操作,直到stop为止(不包含)
range(Start,stop,【step】)
start开始
stop结束
step步长(可以为负)
作用:用来参加一个可以生成一系列整数的可迭代对象(也叫整数对象生成器)

range(1,10,2)  #生成 1 3 5 7 9
range(5,0,-2) #生成 5 3 1
range(5,0)    #生成 空 

例:
用for语句打印1-20,打印在一行内
用for语句打印1-20,每五个打印一行

for x in range(1,21):
    print(x,end=' ')
    if x%5==0:
        print()

求100以内那些数与 自身+1的乘积对11求余的结果等于8

for x in range(1,100):
    if (x*(x+1))%11==8:
        print (x)
print("no")

计算1+3+5+7+.....+97+99的和
分别用for 和 while 语句来实现

s=0
for x in range(1,100,2):
    s=s+x
print(s)

s=0
a=1
while a<100:
    if a%2==1:
        s=s+a      可以不用if 用 s+=2
    a+=1        
print (s)

for语句注意事项: 

#下列程序打印结果是什么:

i=6
for x in range(1,i):     #一但,循环运行就定死为:for x in range(1,6)
    print('x=',x,'i=',i)
    i-=1
结果:

x= 1 i= 6
x= 2 i= 5
x= 3 i= 4
x= 4 i= 3
x= 5 i= 2

下列语句执行结果是什么?为什么?

for x in range(4,0):    #没有提供数据
    print (x)
print('x',x)

错误

for语句的嵌套
示例:
for x in  "ABC":
    for y in "123":
        print (x+y)

A1
A2
A3
B1
B2
B3
C1
C2
C3

输入一个整数,打印一个正方形:
如:
输入:5
打印:
12345 
23456
34567
45678
56789

a=int(input("输入 :"))
i=1
for x in range(i,a+1): 
    for x in range(i,a+1+i):
        print (“%02d”%x,end=" ")
    i+=1 
    print()

continue语句
用于循环语句中,不再执行本次循环
continue之后,重新开始一次新的循环
说明:
在for语句中执行continue语句 ,将从可迭代对象中抽取下一个元素,绑定变量后再次开始执行
2.在while语句中执行continue,将会直接跳到while语句的真值表达式重新判断

,输入一个其实数用start绑定,输入一个结束数用stop绑定,打印start到stop(不包含stop)内的所有奇数

start=int(input("start :"))
stop=int(input("stop :"))
for x in range(start,stop):
    if x%2==1:
        print(x,end=" ")

求1-100之前所有不能被5,7,11整除的数,及它们的和

sn=0
for x in range(1,100):
    if x%5==0:
        continue
    if x%7==0:
        continue
    if x%11==0:
        continue
    print (x,end=" ")
    sn=sn+x
print()
print(sn)

循环语句总结:
while 语句:
    可以用于死循环
for 语句:
    用于可迭代对象的循环
    (字符串,range()返回的对象)
break 语句:
    用于终止循环
continue 语句:
    用于开始一次新的循环

列表 list

列表的定义:
列表是一种容器
列表是序列的一种
列表是可以被改变的序列
列表中由一系列特定的元素组成,元素与元素之间可以没有任何的关系

创建空列表的字面值
l=[]   l绑定空列表
创建非空列表的字面值
l=[1,2,3,4]
l=['biejing','shanghai']
l=[1,'two',3.4,'四’] 
列表里也可以存放列表

列表的构造函数 list:
list()      生成一个空列表,等同与【】
list(iterable) 用可迭代对象创建一个列表

示例:
l=list()    空列表
l=list ("hello")    l绑定["h","e","l","l","o"]    #只可以用list ()!!
l=list(range(1,10,2))   l绑定[1,3,5,7,9,]

列表的运算:
算术运算:
+ += * *=

+ 用于拼接列表
x=[1,2,3]
y=[4,5,6]
z=x+y     z=[1,2,3,4,5,6,]

+= 用原列表与右侧列表拼接,用变量绑定拼接后的列表
x = [1,2,3]
x += [4,5,6]
print (x)

*生成重复列表
x=[1,2]*3     x=[1,2,1,2,1,2]

x*y 等同于 x=x*y

列表的比较运算:
运算fu:
< <= > >= == !=
比较的规则同字符串的规则相同
x=[1,2,3]
y=[1,2,4]
x!=y  true
x<=y true
y>x   true

["ab","abc","123"]<["ab","123","abc"]
[1,"two"]>["two",1]         错的,类型不同!!!

列表的 in和 not in 运算符
作用:
判断一个值是否存在于列表中,如果存在返回true,否则返回false

not in 与in相反
(比较时注意类型!)

列表是可迭代对象:
for x in [2,3,5,7]:
    print(x)  绑定列表内的元素

练习:
输入三行文字,将这三行文字保留存于列表 l 中,并打印:
如:
请输入:abc<回车>
请输入:1234<回车>
请输入:你好<回车>
生成如下列表:
['abc','1234','你好']
print (l) 打印

a=input("1:")
b=input("2:")
c=input("3:")
l=[a,b,c]
print(l)

输入任意文字,存于列表 l 中,当不输入任意内容回车后退出输入,
1)打印 l 列表中的内容
2)计算你共输入的几行内容
3)计算你共输入了多少个字符

l=[]
n=0
m=0
while True:
    a=input("n:")
    if a =="":
        break
    l1=[a]          #如果是l1=list(a)   存的是单个字符,字符串分开存!!!
    l=l+l1
    m=m+len(a)
    n+=1
print(l)
print(n)
print(m)

练习:
写一个程序,任意输入一个数,判断这个数是否是素数(prime)
素数是只能被自己整除的数

a=int(input("输入:"))
for x in range(1,a):
    i=0
    for y in range(1,x+1):
        if x%y==0:
            i+=1
    if i<=2:
        print (x,end=" ") 

编写程序求下列多项式的值
sn=1/1-1/3+1/5-1/7...1000000个分式的值是多少
将此值乘4后打印出来

i=0
sn=0
for x in range(1,1000000,2):
    i+=1
    if i%2==1:
        sn=sn+1/x
    else:
        sn=sn-1/x
print ("4*sn=",sn*4)

输入一个整数(代表树干的高度)
打印如下形式的圣诞树

输入2
 *
***
 *
 *

输入3
  *
 ***
*****
  *
  *
  *

a=int(input("输入 :"))
i=0
for x in range(1,a+1):
    print(" "*(a-x)+"*"*(x*2-1)+" "*(a-x))
    i+=1
for x in range(1,a+1):
    print(" "*(a-1)+"*")