欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-28 14:24:14
...

练习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,'秒')