习题2
#获得用户输入的一个整数N,计算并输出N的32次方
a=eval(input("请输入一个整数:"))
v = a**3
print("N的32次方为{}".format(v))
#获得用户输入的一段文字,将这段文字进行垂直输出
a = input("请输入一段文字:")
i = 0
for i in range(len(a)):
print(a[i])
i += 1
#获得用户输入的一个合法算式,例如:1.2+3.4,输出运算结果
a = eval(input("请输入一个算式:"))
print("算式的值为{}".format(a))
#获得用户输入的一个小数,提取并输出其整数部分
a = eval(input("请输入一个小数:"))
b = int(a)
print("小数的整数部分为{}".format(b))
习题三
#获得用户输入的一个整数,输出该整数百位及以上的数字
a = str(input("请输入一个整数"))
print(a[:-2])
#获得用户输入的一个字符串,将该字符串按照空格分割,然后逐行打印出来
a = str(input("请输入一串字符串"))
s = a.split()
for i in range(len(s)):
print(s[i])
#程序读入一个表示星期几的数字(1-7),输出对应的星期字符串名称。例如:输入3,返回“星期三”
a = int(input("请输入数字(如:3)"))
if a == 1:
s='一'
elif a == 2:
s='二'
elif a == 3:
s='三'
elif a == 4:
s='四'
elif a == 5:
s='五'
elif a == 6:
s='六'
elif a == 7:
s='七'
else:
s='?????,没有哒'
print("星期"+s)
#设n是一任意自然数,如果n的各位数字反向排列所得自然数与n相等,则n被称为回文数。从键盘输入一个5位数字,请编写程序判断这个数字是不是回文数。
a = str(input("请输入一个5位数字,让我康康是不是回文数"))
if a == a[::-1]:
print("是")
else:
print("不是")
#输入一个十进制数,分别输出其二进制、八进制、十六进制字符串
a = int(input("请输入一个十进制数,让我来把它变成其它进制的数!!"))
print("十进制:{0:d}\n二进制:{0:b}\n八进制:{0:o}\n十六进制:{0:x}".format(a))
#输入一个年份,看输出是否是闰年。(闰年条件:能被4整除但是不能被100整除,或者能被400整除的年份都是闰年)
a = eval(input("请输出年份,让我来康康是不是闰年!!!"))
if (a%4 == 0 and a%100 != 0):
print("{}是闰年".format(a))
elif a%400 == 0:
print("{}是闰年".format(a))
else:
print("{}不是闰年耶".format(a))
#最大公约数计算。获得两个整数,求出这两个整数的最大公约数和最小公倍数。最大公约数的计算一般使用辗转相除法,最小公倍数则使用两个数的乘积除以最大公约数。
a = eval(input("请输入第一个整数"))
b = eval(input("请输入第二个整数"))
def ZDGYS(a,b):
a,b = (a,b) if a < b else (b,a)
while b:
a,b = b,a%b
return a
print("这两个数的最大公约数为{}\n最小公倍数为{}".format(ZDGYS(a,b),a*b//ZDGYS(a,b)))
#统计不同字符个数,用户从键盘输入一行字符,编写一个程序,统计并输出其中英文字符、数字、空格和其他字符的个数
a = str(input("请输入一行字符,让我来统计统计字符个数!!!"))
zifu = 0
shuzi =0
kongge = 0
qitazifu = 0
for i in a:
if i.isalpha():
zifu += 1
if i.isnumeric():
shuzi += 1
if i.isspace():
kongge += 1
else:
qitazifu += 1
print("中英文字符的个数为:{0}\n数字的个数为:{1}\n空格的个数为:{2}\n其他字符的个数为:{3}".format(zifu,shuzi,kongge,qitazifu))
#羊车门问题。有三扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后面的山羊,然后允许参赛者更换自己的选择。请问,参赛者更换后能否增加猜中汽车的机会?——这是一个经典问题。请使用random库对这个随机事件进行预测,分别输出参赛者改变选择和坚持选择获胜的概率。
import random
s = random.randint(5000,10000)
Change = 0
NotChange = 0
for i in range(1,s+1):
a = random.randrange(1,4)
b = random.randrange(1,4)
if a == b:
NotChange += 1
else:
Change += 1
print("如果不换门的话,门后面有车的概率为{0}\n如果换门的话,门后面有车的概率为{1}\n".format(NotChange/s,Change/s))
第五章
#编写一个函数,打印200以内的所有素数,以空格分隔
def DaYinSuShu():
for i in range(2,200):
for j in range(2,i):
if i%j == 0:
break
else:
print(i,end=',')
DaYinSuShu()
# 编写一个函数计算传入字符串中数字、字母、空格以及其他字符的个数
def charNum(s):
numNumber = 0
letterNumber = 0
spaceNumber = 0
otherNumber = 0
for i in s:
if i.isnumeric():
numNumber += 1
elif i.isspace():
spaceNumber += 1
elif i.isalpha():
letterNumber += 1
else:
otherNumber += 1
print('The number of Number is:',numNumber)
print('The number of Char is:',letterNumber)
print('The number of Space is:',spaceNumber)
print('The number of Other is:',otherNumber)
a = str(input('please input a string'))
charNum(a)

# 实现 isPrime() 函数,参数为整数,要有异常处理。如果整数是质数,返回 True,否则返回 False
def isPrime(s):
while True:
try:
if type(eval(s)) != type(1):
print('InputError,please input a int')
else:
break
except:
s = input('InputError,please input a int')
s = eval(s)
for i in range(2,s):
if s % i != 0:
return True
else:
return False
a = input("请输入一个数,让我看来康康是不是质数")
print(isPrime(a))
# 实现 isNum() 函数,参数为一个字符串。如果这个字符串属于整数、浮点数或者复数的表示,则返回 True,否则返回 False。
#方法一
def isNum(s):
try:
s = type(eval(s))
if s == int or s == float or s == complex:
return True
else:
return False
except:
return False
a = input("请输入一个字符串,让我来康康")
print(isNum(a))
# 方法二
def isNum(s):
try:
a = type(eval(s))
if a == type(1):
return True
elif a == type(1.1):
return True
elif a == type(1+1j):
return True
except:
return False
a = input("请输入一个字符串,让我来康康")
print(isNum(a))
# 编写一个函数,参数为一个整数 n。利用递归获取斐波那契数列中的第 n 个数并返回。
# 斐波那契数列 :这个数列从第3项开始,每一项都等于前两项之和。
def Fibonacci(s):
if s == 1:
return 1
elif s == 2:
return 1
else:
return Fibonacci(s-1)+Fibonacci(s-2)
a = eval(input('请输入一个数,我们会返回他之前的斐波那契数列..'))
print('斐波那契数列中第{0}个数为{1}'.format(a,Fibonacci(a)))
#英文字符频率统计。编写一个程序,对给定字符串中出现的 a~z 字母频率进行分析,忽略大小写,采用降序方式输出。
s = str(input('please input some string'))
s = s.lower()
s = s.replace(' ','')
counts = {}
for i in s:
counts[i] = counts.get(i,0)+1
ls = list(counts.items())
ls.sort(key = lambda x:x[1],reverse = True)
for i in range(len(counts)):
word,count = ls[i]
print('{:<5}{:>10}'.format(word,count))
#中文字符频率统计。编写一个程序,对给定字符串中出现的全部字符(含中文字符)频率进行分析,采用降序方式输出。
a = str(input("please inpur some Chineses"))
a = a.replace(' ','')
counts = {}
for i in a:
counts[i] = counts.get(i,0) + 1
ls = list(counts.items())
ls.sort(key=lambda x: x[1],reverse = True)
for i in range(len(counts)):
word,count = ls[i]
print('{:<10}{:>5}'.format(word,count))
#随机密码生成。编写程序在26个字母大小写和9个数字组成的列表中随机生成10个8位数密码。
import random
txt = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
ls = list(txt)
for i in range(10):
a = ''
print('密码{}:'.format(i+1))
for i in range(8):
a += ls[random.randrange(len(ls))]
print(a)
#方法二:
import random
txt = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
ls = list(txt)
for i in range(10):
a = ""
for i in range(8):
a = random.choice(ls) + a
print(a)
#重复元素判断。编写一个函数,接收列表作为参数,如果一个元素在列表中出现了不止一次,则返回True,但不改变原来列表的值。同时编写调用这个函数和输出测试结果的程序。
def ChongFuPanDuan(txt):
txt = txt.replace(' ','')
counts = {}
for i in txt:
counts[i] = counts.get(i,0) + 1
num = list(counts.values())
for i in range(len(num)):
if num[i] > 1:
return True
txt = input('请输入字符,让我康康有没有重复的:')
print(ChongFuPanDuan(txt))
#重复元素判定续。利用集合的无重复性改编上一个程序,获得一个更快更简洁的版本。
def ChongFuPanDuan(txt):
txt = txt.replace(' ','')
st = set(txt)
if len(st) != len(txt):
return True
#counts = {}
#for i in txt:
# counts[i] = counts.get(i,0) + 1
#num = list(counts.values())
#for i in range(len(num)):
# if num[i] > 1:
# return True
txt = input('请输入字符,让我康康有没有重复的:')
print(ChongFuPanDuan(txt))
第七章
#输入一个文件和一个字符,统计该字符在文件中出现的次数
f = open('/Users/denglinzhe/Documents/hamlet.txt','r+')
fo = f.read()
print(fo)
s = input('please input a ch')
a = 0
for i in range(len(fo)):
if s == fo[i]:
a += 1
print('{}在该文本中出现了{}次'.format(s,a))
#假设有一个英文文本文件,编写一个程序读取其内容,并将里面的大写字母变成小写字母,小写字母变成大写字母。
#s = 'asdffASDFG'
f = open('/Users/denglinzhe/Documents/hamlet.txt','r',encoding ='utf-8')
fo = f.read()
c = ''
for i in fo:
if i in 'qwertyuiopasdfghjklzxcvbnm':
a = i.upper()
elif i in 'QWERTYUIOPASDFGHJKLZXCVBNM':
a = i.lower()
else:
a = i
c += a
print(c)
# 编写一个程序,生成一个10x10的随机矩阵并保存文件(空格分隔行向量,换行分隔列向量),在写程序将刚才保存的文件另存为CSV格式,用Excle或文本编辑器打开康康结果对不对。
import random
f = open('/Users/denglinzhe/Documents/123.txt','w',encoding='utf-8')
s = []
for i in range(10):
a = []
for j in range(10):
a.append(str(random.randint(1,9)))
s.append(a)
for row in s:
f.write(' '.join(row)+'\n')
f.close()
# 编写一个程序,读取一个Python源代码文件,将文件中所有除保留字外的小写字母替换成大写字母,生成后的文件要能够被Python解释器正确执行。
BaoLiuZi = ['and', 'as', 'assert', 'break', 'class', 'continue',
'def', 'del', 'elif', 'else', 'except', 'finally',
'for', 'from', 'global', 'if', 'import', 'in', 'is',
'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
'return', 'try', 'while', 'time', 'with', 'yield', 'True',
'False', 'None']
f1 = open('/Users/denglinzhe/Documents/Untitled-1.py','r',encoding = 'utf-8')
f2 = open('/Users/denglinzhe/Documents/Untitled-5.py','w',encoding = 'utf-8')
fo1 = f1.readlines()
dic = {}
num = 0
for line in fo1:
for word in BaoLiuZi:
if word in line:
num += 1
dic['编号{}'.format(str(num))] = word
line = line.replace(word,'编号{}'.format(str(num)))
else:
continue
line = line.upper()
for key in dic.keys():
if key in line:
line = line.replace(key,dic[key])
fo2 = f2.write(line)
#编写一个程序,要求能够将元素为任意Python支持的类型(包括含有半角逗号的字符串)的列表转储为CSV格式文件,并能够重新正确解析为列表。
def InputAndSave_csv(ls,Name):
value = input('请向列表添加第1个元素')
ls.append(value)
num = 1
while value != '':
num += 1
value = input('请向列表添加第{}个元素(如需结束输入,请输入空格)'.format(num))
ls.append(value)
print('列表已输入完毕,您输入的列表为:\n{}'.format(ls))
#将逗号的点换为点
for i in range(len(ls)):
if ',' in ls[i]:
ls[i] = ls[i].replace(',','.')
f = open('/Users/denglinzhe/Documents/{}.csv'.format(Name),'w',encoding = 'utf-8')
f.write(','.join(ls)+'\n')
f.close()
print('\n恭喜你~,已成功保存为{}.csv文件'.format(Name))
def Read_csv(Name):
f = open('/Users/denglinzhe/Documents/{}.csv'.format(Name),'r',encoding = 'utf-8')
fo = f.read().strip('\n').split(',')
#将替换的点换为逗号
for i in range(len(fo)):
if '.' in fo[i]:
fo[i] = fo[i].replace('.',',')
print('\n文件{}.csv读取中....请稍后\n'.format(Name))
print(fo)
f.close()
def main():
ls = []
Name = input('请输入您将要保存的csv文件名称:')
InputAndSave_csv(ls,Name)
Read_csv(Name)
main()
第八章
#1.读取保存在本地的html文件
#2.提取页面中的链接文件
#3.在屏幕上显示提取到的链接文件
#4.将提取到的链接保存到文件
def DuQuWenJian(inputfile):
f = open(inputfile,'r',encoding='utf-8')
fo = f.readlines()
f.close()
return fo
def TiQuImgLianJei(filetxt):
urls = []
for line in filetxt:
if 'img' in line:
url = line.split('src=')[-1].split('"')[1]
if 'http' in url:
urls.append(url)
return urls
def XianShiLianJei(TiQuDaoDeLianJei):
count = 0
for url in TiQuDaoDeLianJei:
count += 1
print('第{}张图片URL:{}'.format(count,url))
def ShuChuDaoWenJian(outputfile,TiQuDaoDeLianJei):
f = open(outputfile,'w',encoding = 'utf-8')
for line in TiQuDaoDeLianJei:
f.write(line + '\n')
f.close()
print('\n-------------------------------------------')
print("\n链接已保存至{}".format(outputfile))
def main():
inputfile = '/Users/denglinzhe/Documents/Untitled-1.txt'
outputfile = '/Users/denglinzhe/Documents/pic.txt'
filetxt = DuQuWenJian(inputfile)
TiQuDaoDeLianJei = TiQuImgLianJei(filetxt)
XianShiLianJei(TiQuDaoDeLianJei)
ShuChuDaoWenJian(outputfile,TiQuDaoDeLianJei)
main()
#用户编写一个年份,编写程序判断是不是闰年,如果年份能够被400整除,则是闰年;如果年份能被4整除但是不能被100整除也为闰年
while 1:
s = eval(input("请输入年份"))
if (s % 400 == 0) or (s % 4 == 0 and s % 100 != 0):
print('{}是闰年'.format(s))
else:
print("{}不是闰年".format(s))