基础题
1.格式控制
键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为20个字符,减号字符-填充,右对齐,带千
位分隔符。如果输入正整数超过20位,则按照真实长度输出。
n = eval(input("请输入正整数:"))
print("{:->20,}".format(n))
#输入一个字符,作为填充字符,打印一个字符串,并使得该字符串居中,且左右两侧填充该字符。
a =input("输入字符:")
s = "Python"
print("{:{}^30}".format( s,a))
格式化 : 填充 对齐 宽度 【千位分隔符 保留小数 其他】
减号字符-填充 –
左对齐 < 右对齐 > 居中 ^
带千位分隔符 ,
进制转换 二进制 b 八进制o 十六进制 x
2.数据容器操作
a和b是两个列表变量,列表a为[3,6,9]已给定,键盘输入列表b,将a列表的三个元素插入到b列表中对应的前三个元素的后面,并显示输出在屏幕上。
例如:键盘输入列表b为[1,2,3],因此,屏幕输出计算结果为[1,3,2,6,3,9]
a = [3,6,9]
b = eval(input()) #例如:[1,2,3]
j=1
for i in range(len(a)):
b.insert(j,a[i])
j+=2
print(b)
按照小写字母a到z顺序组成包含26个学母的字符表,其中,第一个字符a序号为0,依次递增。程序获得用户输入的起始字母序号及连续输出字母的个数,分别记为变量h和w,以逗号隔开,并根据字符表输出从起始字母序号h开始的连续w个字母。
h,w = eval(input("请输入起始英文字母的序号和连续输出的个数,逗号隔开:"))
cstr = ''
for i in range(h,w):
c = chr(ord('a')+h+i)
print(c)
cstr += c
print(cstr)
若m整除n,则m是n的因子。例如:9的因子有1、3、9。定义一个因子函数,用于求整数n的所有因子列表。用户输入一个整数n,调用该因子函数,输出整数n所有因子的列表;如果输入非法字符,则检测异常,输出“输入有误!”。
def allFactor(n):
if n <=1: return [n]
if n <=3: return [1,n]
i=1
rlist=[]
while i <= n:
if n % i == 0:
rlist.append(i)
i+=1
return rlist
try:
n=eval(input("请输入一个正整数:"))
print("整数{}的因子是:{}".format(n,allFactor(n)))
except:
print("输入错误!")
a和b是两个列表变量,列表a为[3, 6, 9]已给定,键盘输入列表b,计算a中元素与b中对应元素乘积的累加和。例如:键盘输入列表b为[1,2, 3],累加和为1*3+2*6+3*9=42,因此,屏幕输出计算结果为42
a = [3,6,9]
b = eval(input()) #例如:[1,2,3]
s=0
b=list(b)
for i in range(3):
s += a[i]*b[i]
print(s)
进阶题-标准库使用
random 随机生成
以123为随机数种子,随机生成10个在1 (含)到999 (含)之间的随机整数,每个随机数后跟随一个逗号进行分隔,屏幕输出这10个随机数。
import random
random.seed(123) #随机种子
for i in range(10):
print(random.randint(1,999), end=",")
jieba库
键盘输入一句话,用jieba分词后,将切分的词组按照在原话中逆序输出到屏幕上,词组中间没有空格
输入:我爱妈妈
输出:妈妈爱我
import jieba
txt = input("请输入一段中文文本:")
ls=jieba.lcut(txt)
for i in ls[::-1]:
print(i,end='')
turtle 图形库
在屏幕上绘制正方形及其内接圆形。其中,正方形左下角坐标为(0,0),边长为黑色,长度200像素,线宽1像素,内切圆为绿色,线宽5像素,内部以红色填充。
import turtle as t
for i in range(4):
t.fd(200)
t.left(90)
t.penup()
t.goto(100,0)
t.pendown()
t.color("green","red")
t.pensize(5)
t.begin_fill()
t.pensize()
t.circle(100)
t.end_fill()
t.done()
已知turtle库的circle(r,steps=0)函数可以绘制多边形,其中r代表多边形的边长,steps代表多边形的边数,默认是0。使用turtle库的circle函数,在屏幕上绘制5个等距排列的多边形,边长50像素,颜色按顺序从颜色列表color中获取。最左边的五边形最低的顶点坐标是[-200,0],自左到右每个五边形的最低顶点间的距离是70像素。效果如下图所示。
import turtle as t
color = ['red','green','blue','orange','pink']
for i in range(5):
t.penup()
t.goto([-200+i*70,0])
t.pendown()
t.pencolor(color[i])
t.circle(50, steps = 5)
t.done()
使用turtle库的turtle. right()函数和turtle.fd()函数绘制一个菱形,边长为200像素,4个内角度数为2个60度和2个120度,效果如图所示。
import turtle
turtle.right(-30)
turtle.fd(200)
turtle.right(60)
turtle.fd(200)
turtle.right(120)
turtle.fd(200)
turtle.right(60)
turtle.fd(200)
turtle.right(120)
键盘输入一组人员的姓名、性别、年龄等信息,信息间采用空格分隔,每人一行,空行回车结束录入,示例格式如下:
张三 男 23
李四 女 21
王五 男 18
计算并输出这组人员的平均年龄(保留2位小数)和其中男性人数,格式如下:平均年龄是20.67 男性人数是2
data = input() # 姓名 年龄 性别
sumage=0
n=0
man=0
while data:
ls=data.split(" ")
n+=1
sumage+=int(ls[2])
if ls[1]=="男":
man+=1
data = input()
print("平均年龄是{:.2f} 男性人数是{}".format(sumage/n,man))
综合题
《命运》是著名科幻作家倪匡的作品。这里给出《命运》的一个网络版本文件,文件名为“命运. txt”。
问题1 (5分) :在PY301-1. py文件中修改代码,对“命运. txt”文件进行字符频次统计,输出频次最高的中文字符(不包含标点符号)及其频次,字符与频次之间采用英文冒号”:”分隔,示例格式如下:
理:224
f=open("命运.txt","r")
txt=f.read()
d = {}
for i in txt:
if i not in ",。… !‘’”“ ":
d[i]=d.get(i,0)+1
l=list(d.items())
l.sort(key=lambda x:x[1],reverse=True)
print("{}:{}".format(l[0][0],l[0][1]))
f.close()
问题2 (5分) :在PY301-2. py文件中修改代码,对“命运. txt”文件进行字符频次统计,按照频次由高到低,屏幕输出前10个频次最高的字符,不包含回车符,字符之间无间隔,连续输出,示例格式如下:
理斯卫…(后略,共10个字符)
问题3 (10分) :在PY301-3. py文件中修改代码,对“命运. txt”文件进行字符频次统计,将所有字符按照频次从高到低排序,字符包括中文、标点、英文等符号,但不包含空格和回车。将排序后的字符及频次输出到考生文件夹下,文件名为“命运-频次排序. txt”。字符与频次之间采用英文冒号”:”分隔,各字符之间采用英文逗号”,”分隔,参考CSV格式, 最后无逗号,文件内部示例格式如下:
理:224,斯:120,卫:100
错题本
import jieba
s = input("请输入一个字符串")#俄罗斯举办世界杯
n = len(s)
m = len(jieba.lcut(s))
print("中文字符数为{},中文词语数为{}。".format(n, m))
#中文字符数为8,中文词语数为3。
txt = input("请输入类型序列: ")
t=txt.split()
d = {}
for i in range(len(t)):
d[t[i]]=d.get(t[i],0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in ls:
print("{}:{}".format(k[0], k[1]))
f=open("name.txt")
names=f.readlines()
f.close()
f=open("vote.txt")
votes=f.readlines()
f.close()
f.close()
f=open("vote1.txt","w")
D={}
NUM=0
for vote in votes:
num = len(vote.split())
if num==1 and vote in names:
D[vote[:-1]]=D.get(vote[:-1],0)+1
NUM+=1
else:
f.write(vote)
f.close()
l=list(D.items())
l.sort(key=lambda s:s[1],reverse =True)
name=l[0][0]
score=l[0][1]
print("有效票数为:{} 当选村长村民为:{},票数为:{}".format(NUM,name,score))
n = input()
s = "〇一二三四五六七八九"
for c in "0123456789":
n=n.replace(c,s[int(c):int(c)+1])
print(n)
sumtime = 0
percls = []
ts = {}
with open('out.txt', 'r') as f:
for i in f:
i=i.split(',')
ts [i[0]]=i[2]
sumtime+=eval(i[1])
print('the total execute time is ', sumtime)
tns = list(ts.items())
tns.sort(key=lambda x: x[1], reverse=True)
for i in range(3):
print('the top {} percentage time is {}, spent in "{}" operation'.format(i, tns[i][1],tns[i][0]))
n = eval(input("请输入一个整数:"))
for i in range(1,n):
for j in range(1,n):
if j>=i:
print(j,end=" ")
print()
import random
n=eval(input("获得用户输入的一个整数:"))
random.seed(100)
for i in range(1,11):
if i<10:
print(random.randint(1,n),end=',')
else:
print(random.randint(1,n))
h,w = eval(input("请输入起始英文字母的序号和连续输出的个数,逗号隔开:"))
cstr = ''
for i in range(w):
c = chr(ord("a")+h +i)
cstr += c
print(cstr)
def allFactor(n):
if n <=1: return [n]
if n <=3: return [1,n]
i=1
rlist=[]
while i <= n:
if n % i == 0:
rlist.append(i)
i+=1
return rlist
try:
n=eval(input("请输入一个正整数:"))
print("整数{}的因子是:{}".format(n,allFactor(n)))
except:
print("输入错误!")
import turtle as t
for i in range(4):
t.fd(200)
t.left(90)
t.penup()
t.goto(100,0)
t.pendown()
t.color("green","red")
t.pensize(5)
t.begin_fill()
t.circle(100)
t.end_fill()
t.done()
import turtle as t
color = ['red','green','blue','orange','pink']
for i in range(5):
t.penup()
t.goto(-200+i*70,0)
t.pendown()
t.pencolor(color[i])
t.circle(50 , steps = 5)
t.done()
今天开心嘛!
不开心