我已经花了几个小时编写此代码,但我仍然可以解决它。 在函数内部构建一个永久循环(无限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=[])
如果有人找到解决错误的任何方法,请告诉我。预先感谢。
答案 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=[])