python课程编程题汇总(中)

python编程题汇总

众所周知,由于疫情的原因,大家都在上网课,我也不例外啦~
用这个贴子来记录也和大家分享一下我们课上的编程讨论题
上篇在这→python课程编程题汇总(上)
下篇在这→python课程编程题汇总(下)

1、判断闰年

思考与练习
定义一个函数is_leap(year)函数,改函数可以判断year是否为闰年,若是闰年,则返回True,否则返回False。
闰年是公历中的名词,能被4整除但不能被100整除,或能被400整除的年份即为闰年。

def is_leap(year):
    if (year%4==0 and year%100!=0) or year%400==0:
        print("{}年是闰年".format(year))
    else:
        print("{}不是闰年".format(year))
year=eval(input("请输入一个年份:"))
is_leap(year)

2、求 ∑100

思考与练习
分别利用循环和递归方式求 ∑100 (求1到100的和)

def qiuhe(N):
    if N==1:
        return 1
    else:
        return N+qiuhe(N-1)
n=100
sum=qiuhe(n)
print("∑{}={}".format(n,sum))

3、元素分类

有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。即: {‘k1’: 大于66的所有值列表, ‘k2’: 小于66的所有值列表}

li= [11,22,33,44,55,66,77,88,99,90]
Li={}
li1=[]
li2=[]
for i in li:
    if i>66:
        li1.append(i)
    else:
        li2.append(i)
Li["k1"]=li1
Li["k2"]=li2
print(Li)

4、输出商品列表

思考与练习
输出商品列表,用户输入序号,显示用户选中的商品
商品列表: goods = [{“name”: “电脑”, “price”: 1999}, {“name”: “鼠标”, “price”: 10}, {“name”: “游艇”, “price”: 20}, {“name”: “美女”, “price”: 998}, ]
要求:
1):页面显示 序号 + 商品名称 + 商品价格,如
1 电脑 1999
2 鼠标 10
2):用户输入选择的商品序号,然后打印商品名称及商品价格
3):如果用户输入的商品序号有误,则提示输入有误,并重新输入
4):用户输入Q或者q,退出程序

goods = [{"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}]
print("{:^4}{:^6}{:^6}".format("序号","商品名称","商品价格"))
for i in range(1,5):
    print("{:^4}{:^10}{:^10}".format(i,goods[i-1]['name'],goods[i-1]['price']))
N=input("请输入选择的商品序号:")
while(N):
    if N=='Q'or N=='q':
        break
    n=eval(N)
    if type(n)!=int or n>4 or n<1 :
        print("输入有误,请重新输入")
        N=input("请输入选择的商品序号:")
    else:
        print("{:^4}{:^6}{:^6}".format("序号","商品名称","商品价格"))
        print("{:^4}{:^10}{:^10}".format(n,goods[n-1]['name'],goods[n-1]['price']))
        N=input("请输入选择的商品序号:")

5、变化随机列表

有一个列表,其中包括10个元素,这些元素是10-100之间随机数,要求将这个列表中的每一个元素一次向前移动一个位置,第一个元素移到列表的后面,要求移动2个元素,输出这样的列表。

import random as r
li=[]
for i in range(10):
    n=r.randint(10,100)
    li.append(n)
print(li)
def yidong(li):
    x=li.pop(0)
    li.append(x)
for i in range(2):
    yidong(li)
print(li)

6、华为机测题:”去重“

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性
他先用计算机生成了N个1~1000之间的随机整数(N<=1000),N是用户输入的,对于其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不同的学生的学号,然后再把这些数从小到大排序,按照排好的顺序去找同学做调查,请你协助明明完成“去重”与排序工作

import random as r
N=eval(input("N="))
li=[]
for i in range(N):
    n=r.randint(1,1000)
    li.append(n)
Li=list(set(li))
Li.sort()
print(Li)

7、随机生成卡号

随机生成100个卡号;卡号以6102009开头, 后面3位依次是 (001, 002, 003, 100),默认每个卡号的初始密码为"123456";
输出卡号和密码信息, 格式如下:
卡号 密码
6102009001 123456

kahao=[]
for i in range(6102009001,6102009101):
    zhanghao={}
    zhanghao["卡号"]=i
    zhanghao["密码"]=123456
    kahao.append(zhanghao)
print("{:^10}{:^6}".format("卡号","密码"))
for i in kahao:
    print("{:^12}{:^8}".format(i["卡号"],i["密码"]))

优化版

"""
python字典fromkeys()函数用于创建一个新字典,
以序列seq中元素做字典的键,value为字典所有键对应的初始值。
格式如下:
dict.fromkeys(seq[,value])
"""
card=set()
for i in range(100):
    card.add("6102009%.3d"%i)
card_id={}.fromkeys(card,"123456")
print("卡号\t\t\t\t\t密码")
for i,j in card_id.items():
    print("{}\t\t\t{}".format(i,j))

8、员工工资统计

现将员工的工资修改为
salary1 = {‘腾讯公司张三’:5500,‘腾讯公司张超’:3800,‘微软公司王五’:5600,‘微软公司李四’:2000, ‘腾讯公司王小二’:3400,‘微软公司张强’:4500,‘微软公司王琼’:4500}
1).统计微软公司和腾讯公司各多少人
2). 统计微软公司姓王的平均工资
3). 统计微软公司和腾讯公司平均工资各多少
4). 把腾讯公司员工全部开除

