# I am a new learner here, please fix my problem

print (“STAGE ONE”)
my_num = 7
guess = input(“tell me the secret number, then only I will tell you password and file name of next stage”)
if guess == my_num:
print (“great, you found it! the file name is STAGE TWO and password is -I Dont Know”)
else:
print (“nope, its not the password”)

please tell me whats wrong here, if I type 7 it displays “nope, its not the password”

@rachitmujmer, everything returned by the input() function is a string. You are comparing the string, “7” with the integer, 7.

1 Like

@patrickd314, Ok so, please give me the solution code to this

If you need a value that is inputted from the keyboard to be an int, you must use the int() function to cast it to an int:

``````my_num = input("Type a number: ")
my_num = int(my_num)
``````

Or, simply:

`my_num = int(input("Type a number: "))`

4 Likes

Thank you very much @patrickd314 for your solution.
Only one more question, What the difference between input() and raw_input()?

1 Like

raw_input() is the version of the function used in Python 2. It does not exist in Python 3, where the appropriate function is input().

1 Like

@patrickd314, hi remmember me? A question, i’m using python 3 and when i run this program:

from random import randint
print (“Battleship”)
board =

for x in range(5):
board.append([“O”] * 5)

def print_board(board):
for row in board:
print (" ").join(row)

print_board(board)

def random_row(board):
return randint(0, len(board) - 1)

def random_col(board):
return randint(0, len(board[0]) - 1)

ship_row = random_row(board)
ship_col = random_col(board)

for turn in range(4):
guess_row = int(input("Guess Row: "))
guess_col = int(input("Guess Col: "))

if guess_row == ship_row and guess_col == ship_col:
print (“Congratulations! You sunk my battleship!”)
break
else:
if (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):
print (“Oops, that’s not even in the ocean.”)
elif(board[guess_row][guess_col] == “X”):
print (“You guessed that one already.”)
else:
print (“You missed my battleship!”)
board[guess_row][guess_col] = “X”

# turn +1 here

``````print ("Turn"), turn + 1
print_board(board)
if turn == 3:
print ("Game Over")
``````

It shows me a syntax error on .join() statement. why is it so…

Hi, @rachitmujmer
Please post your code so that the indentations are apparent, thus making it easy to read, and also possible to copy, paste and test. Do so by making use of the </> icon that appears in the menu bar that appears at the top of the text box when you begin to type.

@patrickd314 sorry for inconvenience you faced, this is my code:

``````from random import randint

board = []

for x in range(5):
board.append(["O"] * 5)

def print_board(board):
for row in board:
print " ".join(row)

print_board(board)

def random_row(board):
return randint(0, len(board) - 1)

def random_col(board):
return randint(0, len(board[0]) - 1)

ship_row = random_row(board)
ship_col = random_col(board)
print ship_row
print ship_col
for turn in range(4):
# Everything from here on should go in your for loop!
# Be sure to indent four spaces!
guess_row = int(raw_input("Guess Row: "))
guess_col = int(raw_input("Guess Col: "))

if guess_row == ship_row and guess_col ==          ship_col:
print "Congratulations! You sunk my battleship!"
break
else:
if (guess_row < 0 or guess_row > 4) or            (guess_col < 0 or guess_col > 4):
print "Oops, that's not even in the ocean."
elif(board[guess_row][guess_col] == "X"):
print "You guessed that one already."
else:
print "You missed my battleship!"
board[guess_row][guess_col] = "X"
# Print (turn + 1) here!
print "Turn", turn + 1
print_board(board)
if turn == 3:
print ("Game Over")
``````

python3 is not backward compatible with python2, you will need to make some changes, first print has been updated from a statement to a function call:

``````# python 2
print "hello world"
# python 3
print("hello world")
``````

and `raw_input()` no longer exists in python3, its now `input()`

@stetim94 ok, I have made that changes but it gives me this error:

Traceback (most recent call last):
print_board(board)
File “E:\Notepad++\Battleship!!.py”, line 10, in print_board
print (" ").join(row)
AttributeError: ‘NoneType’ object has no attribute ‘join’

given i can’t see the changes, i have no idea what could cause the error.

The problem is that the interpreter thinks that you are trying to execute the statement print(" "), and then use the return value from print(), which is None, with join().

Just enclose the entire argument of print() within parentheses.

1 Like

@patrickd314, A question, can we use graphics in Python to make a simple stickman game?

There are graphical libraries for python, although then python isn’t the most common choice.

there is tkinter (which looks like its from the earlier 2000’s), but it simple. then there is PyQt (which looks more modern, but is also more complex)

and there is kivy, but i believe that is for building mobile apps.

1 Like

OK, if I have to make a game, which would you prefer me?

Neither, i would use pygame if it has to be python.

Personally, i think i would also consider other languages.