求问一个问题,谢谢!

来源:3-2 项目作业

慕粉4106841

2019-08-09 13:32:56

import datetime
import random
import sys


def guide_page(guide_word):
    """
    提示玩家进入游戏,
    :param guide_word: 记录要输出的标题文字信息
    :return: 打印欢迎语句
    """
    print("{}{}{}".format('*'*10,guide_word,'*'*10))

def all_num(n):
    """
    判断指定的值是否为数字
    :param n: 用于接收进行判断的变量的值
    :return: True or False
    """
    if n.isdigit():
        return True
    else:
        return False

def num_legal(ls):
    """
    判定指定序列中的数值是否相等以及记录数字区间起始位置的值是否大于记录数字子区间终止位置的值
    :param ls: 列表类型,用于接收指定的序列
    :return:
    """
    if ls[0] == ls[1]:
        print('您输入的区间数字相同!!请重启程序')
        sys.exit()
    elif ls[0] > ls[1]:
        print('您输入的数字区间大小有误!!请重启程序')
        sys.exit()
    else:
        return 1
        return result

def set_final_num(num1,num2):
    """
    根据参数值,产生一个位于参数值区间以内的随机数
    :param num1: 接收用户输入的第一个数作为起始值
    :param num2: 接收用户输入的第二个值作为终止值
    :return:
    """

    final_num = [num1,num2]#用于存储num1与num2的列表
    result = list(filter(all_num(),final_num))#过滤之后的数字放入列表中
    l = num_legal(result)
    if l:
        print('所产生的随机数字区间为:{}'.format(result))
        return random.randrange(int(num1),int(num2))

def check_num_legal(num):
    """
    判断所输入的数值是否在指定区间
    :param num:
    :return:
    """
    if num < int(i) or num > int(j):
        return True
    else:
        return False

def write_record(times, value):
    right_time = datetime.datetime.now()
    if times == 1:
        with open('record.txt','w', encoding='UTF-8') as f:
            f.write('{0}:第{2}次您猜测的数字为:{2}\n'.format(right_time,times,value))
    else:
        with open('record.txt','a+', encoding='UTF-8') as f:
            f.write('{0}:第{2}次您猜测的数字为:{2}\n'.format(right_time,times,value))

def main (rand1):
    """

    :param rand1:
    :return:
    """
    temp = 0
    while True:
        num = int(input('请继续输入您的数字:'))
        print('*'*10)
        temp +=1
        if check_num_legal() is True:
            print('对不起您输入的数字未在指定区域!!!')
            continue
        else:
            if num < rand1:
                print('Lower than the answer')
                continue
            elif num > rand1:
                print('More than the answer')
                continue
            else:
                print('恭喜您,只用了{}次就赢得了游戏'.format(temp))
                break


if __name__ == '__main__':
    guide_page(guide_word='欢迎进入数字猜猜猜小游戏')
    i = input('数字区间起始值:')
    j = input('数字区间终止值:')
    rand1 = set_final_num(i,j)
    print(rand1)
    main(rand1)

D:\Algorithm\Mooc\3-2_Guess_Number\venv\Scripts\python.exe D:/Algorithm/Mooc/3-2_Guess_Number/mooc_test.py

**********欢迎进入数字猜猜猜小游戏**********

数字区间起始值:1

数字区间终止值:6

Traceback (most recent call last):

  File "D:/Algorithm/Mooc/3-2_Guess_Number/mooc_test.py", line 106, in <module>

    rand1 = set_final_num(i,j)

  File "D:/Algorithm/Mooc/3-2_Guess_Number/mooc_test.py", line 50, in set_final_num

    result = list(filter(all_num(),final_num))#过滤之后的数字放入列表中

TypeError: all_num() missing 1 required positional argument: 'n'


Process finished with exit code 1

老师你好,怎么会出现这个错误?

写回答

1回答

好帮手乔木

2019-08-09

同学你好:

1.在filter高阶函数中的第一个参数是函数名吗,所以不需要(),这样直接就调用该函数的方法。

http://img.mukewang.com/climg/5d4d19ab00014ea706180196.jpg

2.同学在调用本函数的时候请传入参数。

http://img.mukewang.com/climg/5d4d1a110001591006040128.jpg

同学可以继续完成剩下作业的任务要求了,请同学仔细完成,还有些错误需要同学自己发现。

如果我解决了同学的问题,请采纳!学习愉快^_^。

0

0 学习 · 8160 问题

查看课程