【问题标题】:How do I divide a number stored inside a variable? [duplicate]如何划分存储在变量中的数字? [复制]
【发布时间】:2016-12-15 23:32:42
【问题描述】:

我正在编写的程序允许您输入任何数字,程序将识别该数字是否为质数。但是,我收到如下所示的错误。

我的这行代码遇到了问题:

chosen = input("Input a number")
number = (chosen) / chosen

当我运行它时,输出如下:

Input a number1
Traceback (most recent call last):
File "C:\Users\engineer2\Desktop\Programs\prime numbers.py", line 3, in <module>
number = (chosen) / chosen
TypeError: unsupported operand type(s) for /: 'str' and 'str'

这里是完整的代码:

chosen = input("Input a number")
number = (chosen) / chosen
one = 1
if number == (one):
print ("Its a prime number")


else:
print ("Not a prime")



input ("press enter")

【问题讨论】:

  • input() 返回一个字符串,而不是一个数字。您需要先将其转换为数字,然后才能对其进行算术运算。
  • 如果您使用的是 python 3.x,input 会返回一个类似于 python 2.7 中的raw_input 的字符串
  • 下一次,请至少尝试在 Google 上搜索错误,然后再在 StackOverflow 上发布问题(或者您知道,对错误消息进行一点推理,它几乎可以准确地告诉您是什么在这种情况下是错误的)。

标签: python


【解决方案1】:

您正在尝试分割字符串,使用 int() 转换为 int。

try:
    chosen = int(input("Input a number"))
except ValueError:
    print('Not number.')

作为旁注,您的 checking primality 算法存在缺陷,您需要检查您的数字范围内的每个数字是否与 n 进行无余数除法,而不仅仅是 输入

a = int(input("Input a number: "))  # Example -> 7
def is_prime(n):
    for i in range(2, n):   
        if n % i == 0: 
            return False
    return True

print is_prime(a)
>>> True

# One-liner version.
def is_prime(n):
    return all(n % i for i in range(2, n))

print is_prime(a)
>>> True

【讨论】:

    【解决方案2】:

    您必须尝试将输入转换为数字,在这种情况下浮点数是显式的。

    请记住,您应该使用raw_input 而不是输入。

    try:
        chosen = raw_input("Input a number: ")
        number = float(chosen) / float(chosen)
    except Exception as e:
        print 'Error: ' + str(e)
    

    【讨论】:

      【解决方案3】:

      问题在于input() 返回的是字符串而不是数字。 您首先需要将chosen 转换为带有chosen = float(chosen) 的数字。那么数学运算应该可以正常工作..

      【讨论】:

        【解决方案4】:

        input() 函数返回 string 而不是 int。尝试转换它或改用raw_input()

        方法一:

        chosen = int(input("Input a number"))
        number = (chosen) / chosen
        

        方法二:

        chosen = raw_input("Input a number")
        number = (chosen) / chosen
        

        【讨论】:

        • python 没有类型转换
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多