开发面试题及算法思想(二)

二,控制流

#习题1:设定一个用户名和密码,用户输入正确的用户名和密码,则显示登录成功,否则提示登录失败,用户最多失败3次,否则退出程序。
'''
1,定义2个变量,username,password
2,用input 获取用户输入的用户名和密码
3,用for 循环限定次数, 用 if 条件语句判断输入的用户名和密码是否正确
'''
uesrname = '1'
password = '1'
for  i in range(3):
    username = input('please input your name:')
    password = input('please input your password:')
    if uesrname == '1' and password == '1':
        print('登录成功')
        break
    else:
        print('登录失败')
    if i ==2:
        print('you  input times is used out! bye')
        break

#习题2:随机生成一个整数,1-100之间你最多猜5次,如果猜大了,提示大了,小了,提示小了,猜对了,提示猜中。5次都没猜中,就猜没猜中
'''
1,随机生成一个100之内的整数
2,用input 询问猜得数,用for循环限制次数,
3,用if 判断猜的的数与随机生成的数的大小,打印出提示
'''
import  random
num = random.randint(1,100)
print(num)
for i in range(5):
    guess_num = int(input('你猜测的数是:'))
    if guess_num == num:
        print('恭喜你你猜对了')
        print('你猜了{}次:' .format(i+1))
        break
    elif guess_num > num:
        print('猜大了')
    else:
        print('猜小了')
    if i ==4:
        print('5次机会用光了,你没猜中')

#习题3:使用while,计算随机数之和,超过100的时候,停止程序。随机数1-20的范围产生,要求记录一下产生的随机数,以及最后的和,以及随机数的个数。
'''
1,定义2个变量,一个存储随机数和,一个存储随机数个数,一个列表,存储产生的随机数
2,用while 循环直到满足和大于100
'''
import random
sum =0
count_list = []
while True:
    num = random.randint(1, 20)
    print(num)
    count_list.append(num)
    sum = sum + num
    if sum >100:
        break
print('随机数和为:{}'.format(sum))
print('产生的随机数为:{}'.format(count_list))
print('随机数的个数为:{}'.format(len(count_list)))

#习题4:遍历一个列表中的嵌套列表和元组的所有元素,将1-12的数字进行输出![[[1,2,3],4,5],7,8,(9,10,(11,12))]
'''
遍历列表,用isinstance() 函数判断列表里有没有嵌套列表或元组,有几层循环遍历几层
'''
result = [[[1,2,3],4,5],7,8,(9,10,(11,12))]
for i in result:
    if isinstance(i,(list,tuple)):
        for v in i:
            if isinstance(v,(list,tuple)):
                for u in v:
                    print(u)
            else:
                print(v)
    else:
        print(i)

#习题7:判断一个数是否是素数
'''
1,素数:大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,即质数。
2,判断一个数是不是素数,可以用这个数除以2至这个数开平方后的数,整除不是素数不整除就是素数
3,创建一个函数,入参为一个自然数,入参小于等于1,返回false,等于2,返回ture,大于2时,判断是否符合第2点
'''
import  math
def is_prime(num):
    if not isinstance(num,int):
        return False
    else:
        if num<=1:
            return False
        elif num ==2:
            return True
        else:
            for i in range(2,int(math.sqrt(num)+1)):
                if num%i==0:
                    return False
            return True

print(is_prime(-25))
print(is_prime(0))
print(is_prime(1))
print(is_prime(1.2))
print(is_prime(2))
print(is_prime(3))
print(is_prime(10))
print(is_prime(97))

#习题8:嵌套列表的正、反对角线、四边及中间元素之和
'''
1,定义一个嵌套列表的矩阵  s =[
                          [ 1, 2, 3, 4],
                          [ 5, 6, 7, 8],
                          [ 9,10,11,12],
                          [13,14,15,16]
                          ]
2,定义一个变量存储和,嵌套循环遍历
'''
s =[
     [ 1, 2, 3, 4],
     [ 5, 6, 7, 8],
     [ 9,10,11,12],
     [13,14,15,16]
   ]
sum =0
#正对角线和    矩阵的行下标等于列下标时是正对角线
for i in range(len(s)):
    for v in range(len(s[i])):
        if i == v:
            sum += s[i][v]
            print(s[i][v])
print('正对角线和为:{}'.format(sum))

#反对角线和    矩阵的行下标与列下标的和 等于行数-1或列数-1
sum1=0
for i in range(len(s)):
    for v in range(len(s[i])):
        if (i+v) == len(s)-1:
            sum1 += s[i][v]
            print(s[i][v])
print('反对角线和为:{}'.format(sum1))

#四边和       矩阵的首行和末行取全部元素,其它行取首列和末列元素
sum2=0
for i in range(len(s)):
    if i == 0 or i == len(s) - 1:
        for v in range(len(s[i])):
            sum2 += s[i][v]
            print(s[i][v])
    else:
        sum2 += s[i][0]
        sum2 += s[i][-1]
        print('首列为:{}'.format(s[i][0]))
        print('尾列为:{}'.format(s[i][-1]))
print('四边之和为:{}'.format(sum2))

#中间元素之和     方法一,矩阵之和减去四边和    方法二,矩阵的首行和末行跳过,其它行跳过首列和末列元素求和
#方法一
sum3 = 0
sum4 = 0
for i in range(len(s)):
    for v in range(len(s[i])):
        sum3 += s[i][v]
        print(s[i][v])
sum4=sum3-sum2
print('矩阵和为:{}'.format(sum3))
print('中间元素和为:{}'.format(sum4))
#方法二
sum5=0
for i in range(len(s)):
    if i == 0 or i == len(s) - 1:
        continue
    else:
        for v in  range(len(s[i])):
            if v==0 or v==len(s[i])-1:
                continue
            else:
                sum5 += s[i][v]
                print('中间元素为:{}'.format(s[i][v]))
print('中间元素之和为:{}'.format(sum5))

#习题9,实现数学中多项式求和公式的打印 比如:a6x^6 + a5x^5 + a4x^4 + a3x^3 + a2x^2 + a1x^1 + a0
'''
此题主要检查字符串拼接及range()函数的灵活应用
range(start,stop,step)    从那个数开始,到那个数结束,步长为几
'''
sting= ''
for i in range(6,-1,-1):
    if i >=1:
        sting += 'a'+str(i) +'x'+'^'+str(i)+'+'
    else:
        sting += 'a'+str(i)

print(sting)

#习题10,输出n的阶乘
'''
利用递归思想设计算法  n! = n x (n-1) x (n-1)-1
'''
def fac(n):
    if not isinstance(n,int) or n<=0:
        return 0
    elif  n==1:
        return 1
    else:
        return n * fac(n-1)

print(fac(-1))
print(fac(0))
print(fac(1))
print(fac(2.5))
print(fac(6))

开发面试题及算法思想(一)_zhangguangyi520的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值