python练习题6

基础题

1,打印100以内7的倍数

for i in range(1, 101):
   if i % 7 ==0:
        print(i)

2,打印100以内的奇数

for i in range(1,101,2):
    print(i)

3,打印100以内所有偶数的和

老师的方法:
print(sum(range(0,101,2)))
​
方式一:
num = 1
sum = 0
while num <= 100:
    if num % 2 == 0:
        sum += num
    num += 1
print(sum)
​
方式二:
sum = 0
for i in range(0, 101, 2):
    sum += i
print(sum)

4,判断一个数是不是合数。(指自然数中除了能被1和本身整除外,还能被其他的数整除(不包括0)的数。)

老师的方法
num=int(input("请输入一个数字:"))
for i in range(2,num):
    if num % i ==0:
        print("合数")
        break
else:
    print("不是合数")
        
    
​
自己的方法:
num = int(input("请输入一个数:"))
i = 2
while num > i:
    if num % i == 0:
        print(num, "是合数")
        break
    i += 1
else:
    print(num, "不是合数")

5,判断一个数是不是素数。(除了1和它本身以外不再有其他的除数整除。)

num = int(input("请输入一个数字:"))
t = 2
while num > t:
    if num % t == 0:
        print(num, "不是是素数")
        break
    t += 1
else:
    print(num, "是素数")

6,求整数1~100的累加值,但要求跳过所有个位为3的数。

sum = 0
for i in range(1, 101):
    if i % 10 == 3:
        continue
    sum += i
print(sum)

7, 一个新入职,月工资为2000元的员工,每年涨当年工资5%,20年后的月工资是多少?

print(2000*(1+0.05)**20)

8, 山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。 问:小和尚要挑几 次水才可以把水缸挑满?通过循环解决这个问题。

sum=0
for i in range(15,50,5):
    sum+=1
print(sum)

9, 打印100–200之间所有能被3或者7整除的数

for i in range(100, 201):
    if i % 3 == 0 or i % 7 == 0:
        print(i)

10, 计算10的阶乘(12345678910, n的阶乘:12……*n)

import math
print(math.factorical(10))
​

11, 计算1+3+5+...+99的和

老师的方法:
print(sum(range(1,100,2)))
​
自己的方法:
sum = 0
for i in range(1, 100, 2):
    sum += i
print(sum)

12, 输出20~80之间能被3整除的整数, 每行5个

老师的方法
count = 0
for i in range(20, 81):
    if i % 3 == 0:
        print(i, end=" ")
        count += 1
        if count % 5 == 0:
            print()
print()
​
自己的办法
j = 0
for i in range(20, 81):
    if i % 3 == 0:
        print(i, end=" ")
        j = j + 1
        if j == 5:
            print()
            j = 0

13, 打印1000~2000年中所有的闰年, 每行4个

老师的方法
count=0
for i in range(1000,2001):
    if (i % 4==0 and i % 100 !=0) or i % 400==0:
        print(i,end=" ")
        count+=1
        if count % 4==0:
            print()
print()
​
​
自己的方法
h = 0
for i in range(1000, 2001):
    if (i % 4 == 0 and i % 100 != 0) or i % 400 == 0:
        print(i, end='\t')
        h += 1
        if h == 4:
            print()
            h = 0

14, 输出99乘法表 ''' 1 * 1 = 1 1 * 2 = 2 2 * 2 = 4 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81 '''

for i in range(1,10):
    for j in range(1,i+1):
        print(f"{j}*{i}={i*j}",end="\t")
    print()

字典题目

'''

  1. 声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明) stu_info = {'name': '张三', 'age': 18, 'score': 88, 'tel': 18866669999, 'sex': '不明'}

    list1= {'name': '张三', 'age': 18, 'score': 88, 'tel': 18866669999, 'sex': '不明'}
  1. 声明一个列表,在列表中保存6个学生的信息(6个(题1)中的字典)

    score:表示成绩 低于60分表示不及格

    age: 表示年龄 小于18表示未成年

    tel: 表示手机号

    (1) 统计不及格学生的个数 (2) 打印不及格学生的名字和对应的成绩 (3) 统计未成年学生的个数 (4) 打印手机尾号是8的学生的名字 (5) 打印最高分和对应的学生的名字 (6) 删除性别不明的所有学生(选做) (7) 将列表按学生成绩从大到小排序(难,选做) 提示: 方式一: 排序算法 方式二: sort(key=)

    (1)统计不及格学生的个数
    list = [
        {'name': '张三', 'age': 18, 'score': 50, 'tel': 18866669999, 'sex': '不明'}
        {'name': '李四', 'age': 16, 'score': 88, 'tel': 18866669998, 'sex': '女'}
        {'name': '张大爷', 'age': 17, 'score': 48, 'tel': 18866669999, 'sex': '男'}
        {'name': '陈一军', 'age': 61, 'score': 85, 'tel': 18866669998, 'sex': '男'}
        {'name': '陈二军', 'age': 49, 'score': 49, 'tel': 18866669999, 'sex': '女'}
        {'name': '陈三军', 'age': 49, 'score': 96, 'tel': 18866669999, 'sex': '不明'}
    ]
    num = 0
    for i in list:
        if i['score'] < 60:
            num += 1
    print(num)
    ​
    (2)打印不及格学生的名字和对应的成绩
    for j in list:
        if j['score'] < 60:
           print(j["name"],j["score"],end=" ")
           
    (3)统计未成年学生的个数
    num = 0
    for k in list:
        if k['age'] < 18:
            num += 1
    print(num)
    ​
    (4) 打印手机尾号是8的学生的名字
    for g in list:
        if g['tel'] % 10 == 8:
            print(g["name"])
    ​
    (5) 打印最高分和对应的学生的名字
    #假设第一个学生的成绩是最高分.max_score
    max_score=list[0]['score']
    for stu in list:
        if stu['score']>max_score:
            max_score=stu['score']
    print("最高分是:",max_score)
    ​
    for stu in list:
        if stu['score']==max_score:
            print("最高分学生的名字是:",stu['name'])
    ​
    # (6) 删除性别不明的所有学生(选做)
    ​
    #第一种方式:
    i = 0
    while i < len(list):
        if list[i]['sex'] == '不明':
            list.pop(i)
            i-=1
        i+=1
    print(list)
    ​
    # 第二种方式:
    list1 = []
    for stu in list:
        if stu['sex'] != "不明":
            list1.append(stu)
    print(list1)
    ​
    (7) 将列表按学生成绩从大到小排序(难,选做)
    # 定义一个函数,返回每个学生的成绩
    def pai(ele):
        return ele['score']     # return表示返回
    ​
    ​
    list.sort(reverse=True, key=pai) # key 表示排序的依据(成绩)
    for stu in list:
        print(stu)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值