我做过的Python 入门练习题

时间:2023-02-22 23:58:54

1.计算100以内所有的奇数之和
sum=0
n=99
while n>0:
sum=sum+n
n=n-2
print(sum)

2.计算长方形的面积

a=float(input("请输入长方形的宽:"))
b=float(input("请输入长方形的宽:"))
square=a*b
print("长方形的面积为:%.2f" %square)

3.a和b的值做交换后输出
a=input("请输入a的值:")
b=input("请输入b的值:")
print("交换前,a和b的值分别为:",a,",",b)
temp=b
b=a
a=temp

print("交换后,a和b的值分别为:",a,",",b)


4.时间转换:
print("560分钟等于",560//60,"小时",560%60,"分钟")

5计算Pi的值
sum=0
n=1
while 1/(2*n-1)>10**(-5):
if n%2==1:
sum=sum+1/(2*n-1)
else:
sum=sum-1/(2*n-1)
n=n+1
print(4*sum)

6.斐波那契数列的计算与展示
def fab(a):
if a==0 or a==1:
return 1
else:
return fab(a-1)+fab(a-2)
n=0
while fab(n)<1000:
print(fab(n))
n+=1

7.打印九九乘法表
for x in range(1,10):
for y in range(1,10):
print ('%d*%d=%2d' %(x,y,x*y),end=" ")

print("")


8.求2-100之内的质数
import math
def isprime(x):
if x==1:
return False 
for y in range(2,int(math.sqrt(x))+1):
if x%y==0:
return False
return True
for i in range(2,101):
if isprime(i):
print(i)

9.计算自然对数e的值
def fact(n):
if n==1:
return 1
else:
return n*fact(n-1)
sum=0
n=1
for x in range(1,30):
sum=sum+1/fact(x)
print(sum+1)

10.输出2000-3000所有的闰年,每输出10个换一行:
def isleapyear(x):
if x%4==0 and x%100!=0:
return True
elif x%400==0:
return True
else:
return False
sep=0
for i in range(1999,3001):
if isleapyear(i):
sep+=1
if sep%10==0:
print(i)
else:

print(i,end=" ")


11.可变参数的自定义函数
def calc(*numbers):
sum=0
for n in numbers:
sum=sum+n*n 
return sum
print(calc(2,3,5))

12.计算一个数学式子的值:
sum=1
for x in range(2,101):
sum=sum-1/(x*x)
print(sum)


13.x的y次方的计算

def mypower(x,y):
sum=1
for i in range(1,y+1):
sum=sum*x
return sum
print(mypower(3,3))


14.中文格式时间的输出

#_*_ coding:UTF-8 _*_
import datetime
now=datetime.datetime.now()
print(now.strftime('%Y{y}%m{m}%d{d}%H{s}%M{f}%S{mm}').format(y='年',m='月',d='日',s='时',f='分',mm='秒'))

##########################
import datetime
i=datetime.datetime.now()
print(i)
print(i.isoformat())
print("当前的年份为:%s" %i.year)
print("当前的月份为:%s" %i.month)
print("当前的日期为:%s" %i.day)
print("当前的月份为:%s" %i.month)

15.文件的读写
#_*_ coding:UTF-8 _*_
import io
import os
py=open("D:\pythontest.txt",'r')
print("文件名称为:",py.name)
print("文件读写模式为:",py.mode)
print("文件是否关闭:",py.closed)
print("文件内容为:",py.read())

py.seek(os.SEEK_SET);
py.tell()
print(py.tell())
for i in range(1,5):
line=py.readline(i)

print(line)

16.尝试打开一个本地文件,如果文件名不存在,会是什么结果。
import io
import os 
try:
py=open("Filenameofnonexist",'w')


#上面这句,本意在于故意打开不存在的文件,以致抛出异常,出乎意料地,结果是,不存在的文件名,open()方法自动创建一个"Filenameofnonexist"名字的文件。

py.write("随便写点东西进去吧")
except IOError:
print("你要打开的文件根本不存在")
else:
print("内容写入成功")
py.close()

17.正则表达式初步
import re
str='sdasa_sfasdf'
pa=re.compile(r'_')
ma=re.sub(pa,'-',str)
print(ma)

18.正则表达式
#枚举出8位数字中的连续数字
import re
psw="12asdfdf668"
pa=re.compile(r'\d{3}')
res=re.search(pa,psw)
if res:
print(res.group())

19.用正则表达式检查密码是否符合要求
import re
def cek(psw):
flag=False
pa1=re.compile('\d+')
pa2=re.compile('\[a-z]+')
pa3=re.compile('\[A-Z]+')
#pa4=re.compile(r'\[!@#$%^&*]+')
l=len(psw)
ma1=re.match(pa1,psw)
ma2=re.match(pa2,psw)
ma3=re.match(pa3,psw)
#ma4=re.match(pa4,psw)
if ma1:
print("包含了数字")
if ma2:
print("包含了小写字母")
if ma3:
print("包含了大写字母")
if l>=8:
print("长度达到了要求")
flag=True



else:
flag=False
return flag



passww=input("请输入密码:")

cek(passww)


20.用正则表达式检查IP地址是否符合要求。测试分组的作用和意义。
import re
pa=re.compile(r'((?P<d1>\d{1,3}).(?P<d2>\d{1,3}).(?P<d3>\d{1,3}).(?P<d4>\d{1,3}))')
str='192.168.4.56'
obj=pa.search(str)
print(obj.groupdict())


21.生成4位随机码
import re
import random
dx=[chr(x)for x in range(65,91)]
print("大写字母列表为:",dx)
xx=[chr(x) for x in range(97,123)]
dd=[x for x in range(0,10)]
print("小写字母列表为:",xx)
mx=dx+xx+dd
print("大小写字母列表为:",mx)
random.shuffle(mx)
print("乱序后的大小写组合:",mx)
l=[]
for i in range(1,5):
    l.append(random.choice(mx))
print("随机生成的四位:",l)

22.在输入的字符串中检测数字、字母、空格、其他字符串的数量
str=input('请输入字符串:')
num=0
alf=0
bl=0
oth=0
for s in str:
    if s.isdigit():
         num+=1
    elif s.isalpha():
        alf+=1
    elif s.isspace():
        bl+=1
    else:
        oth+=1
print("在您输入的字符串中,数字有%d个,字母有%d个,空格有%d个,其他字符%d个" %(num,alf,bl,oth))


23.def fab(n): #返回第n个斐波那契数列的值

    if n==1 or n==2:
        return 1
    else:
        return fab(n-1)+fab(n-2)
sum=0
for i in range(1,21):
    sum+=fab(i+2)/fab(i+1)
print(sum)



24.阶乘之和,n=20
def fact(n):
    if n==1:
        return n
    else:
        return n*fact(n-1)
sum=0
for i in range(1,21):
    sum+=fact(i)
print(sum)


25.从文件中读取过滤的敏感词,在输入时进行核对

import os
import re
str=(open('F:\\Python\\filtered_words.txt','r')).read()
L=str.split()
print(str.split())
strin=input("请输入字符串:")
for s in L:
    obj=re.search(s,strin)
    if re.search(s,strin):

        print("你输入了敏感词:",obj.group())


26.在上一题中,输入敏感词时候,用*来替代
import os
import re
str=(open('F:\\Python\\filtered_words.txt','r')).read()
L=str.split()
print(str.split())
strin=input("请输入字符串:")
for s in L:
    obj=re.search(s,strin)
    if re.search(s,strin):
        strin=re.sub(s,r'**',strin)
print(strin)


27.生成200个6位数随机码,并且插入到Mysql数据库中:
import pymysql
import random

db=pymysql.connect('localhost','szcgdba','szcgdba','test')
cursor=db.cursor()
cursor.execute("DROP TABLE IF EXISTS Randnum")
sql1="CREATE TABLE Randnum(Id int,Randnum varchar(255))"
cursor.execute(sql1)


L=[x for x in range(1,201)]
for i in range(0,len(L)):
    L[i]=str(random.randint(1,9))+str(random.randint(1,9))+str(random.randint(1,9))+str(random.randint(1,9))+str(random.randint(1,9))+str(random.randint(1,9))
    #print(L[i])
    try:
        cursor.execute("INSERT INTO Randnum(Id,Randnum) VALUES('%d','%s')" %(i+1,L[i]))
        db.commit()
    except:
        db.rollback()
db.close()

28.贪婪模式和非贪婪模式。
当重复匹配一个正则表达式时候, 例如<.*>, 当程序执行匹配的时候,会返回最大的匹配值
例如:
import re
s = ‘<html><head><title>Title</title>’
print(re.match(‘<.*>’, s).group())


会返回一个匹配<html><head><title>Title</title>而不是<html>

import re

s = ‘<html><head><title>Title</title>’
print(re.match(‘<.*?>’, s).group())
则会返回<html>

<.*>这种匹配称作贪心匹配 <.*?>称作非贪心匹配


29正则表达式 匹配网页标签

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
str='(buyaole)yaobaoliu'
str2='''
'''
p=re.compile(r'\(.+\)')
p2=re.compile(r'(<.*?>)?')
#print(pa)
newstr=re.sub(p2,'',str2)
print(newstr)


30.统计一个文件里面的单词出现频率,把数据存入数据库

import os
import io
import pymysql

obj=open('G:\Python\Pythontest.txt','r')
str=obj.read().lower()
L=str.split()
di={}
for s in range(0,len(L)):
di[L[s]]=L.count(L[s])
def dict2list(dic:dict):
keys = dic.keys()
vals = dic.values()
lst = [(key, val) for key, val in zip(keys, vals)]
return lst
di2=sorted(dict2list(di), key=lambda x:x[1], reverse=True)

db=pymysql.connect('localhost','pythondba','pythondba','testdb')
cursor=db.cursor()
cursor.execute('drop table if exists Fre_words')
# 创建数据表SQL语句
sql = """CREATE TABLE Fre_words(
Word CHAR(20) NOT NULL,
Frequency INT 
)"""
cursor.execute(sql)
for item in di2:
try:
cursor.execute("insert into Fre_words values('%s','%d')" %(item[0],item[1]))
db.commit()
except:
db.rollback()
db.close()