本站消息

  出租广告位,需要合作请联系站长

  今日名言-想象你自己对困难作出的反应,不是逃避或绕开它们,而是面对它们,同它们打交道,以一种进取的和明智的方式同它们奋斗 。——马克斯威尔·马尔兹

  今日名言-用谅解、宽恕的目光和心理看人、待人。人就会觉得葱笼的世界里,春意盎然,到处充满温暖。——蔡文甫


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

学习Python第三天

发布于2021-07-25 07:15     阅读(565)     评论(0)     点赞(16)     收藏(0)


学习Python第三天

今天都在练习代码,熟悉代码,并且优化昨天的作业,在学习过程中发现滋生存在的错误,

课后作业

因为我也在学习过程中,所以也会存在一些问题

第一题,

主要找到分解 隔,十,百位的各个数字,然后带入公式即可

for i in range(100, 1000):
    x1 = (i // 100) ** 3#整除100即可得到百位上的数字
    x2 = ((i % 100) // 10) ** 3#i对100求余,得到十位百位,然后整除10,得到十位上的数字
    x3 = (i % 10) ** 3i#直接整除10,得到个位数
    if x1 + x2 + x3 == i:
       print(i)
    
    
    
#    补充练习,将一个多位数各个位置上的数字颠倒位置1234---->4321
num = int(input('请输入一个多位数'))
x = num
total = 0
while x > 0:
    x, y = x // 10, x % 10
    total = total * 10 + y
print(total)
#思路如下,以一个数举例
12345
12345 / 10 = 1234------>5    5* 10
1234 / 10 = 123-------->4    (5*10 +4)*10
123 / 10 = 12---------->3    ((5*10 +4)*10+3)*10
12 / 10 = 1------------>2    (((5*10 +4)*10+3)*10+2)*10
1 / 10 =0-------------->1    (((5*10 +4)*10+3)*10+2)*10+1

第二题,

首先确定质数的性质,不存在自身和1以外的因子(别问为什么先讲这个题,看完你就知道了)

num = int(input('请输入一个正整数'))
is_prime = True
for i in range(2,num):
    if num % i == 0:
    is_prime = False
    break
# 确定不是质数就可以终止循环
if num > 1 and is_prime = True #1不是质数
print(f'{num}是质数')
print(f'{num}不是质数')





#补充练习
#寻找一百以内的质数
#思路:首先循环1到100,再循环判断这个数是不是质数
for i in range(2, 101):# 1不是质数,从二开始
    is_prime = True
    for j in range(2, i):#判断是不是质数的问题
        if i % j == 0:
            is_prime = False
            break
    if is_prime:
        print(i, end='  ') # 用空格 隔开

        
#补充练习
#打印九九乘法表
n = 9
for i in range(1, n+1):
    for j in range(1, i + 1):
        f = i * j
        print(f'{j} * {i} = {f}', end='\t')#格式化输出乘法表  end = '\t'用于输出对齐
    print()#换行

        
        

第三题

  • 输入三角形三条边长度,如果能构成三角形,计算三角形面积,如果不能的、构成三角形,重新输入,直到3可以构成三角形

    思路:利用海伦公式计算

    while True#不确定循环次数,用while循环
        a = float(input('输入第一条边长='))
        b = float(input('输入第二条边长='))
        c = float(input('输入第三条边长='))
        if a + b > c and a + c > b and b + c > a:
            p = (a + b + c) / 2
            area = (p * (p - a) * (p - b) * (p - c)) ** (1 / 2)
            print(f'该三角形面积为{area}')
            break#求出三角形面积,终止循环
        else:
            print('请重新输入边长')
    

    第四题

  • 多次循环求阶乘,带入公式

  • 这个题理解起来还是相对简单的

  • 但是还有一种更为便捷的方法,利用math包里的函数直接求得阶乘

    #方法一
    m = int(input('请输入一个正整数m = '))
    n = int(input('请输入一个正整数(小于m)n = '))
    x1 = 1
    x2 = 1
    x3 = 1
    for i in range(1, m + 1):
        x1 *= i
        pass
    for j in range(1, n + 1):
        x2 *= j
        pass
    for q in range(1, m - n + 1):
        x3 *= q
        pass
    print(x1 / x2 / x3)
    
    
    #方法二
    improt math#导入包
    m = int(input('请输入一个正整数m = '))
    n = int(input('请输入一个正整数(小于m)n = '))
    # 直接运用包中的函数进行格式化输出
    print(math.factorial(m) / math.factorial(n) / math.factorial(m - n))
    
    #方法二
    from math import factorial as f
    #这一步可分解为:from math 从math包中  improt factorial  导入该函数 as f 将该函数简化为用f表示
    m = int(input('请输入一个正整数m = '))
    n = int(input('请输入一个正整数(小于m)n = '))
    print(f(m) / f(n) / f(m - n))
    
    
    

    第五题

    for i in range(2, 10001):#循环2 到10000,1本身是质数,可以不用管
        temp = 1             #定义一个变量进行,从1开始累加,因为每个数都有1这个因子
        for j in range(2, i):#他的因子都小于自身,所以只需要循环2到i即可
            if i % j == 0:   #满足条件:能够被i整除,就进行累加
                temp += j
        if temp == i:       #满足完美数条件,将其输出
            print(i)
    

    今天是疯狂练题的一天

    • 一百块钱买一百只鸡, 百钱百鸡问题
    • 假设大公鸡五块钱一只,老母鸡三块钱一只,小鸡仔一块钱三只,一百块钱要买一百只鸡

    思路:循环嵌套

    买大公鸡,老母鸡,小鸡仔的钱加起来等于100

    大公鸡,老母鸡,小鸡仔加起来一百只

    就像以前学的三元一次方程

    #初始代码
    for i in range(0, 20):#公鸡最多买20只
        for j in range(0, 33):#老母鸡最多买
            for k in range(0, 99)#小鸡仔最多买99只
            if k % 3 == 0 and 5 * i + 3 * j + k * 1 / 3 == 100 and i + j + k == 100:带入条件
                print(f'购买公鸡{i}只, 母鸡{j}只,小鸡{k}只')
    
                
    #改良版            
                for i in range(0, 20):
        for j in range(0, 33):
            # 减少循环次数
            k = 100 - i - j
            if k % 3 == 0 and 5 * i + 3 * j + k * 1 / 3 == 100 and i + j + k == 100:
                print(f'购买公鸡{i}只, 母鸡{j}只,小鸡{k}只')
    
    
  • 五个人晚上去捕鱼,捕到不计其数的鱼,累到不行要去睡觉,第二天,A第一个醒来,把鱼分成五份, 扔掉多余的一条,拿着自己的一份就走了,B第二个醒来,不知道A已经走了,做了和A一样的事情,扔掉一条刚好分成五份,拿走了自己的,CDE相继醒来也各自做了和AB两人一样的事情(忍不住吐槽,怎么会有那么憨的人,这样都能逮到鱼)求他们至少捕到多少鱼

  • 思路

  • 最少的肯定是一条, 虽然不够分,但是但是方便计算

  • 因为不确定需要循环的次数,所以用whil循环

  • 定义一个终止循环的钥匙is_enough = Ture,当满足条件是用break终止循环

  • 然后在while循环中用for循环判断鱼的数量

  • 当鱼的数量符合条件时退出for循环(鱼需要分五次,所以只需要五次循环,但是五次都没有分出来就重新进行for循环)

  • for循环满足则is_enough满足条件输出fish,用break终止while循环,程序结束

    fish = 1
    while True:
        is_enough = True
        total = fish
        for _ in range(5):
            if (total -1 ) % 5 == 0:
                total = (total - 1) // 5 * 4
            else:
                is_enough = Flase
            pass
        if is_enough:
            print(fish)
            break
        else:
            fish += 1
                
            
        
    

    课后练习

    • 计算机产生一个1到100的随机数,输入自己猜的数字
      计算机给出对应提示"大一点",”小一点“,或 ”恭喜你猜对了,直到猜中为止“
      如果猜的次数超过七次,温馨提示”智商余额不足“
    • 输入十个大于0的整数,1到100之间,找到送平均值,最大值,
    • 答案明天讲解
import random
answer = random.randrange(1, 101)
while True:
    is_right = True
    for _ in range(7):
        gass = int(input('你猜它是几'))
        if answer == gass:
            print('恭喜你猜对了')
            break
        elif gass > answer:
            print('小一点')
            is_right = False
            pass
        else:
            print('大一点')
            is_right = False
    if is_right:
        break
    else:
        print('智商余额不足')

x = 0
count = 0
x1 = 100
for _ in range(10):
    a = int(input('请输入一个整数'))
    count += a
    if a >= x:
        x = a
    elif a <= x1:
        x1 = a
avg = count / 10
print(f'最大值为{x},平均数为{avg}, 最小值为{x1}')

原文链接:https://blog.csdn.net/qq_59793097/article/details/119008198



所属网站分类: 技术文章 > 博客

作者:你做的菜有点咸

链接:http://www.pythonpdf.com/blog/article/412/439a10e8d86ba77bc97c/

来源:编程知识网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

16 0
收藏该文
已收藏

评论内容:(最多支持255个字符)