day04.02.python中的while 循环

 循环结构-while

import random
# 顺序结构
# 分支结构
# 循环结构:可以帮助我们自动循环很多次去执行某个操作
"""
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')

for i in range(1,14):
    print('hello 谢帝')

"""
# python中的循环
#   while 循环
#   for-in 循环
#   do while 循环   C语言有,python没有  其他语言的循环,但也可以用while循环替代,在实际应用中很少

# while 循环  当……时
#   语法
#   初始值
#   while 条件判断:
#       循环体
#       初始值变化(控制循环次数)

# if:如果条件成立则执行一次内容
if 1:
    print('if打印的内容')

# while:如果条件成立则循环不断的执行内容
# 死循环--无限循环 不会停止   有些语言禁止死循环,死循环会报错
'''
while 1:
    print('while打印的内容')
'''

# 需求:打印1-100之间的每一个数
'''
可以但不建议  学习循环后尽量使用循环
print(1)
print(2)
……
'''

i = 1
while i <= 100:         # 循环条件
    print('i:', i)
    i += 1              # 控制循环次数  如果不加这个条件就会是死循环

print('-' * 100)

# 断点调试:点击代码出现小红点  然后右击选中调试代码(小虫子),点击步长(F8)按键会一步一步执行,可以查看一些循环的中间过程。


# 需求:对 1+2+3+……+100求值
# 数学家  高斯:首尾相加  101 * 50 = 5050
#
s = 0       # 求和,初始值
i = 1
while i <= 100:
    s += i
    i += 1

print(s)

# 第1次循环:循环前 i=1,s=0;判断 i<= 100 是否成立;循环后:i=2,s=1
# 第2次循环:循环前 i=2,s=1;判断 i<= 100 是否成立;循环后:i=3,s=1+2
# 第3次循环:循环前 i=3,s=1+2;判断 i<= 100 是否成立;循环后:i=4,s=1+2+3
# ……
# 第99次循环:循环前 i=99,s=1+2+……+98;判断 i<= 100 是否成立;循环后:i=100,s=1+2+……+98+99
# 第100次循环:循环前 i=100,s=1+2+……+98+99;判断 i<= 100 是否成立;循环后:i=101,s=1+2+……+98+99+100
# 第101次循环:循环前 i=101,s=1+2+……+98+99+100;判断 i<= 100 是否成立;不成立,跳出/结束循环  执行循环之后的代码

''' 基础题 '''
# 1.计算从1到100以内所有奇数的和。
# 方式1
s = 0
i = 1
while i <= 100:
    if i % 2:                   # 其实是隐式判断 if i % 2 == 1:
        # print(i,end = ' ')
        s = s + i
    i += 1
print(s)

# 方式2
s = 0
i = 1
while i <= 100:
    s += i
    i += 2
print(s)

# 1.求1-100之间可以被7整除的数的个数
# 方式1
c = 0
i = 1
while i <= 100:
    if i % 7 == 0:
        c += 1
    i += 1
print(c)        # 14

# 方式2
c = 0
i = 7
while i <= 100:
    c += 1
    i += 7
print(c)

# 3.计算从1到100以内所有能被3或者17整除的数的和。
s = 0
i = 1
while i <= 100:
    if i % 3 == 0 or i % 17 == 0:
        s += i
    i += 1
print(s)        # 1887

# 4.计算1到100以内能被7或者3整除但不能同时被这两者整除的数的个数。
c = 0
i = 1
while i <= 100:
    if (i % 7 == 0 or i % 3 == 0) and i % 21 != 0:
        c += 1
    i += 1
print(c)        # 39

# 5.计算1到500以内能被7整除但不是偶数的数的个数。
c = 0
i = 1
while i <= 500:
    if i % 7 == 0 and i % 2 == 1:
        c += 1
    i += 1
print(c)        # 36

# 6.计算8的阶乘,要求用while循环
#   8的阶乘: 1*2*3*4*5*6*7*8
s = 1
i = 1
while i <= 8:
    s *= i
    i += 1
print(s)        # 40320
# 验证 print(1*2*3*4*5*6*7*8)

# 方式2
# import math
# print(math.factorial(8))  # math中求阶乘的函数 factorial

# 7.有一个寺庙,寺庙中有一个老和尚和一个小和尚,老和尚让小和尚去下山挑水,一次只能挑5L水
#   寺庙中的水缸是50L的,问小和尚要挑几次才可以装满水缸,要求用while循环计算
#   i+=5
c = 0
i = 0
while i < 50:
    c += 1
    i += 5
print(c)        # 10

''' 进阶题 '''
# 1.从键盘输入一个数n,判断是不是一个质数(质数是只能被1和它自身整除的数)
n = int(input('请输入n:'))
i = 2
c = 0
while i < n:
    if n % i == 0:
        c += 1
    i += 1
if c > 0:
    print(n, '不是质数')
else:
    print(n, '是质数')

# 2.求1000以内的水仙花数(100-999):水仙花数:一个三位数各个位上的立方之和,等于本身。
list1 = []
i = 100
while i <= 1000:
    if (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 10) ** 3 == i:
        list1.append(i)
    i += 1
print(list1)

# 答案二   求1000以内的水仙花数(100-999):水仙花数:一个三位数各个位上的立方之和,等于本身。
i = 100
while i <= 999:
    if (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 10) ** 3 == i:
        print(i, end=' ')
    i += 1

# 例如: 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
# 3.求2~100之内的所有素数。【素数:只能被1或本身整除的数】
i = 2
list1 = []
while i <= 100:
    c = 0
    j = 2
    while j <= i:
        if i % j == 0:
            c += 1
        j += 1
    if c == 1:
        list1.append(i)
    i += 1
print(list1)

# 答案二   求2~100之内的所有素数。【素数:只能被1或本身整除的数】
i = 2
while i <= 100:
    j = 2
    c = 0
    while j < i:
        if i % j == 0:
            c += 1
        j += 1
    if c == 0:
        print(i, end=' ')
    i += 1
# 4.优化猜数字游戏
#   计算机出一个1~100之间的随机数由人来猜 random.randint(1, 100)
#   计算机根据人猜的(输入)数字分别给出提示: 大一点 / 小一点 / 猜对了,
#   这个过程可以循环进行,当进行5次以上还猜不对的话,则打印:智商余额不足,并退出
#   如果猜对了,则也退出
n = random.randint(1, 100)
i = 1
while i <= 5:
    m = int(input('请输入m:'))
    if m == n:
        print('猜对了')
        i = 6
    elif m < n:
        print('大一点')
    else:
        print('小一点')
    i += 1
print('智商余额不足,自动退出')
  • 23
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值