Python基础学习(3)—循环的练习及优化

循环的练习

外循环控制行数,内循环控制列数

1.1 打印图像

打印图形
     *
    * *
   * * *
  * * * *
 * * * * *
i=0
while i<5:
# i为外循环控制行数,为5行
    j = 0
    k = 0
# j,k都为内循环,控制空格以及"*"的一行中的数量,end='' 是为了不让空格的下一个空格换行 
    while j<4-i:
        print(' ',end='')
        j+=1
 # 从上到下每一行开头空格为4-i,end='' 是为了不让'*'的下一"*"换行 
    while k<i+1:
        print(' x',end='')
        k+=1
 # 从上到下每一行开头空格为i+1        
    print()
 # 作用是打印一行空格和“*”的组合后,换行
    i+=1
    

1.2找出100—100内水仙花数

i = 100
while i < 1000:
# 控制变量i为100到1000内的数
    a = i // 100
# a为数字i的百位数上的数字
    b = (i - a * 100)//10
# b为数字i的十位数上的数字    
    c = i % 10
# c为数字i的个位上的数字    
    if i == a**3 + b**3 + c**3
# 判断i是否为水仙花数,如果符合水仙花数的要求就在下面打印出 :
        print(i)
    i+=1

1.3质数判断

num = int(input('请输入你所要查询的数:'))
i = 2
# 质数为只能被1和自身整除的数,所以从2开始判断是否符合条件
while i < num:
    if num % i == 0:
# 判断从2开始所有比i小的数是否能整出i    
        print('不是质数')
# 如果可以整除就打印不是质数        
        i+=1
        break
# break用来终止循环,如果一个数可以被第一次整除就肯定不是质数,没必要再判断能否被别的更大的数整除        
    else:
        print('是质数')
        break
# 如果if条件不通过即为质数,打印出是质数        
    i+=1

1.4 打印乘法表

i = 1
while i <=9:
# 外循环控制行数,乘法表总共九行
    j = 1
    while j<i+1:
# 内循环控制列数,乘法表每一行列数依次增加,而且前面的数字j小于等于后面的苏子i   
        print(r'j*i=',j*i,' ',end='')
# 使用“r”转义符,将前面的“i*j”按字符形式打印出来,后面的为计算后的结果打印出来    
    j+=1
    i+=1
    print()
# print()用来每打印完一行后换行    

1.5猜数字游戏

lst = []
# 先定义一个空的列表
number1 = list(range(1,11))
# 将数字1到10放入列表number1中
i = 0
while i <9:
# 设置循环次数,为9次
    num = int(input('请输入你猜测的数字:'))
# 输入数字num
    if num not in lst:
# 判断数字是否在空列表lst中    
        lst.append(num)
# 如果数字没在列表lst中,将输入的数字储存到列表lst中        
        print('对不起,猜测错误')
# 不管猜的数字是什么,直接打印对不起,猜测错误        
        i+=1
    else:
        print('数字重复')
 # 如果猜的数字在猜过的数字当中,提醒玩家数字重复,不计入循环次数       
for i in number1:
    if i not in lst:
# 使用 in,not in 判断在number1当中而没在lst中的数字    
        print('正确答案是',i)
# 打印出不同的数字        

1.6通过找10000内的质数研究优化

start = time()
# 使用time()函数,记录代码执行的开始时间
i = 2
# 先找到从2到10000内所有的数字
while i < 10000 :
    flag = True
# 设置一个flag变量,并将初值赋值为True    
    j = 2
# 质数为只能被1和自身整除的数,所以从2开始判断是否符合条件    
    while j<i:
# 第一次优化,将 j<i变为j < i**0.5,一个数如果可以开平方,就可以仅仅判断平方根之前的数是否可以整除就行,减少了运算量
        if i % j ==0:
            flag = False
# 如果i可以被j整除就将flsg的值改为           
            #break 第二次优化,break用来终止循环,如果一个数可以被第一次整除就肯定不是质数,没必要再判断能否被别的更大的数整除       
        j+=1
    if flag:
        print(i) 
        # pass第三次优化使用pass替换print(i),不打印质数i
    i+=1
end = time()
# 使用time()函数,记录代码执行的结束时间
print(end-start)
# 计算出执行整个代码所需的时间,用时间进行对比,反映代码的优化效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值