python重复元素判定续、利用集合的无重复性_Python练习题2020

习题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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值