我是编程新手,如果我的代码是正确的,请告诉我。
我正在尝试编写一个程序,该程序会反复提示用户输入整数,直到用户输入“done”为止。输入“完成”后,打印出最大和最小的数字。如果用户输入除有效号码以外的任何内容,请使用try / except捕获并发出相应的消息并忽略该号码。
largest = None
smallest = None
while True:
num = input("Enter a number: ")
if num == 'done':
break
try:
fnum = float(num)
except:
print("Invalid input")
continue
lst = []
numbers = int(input('How many numbers: '))
for n in range(numbers):
lst.append(num)
print("Maximum element in the list is :", max(lst), "\nMinimum element in the list is :", min(lst))
答案 0 :(得分:1)
您的代码几乎是正确的,您需要更改几件事:
lst = []
while True:
user_input = input('Enter a number: ')
if user_input == 'done':
break
try:
lst.append(int(user_input))
except ValueError:
print('Invalid input')
if lst:
print('max: %d\nmin: %d' % (max(lst), min(lst)))
另外,既然你说你是编程新手,我会解释我做了什么,以及为什么。
首先,无需在开头将largest
和smallest
设置为None
。我实际上从来没有把这些值放在变量中,因为我们只需要它们来打印它们。
然后,您的所有代码都与try/except block
完全相同。在这里,我尝试将用户输入转换为整数,并将其一次性附加到列表中。如果其中任何一项失败,请打印Invalid input
。我的except
部分略有不同:它说except ValueError
。这意味着“如果发生ValueError
,则仅运行以下代码”。在捕获错误时要特别注意,因为except
本身会捕获所有错误,包括我们不期望的错误,并希望查看是否出现错误。< / p>
我们不想在这里使用continue
,因为continue
表示“跳过剩下的代码并继续下一个循环迭代”。我们不想在此处跳过任何内容。
现在让我们谈谈这段代码:
numbers = int(input('How many numbers: '))
for n in range(numbers):
lst.append(num)
根据您的解释,无需从用户那里获得更多输入,因此不需要此代码。将int(input())
放在try/except
块中也是一个好主意,因为如果用户输入其他而不是数字,int(input())
将会出错。< / p>
最后,print
声明:
print('max: %d\nmin: %d' % (max(lst), min(lst)))
在python中,您可以使用“字符串格式化运算符”,百分比(%)符号将数据放入字符串。您可以使用%d
填写数字%s
来填写字符串。如果向下滚动一点,Here是在百分比之后放置的完整字符列表。它也很好地解释了它,但这里有一些例子:
print('number %d' % 11)
x = 'world'
print('Hello, %s!' % x)
答案 1 :(得分:0)
user_list = []
while True:
user_input = int(input())
if user_input < 0:
break
user_list.append(user_input)
print(min(user_list), max(user_list))