Python3之for循环

目录

概述

Python 中的循环语句有 for 和 while
Python 循环语句的控制结构图如下所示:
在这里插入图片描述

for循环

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

1、for循环格式
for <variable> in <sequence>:
    <statements>
 	# 如果条件为真,那么循环体则执行
    # 如果条件为假,那么循环体不执行  
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


languages = ["C", "C++", "Perl", "Python"]
for x in  languages:
    print(x,end=" ")

运行结果如下:

C C++ Perl Python 
2、break用于退出所有循环
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


languages = ["C", "C++", "Perl", "Python"]
for x in  languages:
    if x=="Perl":
        break
    print(x,end=" ")

运行结果如下:

C C++ 
3、continue用于退出当前循环,继续下一次循环
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


languages = ["C", "C++", "Perl", "Python"]
for x in languages:
    if x=="Perl":
        continue
    print(x,end=" ")

运行结果如下:

C C++ Python 

练习题

1、使用for循环输入 1 2 3 4 5 6 7 8 9 10
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

x=range(11)   ###[0,11)表示0-11前闭后开的区间
print(x)

for i in x:
    if i==0:
        continue
    print(i,end=" ")

运行结果如下:

range(0, 11)
1 2 3 4 5 6 7 8 9 10 
2、使用for循环输入 1 2 3 4 5 6 8 9 10(不打印数字7)
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

x=range(1,11)
print(x)

for i in x:
    if i==7:
        continue
    print(i,end=" ")

运行结果如下:

range(0, 11)
1 2 3 4 5 6  8 9 10 
3、求1-100的所有数的和
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

#求1-100的所有数的和
sum=0
for a in range(1,101):
    sum=sum+a
print(sum)
4、输出 1-100 内的所有奇数
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


for a in range(1,101):
    if a%2==0:
        continue  ###可以换成pass###
    else:
        print(a, end=" ")

5、输出 1-100 内的所有偶数
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


for a in range(1,101):
    if a%2==0:
        print(a,end=" ")
    else:
        continue  ###可以换成pass###
 
6、求1-2+3-4+5 … 99的所有数的和
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

sum=0
for a in range(1,100):
    if a%2==0:
        sum=sum-a
    else:
        sum=sum+a
print(sum)
7、查找列表中最大的元素
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki

a=[5568,1254,75654,1466,58781,89,58475]
max=0
for i in range(0,len(a)):
    if max <= a[i]:
        max =a[i]
    print(i)
print("此列表中最大的元素是:",max)
8、百钱买百鸡

公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?

第一种方法
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

#首先分析单纯购买每种鸡,分别能够买多少只:
#公鸡:100 / 5 = 20(只)
#母鸡:100 / 3 ≈ 33(只)
#小鸡:100 / (1/3) = 300(只)

num = 0         # 用于计算有多少种方案
count = 0       # 用于计算循环的次数
for gongji in range(1,21):
    for muji in range(1,34):
        for xiaoji in range(1,301):
            count += 1
            if gongji + muji + xiaoji == 100 and 5*gongji + 3*muji + (1/3)*xiaoji == 100:
                print(f'公鸡{gongji}只,母鸡{muji}只,小鸡{xiaoji}只')
                num += 1

print("一共",num,"种方案")
print("一共",count,"次循环")

运行结果如下:

公鸡4只,母鸡18只,小鸡78只
公鸡8只,母鸡11只,小鸡81只
公鸡12只,母鸡4只,小鸡84只
一共 3 种方案
一共 198000 次循环
第二种方法(优化)
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

#首先分析单纯购买每种鸡,分别能够买多少只:
#公鸡:100 / 5 = 20(只)
#母鸡:100 / 3 ≈ 33(只)
#小鸡:(100-公鸡-母鸡)只

num = 0         # 用于计算有多少种方案
count = 0       # 用于计算循环的次数
for gongji in range(1,21):
    for muji in range(1,34):
        xiaoji=100-gongji-muji
        count += 1
        if gongji + muji + xiaoji == 100 and 5*gongji + 3*muji + (1/3)*xiaoji == 100:
            print(f'公鸡{gongji}只,母鸡{muji}只,小鸡{xiaoji}只')
            num += 1

print("一共",num,"种方案")
print("一共",count,"次循环")

运行结果如下:

公鸡4只,母鸡18只,小鸡78只
公鸡8只,母鸡11只,小鸡81只
公鸡12只,母鸡4只,小鸡84只
一共 3 种方案
一共 660 次循环
第三种方法(优化)
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

