2020年5月27日05--python的while循环和for循环

# == == == == == == == == == == == == == == == ==
# -*- coding:utf-8 -*-
# @Author:henry
# @Time:2020/5/27 10:50
# Email:yinpingwei@gmail.com
# @File: while循环和for循环.py
# == == == == == == == == == == == == == == == == =


# while 循环
# 格式:
# 打印100遍hello,python
#     限定:100次--条件:结束的条件
# 1.2.3.4.5.6.7............100
#
# 一旦用了while循环,那就一定需要考虑让条件不成立的场景
# 代表次数
count = 1
while count < 101:
     # 条件满足才会执行的代码
     print('hello,python')
     # 非常重要,一定要有个操作,在某些时候能够使条件不成立!
     count += 1

# while循环不会指定循环次数

count = 1
nums = input('输入次数:')     # 输入的次数
while count <= int(nums):     # 限定的次数
    print(count)
    count += 1       # 条件满足才会执行的代码
    print('hello,python')

# 避免死循环:
# 1.是循环条件不成立
# 2.在循环中,达到其他条件,退出循环
# 
# 死循环的处理:break/continue
# break :   条件满足终止当前循环
count = 1
nums = input('输入次数:')     # 输入的次数
while count <= 100:     # 限定的次数
    print(count)
    print('hello,python')
    # 在循环内部,如果还有其他条件,如果满足的化,直接退出循环
    if count ==50:
        print('已经50次了,再见')
        break   # 直接退出循环
    count += 1  # 条件满足才会执行的代码

# # continue:中止当前本轮的循环,开启下一轮循环
count = 1
# nums = input('输入次数:')     # 输入的次数
while count <= 10:     # 限定的次数
    print(count)
    count += 1  # 条件满足才会执行的代码
    if count == 2:
        continue   # 跳过当前循环,进入下一个循环
    print('hello,python')
    # 在循环内部,如果还有其他条件,如果满足的化,直接退出循环
    # if count ==5:
    #     print('已经50次了,再见')
    #     break   # 直接退出循环
#
# # break和continue的区别:辞职(break)和请假(continue)的区别

print(********************************************************************)

# 重点掌握:for循环
# for循环
# 遍历:从头到尾,每一个成员访问一遍。
# 成员:列表和字典--最常用的

# 列表的遍历
list_p = ['mr 张','换你','madao','吴亦凡','罗志']
'''
格式:
for 变量 in 列表:
    得到一个成员时,都回去执行的代码 

在这个列表中,去取每一个成员,赋值给变量
变量 = 第一个成员
变量 = 第二个成员
变量 = 第三个成员
变量 = 第四个成员

循环的次数=列表的长度
'''
# 遍历列表的值
for item in list_p:   # 获取所有的列表的值
    print(item)       # 打印每一个成员
    if item == '吴亦凡':  # 如果获取到指定的值
        break           # 就终止循环


for item in list_p:   # 获取所有的列表的值
    if item == '吴亦凡':  # 如果获取到指定的值
        continue          # 不会打印这一行的值,跳过进入下一轮
    print(item)  # 打印每一个成员


# 通过列表的索引来遍历:
# range:内置函数,功能:生产整数字序,有三种类型:
# 起点:默认是0,
# 终点:自定
# 步长:默认是1
# 含起始,不含终点

# 1.range(n):默认生成一个0到n-1的整数序列
# range(5)[0,1,2,3,4]

# 2.range(n,m):默认生成一个0到m-1的整数序列
# range(1,5)[1,2,3,4]

# 3.range(n,m,k):相比如其他函数的for循环。n表示初始值,m表示结束值,k表示步长。
#                   会生成一个初始值为n,结束值为m,递减或递增的整数序列
# range(1,10,2)[1,3,5,7,9]


# 遍历列表的索引
# 获取列表的长度为:6
# 要遍历的索引为:0.1.2.3.4.5
for index in range(len(list_p)):
    print(index)     # 打印下标
    print(list_p[index])     # 打印值


