Python基础第6讲 - 条件控制语句练习

练习1 求1000以内所有的水仙花数

水仙花数 指的是一个n位数(n>=3) 它的每个位数是数字的n次幂之和等于它本身 13 + 53 + 3**3 = 153

获取1000以内所有的三位数

i = 100
while i < 1000:
    # 假设 i的百位数是a,十位数b,十位数c
    # 求百位数
    a = i // 100
    # 求十位数
    b = (i - a * 100) // 10
    # 求各位数
    c = i % 10

    # print(i,a,b,c)
    # 判断i是否水仙花数
    if a**3 + b**3 + c**3 == i:
        print(i)
    i += 1
print('-'*50)

---------------------------------------------------------------

练习2 获取用书输入的任意数判断是否是质数

什么是质数:只能被1和本身整除的数 2 3 5 7 11 13

# 获取用户输入的任意数
num = int(input('输入一个任意大于1的整数:'))
# 定义一个变量
i = 2
# 创建一个标记 用来记录num是否是质数 默认是质数
flag = True
while i < num:
    # print(i)
    # 如果这个条件成立,则证明num一定不是质数
    if num % i == 0:
        # 一旦进入这个循环 则证明num不是质数
        flag = False
    i += 1
if flag:
    print(num,'是质数')
else:
    print(num,'不是质数')

---------------------------------------------------------------

循环嵌套

在这里插入代码片练习2:在控制台输出如下图形
# ******
# ******
# ******
# ******
# ******
# 外层循环控制的是高度(列),内层循环控制的是宽度(行)
i = 0
# 外层循环控制的是高度
while i < 5:
    # 内层循环控制的是宽度
    j = 0
    while j < 5:
        print('*',end='')
        j += 1
    print()
    i += 1

print('-'*50)

# ---------------------------------------------------------------
# 在控制台输出如下图形
# *        i = 0  j < 1     j< i + 1
# **       i = 2  j < 2     j< i + 1
# ***      i = 2  j < 3     j< i + 1
# ****     i = 3  j < 4     j< i + 1
# *****    i = 4  j < 5     j< i + 1

i = 0
while i < 5:

    j = 0
    while j< i + 1:
        print('*',end='')
        j += 1
    print()
    i += 1

---------------------------------------------------------------

练习3:控制套打印99乘法表

# 1*1=1
# 1*2=2 2*2=4
# ····                   9*9=81

# 创建一个外层循环的高度
i = 0
while i < 9:

    i += 1

    # 创建一个内层循环来控制图形的宽度
    j = 0
    while j < i:
        j += 1
        print(f'{j}*{i}={j*i}',end=' ')
    print()

---------------------------------------------------------------

练习四:猜数字游戏 随机 1 - 10数字,猜对正确,如果没有猜对错误

# 给用户9次机会,最终结果一次都猜不对
# 1 2 3 4 5 6 7 8 9 10          9次机会
# 思路:可以先拿到用户猜过的数字,我可以随机一个数字去和用户猜的数字作比对,
# 如果这个循环的额数字没有在用户猜过的数字当中,那么这个数字是我需要的答案
# continue   break
# continue可以跳过档次循环
# # break 可以立即退出循环,包括else
# i = 0
# while i < 6:
#     i += 1
#
#     if i == 2:
#         break
#     print(i)
# else:
#     print('hello')

import random
# 定义一个列表,  目睹:用来存储用户的数字
lst = []
i = 0
while i < 9:

    number = int(input('请输入1-10的数字:'))
    # 把用户猜过的数字追加到列表中
    lst.append(number)
    print('对不起,你没有猜对')
    i += 1
while True:

    number_x = random.randint(1,10)        #1<= x <=10

    if number_x in lst:
        continue
    else:
        break
print('正确号码是:',number_x)

--------------------------------------------

练习5:求100以内所有的质数 (优化后)

from time import *
# 获取程序开始的时间   经验 性能
number1 = int(input('输入一个数字:'))
start = time()
i = 2
while i <= number1:
    flag = True
    j = 2
    while j <= i ** 0.5:
        if i % j == 0:
            flag = False
            # 一旦进入判断证明i根本不是质数,所以内层循环根本没有必要继续执行
            break
        j += 1
    if flag:
        # print(i)
        pass
    i += 1

# 获取程序结束时间
end = time()
# 计算程序执行的时间
print('程序话费了:',end - start,'秒')
发布了46 篇原创文章 · 获赞 4 · 访问量 1317

猜你喜欢

转载自blog.csdn.net/Yauger/article/details/101647953