这是我需要的输出 输入无效 最大值为10 最小为2
他们开始使用的示例是错误的,您必须使用try / except,而对于true,则评分者可以接受。我在查找最小值和最大值时遇到了麻烦,这是我编写的代码,类似于他们开始使用的代码。他们说要在那里继续,但我不知道该放在哪里。
我已经尝试了很多组合,并试图从这个站点上得到答案。
largest_so_far = None
smallest_so_far = None
while True:
num = int(input('Enter a number: '))
if num == 'done' :
break
try:
int(num)
except:
print('Invalid input')
for the_num in [num]:
if num > largest_so_far:
largest_so_far = the_num
for the_num2 in [num]:
if num > smallest_so_far:
smallest_so_far = the_num2
#continue
print('Maximum', the_num)
print('Minimum', the_num2)
我想要输出 输入无效 最大值为10 最小为2
但是我得到了错误
TypeError: '>; not suppported between instances of 'str' and NoneType
答案 0 :(得分:0)
您的两个so_far
变量均被初始化为None
,并在分配新值之前与它们进行比较;如错误所示,您不能使用>
来比较数字和None
。
答案 1 :(得分:0)
几件事。
user_inputs = [] # Store numbers in here
while True:
num = input('Enter a number: ')
if num == 'done' :
break
try:
user_inputs.append(int(num)) # Add it to the list if it is an int.
except:
print('Invalid input')
None
,因此您执行的第一个比较将尝试检查整数是否大于或小于None
,这没有意义。在这种情况下,将它们初始化为输入列表的第一个元素是有效的。if len(user_inputs) != 0:
largest_so_far = user_inputs[0]
smallest_so_far = user_inputs[0]
else:
print("You didn't enter any numbers!")
largest_so_far = None
smallest_so_far = None
user_inputs
中的每个元素执行一个for-each循环。在检查最小元素的位置固定比较。您应该使用<
运算符,而不是>
运算符。for element in user_inputs:
if element > largest_so_far:
largest_so_far = element
if element < smallest_so_far:
smallest_so_far = element
the_num
和the_num2
将是列表的最后一个元素,而不是目标的最小/最大值。相反,请打印出最小和最大值。print("Maximum:", largest_so_far)
print("Minimum:", smallest_so_far)
输出:
Enter a number: 12
Enter a number: 51
Enter a number: -2
Enter a number: 3.4
Invalid input
Enter a number: test
Invalid input
Enter a number: 5
Enter a number: 2
Enter a number: done
Maximum: 51
Minimum: -2