基础习题训练

思维训练

主要训练逻辑思维,将数学知识转化为程序代码

习题

题目1: 打印一个边长为n的正方形
题目解法1:** 突破传统思维,截拳道原理,摆脱过多的花式动作,直接、简单、有效的动作搞定,没有一句啰嗦语句,计算机效率也高

#!/bin/python3
#-*- coding: UTF-8 -*-
n = int(input('input your number: '))
print( '*' * n )
for i in range(n-2):
    print('*', '' * (n-2), '*')
print('*'*n)

题目解法2: ** 渗透一种思维,根深蒂固一种思维,折半思维,并且在折半后又有什么规律,靠数学数字游戏来玩

#!/bin/python3
#-*- coding: UTF-8 -*-
n = int(input('input your number: '))
e = -(n//2)
for i in range(e,n+e):
    if i == e or i == n+e-1:
        print('*'*n)
    else:
        print('*',''*(n-2),'*')

题目2 求100内所有奇数的和
题目解法1: 传统思维解法,传统解法的问题在于计算机消耗的资源相对较高

#!/bin/python3
#-*- coding: UTF-8 -*-
sum1 = 0
for i in range(1,101):
    if i % 2:
        sum1 += i
print(sum1)

题目解法2: 直接输出奇数数列进行叠加,大量减少计算机运算

#!/bin/python3
#-*- coding: UTF-8 -*-
sum1 = 0
for i in range(1,101,2):
    sum1 += i
print(sum1)

题目3 求1到5阶乘之和
题目解法1: 直接输出奇数数列进行叠加,大量减少计算机运算

#!/bin/python3
#-*- coding: UTF-8 -*-
sum1 = 0
sum2 = 1
for i in range(1,6):
    for j in range(1,i+1):
        sum2 *= j
    else:
        sum1 += sum2
        sum2 = 1
print(sum1)

题目解法2: 如上算法太过啰嗦,代码不够优雅,博士写论文一个的字不能多,也不能少

#!/bin/python3
#-*- coding: UTF-8 -*-
sum1 = 0
sum2 = 1
for i in range(1,6):
    sum2 *= i
    sum1 += sum2
print(sum1)

题目4 给一个数,判断它是否是素数(质数)
题目解法1: 传统解法当数字给定特别大时,效率相对慢

#!/bin/python3
#-*- coding: UTF-8 -*-
n = int(input('your number: '))
m = 0
for i in range(1,n+1):
    if not n % i:
        m += 1
if m == 2:
    print('YES')
else:
    print('NO')

题目解法2: 先要迅速判断输入数以内的所有质数,若在这个数以内的质数包含自己,说明这个数就是质数,否则不是质数

#!/bin/python3
#-*- coding: UTF-8 -*-
n = int(input('your number: '))
lis = [2]
for i in range(2,n+1):
    for j in lis:
        if not i % j:
            break
    else:
        lis.append(i)
if lis[-1] == n:
    print('YES')
else:
    print('NO')

作业

题目1 打印九九乘法表
题目解法1: 通过控制序列进行计算

#!/bin/python3
#-*- coding: UTF-8 -*-
for i in range(1,10):
    for j in range(1,i+1):
        print('%d * %d = %d'%(j,i,j*i),end='\t')
    print('\n')

题目解法2: 通过控制m=n时进行跳出循环

#!/bin/python3
#-*- coding: UTF-8 -*-
for m in range(1,10):
    n = 0
    while True:
        n += 1
        print('%d * %d = %d'%(n,m,m*n),end=' ')
        if n == m:
            print('\n')
            break

题目2 打印上下对称菱形,具体如下图

     *
    ***
   *****
    ***
     *

题目解法1: 传统解法环

#!/bin/python3
#-*- coding: UTF-8 -*-
n = int(input('your number:'))
e = n//2
for i in range(1,e+2):
    print(' '*(n-i),'*'*(2*i-1))
for i in range(-e,0):
    i = -i
    print(' '*(n-i),'*'*(2*i-1))

题目解法2: 如上解法太过啰嗦,此种类型题目要根据数学公式计算+++++++配合三元表达式,两条语句搞定

#!/bin/python3
#-*- coding: UTF-8 -*-
for i in range(-2,3):
    print(' '*(-i) + '*'*(5 + i*2)) if i < 0 else print(' '*i + '*'*(5 - i*2))

扩展题目 打印如下图形

*******
 *****
  ***
   *
  ***
 *****
*******

题目解法: 通用策略解题,计算公式,用简约代码

#!/bin/python3
#-*- coding: UTF-8 -*-
n = int(input('your number:'))
m = -(n//2)
for i in range(m,m+n):
    print(' '*(-m+i) + '*'*((-i)*2 + 1)) if i <= 0 else print(' '*((-m)-i) + '*'*(2*i+1))

题目3 打印100以内的斐波那契数列
题目解法1: 传统解法环

#!/bin/python3
#-*- coding: UTF-8 -*-
sum1 = 1
sum2 = 1
for i in range(1,101):
    if i == 1:
        print(sum1)
    elif i == 2:
        print(sum2)
    elif i % 2:
        sum1 += sum2
        print(sum1)
    else:
        sum2 += sum1
        print(sum2)

题目4 求斐波那契数列第101项
题目解法: 传统解法环

#!/bin/python3
#-*- coding: UTF-8 -*-
sum1 = 1
sum2 = 1
for i in range(1,102):
    if i == 1:
        sum1 = 1
    elif i == 2:
        sum2 = 1
    elif i % 2:
        sum1 += sum2
    else:
        sum2 += sum1
else:
    if 101 % 2:
        print(sum1)

题目5 求10万内的所有素数
题目解法1: 传统解法环

#!/bin/python3
#-*- coding: UTF-8 -*-
n = 0
for i in range(2,100001):
    for j in range(2,i):
        if not i % j:
            n += 1
    else:
        if n < 1:
            print(i)
    n=0

题目解法2: 高效解法

#!/bin/python3
#-*- coding: UTF-8 -*-
lis = [2]
for i in range(2,100001):
    for j in lis:
        if not i%j:
            break
    else:
        lis.append(i)
print(lis)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值