2016-07-06 11 views
1

Ich bin relativ neu in der Programmierung.Python-Variable außerhalb der Funktion Syntaxfehler?

Ich habe versucht zu schreiben und mein erstes Programm laufen und ich bin mit einem Fehler stecken geblieben. Ich versuchte, die int (raw_input()) auf Linie 22 ein paar Mal zu entfernen und ein paar andere Anpassungen machen, aber meine Fähigkeit ist nicht ganz alles da, um das selbst zu lösen.

1 Premains = 10 #Remaining points assigned before functions 
2 
3 #Function designed to see user's overall stats and remaining points 
4 
5 def print_skills(): 
6 
7   print "Dexterity:" + dex 
8   print "Strength:" + str 
9   print "IntelligenceL:" + int 
10   print "\nYou have %d remaining" % Premain 
11 
12 #Function called when user selects to edit Dexterity attribute 
13 
14 def dex_skill(): 
15   Dpoints = 0 
16   print "Great you choose Dexterity!" 
17   answer = raw_input("would you like to add or subtract points?\n > ") 
18 
19   if answer == "add": 
20     print "You have: %d points remaining!" % Premains 
21 
22     numb =(int(raw_input("How many points would you like to add?\n > ") 
23 
24     Premains = (numb - Premains) 
25     Dpoints = numb + Dpoints 
26 
27     print "Great! you now have: %d Dexterity points!" 
28 
29   else: 
30     print "You choose subtract." 
31     #Subtract code goes here. Similiar to above. 
32 dex_skill() 

~
Diese kehrt mit dem Fehler

File "try.py", line 24 
Premains = (numb - Premains) 
    ^
SyntaxError: invalid syntax 
+3

Sie fehlen zwei enge Klammern in der vorherigen Zeile. (Das äußere Bracket-Set ist ebenfalls unpraktisch und wird wahrscheinlich seltsame Sachen verursachen) –

+1

Nur ein Vorschlag: Sie werden mehr und besser lernen, wenn Sie sich bemühen, solche Dinge wie Syntaxfehler selbst herauszufinden, anstatt nur Dinge auf StackOverflow zu kopieren – pokemon

Antwort

3

Es gibt zwei Fehler, die ich hier erkennen. Der erste ist in Zeile 20. Sie haben 3 Klammern geöffnet und nur einen von ihnen geschlossen. Ändern Sie Zeile 22 dazu:

numb = int(raw_input("How many points would you like to add?\n > ")) 

Es besteht keine Notwendigkeit für die dritte Halterung ist, verwenden Sie nur 2.

Die zweite ist auf den Linien 32 und 14. Sie sind nicht Premains in die Funktion übergeben dex_skill Dadurch kann auf diese Variable nicht zugegriffen werden, daher wird ein TypeError zurückgegeben. Um dies zu beheben, ändern Linie 32 dazu:

dex_skill(Premains) 

und Linie 14 dazu:

def dex_skill(Premains): 

So wird Ihr Code wie folgt aussehen:

Premains = 10 #Remaining points assigned before functions 

#Function designed to see user's overall stats and remaining points 

def print_skills(): 
     print "Dexterity:" + dex 
     print "Strength:" + str 
     print "IntelligenceL:" + int 
     print "\nYou have %d remaining" % Premain 

#Function called when user selects to edit Dexterity attribute 
Premains = 10 #Remaining points assigned before functions 

#Function designed to see user's overall stats and remaining points 
def print_skills(): 
     print "Dexterity:" + dex 
     print "Strength:" + str 
     print "IntelligenceL:" + int 
     print "\nYou have %d remaining" % Premain 

#Function called when user selects to edit Dexterity attribute 

def dex_skill(Premains): #Passing Premains as a parameter so this function can access it. 
     Dpoints = 0 
     print "Great you choose Dexterity!" 
     answer = raw_input("would you like to add or subtract points?\n > ") 

     if answer == "add": 
       print "You have: %d points remaining!" % Premains 

       numb = int(raw_input("How many points would you like to add?\n > ")) 

       Premains = (numb - Premains) 
       Dpoints = numb + Dpoints 

       print "Great! you now have: %d Dexterity points!" 

     else: 
       print "You choose subtract." 
       #Subtract code goes here. Similiar to above. 

dex_skill(Premains) 

WIE RICHTIG SYNTAXFEHLER

Syntaxfehler sind eine der einfachsten zu behebenden Fehler, Sie erhalten alle Informationen, die Sie benötigen, um sie in dem von Python ausgelösten Fehler zu beheben.

Der folgende Code:

array = ['john', 'paul', 'mike' 

for a in array: 
    print(a) 

einen Syntaxfehler in Zeile 1 zurück, und die Python-IDE den Punkt markieren, wo ist nicht in der Vergangenheit analysieren kann, so wird es so aussehen: Example of Syntax Error in Python 2.7

Wie Sie sehen können, ist for rot hervorgehoben, sodass Python das nicht analysieren kann. Der Fehler liegt also entweder in dieser Zeile oder in der Zeile darüber. In diesem Fall wurde das Array zwar geöffnet, aber nicht geschlossen, so dass Python die for-Schleife analysiert, als wäre es ein Array, was nicht möglich ist. Daher müssen Sie Zeile 1 korrigieren, indem Sie sie ändern ...

Daraus: array = ['john', 'paul', 'mike'

Zu diesem array = ['john', 'paul', 'mike']

Andere IDEs sollten entweder geben Sie Syntaxfehler wie diese oder auf der Konsole wie der offizielle Python IDE für eine ValueError

Hoffnung tun würde, drucken das hilft, DibDibs :)

+1

Vielen Dank! Das macht total Sinn für mich. – Number28

+0

Kein Problem Nummer28, aber ich stimme mit @pokemon überein, Sie werden viel mehr lernen, wenn Sie Ihren Code durchgehen und nach Fehlern suchen. Wenn Sie auf meine Antwort zurückblicken, habe ich hinzugefügt, wie man Syntaxfehler korrigiert. Ich bin glücklich, bei irgendwelchen Problemen zu helfen, die Sie haben, aber viele Leute werden Ihnen nur sagen, dass Sie es selbst korrigieren müssen. – DibDibs

+0

PS: Danke, dass du mich als beste Antwort markiert hast, und viel Glück mit dem Rest deines Projekts! – DibDibs

Verwandte Themen