# 字典的遍历
person_info = {'sex':'男','tzh':'好看,帅,有钱入','age':30}

# 第一种通过遍历键名:
for key in person_info.keys():
    print(key)
    print(person_info[key])

# 第二种通过遍历键值对:
for key,value in person_info.items():
    print(key,value)

# 双重for循环
# 1.想清楚,外层是什么,内层是什么
# 2.在编写双重for
# 3.根据输出内容,调整语句逻辑

'''
输出一下图形
1
1   2
1   2   3
1   2   3   4
第一行:输出1   range(1,2)      行数+1
第二行:输出1,2     range(1,3)
第三行:输出1,2,3     range(1,4)
第四行:输出1,2,3,4       range(1,5)
'''
for index in range(1,5):
    print('第{}行:'.format(index))
    for sub in range(1,index+1):
        print(sub,end=' ')     # end=''   不换行的意思
    print('')

print(********************************************************************)

# 课后作业

# 1、一家商场在降价促销,所有原价都是整数(不需要考虑浮点情况),如果购买金额50-100元(包含50元和100元)之间,会给10%的折扣,
#
# 如果购买金额大于100元会给20%折扣。编写一程序,询问购买价格,再显示出折扣(%10或20%)和最终价格。
print('第一题************************************************')
price = int(input('这件商品的价格是:'))    # 输入有个价格
if 50 <= price <= 100:        # 条件1是购买金额50-100元(包含50元和100元)之间
    price = 0.9 * price     # 折旧后的价格
    # print('这边可以给你打10%的折扣,给你打完折扣价是:',price,'谢谢惠顾!')     # 输出满足条件1的   第一种方法
    print('这边可以给你打10%的折扣,给你打完折扣价是:{:.2f}'.format(price))      # 第二种方法
elif price > 100:
    price = 0.8 * price
    # print('这边可以给你打20%的折扣,给你打完折扣价是:',price,'谢谢惠顾!' )     # 输出满足条件2的    第一种方法
    print('这边可以给你打20%的折扣,给你打完折扣价是:{:.2f}'.format(price))       # 第二种方法
else:
    print('你不满足折扣的价格,请继续购买哈!')      # 不满足条件1执行的条件

# 2 判断是否为闰年
# 提示:
# 输入一个有效的年份(如:2019),判断是否为闰年(不需要考虑非数字的情况)
# 如果是闰年,则打印“2019年是闰年”;否则打印“2019年不是闰年”
# 什么是闰年,请自行了解(需求文档没有解释)
#
# 请输入一个年份
# 条件1:不能够被100整除且能够被4整除
# 条件2:够被100整除且能够被400整除
print('第二题************************************************')
year = int(input('请输入一个年份:'))     # 输入一个整数的年份
if (year % 100 != 0 and year % 4 == 0) or (year % 100 == 0 and year % 400 == 0):   # 条件1和条件2
    print('你输入的' + str(year) + '是闰年')     # 能够被满足则是输出这个
else:                                           # 反之
    print('你输入的' + str(year) + '不是闰年')   # 不能够被满足则是输出这个

# 3.求三个整数中的最大值
# 提示:定义 3 个变量
print('第三题************************************************')
numb1 = input('请输入第一个数:')  # 输入第一个变量
numb2 = input('请输入第二个数:')  # 输入第二个变量
numb3 = input('请输入第三个数:')  # 输入第三个变量
max = 0       # 假设最大值max为0
if numb1 > numb2:     # 先进2个数值得比较
    max = numb1       # 最大值为numb1
else:                 # 反之
    max = numb2       # 最大值为numb2
if max > numb3:       # 比较max与剩余的值进行比较
    print('最大值为'+ str(max))    # 最大值为max则打印这个
else:                 # 反之
    print('最大值为' + str(numb3))  # 最大值为numb3则打印这个


