前言
本群的作业,没有指定Python方向,而在于提升群内成员的语言功底,以便大家在Python的其他方向走的更远。
本群热烈欢迎任何程度的Python学习者
Python程序设计 群号:651707058
题一:猜数字游戏
‘首先自已定义一个变量answer,假如answer = 55,然后提示让用户猜数字,’
‘如果用户猜的数字过大,就输出大了,如果猜的数字过小,就输出小了,直到用户’
‘猜对了,提示用户猜对了,并给出用户一共猜了多少次’
‘例如:answer = 55’
‘用户输入:60’
‘输出:大了’
‘用户输入:50’
‘输出:小了’
‘用户输入:55’
‘输出:正确,一共猜了3次’
n=55
a=int(input('请猜一个数字:\n'))
i=0
while True:
if a==n:
print(f'正确,一共猜了{i+1}次')
break
elif a>n:
print('猜大了')
i+=1
else:
print('猜小了')
i+=1
a = int(input('请猜一个数字:\n'))
题二:猜数字游戏PLUS版本
”’
上一题answer是提前设置好的,代码不修改的话,每次运行正确的数字总是55,
现在我们需要将answer设置成随机的,这一次代码运行answer是89,下次运行
answer就变成另一个数字了
需要在上一题的基础上,再运用random模块里面的函数
”’
import random
num=random.randint(1,100)
guess=int(input('请输入一个数字:\n'))
i=0
while True:
if num==guess:
print(f'正确,一共输入了{i+1}次')
break
elif guess>num:
print('猜大了')
i+=1
else:
print('猜小了')
i+=1
guess = int(input('请输入一个数字:\n'))
题三:给一个正整数数字做因式分解
”’
输入一个正整数n,对其进行因式分解并输出。
例如:输入18,输出18=2*3*3
”’
作者是新手,果断推荐:
https://blog.csdn.net/tobe_numberone/article/details/81407977
def number_break(n):
if not isinstance(n,int): #类型检查
raise TypeError(f'"{n}" must be int')
copy = n
yin = [] #用来保存因数
while copy !=1: #不断约分,一直约分到1就停止
copy = int(copy) #这句话主要是为了copy一直保持整数
for i in range(2,copy+1): #如果不能约分,那自己就是最大的因数,也需要保存
if copy%i == 0: #当可以最小约分,就保存
yin.append(str(i))
copy/=i #约分后自己自除
break
if len(yin) == 1: #如果为1,那只因数列表中只保存了自身
return str(n)+'='+'1*'+str(n)
else:
return str(n)+'='+'*'.join(yin)
print(number_break())
题四:设计一个函数调用时的装饰器
‘设计一个函数装饰器,这个装饰器可以记录任意函数单次调用的运行时间。’
‘如果函数的运行时间小于1秒,就不输出其运行时间,否则输出此函数的运行’
‘时间。所以我们需要写运行时间小于1秒的函数和运行时间大于1秒的函数去’
‘测试’
作者还是入门级,,,推荐大佬:
https://blog.csdn.net/tobe_numberone/article/details/81407977
import time
def deco(func):
def wrapper(*args,**kwargs):
start = time.time()
res = func(*args,**kwargs)
time_used = time.time()-start
if time_used >=1:
print(f'{func.__name__}函数运行时间为1s及以上')
return time_used
return wrapper
@deco
def f1(a):
print(a)
time.sleep(2) #让f1运行时间保存2秒
@deco
def f2(a):
print(a)
f1(1) #只有f1会额外输出时间为1s及以上
f2(2)