众所周知,由于疫情的原因,大家都在上网课,我也不例外啦~
用这个贴子来记录也和大家分享一下我们课上的编程讨论题
上篇在这→python课程编程题汇总(上)
下篇在这→python课程编程题汇总(下)
思考与练习
定义一个函数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)
思考与练习
分别利用循环和递归方式求 ∑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))
有如下值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)
思考与练习
输出商品列表,用户输入序号,显示用户选中的商品
商品列表: 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("请输入选择的商品序号:")
有一个列表,其中包括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)
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性
他先用计算机生成了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)
随机生成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))
现将员工的工资修改为
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)))
编写一个程序,读取一个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
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角度的弧形
以上只是我个人解法和理解,如果有不同的想法欢迎大家一起讨论~
都看到这里了,给我点个赞呗~