目录
第二章Python语言基本语法元素
第三章 基本数据类型
第四章 程序的控制结构
第五章 函数和代码复用
第六章 组合数据类型
第七章 文件和数据格式化
1.获得用户输入的一个整数N,计算并输出N的32次方。
N=eval(input("请输入一个整数N:"))
print(N**32)
2.获得用户输入的一段文字,将这段文字进行垂直输出。
str=input("请输入一句话:")
n=len(str)
for i in range(n):
print(str[i])
3.获得用户输入的一个合法算式,例如1.2+3.4,输出运算结果。
print(eval(input("请输入一个合法算式:")))
4.获得用户输入的一个小数,提取并输出其整数部分。
num=eval(input("请输入一个小数:"))
print(int(num))
5.下面这段代码能够获得用户输入的一个整数N,计算并输出1到N相加的和。然而,这段代码存在多处语法错误,请指出错误所在并纠正。
n=eval(input("请输入整数N:"))
sum=0
for i in range(n):
sum+=i+1
print(n)
print("1到N求和结果:{}".format(sum))
编程题
1.获得用户输入的一个整数,输出该整数百位及以上数字。
num=input('请输入一个整数:')
if len(num)<3:
print('该整数无百位及以上的数字')
else:
print(num[:-2])
2.获得用户输入的一个字符串,将字符串按空格分割,然后逐行打印出来。
str=input("请输入一个字符串:")
n=" ".join(str)
for i in n:
print(i)
3.程序读入一个表示星期几的数字(1-7),输出对应的星期字符串名称。例如:输入3,返回“星期三”。
day=eval(input("请输入星期几的数字(1-7):"))
week=["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
print(week[day-1])
4.设n是一个自然数,如果n的各位数字反向排列所得的自然数与n相等,则被称为回文数。从键盘输入一个5位数字,请编写程序判断这个数字是不是回文数字。
num=input("请输入任意一个5位数:")
if num[0]==num[4] and num[1]==num[3]:
print("这个数字是回文数")
else:
print("这个数字不是回文数")
或者
num=input("请输入任意自然数:")
n=num[::-1]
if num==n:
print("这个数字是回文数")
else:
print("这个数字不是回文数")
5.输入一个十进制整数,分别输出其二进制、八进制、十六进制字符串。
num=eval(input("请输入一个十进制整数:"))
print("十进制{0}转换为二进制数为{0:b},转换为八进制数为{0:o},\
转换为十六进制数为{0:x}".format(num,))
1.输入一个年份,输出是否为闰年。#闰年条件,能被4整除但不能被100整除,或者能被400整除的年份都是闰年。
year=eval(input("请输入一个年份:"))
if year % 4 == 0 and year % 100 != 0:
print("{}是闰年".format(year))
elif year % 400 == 0:
print("{}是闰年".format(year))
else:
print("{}不是闰年".format(year))
2.最大公约数计算。获得两个整数,求出这两个最大整数的最大公约数和最小公倍数。最大公约数的计算一般使用辗转相除法,最小公倍数则使用两个数的乘积除以最大公约数。
a=int(input("请输入第一个数:"))
b=int(input("请输入第二个数:"))
m=max(a,b)
n=min(a,b)
while m%n!=0:
m,n=n,m%n
print("两个数字的最大公约数为{}".format(n))
print("两个数字的最小公倍数为{}".format(a*b/n))
3.统计不同字符个数。用户从键盘键入一行字符,编写一个程序,统计并输出其英文字符、数字、空格和其他字符的个数。
str=input("请输入一行字符:")
m=n=o=p=0
for c in str:
if "a"<=c<="z" or "A"<=c<="z":
m+=1
elif "0"<=c<="9":
n+=1
elif c==" ":
o+=1
else:
p+=1
print("英文字符个数为{},数字字符个数为{},\
空格字符个数为{},其他字符个数为{}".format(m,n,o,p))
4.猜数字游戏续。当用户输入的不是整数(如字母、浮点数等)时,程序会终止执行退出。改编题目1中的程序,当用户输入错误时给出“输入内容必须为整数!”的提示,并让用户重新输入。
import random
targe=random.randint(1,1000)
count=0
while True:
try:
guess=eval(input("请输入一个整数:"))
except:
print("输入内容必须为整数")
continue
count+=1
if guess>targe:
print("猜大了")
elif guess
5.羊车门问题。有三扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。请问:参赛者更换选择后能否增加猜中汽车的机会?这是一个经典问题。请使用random库对这个随机事件进项预测,分别输出参赛者改变选择和坚持选择获胜的概率。
import random
times=1000 #实验次数
guess_1_count=0 #改变的人猜中的次数
guess_2_count=0 #坚持的人猜中的次数
for i in range(times):
car=random.randint(1,3)
guess=random.randint(1,3)
if guess==car: #坚持选择的人始终选中的是车
guess_2_count+=1
if guess!=car: #改变选择的人能选中说明最开始选中的不是车
guess_1_count+=1
print("坚持选择获胜的概率为{:.1%}".format(guess_2_count/times))
print("更换选择获胜的概率为{:.1%}".format(guess_1_count/times))
1.实现isNum()函数,参数为一个字符串,如果这个字符串属于整数、浮点数或复数的表示,则返回True,否则返回False。
def isNum(x):
try:
x=eval(x)
if type(x)==type(1) or type(x)==type(1.1) or type(x)==type(1+1j):
return True
else:
return False
except:
return False
x=input("请输入一个字符串:")
print(isNum(x))
2.实现isPrime()函数,参数为整数,要有异常处理。如果整数是质数,返回True,否则返回False。
def isPrime(x):
while True:
try:
x=eval(x)
while type(x)!=int or x<=1:
x=eval(input("输入的不是大于1的整数!请重新输入:"))
if x==2:
return True
for i in range(2,x):
if x%i==0:
return False
else:
return True
break
except:
x=input("输入的不是大于1的整数!请重新输入:")
continue
x=input("请输入的一个大于1的整数:")
print(isPrime(x))
3.编写一个函数计算传入字符串中数字、字母、空格以及其他字符的个数。
def num(str):
a=b=c=d=0
for i in str:
if "0"<= i <="9":
a+=1
elif "a"<= i <="z" or "A"<= i <="Z":
b+=1
elif i==" ":
c+=1
else:
d+=1
print("数字{}个,字母{}个,空格{}个,其他字符{}个".format(a,b,c,d))
str=input("请输入一段字符串:")
num(str)
4.编写一个函数,打印200以内的所有素数,以空格分隔。
def n(x):
for i in range(2,x):
n=True
for j in range(2,i):
if i%j==0:
n=False
if n:
print(i,end=" ")
n(200)
5.编写一个函数,参数为一个整数n。利用递归获取斐波那契数列中的第n个数并返回。
def Fib(n):
if n==1 or n==2:
return 1
else:
return Fib(n-1)+Fib(n-2)
n=eval(input("请输入整数:"))
print(Fib(n))
1.英文字符频率统计。编写一个程序,对给定字符串中出现的a~z字母频率进行分析,忽略大小写,采用降序排列。
str=input("请输入一段字符串:")
a=str.lower()
b={}
for i in a:
if "a"<=i<="z":
b[i]=b.get(i,0)+1
c=list(b.items())
c.sort(key=lambda x:x[1],reverse=True) #对二维数据进行降序排列
for i in range(len(c)):
character,count=c[i]
print("{0:<3}{1:>5}".format(character,count))
2.中文字符频率统计。编写一个程序,对给定字符串中出现的全部字符(含中文字符)频率进行分析,采用降序方式排列。
str=input("请输入一段字符串:")
b={}
for i in str:
b[i]=b.get(i,0)+1
c=list(b.items())
c.sort(key=lambda x:x[1],reverse=True) #对二维数据进行降序排列
for i in range(len(c)):
character,count=c[i]
print("{0:<3}{1:>5}".format(character,count))
3.随机密码生成。编写程序在26个字母大写和9个数字组成的列表中随机生成10个8位密码。
import random
str=[]
password_list=[]
password=[]
for i in range(ord("a"),ord("z")): #密码组成
str.append(chr(i))
for i in range(ord("A"),ord("Z")):
str.append(chr(i))
for i in range(10):
str.append(i)
for i in range(10): #随机生成密码
for j in range(8):
j=random.randint(0,len(str)-1)
password.append(str[j])
password_list.append(password.copy())
password.clear()
for i in password_list: #密码打印
for j in i:
print(j,end='')
print(' ')
4.重复元素判定。编写一个函数,接收列表作为参数,如果一个元素在列表中出现了不止一次,则返回True,但不要改变原来列表的值。同时编写调用这个函数和输出结果的程序。
def repeat(list=[]):
for i in range(len(list)):
for j in range(len(list)):
if list[j]==list[i]:
return True
list=['e','d','f',1,4,5,6,6,4,3]
print(repeat(list))
5.重复元素判定续。利用集的无重复性改变上一个程序,获得一个更快更简洁的版本。
def repeat(list=[]):
set_list=set(list)
if len(list)>len(set_list):
return True
else:
return False
list=['e','d','f',1,4,5,6,6,4,3]
print(repeat(list))
1.输入一个文件和一个字符,统计该字符在文件中出现的次数。
def repeatcount(text,a):
text.lower()
count=0
for i in text:
if i==a:
count+=1
return count
def main(file):
f=open(file,'r')
text=f.read()
f.close()
return text
text=main("E:\\全国计算机二级考试\\书上练习\\file.txt")
a=input("请输入字符串:")
print("{}重复了{}次".format(a,repeatcount(text,a)))
2.假设有一个英文文本文件,编写一个程序读取其内容并将里面的大写字母变成小写字母,小写字母变成大写字母。
def upper_lower(text):
text_r=""
for i in text:
if 'a'<=i<='z':
text_r+=i.upper()
else:
text_r+=i.lower()
print(text_r)
def main(file):
f=open(file,'r')
text=f.read()
f.close()
return text
text=main("E:\\全国计算机二级考试\\书上练习\\file.txt")
upper_lower(text)
3.编写一个程序,生成一个10×10的随机矩阵并保存为文件(空格分隔行向量,换行分隔列向量),再写程序将刚才保存的矩阵文件另存为CSV格式,用Excel或文本编辑器打开看看结果对不对。
import random
def Matrix():
matrix=""
line=""
for i in range(10):
for j in range(10):
line+="{} ".format(random.randint(1,100))
matrix+="{}\n".format(line)
line=""
return matrix
def output(a):
a=Matrix()
f=open("E:\\全国计算机二级考试\\书上练习\\matrix.csv","w")
f.write(a.replace(" ",","))
f.close
output(Matrix())
4.编写一个程序,读取一个python源代码文件,将文件中所有除保留字外的小写字母换成大写字母,生成后的文件要能够被Python解释器正确执行。
以下以6.5代码为例。
import keyword
kw=keyword.kwlist
other=["len","print","list","set"]
kw+=other
print(kw)
f=open("E:\\全国计算机二级考试\\书上练习\\习题6.5.py","r")
file=f.read()
print(file)
f.close
FILE=file.upper()
print(FILE)
for word in kw:
if word.upper() in FILE:
FILE=FILE.replace(word.upper(),word)
print(FILE)
f_new=open("E:\\全国计算机二级考试\\书上练习\\习题6.5 改.py","w")
f_new.write(FILE)
f_new.close()
5.编写一个程序,要求能够将元素为任意Python支持的类型(包括含有半角逗号的字符串)的列表转储为CSV,并能够重新正确解析为列表。
def list_csv(file,list):
f=open(file,"w")
f.write(",".join(list)+"\n")
f.close
def csv_list(file):
f=open(file,"r")
text=f.read().strip("\n").split(",")
print(text)
f.close
list=input("请输入任意字符串:")
list_csv("E:\\全国计算机二级考试\\书上练习\\7.5.csv",list)
csv_list("E:\\全国计算机二级考试\\书上练习\\7.5.csv")