Ваша первая проблема - вы сравниваете строки "_number"
и "random"
. ASCIIbetically (или, скорее, Unicoderifically), "_number" < "random"
, потому что символ _
равен # 95, а символ r
равен # 114.
Если вы хотите сравнить две переменные, вы просто ссылаетесь на переменные, а не на строки, которые совпадают с именами этих переменных.
Ваша вторая проблема в том, что random
это не ваше случайное число, это модуль, который вы использовали для создания этого числа. И, если быть более серьезным, вы нигде не храните это число - вы просто конвертируете его в строку, чтобы распечатать, а затем выбрасываете.
Ваша третья проблема заключается в том, что вам нужно изменить эти if
s на elif
s. В противном случае сообщение You Lost
печатается всякий раз, когда _number > random
не соответствует действительности, а не только тогда, когда все три сравнения не соответствуют действительности.
Собираем все вместе:
choice = random.randint(1,11)
for x in range(1):
print ("Python chose: " + str(choice))
if (_number == choice):
print ("You Won! :)")
elif (_number < choice):
print ("Your number is less")
elif (_number > choice):
print ("Your number is more")
else:
print ("You Lost :(")
Конечно, нет способа проиграть вашу игру - одно из трех условий всегда будет верным. (Если вы использовали комплексные числа или числа с плавающей запятой, включая NaN, вы могли бы ввести число, которое ни в коем случае не было сопоставимо с выбранным, но это не так.)
Пока мы на этом:
- Нет смысла называть вашу переменную
_number
вместо number
.
- Этот цикл
for x in range(1):
не делает ничего полезного - он повторяется ровно один раз, устанавливая для x
значение 0, которое вы никогда не используете.
- Вам не нужны скобки вокруг ваших условий.
- Вы не должны импортировать модули в середине такой функции, за исключением особых случаев, когда вам нужны необычные вещи, такие как отложенная загрузка.
- Вы должны следовать стилю PEP 8 или, по крайней мере, выбрать последовательный стиль для подражания.
- Проще просто передать несколько аргументов в
print
или использовать форматирование строк, чем вручную преобразовывать вещи в строки и объединять их.
Итак:
import random
def loto():
number = int(input("Enter any number between 1-10: "))
choice = random.randint(1, 11)
print("Python chose:", choice)
if number == choice:
print("You Won! :)")
elif number < choice:
print("Your number is less")
elif number > choice:
print("Your number is more")
else:
print("You Lost :(")
loto()