Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
invalid syntax (BEGINNER)
#11
so... i applied your code and now i have another error:
import sys

print("**********************")
print("*welcome to QuizWorld*")
print("**********************")
print("       v.1.0.0        ")

print("rules: Do not cheat each answer will give you 5 points, if you get more then 15 points you win if you get less you loose, after you win or lose go check out your answers and final points on lista risultati or punteggio finale")
def yes():
	a = input("do you want to play? ")
	if a == "yes":
		del a
		print("ok, so first question")
		print("whats the capital of italy?")
		a = input("answer: ")
		if a == "rome":
			print("correct")
			a1 = 5
			with open("lista risultati.txt", 'w') as f:
				f.write(str(a1) + '\n')
		else:
			a1 = 0
			print("wrong")
			with open("lista risultati.txt", 'w') as f:
				f.write(str(a1) + '\n')
		f.close
		print("second question")
		print("1*2*3*4*5*6*7*8*9*0*1*1*0*1")
		b = input("answer: ")
		if b == 0:
			print("correct")
			b1 = 5
			with open("lista risultati.txt", 'a') as f:
				f.append(str(b1) + '\n')
		else:
			b1 = 0
			print("wrong")
			with open("lista risultati.txt", 'a') as f:
				f.append(str(b1) + '\n')
		f.close
		print("third question")
		print("does it weight more 1 pound of steel or 1 pound of feathers")
		c = input("answer: ")
		if c == "they weight the same":
			print("correct")
			c1 = 5
			with open("lista risultati.txt", 'a') as f:
				f.append(str(c1) + '\n')
		else:
			c1 = 0
			print("wrong")
			with open("lista risultati.txt", 'a') as f:
				f.append(str(c1) + '\n')
		f.close
		print("FINAL question")
		print("is this program good?")
		d = input("answer: ")
		if d == "yes":
			print("correct")
			d1 = 5
			with open("lista risultati.txt", 'a') as f:
				f.append(str(d1) + '\n')
		else:
			d1 = 0
			print("wrong")
			with open("lista risultati.txt", 'a') as f:
				f.append(str(d1) + '\n')
		f.close
		
		e = a1 + b1 + c1 + d1
		
		with open("risultato finale.txt", 'w') as n:
			f1.write(str(e)
		n.close
		
		r = open("risultato finale.txt", "r")
		
		if r >= 15:
			print("testing results...")
			print("BRAVO, you have winned the game")
		else:
			print("testing results...")
			print("you have lost the game")
		
		
			

	elif a == "no":
		sys.exit("you said to do it")
	else:
		print("!!ERROR: you need to enter yes or no. !!")
		yes()
yes()
Error:
File "C:\Users\Shishi\Desktop\QuizWorld\risultati\game.py", line 74 n.close invalid syntax
Reply
#12
(Oct-15-2020, 01:17 PM)Shishi Wrote: ok, so with line 30 i need to do something like this
if b == "0"
?

Correct. Just don't forget to end with a colon after the final quotation mark.


(Oct-15-2020, 01:47 PM)Shishi Wrote: so... i applied your code and now i have another error:

That's one of those missing parentheses I warned you about. You need an additional closing parenthesis on line 73.


One other thing I just noticed... When you are appending to a file, you still need to use f.write(), not f.append() (as in line 34 for example). The data you write is automatically appended because you have opened the file in append mode using 'a' in the open() call.
Reply
#13
ok, so the program is running only that when i get to the last part it says:

Error:
Traceback (most recent call last): File "C:\Users\Erminia\Desktop\QuizWorld\risultati\game.py", line 93, in <modu le> yes() File "C:\Users\Erminia\Desktop\QuizWorld\risultati\game.py", line 73, in yes f1.write(str(e)) NameError: name 'f1' is not defined
the code is:
import sys

print("**********************")
print("*welcome to QuizWorld*")
print("**********************")
print("       v.1.0.0        ")

print("rules: Do not cheat each answer will give you 5 points, if you get more then 15 points you win if you get less you loose, after you win or lose go check out your answers and final points on lista risultati or punteggio finale")
def yes():
	a = input("do you want to play? ")
	if a == "yes":
		del a
		print("ok, so first question")
		print("whats the capital of italy?")
		a = input("answer: ")
		if a == "rome":
			print("correct")
			a1 = 5
			with open("lista risultati.txt", 'w') as f:
				f.write(str(a1) + '\n')
		else:
			a1 = 0
			print("wrong")
			with open("lista risultati.txt", 'w') as f:
				f.write(str(a1) + '\n')
		f.close
		print("second question")
		print("1*2*3*4*5*6*7*8*9*0*1*1*0*1")
		b = input("answer: ")
		if b == "0":
			print("correct")
			b1 = 5
			with open("lista risultati.txt", 'a') as f:
				f.write(str(b1) + '\n')
		else:
			b1 = 0
			print("wrong")
			with open("lista risultati.txt", 'a') as f:
				f.write(str(b1) + '\n')
		f.close
		print("third question")
		print("does it weight more 1 pound of steel or 1 pound of feathers")
		c = input("answer: ")
		if c == "they weight the same":
			print("correct")
			c1 = 5
			with open("lista risultati.txt", 'a') as f:
				f.write(str(c1) + '\n')
		else:
			c1 = 0
			print("wrong")
			with open("lista risultati.txt", 'a') as f:
				f.write(str(c1) + '\n')
		f.close
		print("FINAL question")
		print("is this program good?")
		d = input("answer: ")
		if d == "yes":
			print("correct")
			d1 = 5
			with open("lista risultati.txt", 'a') as f:
				f.write(str(d1) + '\n')
		else:
			d1 = 0
			print("wrong")
			with open("lista risultati.txt", 'a') as f:
				f.write(str(d1) + '\n')
		f.close
		
		e = a1 + b1 + c1 + d1
		
		with open("risultato finale.txt", 'w') as n:
			f1.write(str(e))
		n.close
		
		r = open("risultato finale.txt", "r")
		
		if r >= 15:
			print("testing results...")
			print("BRAVO, you have winned the game")
		else:
			print("testing results...")
			print("you have lost the game")
		
		
			

	elif a == "no":
		sys.exit("you said to do it")
	else:
		print("!!ERROR: you need to enter yes or no. !!")
		yes()
yes()
Reply
#14
Look at lines 72 through 74. You open the file as n, then do f1.write(). It should be apparent why that doesn't work.
Reply
#15
right sorry, ok thats now fixed but now it gives me this message

Error:
Traceback (most recent call last): File "C:\Users\Erminia\Desktop\QuizWorld\risultati\game.py", line 93, in <modu le> yes() File "C:\Users\Erminia\Desktop\QuizWorld\risultati\game.py", line 78, in yes if r >= "15": TypeError: '>=' not supported between instances of '_io.TextIOWrapper' and 'str'
the code is the same but i will repost it just in case

import sys

print("**********************")
print("*welcome to QuizWorld*")
print("**********************")
print("       v.1.0.0        ")

print("rules: Do not cheat each answer will give you 5 points, if you get more then 15 points you win if you get less you loose, after you win or lose go check out your answers and final points on lista risultati or punteggio finale")
def yes():
	a = input("do you want to play? ")
	if a == "yes":
		del a
		print("ok, so first question")
		print("whats the capital of italy?")
		a = input("answer: ")
		if a == "rome":
			print("correct")
			a1 = 5
			with open("lista risultati.txt", 'w') as f:
				f.write(str(a1) + '\n')
		else:
			a1 = 0
			print("wrong")
			with open("lista risultati.txt", 'w') as f:
				f.write(str(a1) + '\n')
		f.close
		print("second question")
		print("1*2*3*4*5*6*7*8*9*0*1*1*0*1")
		b = input("answer: ")
		if b == "0":
			print("correct")
			b1 = 5
			with open("lista risultati.txt", 'a') as f:
				f.write(str(b1) + '\n')
		else:
			b1 = 0
			print("wrong")
			with open("lista risultati.txt", 'a') as f:
				f.write(str(b1) + '\n')
		f.close
		print("third question")
		print("does it weight more 1 pound of steel or 1 pound of feathers")
		c = input("answer: ")
		if c == "they weight the same":
			print("correct")
			c1 = 5
			with open("lista risultati.txt", 'a') as f:
				f.write(str(c1) + '\n')
		else:
			c1 = 0
			print("wrong")
			with open("lista risultati.txt", 'a') as f:
				f.write(str(c1) + '\n')
		f.close
		print("FINAL question")
		print("is this program good?")
		d = input("answer: ")
		if d == "yes":
			print("correct")
			d1 = 5
			with open("lista risultati.txt", 'a') as f:
				f.write(str(d1) + '\n')
		else:
			d1 = 0
			print("wrong")
			with open("lista risultati.txt", 'a') as f:
				f.write(str(d1) + '\n')
		f.close
		
		e = a1 + b1 + c1 + d1
		
		with open("risultato finale.txt", 'w') as f1:
			f1.write(str(e))
		f1.close
		
		r = open("risultato finale.txt", "r")
		
		if r >= "15":
			print("testing results...")
			print("BRAVO, you have winned the game")
		else:
			print("testing results...")
			print("you have lost the game")
		
		
			

	elif a == "no":
		sys.exit("you said to do it")
	else:
		print("!!ERROR: you need to enter yes or no. !!")
		yes()
yes()
Reply
#16
Maybe you should try fixing your own syntax errors. What does the error message say? Out of r and "15" which one do you think is the str? Which one is the text wrapper? If you cannot use ">=" to compare a str and a text wrapper what do you think you need to do? Do you need a different comparison operator or do you need compatible types? If you need compatible types, which do you change, r to be like a str or "15" to make it like a text wrapper? Maybe you should read up on what a text wrapper is.
GOTO10, buran, ndc85430 like this post
Reply
#17
i tryied but when i do that like
if r == "15": print("win") elif r == "20": print("win") else: print("lose")
i will always lose even if i have 15 or 20
Reply
#18
Don't forget that you can just add a simple print statement print(r) to see what the value of r is at any given point. Printing your variables to see what they contain is a common debugging technique. If you think you have a string value of '15' or '20' in r, but your program still displays "lose", then you can be pretty certain that r doesn't contain what you think it does. Printing r on the line preceding your if/else clauses will help you find the problem.
Reply
#19
it says this: <built-in method read of _io.TextIOWrapper object at 0x0170B5B0>
it dosn't says the number
Reply
#20
(Oct-15-2020, 05:38 PM)Shishi Wrote: it says this: <built-in method read of _io.TextIOWrapper object at 0x0170B5B0>
it dosn't says the number

Right, that is exactly the problem. I suggest you review some of the python documentation for working with files, but in short your problem is that you haven't read anything from the file you opened. The variable r is assigned to the TextIOWrapper object you created by opening the file. If you want to read something from the file, you need to use file.read() similar to the way you've used file.write() to write to files. Assign what you read to a variable, and *that* is what you want to compare to "15" or "20".
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  print(data) is suddenly invalid syntax db042190 6 1,286 Jun-14-2023, 02:55 PM
Last Post: deanhystad
  SyntaxError: invalid syntax ?? korenron 15 5,907 Jan-25-2022, 11:46 AM
Last Post: korenron
  Invalid syntax with an f-string Mark17 7 8,052 Jan-14-2022, 04:44 PM
Last Post: Mark17
  invalid syntax in my class CompleteNewb 2 1,975 Dec-13-2021, 09:39 AM
Last Post: Larz60+
Exclamation Invalid syntax error(Predict Ethereum Price) lulu43366 2 3,227 Sep-24-2021, 01:24 PM
Last Post: lulu43366
  Unexplained Invalid syntax Error cybertooth 5 3,368 Aug-02-2021, 10:05 AM
Last Post: cybertooth
  [split] SyntaxError: invalid syntax Code_X 3 2,828 May-04-2021, 05:15 PM
Last Post: Yoriz
  Invalid syntax error - need help fixing calgk01 3 3,370 Feb-23-2021, 08:41 PM
Last Post: nilamo
  Invalid syntax using conditionals if - else jperezqu 1 2,380 Jan-13-2021, 07:32 PM
Last Post: bowlofred
  invalid syntax in line 5. Help Asadzangibaloch 2 2,444 Dec-10-2020, 04:26 PM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020