Python Try/except语句用于“我的作业”
这个练习我做错了什么 编写一个程序,反复提示用户输入整数,直到用户输入“完成” 输入“完成”后,打印出最大和最小的数字。 如果用户输入有效数字以外的任何内容 它使用try/except发送,并发出适当的消息,忽略该号码 输入7、2、10和4并匹配下面的输出Python Try/except语句用于“我的作业”,python,Python,这个练习我做错了什么 编写一个程序,反复提示用户输入整数,直到用户输入“完成” 输入“完成”后,打印出最大和最小的数字。 如果用户输入有效数字以外的任何内容 它使用try/except发送,并发出适当的消息,忽略该号码 输入7、2、10和4并匹配下面的输出 def maim(): 最大=无 最小=无 尽管如此: num=输入(“输入一个数字:”) 如果num==“完成”: 打破 其他: num=浮点(num) 尝试: 如果num>最大值: 最大=num elif num最大值: 最大=num e
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))
三大问题:
- 您在
语句之前将num强制转换为float,-try
的目的是检查try
是否为float,但如果将其从num
语句中删除,则会引发错误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