任何人都可以在此代码中找到任何错误或错误吗?

时间:2019-06-15 00:52:29

标签: python jupyter-notebook

我已经花了几个小时编写此代码,但我仍然可以解决它。  在函数内部构建一个永久循环(无限while循环),并在循环内部完成以下操作

我希望它使用一个变量来收集输入,该输入应该是退出的'q'的整数。 它应该检查输入的字符串是否为数字(整数),以及是否为... 将输入整数添加到报告变量。 如果变量为“ A”,则将数字字符添加到以新行分隔的项目字符串中。 如果报告类型为q, 如果报告类型为“ A”,则打印出所有输入的整数项和总和。 如果报告类型为“ T”,则仅打印总计 在打印报告(“ A”或“ T”)后退出while循环以结束功能。 如果不是数字并且不是“ Q”,则打印一条消息“输入无效”。

def adding_report(report=[]):
report = []
at = input("Choose a report type: 'A' or 'T' : ")
while at.lower() != 'a' and at.lower() != 't':
    print('what?')
    at = input("Choose a report type: 'A' or 'T' : ")
while True:
    re = input("print an integer or 'Q' : ")
    if re.isdigit() is True:
        report.append(re)
        report.append('\n')
    elif re.startswith('q') is True:
        if at.lower() == 'a' is True:
            break
            print(report)
            print(sum(report))
        elif at.lower() == 't' is True:
            print(sum(report))
            break
        else:
            pass
    elif re.isallnum() is False and re.lower().startswith('q') is False:
        print('invalid response.')
    else:
        pass
adding_report(report=[])

如果有人找到解决错误的任何方法,请告诉我。预先感谢。

2 个答案:

答案 0 :(得分:0)

您必须至少在此处将表格编入代码

def adding_report(report=[]): # <-- You have errors here, defined function has nothing in it
report = [] # <-- I suggest tabulating this

这是不正确的用法,并且有效

if re.isdigit() is True: # Not recommended

每当您检查如果某项内容为真时,只需不要这样做

这是简单if语句的更好方法:

if re.isdigit(): # Recommended, will excecute when it returns any value, except (False and None)

如果需要执行代码,请在代码后移动:

  break # <-- this stops loop! you won't print anything that is after it
  print(report)
  print(sum(report))

答案 1 :(得分:0)

我想您正在尝试做类似的事情?我对您的代码进行了一些更改,并对出现错误的位置进行了注释。

def adding_report(report=[]):
    report = []
    at = input("Choose a report type: 'A' or 'T' : ")
    while at.lower() != 'a' and at.lower() != 't':
        print('what?')
        at = input("Choose a report type: 'A' or 'T' : ")
    while True:
        re = input("print an integer or 'Q' : ")
        print(re)
        if re.isdigit(): # Remove is true
            report.append(int(re)) # Add integer to list. Use int() to convert string to int

        elif re.startswith('q'): # Remove is true
            if at.lower() == 'a':
                print(report) # This two prints MUST be above de break statement in ordered to be executed
                print(sum(report))
                break
            elif at.lower() == 't': # Remove is true
                print(sum(report))
                break
            else:
                pass

        elif not re.isdigit() and not re.lower().startswith('q'): # Replaced is False with not
            print('invalid response.')
        else:
            pass
adding_report(report=[])