我以前没有遇到过这个问题,如果我从triangle()中取出代码并将其放在while循环下,则一切正常。如果我添加了三角形(input_argument),它将运行,但是即使您键入字符串也不会退出while循环。
...
def main():
# Defining initial conditions.
input_argument = input("Enter a number or done: ")
triangle_list = []
def triangle():
input_argument = int(input_argument)
triangle_number = (input_argument*(input_argument+1)//2)
triangle_list.append(triangle_number)
print("Your number of", input_argument, "has a triangle number of",
str(triangle_number) + ".")
input_argument = input("Enter a new number or done: ")
# Test function for input between int or anything else.
def num_test():
try:
int(input_argument)
return True
except ValueError:
return False
while num_test() is True:
triangle()
num_test()
print(triangle_list)
main()...
编辑:
def num_test(input_argument):
try:
int(input_argument)
return True
except ValueError:
return False
def triangle(input_argument, triangle_list):
input_argument = int(input_argument)
triangle_number = (input_argument*(input_argument+1)//2)
triangle_list.append(triangle_number)
print("Your number of", input_argument, "has a triangle number of",
str(triangle_number) + ".")
input_argument = input("Enter a new number or done: ")
return
def main():
input_argument = input("Enter a number or done: ")
triangle_list = []
while num_test(input_argument) is True:
triangle(input_argument, triangle_list)
num_test(input_argument)
print(triangle_list)
main()
这里有很多基本错误,所以让我们遍历固定版本:
def get_input():
try:
value = input('Enter a number or done:')
return int(value)
except ValueError:
return False
def triangle(input, list):
triangle_number = (input*(input+1)//2)
list.append(triangle_number)
print(f"Your number of {input} has a triangle number of {str(triangle_number)}.")
def main():
triangle_list = []
while True:
value = get_input()
if value is False:
break
triangle(value, triangle_list)
print(triangle_list)
main()
让我们从main
开始,这在概念上非常简单:
我们如何填充它?我们循环输入聚合:
False
我们如何从用户那里获得价值?我们使用input()
,然后尝试返回该输入的int-cast版本。如果失败,我们知道输入是数字,否则返回数字:正是我们需要的。
我们的三角函数做什么?它使用当前值和先前值列表,计算一些数字,将当前值添加到先前值列表中,然后打印并退出。
也不是格式化字符串的Python 3版本:如果要使用带有变量值的字符串(甚至是来自其他代码调用的值的字符串),请不要使用字符串连接。使用格式化的字符串,它们很棒。