Python 练习
greyli/PythonExercises: 按照难度排列的经典 Python 练习题。 (github.com)
1. 猜数字
经典的猜数字游戏,几乎所有人学编程时都会做。
功能描述: 随机选择一个三位以内的数字作为答案。用户输入一个数字,程序会提示大了或是小了,直到用户猜中。
Code :
import random
answer=random.randint(1,999)
a=int(input("Guess a number ? (1-999) :"))
running = True
while running:
if a==answer:
print("congratulation your Bingo!")
break
elif a>answer:
print("answer is bigger")
a=int(input("try again:"))
elif a<answer:
print("answer is smaller")
a=int(input("try again:"))
2. FizzBuzz
另一道经典编程题。
功能描述: 遍历并打印0到100,如果数字能被3整除,显示Fizz;如果数字能被5整除,显示Buzz;如果能同时被3和5整除,就显示FizzBuzz。结果应该类似:0,1,2,Fizz,4,Buzz,6……14,FizzBuzz,16……
Code:
test=[0 for x in range(101) ]
for i in range(101):
test[i]=i
if i%3==0 and i%5==0and i!=0:
test[i]="FizzBuzz"
elif i%3==0 and i!=0:
test[i]="Fizz"
elif i%5==0 and i!=0:
test[i]="Buzz"
for i in range(101):
print(test[i])
3. 猜数字的AI
和猜数字一样,不过这次是设计一个能猜数字的AI
功能描述: 用户输入一个单位以内的数字,AI要用最少的次数猜中,并且显示出猜的次数和数字。
Code:
# AI guess number
# 第一版用随机数猜哈哈哈哈哈,猜一个数几千次哈哈哈 , 留着提供一个思路
import random
# 打印标题
print("-"*20+"Ai Guess Number Game"+"-"*20)
# a接收用户输入的数字, 因为之后a要运算所以使用int()转为数值型
a=int(input("please input between 1-999 random only one number :"))
# 已知用户输入的为1-999, 这应该算二分法吧
guess=500 # 1/2 中间数
middle=250 # 1/4 四分之一数
step=0 # 记录次数,初始值为0
# 死循环,直到执行到break
while True:
# 看用户输入是否大于中间数
if a>guess:
# 输入的数大于中间数500,加上中间数的中间数,也就是之前定义的middle,从这开始二分的上部分
guess+=middle
print ("AI Guess is : ",guess) # 题目要求输出过程
# 看用户输入是否小于中间数
elif a<guess:
# 输入的数小于中间数500,减去中间数的中间数,也就是之前定义的middle,从这开始二分的下部分
guess-=middle
print ("AI Guess is : ",guess) # 题目要求输出过程
# 二分法结束后 四分之一数在除二为下一次循环做准备
# 如果middle=1 or 0都不执行/2
if middle!=1 or middle !=0 :
# 加int()把小数改为整数
middle=int(middle/2)
# 如果middle=0了也就死循环了, 所以要检测一下
if middle == 0:
middle=1
# 执行了一次猜测
step+=1
# 每次猜的数来对比下,对了就停循环
if guess==a:
print("Congratrulation your are Bingo!!! you use %d step to guess"%(step))
break
# 我生平最讨厌两件事: 别人代码不写注释 和 代码写注释
# 例子输入 785 middle 的 9 次循环
# 125 62 31 15 7 3 1 1 1
#AI Guess is : 750
#AI Guess is : 875
#AI Guess is : 813
#AI Guess is : 782
#AI Guess is : 797
#AI Guess is : 790
#AI Guess is : 787
#AI Guess is : 786
#AI Guess is : 785
4. 整点报时
老式挂钟会在整点的报时,响铃的次数和时间相等。我们设计一个在电脑上运行的报时器。
功能描述: 运行后,在每一个整点长响一声,半个整点短响两声。实现睡眠模式,晚上十二点到早上六点不响铃。
import winsound
from time import sleep, localtime
while True :
now=localtime()
# 会返回 tm_year tm_mon tm_mday tm_hour tm_min tm_sec tm_wday tm_yday tm_isday
# 这次会用上 tm_min
m= now.tm_min
# 也就是现在时间的分钟
if m == 00:
winsound.Beep(3000,500)
# 第一个是响度,第二个是持续时间
print("整点了")
elif m==30:
winsound.Beep(3000,300)
winsound.Beep(3000,300)
print("半了")
sleep(60)
# 程序休眠60秒
5. 敏感词审查
一向痛恨网络审查的你成了某网站的审查员,要求审查网络上违反上头规定的名词。
功能描述: 要审查的帖子在仓库根目录的text.txt文件里,要求将所有的和谐,自由,民主,六四替换为*号。 需要的话去github下, 我可不敢放上来
#-*-coding:GBK -*-
file_name = 'sensitivetext.txt'
a=""
with open(file_name,encoding="utf-8") as file_obj:
content=file_obj.read()
content=content.replace("六四","**")
content=content.replace("和谐","**")
content=content.replace("自由","**")
content=content.replace("民主","**")
a=content
with open(file_name,'w',encoding="utf-8") as file_obj2:
file_obj2.write(a)
数据库的连接与增删改查:
import pymysql # pymysql
'''
使用pymysql来连接,增删改查数据库
'''
db = pymysql.Connect(host="localhost",user="root",password="zyx2022.",db="zyx",charset="utf8mb4")
# cursorclass=pymysql.cursors.DictCursor) 表示回传数据为字典型
# 例子{'id': 1, 'name': '丁致远', 'passwd': '735282'}
cursor=db.cursor()
# 创建游标对象
#显示数据库内容
def view():
db.ping(reconnect=True) # 检查连接是否存在,断开的话会重连。
cursor.execute("select * from login") # 执行数据库命令
data=cursor.fetchall() # 接收上一条执行命令的数据
print("ID\t姓名\t密码")
for i in data: # 显示全部接收到的数据
print(i[0],i[1],i[2])
input("\n输入回车键返回操作页面")
db.close() # 关闭数据库链接
# 增加数据
def addsql():
db.ping(reconnect=True)
name=input("请输入要增加的姓名:")
passwd=int(input("请输入要增加的密码:"))
sql='insert INTO login(`name`,passwd) VALUES("%s","%s")'%(name,passwd)
cursor.execute(sql)
db.commit() # 保存修改
print(cursor.rowcount,"插入纪录成功")
cursor.execute("select * from login ORDER BY id DESC LIMIT 1")
data=cursor.fetchone()
print("ID:%s\t姓名:%s\t密码:%s"%(data[0],data[1],data[2]))
db.close()
# 删除数据
def delsql():
db.ping(reconnect=True)
delid=input("请输入要删除的ID:")
print("本操作不可逆!!!!!")
yesno=input("请输入y或n继续删除或退出:")
if yesno == 'y':
sql='DELETE FROM login WHERE id=%s'%delid
cursor.execute(sql)
db.commit()
print(cursor.rowcount,"删除纪录成功")
db.close()
elif yesno =='n':
return
else:
print("请输入y或n!!!!!!!!")
# 变更数据
def changesql():
db.ping(reconnect=True)
id=input("请输入要更新的ID:")
sql="select * from login where id='%s'"%id
cursor.execute(sql)
data=cursor.fetchall()
print("姓名:%s,密码:%s"%(data[0][1],data[0][2]))
yesno=input("是否修改?输入y或n继续修改或退出:")
if yesno=='y':
name=input("请输入要修改的名字:")
passwd=input("请输入要修改的密码:")
sql="update login set `name`='%s',passwd='%s' WHERE id='%s'"%(name,passwd,id)
cursor.execute(sql)
sql="select * from login where id='%s'"%id
cursor.execute(sql)
data=cursor.fetchall()
print("修改后的:姓名:%s,密码:%s"%(data[0][1],data[0][2]))
db.commit()
print(cursor.rowcount,"修改纪录成功")
db.close()
elif yesno =='n':
return
else:
print("请输入y或n!!!!!!!!")
# 搜索数据
def searchsql():
db.ping(reconnect=True)
id=input("请输入要查询的id:")
sql="select * from login where id=%s"%(id)
cursor.execute(sql)
data=cursor.fetchone()
print("查询的id姓名为:%s,密码为:%s"%(data[1],data[2]))
db.close()
# 选择界面
while True:
print("-"*20,"数据库增删查改操作","-"*20)
print("请选择:\n\t1.增加数据\n\t2.删除数据\n\t3.查找数据\n\t4.修改数据\n\t5.查看数据库")
choose=input("请输入你要选择的操作[1-5],退出请直接回车:")
# 仿switch语句
if choose=='':
break
elif int(choose)==1:
addsql()
elif int(choose)==2:
delsql()
elif int(choose)==3:
searchsql()
elif int(choose)==4:
changesql()
elif int(choose)==5:
view()
else:
print("","-"*40,"\n","\t请输入[1-5]!!!!!!!\n","-"*40)
continue
阅读剩余
版权声明:
作者:ZYX
链接:https://zyxweb.cn/pythonexercise/
文章版权归作者所有,未经允许请勿转载。
THE END