我做过的Python 入门练习题

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()

    原文作者:正在成为技术宅
    原文地址: https://blog.csdn.net/weixin_41795137/article/details/79559753
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