python 基础知识第6讲:条件语句控制练习题集合

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

需求:求1000以内的所有的水仙花数
分析:它的每个位数上的数字的3次幂之和等于它本身
代码1:用if 单次判断

num = int(input("请输入一个1000以内的三位数,最小为100:"))
if  100< num <1000:
    #求出对应的百位,十位,个位数字
    #假设 x是百位数,y是十位数,z是个位数
    x=  num //100
    y= (num-x*100) // 10
    z= num % 10
    if x**3+y**3+z**3 == num:
        print(num,'是水仙花数')
    else:
        print(num,'不是水仙花数')
else:
    print('输入的数字有误,请重新输入!')

代码2:用 while循环实现

num=100
while num<1000:
   #求出对应的百位,十位,个位数字
   #假设 x是百位数,y是十位数,z是个位数

   x = num // 100
   y= (num-x*100) // 10
   z= num % 10
   if x**3+y**3+z**3 == num:
       print(num,'是水仙花数')
   num +=1

练习2.求质数

需求:获取用户输入的任意数,判断是否是质数
分析:质数就是只能被1和它本身整除
代码:

# 让用户输入一个任意数字
num = int(input("请输入一个数字:"))
# 定义一个变量用来作余数的判断
i=2

# 定义一个标签用来标记是否是质数
flag=True
while i

练习3.循环嵌套

需求:
循环嵌套---------------------------------------
在控制台输出图形,第一行输出一个,第二行输出二个,第n行输出n个
分析:通过2个循环嵌套打印输出
代码1:正序输出:

# 让用户输入一个数字,用来控制显示的行数
num=int(input('请输入一个数字,用来控制您要显示的行数:'))
# 定义一个变量,用来控制输出星星的个数
i=0
# 控制行数
while i

代码2:反序输出:

# 让用户输入一个数字,用来控制显示的行数
num=int(input('请输入一个数字,用来控制您要显示的行数:'))
# 定义一个变量,用来控制输出星星的个数
i=0
# 控制行数
while i

练习3.99乘法表

代码1:while循环

i=0
while i< 9:
    i += 1
    j=0
    while j < i:
        j+=1
        print('{}*{}={} '.format(j,i,i*j),end='')
    print()


代码2:for循环

for i in range(0,10):
    i+=1
    for j in range(0,i):
        j+=1
        print('{}*{}={} '.format(j,i,i*j),end='')
    print()

练习4. while break continue

需求:猜数字,猜对了结束,猜不对继续
代码1:

# 定义一个要猜的数字:
i=7
# 定义一个变量接收用户输入的数字
while True:
    num = int(input("请输入一个10之内的数字:"))

    if num > 10 or num < 1:
        print('输入有误!')
        continue

    elif  num>i:
        print('猜大了!')
        continue
    elif num< i :
        print('猜小了:')
        continue
    elif num==i:
        print('猜对了!')
        break

代码2:
猜数字游戏 随机1 - 10个数字,如果猜对正确,如果没有猜对错误
给用户9次机会,最终结果要求用户一次都猜不对
1 2 3 4 5 6 7 8 9 10 9次机会
思路:可以先拿到用户猜过的数字,我可以随机一个数字,去和用户猜过的数字作比对。如果这个循环的数字没有在用户猜过的数字当中。那么这个数字就是我们需要的答案
代码:

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. 求质数2

需求:求100以内的质数
代码:

i=2
while i<=100:
    flag = True
    j=2
    while j

练习6. 求质数2,性能优化

先通过time模块来查看2个时间差

from time import *
start_time= time()
i=2
while i<=10000:
    flag = True
    j=2
    while j

通过上面代码的运行,发现当基数变大的时候,执行时间变长
#####6.1第一次优化
通过在内层循环增加break的方法跳出不需要再次循环的数字
代码如下:

from time import *
start_time= time()
i=2
while i<=10000:
    flag = True
    j=2
    while j

通过上面代码的执行发现比原有的快了近10倍

#####6.1第二次优化
通过
代码:

from time import *
start_time= time()
i=2
while i<=100000:
    flag = True
    j=2
    while j<=i**0.5:
        if i % j == 0:
            flag=False
            break
        j+=1

    if flag:
        print(i)
        pass
    i += 1
end_time = time()
print('花费了{}秒'.format(end_time-start_time))