salary1={'腾讯公司张三':5500,
           '腾讯公司张超':3800,
           '微软公司王五':5600,
           '微软公司李四':2000,
           '腾讯公司王小二':3400,
           '微软公司张强':4500,
           '微软公司王琼':4500}
salary=salary1.items()
tengxun=[]
weiruan=[]
for i in salary:  #i为元组类型
    print(i)
    if i[0][0]=='腾':
        tengxun.append(i)
    else:
        weiruan.append(i)
        
def Q1(li):
    return len(li)

def Q2(li):
    sum=0
    count=0
    for i in li:
        if i[0][4]=='王':
            sum=sum+i[1]
            count+=1
    aver=sum/count
    return aver

def Q3(li):
    sum=0
    count=0
    for i in li:
        sum=sum+i[1]
        count+=1
    aver=sum/count
    return aver
print("微软公司有{}个人,腾讯公司有{}个人".format(Q1(weiruan),Q1(tengxun)))
print("微软公司姓王的平均工资为{}".format(Q2(weiruan)))
print("微软公司平均工资为{}元,腾讯公司平均工资为{}元".format(Q3(weiruan),Q3(tengxun)))
print("把腾讯公司员工全部开除后,如下\n{}".format(dict(weiruan)))

9、python源文件改写

编写一个程序,读取一个Python源程序文件,将文件中所有除保留字外的小写字母换成大写字母,生成后文件要能被Python解释器正确执行。

#程序
# -*- coding:utf-8 -*-
import jieba
import keyword
f=open("7.4(3).py","r",encoding="utf-8")
txt=f.read()
f.close()
f=open("7.4(3).py","w",encoding="utf-8")
s=jieba.lcut(txt)
pas=''
for i in range(len(s)):
    if keyword.iskeyword(s[i]):
        continue
    else:
        s[i]=s[i].upper()
        pas = "".join(s)
f.write(pas)
f.close()
#需改写的源程序
s=0
l=[1,2,3,4,5]
for i in l:
    s+=i

10、turtle 库常用函数

turtle.forward(distance)
turtle.right(degree)
turtle.left(degree)
turtle.pendown()
turtle.goto(x,y)
turtle.penup()
turtle.circle()
说出turtle 库 这些函数的功能

1.向前行进
2.向右转
3.向左转
4.放下画笔
5.行进目标的绝对坐标
6.抬起画笔
7.根据半径r绘制extent角度的弧形

以上只是我个人解法和理解,如果有不同的想法欢迎大家一起讨论~
都看到这里了,给我点个赞呗~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值