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<num: if num % i == 0: flag=False i+=1 if flag: print('是质数') else: print('不是质数')
练习3.循环嵌套
需求:
循环嵌套---------------------------------------
在控制台输出图形,第一行输出一个,第二行输出二个,第n行输出n个
分析:通过2个循环嵌套打印输出
代码1:正序输出:
# 让用户输入一个数字,用来控制显示的行数 num=int(input('请输入一个数字,用来控制您要显示的行数:')) # 定义一个变量,用来控制输出星星的个数 i=0 # 控制行数 while i<num: j=0 # 控制每行输出的个数 while j<i+1: print('*',end='') j+=1 print() i += 1
代码2:反序输出:
# 让用户输入一个数字,用来控制显示的行数 num=int(input('请输入一个数字,用来控制您要显示的行数:')) # 定义一个变量,用来控制输出星星的个数 i=0 # 控制行数 while i<num: j=0 # 控制每行输出的个数 while j<num-i: print('*',end='') j+=1 print() i += 1
练习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<i: if i % j == 0: flag=False j+=1 if flag: print(i) i += 1
练习6. 求质数2,性能优化
先通过time模块来查看2个时间差
from time import * start_time= time() i=2 while i<=10000: flag = True j=2 while j<i: if i % j == 0: flag=False j+=1 if flag: # pass i += 1 end_time = time() print('花费了{}秒'.format(end_time-start_time))
通过上面代码的运行,发现当基数变大的时候,执行时间变长
#####6.1第一次优化
通过在内层循环增加break的方法跳出不需要再次循环的数字
代码如下:
from time import * start_time= time() i=2 while i<=10000: flag = True j=2 while j<i: if i % j == 0: flag=False break j+=1 if flag: # pass i += 1 end_time = time() print('花费了{}秒'.format(end_time-start_time))
通过上面代码的执行发现比原有的快了近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和它本
4000
身整除
代码:
# 让用户输入一个任意数字 num = int(input("请输入一个数字:")) # 定义一个变量用来作余数的判断 i=2 # 定义一个标签用来标记是否是质数 flag=True while i<num: if num % i == 0: flag=False i+=1 if flag: print('是质数') else: print('不是质数')
练习3.循环嵌套
需求:
循环嵌套---------------------------------------
在控制台输出图形,第一行输出一个,第二行输出二个,第n行输出n个
分析:通过2个循环嵌套打印输出
代码1:正序输出:
# 让用户输入一个数字,用来控制显示的行数 num=int(input('请输入一个数字,用来控制您要显示的行数:')) # 定义一个变量,用来控制输出星星的个数 i=0 # 控制行数 while i<num: j=0 # 控制每行输出的个数 while j<i+1: print('*',end='') j+=1 print() i += 1
代码2:反序输出:
# 让用户输入一个数字,用来控制显示的行数 num=int(input('请输入一个数字,用来控制您要显示的行数:')) # 定义一个变量,用来控制输出星星的个数 i=0 # 控制行数 while i<num: j=0 # 控制每行输出的个数 while j<num-i: print('*',end='') j+=1 print() i += 1
练习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<i: if i % j == 0: flag=False j+=1 if flag: print(i) i += 1
练习6. 求质数2,性能优化
先通过time模块来查看2个时间差
from time import * start_time= time() i=2 while i<=10000: flag = True j=2 while j<i: if i % j == 0: flag=False j+=1 if flag: # pass i += 1 end_time = time() print('花费了{}秒'.format(end_time-start_time))
通过上面代码的运行,发现当基数变大的时候,执行时间变长
#####6.1第一次优化
通过在内层循环增加break的方法跳出不需要再次循环的数字
代码如下:
from time import * start_time= time() i=2 while i<=10000: flag = True j=2 while j<i: if i % j == 0: flag=False break j+=1 if flag: # pass i += 1 end_time = time() print('花费了{}秒'.format(end_time-start_time))
通过上面代码的执行发现比原有的快了近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基础知识点数据类型转换、条件控制语句、循环语句、字符串、元组、字典、逻辑运算符
- [Python学习] 专题二.条件语句和循环语句的基础知识
- Python基础作业_第06章_条件控制和循环语句
- Python 专题二 条件语句和循环语句的基础知识
- Python基础之条件控制操作示例【if语句】
- python基础知识--条件,循环和其他语句
- 【Java学习笔记】基础知识学习2【条件逻辑控制语句】
- 9-Python3从入门到实战—基础之条件控制语句
- [Python学习] 专题二.条件语句和循环语句的基础知识
- Python基础6- 流程控制之if条件语句
- python基础知识- 条件判断语句和循环语句
- [Python学习] 专题二.条件语句和循环语句的基础知识
- python基础知识之条件语句
- python基础知识整理——条件/循环语句
- Python基础语法学习--条件控制与循环语句
- salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
- python基础知识——控制语句
- python - 基础知识练习题
- Python学习入门基础教程(learning Python)--3.3 分支语句的条件表达式详解 .
- 第一章:python基础语法| 字符编码| 条件语句...