【问题标题】:Solving "Unindent does not match any outer indentation level"解决“Unndent 不匹配任何外部缩进级别”
【发布时间】:2019-06-28 18:08:24
【问题描述】:

您好,我最近开始学习 Python,我想编写一些代码,只要用户输入“完成”,就会提示用户输入整数。输入“完成”后,打印出最大和最小的数字。如果用户输入的不是有效数字,则会遇到错误。有人可以告诉我我的编码有什么问题吗?

largest = -1
smallest = None
while True:
    sval = input('Enter a number: ')
    if sval == 'done' :
       break
try:
    fval = float(sval)
except:
        print('Invalid input')
        continue
        largest=fval
    if fval>largest:
        largest=fval
        print('Maximum is ', largest)
    if smallest is None:
        smallest=fval
        return smallest
    if smallest>fval:
        smallest=fval
        print('Minimum is ',smallest)

【问题讨论】:

  • 请显示预期行为,您的代码与您的解释很难解读
  • Python 对间距很挑剔。现在我建议在一个街区下面留 4 个空间。例如,“except:”行下的部分缩进太远,或者那些 try except 语句还不够远。我说不出来。
  • s/挑剔/理智:p
  • 你的代码写得不好。首先,如果您输入一个数字,循环将重新开始。如果您输入“完成”,则循环将中断,但它始终会执行异常。其次,如果没有循环,您的 continue 运算符将无法工作。此外,您在 except 之后制作了两个表格,但需要一个。
  • 它在这一行显示了提到的错误:

标签: python


【解决方案1】:

您需要修改您的代码,以便保存所有可以转换为浮点数的输入而不覆盖它。此代码接受输入并检查它是否“完成”,如果没有,则尝试将其转换为浮点数并将其附加到 num 列表中。输入后,打印出列表的最大值和最小值。

nums=[]
while True:
    sval = input('Enter a number: ')
    if sval == 'done' :
       break
    else:
       try: nums.append(float(sval))
       except: None
print('Maximum is ', max(nums))
print('Minimum is ', min(nums))

【讨论】:

  • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation would greatly improve its long-term value 通过展示为什么这是一个很好的解决问题的方法,并且会使其对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。
猜你喜欢
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 2020-08-14
  • 2010-10-04
相关资源
最近更新 更多