Why does my code input nothing?

this is my code:

diff = input("difficulty: ")
diff = diff.lower
if diff == "hard":
	print("1|2|3")
	print("-----")
	print("4|x|6")
	print("-----")
	print("7|8|9")
	num = input("space: ")
	if num == 1:
		print("o|2|3")
		print("-----")
		print("4|x|6")
		print("-----")
		print("7|8|9")
		print("calculating.")
		print("calculating..")
		print("calculating...")
		print("o|2|3")
		print("-----")
		print("4|x|6")
		print("-----")
		print("x|8|9")
		num = input("space: ")

please help (yes im making tic tac toe)

It’s not that you aren’t inputing anything, it’s that lower is a method and needs to be called with (). Otherwise you’re setting your variable to be that method.

>>> var = input()
Thing
>>> var = var.lower
>>> var
<built-in method lower of str object at 0x000001A10DDED8F0>
>>> var = input()
Thing
>>> var = var.lower()
>>> var
'thing'

Also remember that input returns a str, but further down you’re comparing to an int:

num = input("space: ")
if num == 1:

so either use int(num) or compare to "1", or it will always be False.

The input is received, but diff.lower means the method itself, not the result of calling it. Therefore, that is not equal to any of the strings you try to compare it to, because it isn’t a string at all.

Please see:

ok thank you, is it possible to mark the solution?