#首先分析单纯购买每种鸡,分别能够买多少只:
#假设:公鸡=x,母鸡=y,小鸡=z
#0< x ≤ 20,0 < y < 34, 0 < z < 34
#那麽:x+y+z=100,5x+3y+1/3*z=100
#通过换算可知:y=(100-7x)/4,z=(300+3x)/4


num = 0         # 用于计算有多少种方案
count = 0       # 用于计算循环的次数
for gongji in range(1,21):
    muji=(100-7*gongji)/4
    #xiaoji=(300+3*gongji)/4
     xiaoji=100-gongji-muji

    if gongji >=1 and muji>=1 and xiaoji>=1 and muji :
        count += 1
        print(f'公鸡{gongji}只,母鸡{muji}只,小鸡{xiaoji}只')
        num += 1

print("一共",num,"种方案")
print("一共",count,"次循环")


result = isinstance(123,int)
print(result)

运行结果如下:

公鸡1只,母鸡23.25只,小鸡75.75只
公鸡2只,母鸡21.5只,小鸡76.5只
公鸡3只,母鸡19.75只,小鸡77.25只
公鸡4只,母鸡18.0只,小鸡78.0只   ###符合要求###
公鸡5只,母鸡16.25只,小鸡78.75只
公鸡6只,母鸡14.5只,小鸡79.5只
公鸡7只,母鸡12.75只,小鸡80.25只
公鸡8只,母鸡11.0只,小鸡81.0只 ###符合要求###
公鸡9只,母鸡9.25只,小鸡81.75只
公鸡10只,母鸡7.5只,小鸡82.5只
公鸡11只,母鸡5.75只,小鸡83.25只
公鸡12只,母鸡4.0只,小鸡84.0只 ###符合要求###
公鸡13只,母鸡2.25只,小鸡84.75只
一共 13 种方案
一共 13 次循环
9、元素分类

有如下列表 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。即: {‘k1’: [大于66的所有值], ‘k2’: [小于66的所有值]}

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

a=[11,22,33,44,55,66,77,88,99,90]
print(a,type(a))
b={"k1":[],"k2":[]}
for i in a:
    if i>66:
        b["k1"].append(i)
    elif i<=66:
        b["k2"].append(i)
print(b,type(b))

运行结果如下:

[11, 22, 33, 44, 55, 66, 77, 88, 99, 90] <class 'list'>
{'k1': [77, 88, 99, 90], 'k2': [11, 22, 33, 44, 55, 66]} <class 'dict'>

10、查找元素

查找列表中元素,移除每个元素的空格,并查找以a或A开头并且以c结尾的所有元素。
li = [“alec”, " aric", “Alex”, “Tony”, “rain”]
tu = (“alec”, " aric", “Alex”, “Tony”, “rain”)
dic = {‘k1’: “alex”, ‘k2’: ’ aric’, “k3”: “Alex”, “k4”: “Tony”}

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

#Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
#:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

li = ["alec ", " Ar ic", " Alex", "Tony", "rain"]
tu = ("alec", " Ar ic", " Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' Aric',  "k3": "Alex", "k4": "Tony"}

for i in li:
    b=i.strip()
    if (b.startswith("a") or b.startswith("A")) and b.endswith("c"):
        print(b, len(b))

print("------分割线--------")
for x in tu:
    b=x.strip()
    if (b.startswith("a") or b.startswith("A")) and b.endswith("c"):
        print(b, len(b))

print("------分割线--------")
for key in dic:
    b=dic[key].strip()
    if (b.startswith("a") or b.startswith("A")) and b.endswith("c"):
        print(b, len(b))

运行结果如下:

alec 4
Ar ic 5
------分割线--------
alec 4
Ar ic 5
------分割线--------
Aric 4
11、输出商品列表,用户输入序号,显示用户选中的商品

商品列表: [“手机”, “电脑”, ‘鼠标垫’, ‘游艇’]

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

# enumerate(可迭代的对象,序号从何开始),为可迭代的对象添加序号,序号必须是数字
li = ["手机", "电脑", '鼠标垫', '游艇']

for key,values in enumerate(li,0):
    print(key,values)

print("-----------分隔线-----------")

for key,values in enumerate(li,-50):
    print(key,values)

运行结果如下:

0 手机
1 电脑
2 鼠标垫
3 游艇
-----------分隔线-----------
-50 手机
-49 电脑
-48 鼠标垫
-47 游艇
12、购物车

功能要求:

  • 要求用户输入总资产,例如:2000
  • 显示商品列表,让用户根据序号选择商品,加入购物车
  • 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
  • 附加:可充值、某商品移除购物车
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值