【问题标题】:Where's the mistake in my Python program? [closed]我的 Python 程序中的错误在哪里? [关闭]
【发布时间】:2024-05-24 00:05:04
【问题描述】:

我的代码中的错误在哪里?我找不到他们。我必须制作一个乘法学习程序,但我现在陷入了困境。

    import random

n = int(input("How many exercises?"))
wrong = 0
abort = False
for k in range(n):
    a = random.randint(2, 13)
    b = random.randint(2, 13)
    help = str(k+1) + ". " + str(a) + " * " + str(b)
    answer = input(help + "=> ")
    if answer == "":
        abort = True
        break
    if answer !=a * b:
        print("Wrong!")
        wrong += 1
    if abort == True:
        print("Noob")
            return
if wrong == 0:
    print("Good")

else:
    print("Hale" ,wrong)

【问题讨论】:

  • 请尽快?愿意免费回答问题的人不会有你的紧迫感。
  • 请使用tour,环顾四周,并通读help center,尤其是How do I ask a good question? 正确提出问题更多更有可能获得你比填写最低文本要求更快地得到答案。
  • 为了让读者找出代码中的错误,他们需要查看输入数据、预期输出数据和实际输出数据。虽然看起来人们愿意猜测您代码中的问题,但您会将这些内容添加到您的问题中吗?

标签: python-3.6


【解决方案1】:

有两个错误,return 不在函数中,vigu 变量此时没有值,你永远也得不到

如果中止 == 真: 打印(“菜鸟”) 返回

因为在此之前你设置了 abort=True 然后你做了一个休息,

【讨论】:

  • 虽然这是一个很好的回答尝试,但如果我是你,我会避免回答如此糟糕的问题,因为它们可能会被关闭和删除;浪费了你的时间。
  • 感谢您的评论
【解决方案2】:

稍微更正了您的代码:

  1. 缩进你的代码;这真的很重要
  2. 不能在函数外使用语句“return”
  3. 如果要将“答案”与“a * b”进行比较,请将“答案”转换为 int 或将 a * b 转换为字符串

这是我所做的更正:

import random

n = int(input("How many exercises?"))
wrong = 0
abort = False
for k in range(n):
    a = random.randint(2, 13)
    b = random.randint(2, 13)
    help = str(k+1) + ". " + str(a) + " * " + str(b)
    answer = input(help + "=> ")
    if answer == "":
      abort = True
      break
    if answer != str(a * b):
      print("Wrong!")
      wrong += 1
    if abort == True:
      print("Noob")
if wrong == 0:
    print("Good")

'''Don't know what you wanted to do here
else:
  print("Hale" ,vigu)'''

【讨论】:

  • 虽然这是一个很好的回答尝试,但如果我是你,我会避免回答如此糟糕的问题,因为它们可能会被关闭和删除;浪费了你的时间。
  • 我对*有点陌生,谢谢你告诉我。我也通过阅读并尝试纠正这种代码来提高自己:)