【问题标题】:Why is my python code returning a syntax error?为什么我的 python 代码返回语法错误?
【发布时间】:2019-04-10 16:41:35
【问题描述】:

我是 python 新手,我一直在尝试通过创建一些练习代码来改进。

user_number = input('Enter in the number you want the factorial of: ')
print(str(user_number) + '! is equal to ' + str(factorial(int(user_number))))

我已经在我的代码前面定义了阶乘函数,问题似乎来自这两行。是否有我看不到的语法错误??

【问题讨论】:

  • 你能在你的帖子中加入阶乘函数
  • 用简单的赋值替换input 语句会发生什么?记住“最小”部分。
  • 您还需要提供您得到的错误字符串。还假设您的阶乘函数有效,并且您输入了一个阶乘不会溢出的整数,这两行应该可以工作
  • 如果您在呈现的两行中的第一行似乎遇到了语法错误,则错误很可能出现在上面的行中。解释器会准确地告诉您它在哪一行和哪个字符上遇到了问题。但有时它会继续尝试理解您的代码,并且只会在下一行中发现语法有问题。

标签: python syntax


【解决方案1】:

Python 2 中的input 函数将用户输入评估为 Python 代码,而不是按字面意思理解。你应该在 Python 2 中使用raw_input

user_number = raw_input('Enter in the number you want the factorial of: ')

【讨论】:

  • 在 Python 2.7 中使用 input 在这种情况下通常不会给出语法错误。如果您键入一个数字,它将接受该数字。如果您键入像2 + 3 ( 这样的无效表达式,您 收到语法错误,但仅在运行时和响应输入时出现。如果你键入一个不带引号的字符串,你通常会得到一个 NameError,因为该字符串不能被解释为一个变量。
【解决方案2】:

假设您使用的是 Python 3,因为您的 print 语句是一个函数调用。当我使用

尝试您的代码时
import math

然后改为这一行:

print(str(user_number) + '! is equal to ' + str(math.factorial(int(user_number))))

结果是:

10! is equal to 3628800

我输入了 10 作为值。 也许问题出在您的阶乘函数中。除非您也发布,否则很难知道。

【讨论】:

    【解决方案3】:

    下面的代码对我有用。我怀疑你的阶乘函数可能有问题。

    def factorial(n):
        if n == 0:
            return 1
        else:
            return n * factorial(n-1)
    
    user_number = input('Enter in the number you want the factorial of: ')
    print(str(user_number) + '! is equal to ' + str(factorial(int(user_number))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-16
      • 2021-07-17
      • 2021-05-10
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多