在Python中查找最大和最小的数字

l7wslrjt  于 2023-05-30  发布在  Python
关注(0)|答案(2)|浏览(244)

我是一个编程新手,请告诉我我的代码是否正确。
我正在尝试编写一个程序,反复提示用户输入整数,直到用户输入“完成”。输入“完成”后,打印出最大和最小的数字。如果用户输入的不是有效的数字,则使用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))
omtl5h9j

omtl5h9j1#

你的代码几乎是正确的,只有几件事你需要改变:

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)))

另外,既然你说你是编程新手,我将解释我做了什么,以及为什么。
首先,不需要在开始时将largestsmallest设置为None。实际上,我从来没有把这些值放在变量中,因为我们只需要把它们打印出来。
然后,所有代码都是相同的,直到try/except block。在这里,我尝试将用户输入转换为整数,并一次性将其追加到列表中。如果其中任何一个失败,则打印Invalid input。我的except部分有点不同:上面写着except ValueError这意味着“仅在发生ValueError时运行以下代码”。在捕获错误时,最好是具体一些,因为except本身会捕获所有错误,包括我们不希望看到的错误。
我们不想在这里使用continue,因为continue意味着“跳过剩余的代码并继续下一个循环迭代”。我们不想在这里跳过任何东西。
现在让我们来谈谈这段代码:

numbers = int(input('How many numbers: '))
for n in range(numbers):
    lst.append(num)

根据您的解释,不需要从用户那里获得更多的输入,因此不需要这些代码。把int(input())放在try/except块中也是一个好主意,因为如果用户输入了数字以外的东西,int(input())就会出错。
最后,print语句:

print('max: %d\nmin: %d' % (max(lst), min(lst)))

在python中,你可以使用“字符串格式化操作符”,百分号(%)将数据放入字符串中。您可以使用%d来填充数字,%s来填充字符串。下面是完整的字符列表,如果你向下滚动一点,可以放在百分比后面。它也做了很好的解释,但这里有一些例子:

print('number %d' % 11)
x = 'world'
print('Hello, %s!' % x)
kmbjn2e3

kmbjn2e32#

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))

相关问题