Python Try/except语句用于“我的作业”

Python Try/except语句用于“我的作业”,python,Python,这个练习我做错了什么 编写一个程序,反复提示用户输入整数,直到用户输入“完成” 输入“完成”后,打印出最大和最小的数字。 如果用户输入有效数字以外的任何内容 它使用try/except发送,并发出适当的消息,忽略该号码 输入7、2、10和4并匹配下面的输出 def maim(): 最大=无 最小=无 尽管如此: num=输入(“输入一个数字:”) 如果num==“完成”: 打破 其他: num=浮点(num) 尝试: 如果num>最大值: 最大=num elif num最大值: 最大=num e

这个练习我做错了什么

编写一个程序,反复提示用户输入整数,直到用户输入“完成”

输入“完成”后,打印出最大和最小的数字。 如果用户输入有效数字以外的任何内容 它使用try/except发送,并发出适当的消息,忽略该号码

输入7、2、10和4并匹配下面的输出

def maim():
最大=无
最小=无
尽管如此:
num=输入(“输入一个数字:”)
如果num==“完成”:
打破
其他:
num=浮点(num)
尝试:
如果num>最大值:
最大=num
elif num<最小值:
最小=num
除:
打印(“无效号码”)
打印(个)
打印(“最大”,最大)
打印(“最小值”,最小值)
残废

主要错误在于
浮点(num)
需要在
try
块中,因为这是引发异常的语句

例如:

        try:
            num = float(num)
            if num > largest:
                largest = num
            elif num < smallest:
                smallest = num
        except:
            print("Invalid number")
等等

但是,考虑到您没有跟踪那么多值,只保留所有值的列表并在末尾使用
min
/
max
更简单:

nums = []
while True:
    num = input("Enter a number: ")
    if num == "done":
        break
    try:
        nums.append(float(num))
    except ValueError:
        print(f"Invalid number {num}")

print("Maximum", max(nums))
print("Minimum", min(nums))
三大问题:

  • 您在
    try
    语句之前将num强制转换为float,-
    try
    的目的是检查
    num
    是否为float,但如果将其从
    try
    语句中删除,则会引发错误
  • 在未指定错误类型的情况下,不应使用
    except
    语句。否则,即使程序遇到其他错误,它仍将执行除块之外的
    。在这种情况下,您应该使用
    ValueError
  • 当您将
    None
    与一个数字进行比较时,它将引发
    TypeError
    (如果您使用除
    之外的裸
    ,当程序中确实存在逻辑错误时,它将吃掉
    TypeError
    ,而不返回任何错误)在比较之前,您需要将
    最大
    最小
    变量设置为有效的
    浮点
    。我会这样做:
num=float(num)
如果不是最大的,也不是最小的:
最大=num
最小=num
#现在您可以安全地进行比较了。
总而言之:

def maim():
最大=无
最小=无
尽管如此:
num=输入(“输入一个数字:”)
如果num==“完成”:
打破
其他:
尝试:
num=浮点(num)
如果不是最大的,也不是最小的:
最大=num
最小=num
如果num>最大值:
最大=num
elif num<最小值:
最小=num
除值错误外:
打印(“无效号码”)
打印(个)
打印(“最大”,最大)
打印(“最小值”,最小值)
残废
输出:

Enter a number: 7
7.0
Enter a number: 2
2.0
Enter a number: bob
Invalid number
bob
Enter a number: 10
10.0
Enter a number: 4
4.0
Enter a number: done
Maximum 10.0
Minimum 2.0

你应该在你的问题中添加你期望发生的事情和实际发生的事情,包括任何错误消息,这样我们才能最好地帮助你仍然不起作用:(这就是为什么裸
except
s是坏的--
except
应该处理
ValueError
except也在吃掉
TypeError
)@乔治:我更新了代码-现在再试一次:)它可以工作了,谢谢@乔治,不客气!如果这个或任何答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。
nums = []
while True:
    num = input("Enter a number: ")
    if num == "done":
        break
    try:
        nums.append(float(num))
    except ValueError:
        print(f"Invalid number {num}")

print("Maximum", max(nums))
print("Minimum", min(nums))
Enter a number: 1
Enter a number: 2
Enter a number: 3
Enter a number: 4
Enter a number: asdf
Invalid number asdf
Enter a number: 5
Enter a number: 6
Enter a number: 0
Enter a number: done
Maximum 6.0
Minimum 0.0
num = float(num)
    try:  # this try does not check the validity of num
        ...

try:
    num = float(num) # now num is being checked
    ...
try:
    ...
except: # This will capture all types of errors, creating extra work debugging
    ...

try:
    ...
except ValueError: # This will only execute when the value of num is invalid
    ...
Enter a number: 7
7.0
Enter a number: 2
2.0
Enter a number: bob
Invalid number
bob
Enter a number: 10
10.0
Enter a number: 4
4.0
Enter a number: done
Maximum 10.0
Minimum 2.0