python 语句入门之 循环语(for 和while)内附练习(代码)

一、for循环语句

for 循环用于遍历一个序列(如列表、字符串、元组、字典、集合等)或其他可迭代对象(如生成器)中的每一项。for 循环会依次取出序列中的每一项,并执行循环体内的代码。

for 循环的语法如下:

for 变量 in 可迭代对象:
    循环体

 基本语法
      变量:用于存储从可迭代对象中取出的每一项。
      可迭代对象:可以是列表、字符串、元组、字典、集合、生成器等。
      循环体:是要重复执行的代码块,通常缩进表示。

注意: 被遍历的对象可以是任意序列也可以是一个区间范围。 只要被遍历对象没有遍历完,就可以一直循环遍历,直到遍历结束。

比如:遍历字符串

s="love you"
for i in s:
    print(i)

   

临时变量的作用域:

因为python没有{}表示代码的域,所以从语法来说,临时变量在循环结束之后还是可以使用的,但是它可能会造成不可预知的错误。所以建议若想在循环结束后使用这个临时变量,就在循环前先定义一下

i = 0        # 事先定义、避免未定义的警告
s = "Gwyuuu"
for i in s:
    print(i)
print(i * 3)

二、for循环中常用的两个函数

2.1len()函数

功能:返回一个序列[字符串、列表、元组等]的长度或者元素个数。

参数:序列[字符串、列表、元组等]

通常和range配合使用,用于序列中元素的计算。

2.2 range()函数

功能:返回一个整数序列

语法:range(起始值start, 终止值end, 步长值step)

注意:range返回的区间范围是 [start , end),也就是说不包含终值end

参数1,start默认是0,可以省略不写

参数2,end没有默认值,不可以省略

参数3,step默认值为1,可以省略不写

比如

range(0,-10,-2)

for i in range(0,-10,-2):
    print(i)

range(0,30,5)

for i in range(0,30,5):
    print(i)

大家也可以省略步长值step试试会有什么结果

三、练习

输入一个数,输出这个数的所有因子

num = int(input("输入数字:"))
for i in range(1,int(num**0.5+1)):
    if num % i == 0:
        print(f"{i,num//i}",end=" ")

输入一个数,判断这个数是不是质数

num = int(input("输入数字:"))
flags = 1
for i in range(2,int(num**0.5+1)+1):
    if num % i == 0:
        flags = 0
if flags:
    print(f"{num}是质数")

输出100以内的所有质数

for i in range(2,101):
    flag = True
    for j in range(2,i):
        if i%j ==0:
            flag = False
    if flag:
        print(i)

编程求 2000 以内的所有“完数”。 完数是指一个数恰好等于它的真因子值之和, 例如:6是完数,因为 6=1+2+3。

for i in range(0,2001):
    sum = 0
    for j in range(1,i):
        if (i % j) == 0:
            sum += j
    if sum == i:
        print(f"{i}",end=" ")

百钱买百鸡是一个很经典的问题,请使用穷举法求出,用一百块钱买一百只鸡, 共有哪几种买法(公鸡5块钱一只,母鸡3块钱一只,小鸡1块钱三只)

for i in range(20):
    for j in range(33):
        if 5*i+3*j+(100-i-j)//3 == 100 :
            if (100-i-j)%3 == 0:
                print(f"公鸡{i}只,母鸡{j}只,小鸡{100-i-j}只")

已知一串5位数的密码,满足a开头,取值范围是1-9,其他4位由b c d e代替 取值范围是0-9。密码要满足下面两个条件: ①abcde * a == eeeeee ②a b c d e互不相等

for a in range(1,10):
        for b in range(10):
            for c in range(10):
                for d in range(10):
                    for e in range(10):
                        if  a!=b!=c!=d!=e and a*(a*10000+b*1000+c*100+d*10+e) == 111111*e:
                            print(a,b,c,d,e)

四、循环语句while

循环语句就是重复的反复的执行某一部分代码。

循环语句必须有指定的结束条件,否则会陷入死循环。

循环邮局有两种控制方式:

1》条件控制 :比如景区检票员检票,买十斤苹果装苹果

2》计数控制 :比如买5个苹果装苹果,三次密码验证

语法格式:

while 表达式:
    执行语句
执行逻辑:
判断表达式为True,执行语句,执行完之后再次判断表达式为True,执行语句
……………………
直到判断表达式为False,结束循环

while嵌套
while 表达式1:
    while 表达式1-1:
        执行语句1-1
    执行语句1

五、练习:

1.三次密码验证

count = 0
while True:
    name = input("请输入用户名")
    pwd = input("请输入密码")
    if name == "admin" and pwd == "gwy666":
        print("登录成功")
        break
    else:
        print("错 重来")
        if count == 3:
            print("你没有机会了")
            break

2.输出0到100之间所有能被3或5整除的数

i = 0
while i<=100:
    if i%3==0 or i%5==0:
        print(i,end='')
    i += 1

3.从键盘输入起始值为a,终止值为b,计算a到b之间能被3整除的偶数之和

a=int(input("请输入a:"))
b=int(input("请1输入b:"))
i = a
sum=0
while i<=b:
    if i%3==0 and i%2==0:
        sum=sum+i
    i=i+1
print(sum)

打印九九乘法表

while row<=9:
    col = 1
    while col<=row:
        print(f"{col}*{row}={row*col:<2}",end="\t")
        col += 1
    print()
 
    row += 1

打印如下三角形

while i<n:
    j = 1
    while j<i:
        print("*",end="  ")
        j += 1
    i += 1
    print()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值