2016-12-03 3 views
0

Ich versuche, einen einfachen Primzahl-Checker in Python 3.x zu bauen, und ich stoße auf einige Probleme. Ich poste meinen Code und erkläre dann meine Schwierigkeiten.Python Primzahl-Checker funktioniert nicht

number = input("Please enter a number: ") 

is_prime = True; 

for factor in range(2, number): 
    if number % factor == 0: 
     is_prime = False; 

if is_prime == True: 
    print("%d is a prime number!") % number 
else: 
    print ("%d is NOT a prime number!") % number 

Nun, wenn ich den folgenden Code ausführen, bekomme ich diesen Fehler:

C:\Users\clark\Documents\Python Projects>python PrimeNumberChecker.py Please enter a number: 4 Traceback (most recent call last): File "PrimeNumberChecker.py", line 5, in for factor in range(2, number): TypeError: 'str' object cannot be interpreted as an integer

nun von meinem begrenzten Verständnis von Python der Eingabemethode, die ich bin mit der Nummer Variable bewerten sollte zurückkehren eine Ganzzahl, also bin ich mir nicht sicher, warum sie mir sagt, dass es ein Konvertierungsproblem gibt. Könnte irgendwer etwas Licht auf das werfen, was hier vor sich geht? Ich bin sehr neu in Python.

Dank

+0

Sie die Eingabe Sie zu einer Reihe bekommen werfen müssen versuchen könnte. – TZHX

+0

Ich bin mir nicht sicher, was du damit meinst. Könnten Sie bitte etwas ausarbeiten? –

+0

Ihre Zahlenvariable ist eine Zeichenfolge. Wirf es auf einen Int. Lesen Sie ein grundlegendes Tutorial, um Benutzereingaben in Python zu erhalten. – TZHX

Antwort

2

In Python 3.x, müssen Sie Ihre Variable number zu int so konvertieren:

number = int(input("Please enter a number: ")) 

Sehen Sie diese zwei Beispiele aus der beide Version von Python, dass ich auf meinem Rechner habe :

In Python 3.4:

>>> number = input("Please enter a number: ") 
Please enter a number: 4 
>>> type(number) 
<class 'str'> 

In Python 2.7:

>>> number = input("Please enter a number: ") 
Please enter a number: 4 
>>> type(number) 
<type 'int'> 

Bitte nehmen Sie sich einen Blick auf diese wichtige Antwort von How can I read inputs as integers in Python?

+0

Danke, das hat mein Problem behoben. –

+0

@CarsonClark Gern geschehen, Sie können es als Antwort auf Ihre Frage akzeptieren :) – ettanany

0

In python2.x

number = input("Please enter a number: ") 

number wird ein int sein. Aber in python3.x wird es str sein. Sie verwenden python.3x, also müssen Sie das in Ganzzahl konvertieren. unter Verwendung von int.

number = int(number) 

könnten Sie einen Code verwiesen werden, die in python2.x

0

geschrieben wird Sie dieses

number=int(input("please enter a number") 

counter=0 

for factor in range (1,number): 
    if number%factor==0: 
     counter=counter+1 

if counter==2: 
    print(number,"is prime") 
else: 
    print(number,"is not prime")