python基础练习5

这篇博客提供了多个关于Python基础知识的填空题和编程练习,涵盖了列表操作、循环结构等核心概念。其中包括列表乘法、成员资格检查、列表切片、排序、删除元素等操作的示例和应用。此外,还提出了几个需要编程实现的问题,如查找列表中元素、计算偶数和、平均分计算、元素删除、日期处理以及简单的游戏和图形打印等挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

填空

1.表达式[1, 2, 3]*3的值为____________。
2.表达式3 in [1, 2, 3, 4]的值为__________。
表达式[3] in [1, 2, 3, 4]的值为___。
3.使⽤用列表与整数的乘法生成包含10个数字5的列列表,可以写为__________。
4.任意长度的非空列列表中最后⼀一个元素的下标为__________。
5.表达式list(range(1, 10, 3))的值为__________。
表达式list(range(10, 1, -3))的值为__________。
表达式list(range(5))的值为______________。
6.列表的___方法删除首次出现的指定元素,如果列表中不存在要删除的元素,
则抛出异常。
7.假设列表对象a的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片:
a[3:7] = ;
a[:5:2] =

a[-5:] =
a[-7:-2:2] =

a[:5:-1] = ________________
a[8:-9:-1] = ______________
8.已知a = [7,3,4],则a.sort(reverse=True),则a = ________________
9.已知a = [7,3,4,9,10,3,12,3,17],执⾏行行a.pop()后, a=
;执⾏行行a.pop(0)
后, a=
;执⾏行行a.remove(3)后, a=;执⾏行行del a[:2]后,
a=
____
10.已知a = [1,2,3],执⾏行行a.insert(1,4)后, a = _______;执⾏行行a.append(10)后, a
= ________;执⾏行行a.extend([20,30])后, a = ________

答案:
1.[1, 2, 3, 1, 2, 3, 1, 2, 3]
2.True;False
3.[5] * 10
4.-1
5.[1, 4, 7];[10, 7, 4];[0, 1, 2, 3, 4]
6.remove
7.[6, 7, 9, 11];[3, 5, 7];[9, 11, 13, 15, 17];[6, 9, 13];[17, 15, 13, 11];[15, 13, 11, 9, 7, 6, 5]
8.[7, 4, 3]
9.[7, 3, 4, 9, 10, 3, 12, 3]; [3, 4, 9, 10, 3, 12, 3, 17]; [7, 4, 9, 10, 3, 12, 3, 17];[4, 9, 10, 3, 12, 3, 17]
10.[1, 4, 2, 3];[1, 2, 3, 10];[1, 2, 3, 20, 30]

列表

1.不使⽤列表的index函数,⾃⼰写程序查找指定元素。
•要查找的元素从键盘输⼊。
•默认从左向右查找,找到第⼀个元素就停⽌。

答案:

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
num = eval(input("请输入要查找的数字:"))
if num in list1:
    for i in range(len(list1)):
        if list1[i] == num:
            print("该数字的下标为%d" %(i))
else:
    print("超出范围")

2.⾃定义⼀个数字列表,求列表中所有偶数元素的和。

答案:

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sumNum = 0
for i in list1:
    if i % 2 == 0:
        sumNum += i
print(sumNum)

3.B哥去参加⻘年歌⼿⼤奖赛,有10个评委打分,去掉⼀个最⾼⼀个最低,求平均分。

答案:

scoreList = [98, 100, 23, 65, 54, 88, 79, 75, 98, 91]
maxSco = -1
minSco = 999
avgSco = 0
for i in scoreList:
    if maxSco < i:
        maxSco = i
    if minSco > i:
        minSco = i
scoreList.remove(maxSco)
scoreList.remove(minSco)
for i in scoreList:
    avgSco += i
avgSco /= len(scoreList)
print("平均分为%d" %(avgSco))

4.给定⼀个列表:将列表中指定的某个元素全部删除。

答案:

list1 = [1, 4, 6, 34, 5, 4, 87, 4]
while 4 in list1:
    list1.remove(4)
print(list1)

5.输⼊某年某⽉某⽇,判断这⼀天是这⼀年的第⼏天(要考虑闰年)。

答案:

year, month, day = eval(input("请输入年月日,以逗号分隔:"))
count = 0
monthDayCountNormal = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
monthDayCountUnormal = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    for i in range(month - 1):
        count += monthDayCountUnormal[i]
else:
    for i in range(month - 1):
        count += monthDayCountNormal[i]
count += day
print("这是%d年的第%d天" %(year, count))

循环

1.猜数字。
从键盘上输⼊⼀个整数,如果等于你规定的整数,就猜中了,如果⼩于规定的数,提示“⼩了”,否则提示“⼤了”,直到猜中位置。

答案:

import random
answer = random.randint(1,100)
guess = -1
while True:
    guess = eval(input("请猜数:"))
    if guess > answer:
        print("大了")
    elif guess < answer:
        print("小了")
    else:
        break
print("猜对了")

2.打印图形(使⽤循环)。
在这里插入图片描述

答案:

n = eval(input("输入n的值:"))
for x in range(1, n + 1):
    for y in range(0, ((2 * n - 1) - (2 * x - 1)) // 2):
        print(" ", end="")
    for y in range(0, 2 * x - 1):
        print("*", end="")
    for y in range(0, x - 1):
        print(" ", end="")
    print()

3.python1904班有10个同学,请你设计⼀个程序输⼊每个同学的测验成绩,求总成绩和平均成绩。

答案:

scoreList = []
sumSco = 0
avgSco = 0
for i in range(10):
    score = eval(input("请输入学生的成绩:"))
    scoreList.append(score)
for score in scoreList:
    sumSco += score
avgSco = sumSco / len(scoreList)
print("总成绩为%d,平均成绩为%d" %(sumSco, avgSco))

4.四则计算器,从键盘输⼊两个数和⼀个运算符(±*/),根据运算符计算表达式的结果。提示:请考虑除数为0的情况。

在这里插入图片描述
答案:

while True:
    num1, num2 = eval(input("请输⼊两个数,⽤逗号隔开:"))
    symbol = input("请输⼊运算符(+-*/)(输入其他以退出):")
    if symbol == "+":
        res = num1 + num2
        print("%d + %d = %d" %(num1, num2, res))
    elif symbol == "-":
        res = num1 - num2
        print("%d - %d = %d" %(num1, num2, res))
    elif symbol == "*":
        res = num1 * num2
        print("%d * %d = %d" % (num1, num2, res))
    elif symbol == "/":
        res = num1 / num2
        print("%d / %d = %.2f" %(num1, num2, res))
    else:
        exit()

5.求1000以内的素数。

答案:

i = 2
while i < 1000:
    div = 2
    while div < i:
        if i % div == 0:
            break
        div += 1
    else:
        print(i, end=" ")
    i += 1

6.输出1000以内的所有⽔仙花数。

答案:

for i in range(100, 1000):
    x = i % 10
    y = i // 10 % 10
    z = i // 100 % 10
    if x ** 3 + y ** 3 + z ** 3 == i:
        print(i, end=" ")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值