# 4,  使用for打印九九乘法表
# 提示:输出九九乘法表,格式如下:(每项数据之间空一个Tab键,可以使用"\t")
print('第四题**********************************************')
for index in range(1,10):       # 取值范围为(1-9)
    for numb in range(1,index+1):    # 每次循环需要加1
        print('{}*{} = {}\t'.format(index, numb, index*numb),end = ' ')     # 使用format函数来输出
    print('')


# 进阶作业
'''
使用循环完成剪刀石头布游戏,提示用户输入要出的拳 :石头(1)/剪刀(2)/布(3)/退出(4)
电脑随机出拳比较胜负,显示用户胜、负还是平局。运行如下图所示:

提示:电脑随机出拳
使用随机数,首先需要导入随机数的模块 —— “工具包”
import random
导入模块后,可以直接在 模块名称 后面敲一个"."然后按 Tab键,会提示该模块中包含的所有函数
random.randint(a, b),返回[a, b]之间的整数,包含a和b
'''
print('第一题*********************************************************************************************')
import random    # 导入随机数的模块
while True:
    player = int(input('请你输入你要的选项 石头(1)/剪刀(2)/布(3)/退出(4):'))    # 输入选择的选项
    if player == 4:              # 如果玩家输入4 ,满足条件,执行这个
        print('游戏退出')
        break                    # 退出当前循环
    computer = random.randint(1,3)          # 电脑随机在1-3之间选择
    if ((player == 3 and computer == 1)     # 如果玩家出布(3)和电脑出石头(1)  玩家胜利
            or (player == 1 and computer == 2)   # 如果玩家出石头(1)和电脑出剪刀(2) 玩家胜利
            or (player == 2 and computer == 3)):   # 如果玩家出剪刀(2)和电脑出布(3)   玩家胜利
        print('玩家选择的出拳是{},电脑出拳的{},玩家胜利!'.format(player, computer))   # 使用format函数打印出玩家胜利
    elif player == computer:     # 如果玩家和电脑出的一样,则是平局
        print('玩家选择的出拳是{},电脑出拳的{},打成平局了!'.format(player, computer))  # 使用format函数打印出平局
    else:      # 反之
        print('玩家选择的出拳是{},电脑出拳的{},玩家失败了!'.format(player, computer))   # 使用format函数打印出玩家失败了
print('游戏结束')


# 2、编写如下程序
# a.用户输入1-7七个数字,分别代表周一到周日
# b.如果输入1~5,打印对应的“周一”~“周五”,如果输入的数字是6或7,打印输出“周末”
# c.如果输入0,退出循环
# d.输入其他内容,提示:“输入有误,请重新输入!”
# 提示:本题可以使用if和while循环,同时需要校验用户的输入是否正确。不用考虑浮点数等情况。
print('第2题*********************************************************************************************')
my_days = ["周一", "周二", "周三", "周四", "周五", "周六", "周末"]   # 定义一个列表

while True:
    num = input("请输入0~7范围内的数字:")        # 输入数字
    if num in list("1234567"):       # 如果输入的值在列表当中,满足条件1,执行下一步
         print("今天是{}!".format(my_days[int(num)-1]))   # 使用format函数
    elif num == "0":        # 输入的值等于0,满足条件2
         print("程序退出!")      # 打印
         break          # 退出当前循环
    else:                   # 反之,输入不属于0-7范围的数字,执行条件3
         print("输入有误,请重新输入!")     # 打印


# 3、冒泡排序(不要求提交,面试之前背熟)
# 使用循环实现排序算法(冒泡,选择等算法选择一个,请自行了解。)
# 提示:利用for循环,完成a=[1,7,4,89,34,2]的排序(小的数字排前面,大的排后面),不能使用sort、sorted等内置函数或方法
a =[1,7,4,89,34,2]
for k in range(1,len(a)):
    for m in range(0,len(a)-k):
        if a[m] > a[m+1]:
            a[m],a[m+1] = a[m+1],a[m]
print(a)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值