• Python —— 3 习题练习


    1. 输入一个整数n,判断其能否同时被5和7整除,如能则输出“xx能同时被5和7整除”,否则输出“xx不能同时被5和7整除”。要求xx为输入的具体数据。
    1 n = int(input("请输入一个整数:"))
    2 if n % 5 == 0 and n % 7 == 0:
    3     print("%d能同时被5和7整除" % n)
    4 else:
    5     print("%d不能同时被5和7整除" % n)

    2. 输入一个百分制的成绩,经判断后输出该成绩的对应等级。其中,90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
     1 score = float(input("请输入百分制的成绩:"))
     2 if (100 >= score) and (score >= 90):
     3     print("A")
     4 elif score >= 80:
     5     print("B")
     6 elif score >= 70:
     7     print("C")
     8 elif score >= 60:
     9     print("D")
    10 else:
    11     print("E")

    3. 某百货公司为了促销,采用购物打折的办法。消费1000元以上者,按九五折优惠;消费2000元以上者,按九折优惠;消费3000元以上者,按八五折优惠;消费5000元以上者,按八折优惠。编写程序,输入购物款数,计算并输出优惠价。
    consume = float(input("购物款数:"))
    if consume >= 5000:
        print("优惠价:%.2f" % (consume*0.8))
    elif consume >= 3000:
        print("优惠价:%.2f" % (consume * 0.85))
    elif consume >= 2000:
        print("优惠价:%.2f" % (consume * 0.9))
    elif consume >= 1000:
        print("优惠价:%.2f" % (consume * 0.95))

    4. 编写一个求整数n的阶乘(n!)的程序
     1 # 循环实现
     2 n = int(input("请输入一个正整数:"))
     3 factorial = 1
     4 for i in range(n, 0, -1):
     5     factorial *= i
     6 print("n! = %d" % factorial)
     7 # 递归实现
     8 i = int(input("请输入一个正整数:"))
     9 def func(i):
    10     if i==1:
    11         return 1
    12     else:
    13         return func(i-1)*i
    14 print("n! = %d" % func(i))
    
    
    5. 编写程序,求1!+3!+5!+7!+9!
     1 L = [1, 3, 5, 7, 9]
     2 def func(n):
     3     if n == 1:
     4         return 1
     5     else:
     6         return n * func(n-1)
     7 factorial = 0
     8 for i in L:
     9     factorial += func(i)
    10 print(factorial)

    6. 编写程序,计算下列公式中s的值(n是运行程序时输入的一个正整数)
     1 # (1) s = 1 + (1 + 2) + (1 + 2 + 3) + ··· + (1 + 2 + 3 + ··· + n)
     2 def func(n):
     3     if n == 1:
     4         return 1
     5     else:
     6         return n+func(n-1)
     7 if __name__=="__main__":
     8     s = 0
     9     n = int(input("请输入正整数:"))
    10     for i in range(1, n+1):
    11         s += func(i)
    12     print(s)
    13 
    14 # (2) s = 12 + 22 + 32 + ··· + (10*n + 2) 
    15 def func(n):
    16         s = 0
    17         for i in range(1, n+1):
    18             s += (10 * i + 2)
    19         return s
    20 if __name__=="__main__":
    21     n = int(input("请输入正整数:"))
    22     s = func(n)
    23     print(s)
    24 
    25 # (3) s = 1*2 - 2*3 + 3*4 - 4*5 + ··· + (-1)^(n-1)*n*(n+1)
    26 def func(n):
    27     s = 0
    28     for i in range(1, n+1):
    29         s += ((-1)**(i-1) * i * (i+1))
    30     return s
    31 if __name__=="__main__":
    32     n = int(input("请输入正整数:"))
    33     s = func(n)
    34     print(s)

    7. 百马百瓦问题:有100匹马驮100块瓦,大马驮3块,小马驮2块,两个马驹驮1块。问大马、小马、马驹各有多少匹?
    1 for i in range(100):
    2     for j in range(100):
    3         for k in range(100):
    4             if(3*i+2*j+0.5*k) == 100 and (i+j+k) == 100:
    5                 print("大马:%d匹  小马:%d匹  马驹:%d匹" % (i, j, k))

    8. 有一个数列,其前三项分别为1、2、3,从第四项开始,每项均为其相邻的前三项之和的1/2,问:该数列从第几项开始,其数值超过1200?
     1 li = [1, 2, 3]
     2 sm = 0
     3 num = 0
     4 n = -1
     5 while len(li) >= 3:
     6     n += 1
     7     for i in li[n:n+3]:
     8         sm += i
     9         num = sm * 0.5
    10     li.append(num)
    11     print(li)
    12     if li[n+3] >= 1200:
    13         break
    14 print("列表从%d项开始,其数值超过1200"% (len(li)))

    9. 找出1~100的全部同构数。同构数是这样一种数:它出现在它的平方数的右端。列如,5的平方是25,5是25中右端的数,5就是同构数,25也是一个同构数,它的平方是625。
    1 import math
    2 for i in range(1, 101):
    3     twice = math.pow(i, 2)
    4     g = twice % 10
    5     s = twice // 10 % 10
    6     b = twice // 100 % 10
    7     if (i == g) or (i == s*10+g) or (i == b*100+s*10+g):
    8       print(i, end=" ", flush=True)

    10.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二早上将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃前一天剩下的一半再加一个。到第10天早上想再吃时,发现只剩下一个桃子。求第一天共摘了多少个桃子。
     1 # 剩下的桃子
     2 # n-(n/2+1)= x
     3 # 2n-n -2 = 2x
     4 # n = 2x+2
     5 n = 1
     6 s = 0
     7 for i in range(9, 0, -1):
     8     print(i, end=" ")
     9     if i == 1:
    10         print("第%d天剩下%d个桃子" % (i, (n*2)+2))
    11         s = (n*2)+2
    12         print("第%d天共摘了%d个" % (i, (2 * s + 2)))
    13     n = (n*2)+2

    11. 开发猜数字小游戏。计算机随机生成100以内的数字,玩家去猜,如果猜的数字过大或过小都会给出提示直到猜中该数,显示“恭喜!你猜对了”,同时要统计玩家猜的次数
     1 import random
     2 num = random.randrange(100)
     3 total = 0
     4 while 1:
     5     n = int(input("请输入您猜的数:"))
     6     total += 1
     7     if n == num:
     8         print('恭喜!')
     9         break
    10     elif n > num:
    11         print('猜的数字过大')
    12     else:
    13         print('猜的数字过小')
    14 print('猜的次数:%d次' % total)

    12. 数字重复统计问题(1)随机生成1000个整数,数字的范围为[20,100](2)升序输出所有不同的数字及其每个数字重复的次数
     1 import random
     2 num = []
     3 for i in range(1001):
     4     num.append(random.randrange(20, 101))
     5 # 升序输出所有不同的数字
     6 num.sort()
     7 n = set(num)
     8 # 集合遍历
     9 for i in n:
    10     print(i, end=" ", flush=True)
    11 # 每个数字重复的次数
    12 for i in range(20, 101):
    13     c = num.count(i)
    14     print("%d出现了%d次" % (i, c))

    13. 求每个学生的平均成绩,结果保留2位小数
    1 # 学生成绩 s ={"Teddy":[100,90,90],"Sandy":[100,90,80],"Elmo":[90,90,80]}
    2 # 输出结果为:{"Teddy": 93.3,"Sandy": 90,"Elmo": 86.7}
    3 s = {"Teddy": [100, 90, 90], "Sandy": [100, 90, 80], "Elmo": [90, 90, 80]}
    4 for k, v in s.items():
    5     avg_s = sum(v)/float(len(s.get(k)))
    6     avg = float(format(avg_s, '.1f'))
    7     s[k] = avg
    8 print(s, end=" ", flush=True)

    14. 现有一个字典存放学生学号和三门课程成绩
    1 # dictScore = {"101":[67,88,45],"102":[97,68,85],"103":[98,97,95],"104":[67,48,45],"105":[82,58,75],"106":[96,49,65]}
    2 # 返回每一个学生学号和自己最高分
    3 dictScore = {"101": [67, 88, 45], "102": [97, 68, 85], "103": [98, 97, 95], "104": [67, 48, 45], "105": [82, 58, 75], "106": [96, 49, 65] }
    4 for k, v in dictScore.items():
    5     print(k, max(v))

    15. 求1~100的素数
    1 import math
    2 for i in range(2,101):
    3     flag = True
    4     for j in range(2,int(math.sqrt(i))+1):
    5         if(i%j)==0:
    6            flag = False
    7            break
    8     if flag:
    9         print(i,end=" ")
    
    
    
    
    
     
     
     
     
     
  • 相关阅读:
    Andriod 简介
    Java 记录日志
    Java 国际化
    Java 正则表达式的使用
    Java 日期、时间类,日期、时间的格式化
    Java Random类、ThreadLocalRandom类
    Java Math类、BigDecimal类、NumberFormat类、浮点数的精确度问题
    Java String类、StringBuilder类、StringBuffer类
    Java System类、RunTime类、Object类、垃圾回收
    span 右浮动折行 解决ie6/7中span右浮动折行问题
  • 原文地址:https://www.cnblogs.com/chaunceyji/p/14833718.html
Copyright © 2020-2023  润新知