通过最后的时间的观察,和最开始的对比,程序速度快了100倍左右# 练习1.求1000以内所有的水仙花数
需求:求1000以内的所有的水仙花数
分析:它的每个位数上的数字的3次幂之和等于它本身
代码1:用if 单次判断

num = int(input("请输入一个1000以内的三位数,最小为100:"))
if  100< num <1000:
    #求出对应的百位,十位,个位数字
    #假设 x是百位数,y是十位数,z是个位数
    x=  num //100
    y= (num-x*100) // 10
    z= num % 10
    if x**3+y**3+z**3 == num:
        print(num,'是水仙花数')
    else:
        print(num,'不是水仙花数')
else:
    print('输入的数字有误,请重新输入!')

代码2:用 while循环实现

num=100
while num<1000:
   #求出对应的百位,十位,个位数字
   #假设 x是百位数,y是十位数,z是个位数

   x = num // 100
   y= (num-x*100) // 10
   z= num % 10
   if x**3+y**3+z**3 == num:
       print(num,'是水仙花数')
   num +=1

练习2.求质数

需求:获取用户输入的任意数,判断是否是质数
分析:质数就是只能被1和它本身整除
代码:

# 让用户输入一个任意数字
num = int(input("请输入一个数字:"))
# 定义一个变量用来作余数的判断
i=2

# 定义一个标签用来标记是否是质数
flag=True
while i

练习3.循环嵌套

需求:
循环嵌套---------------------------------------
在控制台输出图形,第一行输出一个,第二行输出二个,第n行输出n个
分析:通过2个循环嵌套打印输出
代码1:正序输出:

# 让用户输入一个数字,用来控制显示的行数
num=int(input('请输入一个数字,用来控制您要显示的行数:'))
# 定义一个变量,用来控制输出星星的个数
i=0
# 控制行数
while i

代码2:反序输出:

# 让用户输入一个数字,用来控制显示的行数
num=int(input('请输入一个数字,用来控制您要显示的行数:'))
# 定义一个变量,用来控制输出星星的个数
i=0
# 控制行数
while i

练习3.99乘法表

代码1:while循环

i=0
while i< 9:
    i += 1
    j=0
    while j < i:
        j+=1
        print('{}*{}={} '.format(j,i,i*j),end='')
    print()


代码2:for循环

for i in range(0,10):
    i+=1
    for j in range(0,i):
        j+=1
        print('{}*{}={} '.format(j,i,i*j),end='')
    print()

练习4. while break continue

需求:猜数字,猜对了结束,猜不对继续
代码1:

# 定义一个要猜的数字:
i=7
# 定义一个变量接收用户输入的数字
while True:
    num = int(input("请输入一个10之内的数字:"))

    if num > 10 or num < 1:
        print('输入有误!')
        continue

    elif  num>i:
        print('猜大了!')
        continue
    elif num< i :
        print('猜小了:')
        continue
    elif num==i:
        print('猜对了!')
        break

代码2:
猜数字游戏 随机1 - 10个数字,如果猜对正确,如果没有猜对错误
给用户9次机会,最终结果要求用户一次都猜不对
1 2 3 4 5 6 7 8 9 10 9次机会
思路:可以先拿到用户猜过的数字,我可以随机一个数字,去和用户猜过的数字作比对。如果这个循环的数字没有在用户猜过的数字当中。那么这个数字就是我们需要的答案
代码:

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. 求质数2

需求:求100以内的质数
代码:

i=2
while i<=100:
    flag = True
    j=2
    while j

练习6. 求质数2,性能优化

先通过time模块来查看2个时间差

from time import *
start_time= time()
i=2
while i<=10000:
    flag = True
    j=2
    while j

通过上面代码的运行,发现当基数变大的时候,执行时间变长
#####6.1第一次优化
通过在内层循环增加break的方法跳出不需要再次循环的数字
代码如下:

from time import *
start_time= time()
i=2
while i<=10000:
    flag = True
    j=2
    while j

通过上面代码的执行发现比原有的快了近10倍

#####6.1第二次优化
通过
代码:

from time import *
start_time= time()
i=2
while i<=100000:
    flag = True
    j=2
    while j<=i**0.5:
        if i % j == 0:
            flag=False
            break
        j+=1

    if flag:
        print(i)
        pass
    i += 1
end_time = time()
print('花费了{}秒'.format(end_time-start_time))

通过最后的时间的观察,和最开始的对比,程序速度快了100倍左右

你可能感兴趣的:(python基础jerry)