Python作业(一)【基础语言练习】

Day9(Python作业)

(Python作业来自qq群:651707058,欢迎任何程度的Python学习者)

猜数字游戏

首先自已定义一个变量answer,假如answer = 55,然后提示让用户猜数字,如果用户猜的数字过大,就输出大了,如果猜的数字过小,就输出小了,直到用户猜对了,提示用户猜对了,并给出用户一共猜了多少次。
例如:answer = 55
用户输入:60
输出:大了
用户输入:50
输出:小了
用户输入:55
输出:正确,一共猜了3次
答案:

answer = 55 #正确答案
times = 0 #猜的次数
while True:
    guess = int(input('请输入你猜测的数:'))
    times +=1
    if guess == answer:
        print(f'回答正确,一共猜测{times}次') #f字符串,把需要填入的变量用{}括起来就行了,比较直观
        break
    elif guess < answer:
        print('小了')
    else:
        print('大了')

上一题升级版

上一题answer是提前设置好的,代码不修改的话,每次运行正确的数字总是55,现在我们需要将answer设置成随机的,这一次代码运行answer是89,下次运行answer就变成另一个数字了(需要在上一题的基础上,再运用random模块里面的函数)

import random
answer = random.randint(1,100) #正确答案
times = 0 #猜的次数
while True:
    guess = int(input('请输入你猜测的数:'))
    times +=1
    if guess == answer:
        print(f'回答正确,一共猜测{times}次') #f字符串,把需要填入的变量用{}括起来就行了,比较直观
        break
    elif guess < answer:
        print('小了')
    else:
        print('大了')

因式分解

输入一个正整数n,对其进行因式分解并输出。
例如:输入18,输出18=2*3*3

def number_break(n):
    if not isinstance(n,int): #类型检查
        raise TypeError('"{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(12))

补充:join函数
用于将序列中的元素以指定的字符连接生成一个新的字符串。
语法
join()方法语法:
str.join(sequence)
参数
sequence – 要连接的元素序列。
返回值
返回通过指定字符连接序列中元素后生成的新字符串。
例:

str = "-"
seq = ("a", "b", "c") # 字符串序列
print (str.join( seq ))
#运行结果:a-b-c

函数装饰器

设计一个函数装饰器,这个装饰器可以记录任意函数单次调用的运行时间。如果函数的运行时间小于1秒,就不输出其运行时间,否则输出此函数的运行时间。所以我们需要写运行时间小于1秒的函数和运行时间大于1秒的函数去测试。

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

最后一题用到装饰器内容,不懂的可以参考下面链接
https://blog.csdn.net/qq_42849332/article/details/81453287

祝大家学习愉快!!!

你可能感兴趣的:(作业)