2015-03-24 6 views
3

Я сделал базовую рандомизированную программу на моей малине Pi, и это выглядит примерно так.Python рандомизированная программа не работает

import random 
print ("Welcome to the PC Expo's new game, PC Dispenser, what will you win?") 
WinorLose = random.randint(1, 1000) 
if WinorLose <100: 
    print ("You won a Nintendo Wii.") 
elif WinorLose >200: 
    print ("You won a Sony PSP.") 
elif WinorLose > 300: 
    print ("You won a Nintendo Wii U.") 
elif WinorLose > 400: 
    print ("You won a Sony PS Vita.") 
else: 
    print ("Not your lucky day, Try again.") 

print ("Thank you for the visit.") 

, если вы не можете сказать, что он делает, у него есть шанс дать вам виртуальный PSP, Wii U, и так далее. Но все, что он делает, это печатать скорее «Вы выигрываете Sony PSP», или «Не ваш счастливый день, попробуйте еще раз». Что не так? Какие-нибудь исправления?

ответ

6

Помещенный наибольшее число первых:

WinorLose = random.randint(1, 1000) 
print(WinorLose) 
if WinorLose > 400: 
    print ("You won a Sony PS Vita.") 
elif WinorLose > 300: 
    print ("You won a Nintendo Wii U.") 
elif WinorLose > 200: 
    print ("You won a Sony PSP.") 
elif WinorLose < 100: 
    print ("You won a Nintendo Wii.") 
else: 
    print ("Not your lucky day, Try again.") 

если WinorLose является > 400 то же > 100, так что вы всегда печатать первое утверждение.

Вы также можете использовать верхний и нижняя граница:

if 400 <= WinorLose < 500: 
    print ("You won a Sony PS Vita.") 
elif 300 <= WinorLose < 400: 
    print("You won a Nintendo Wii U.") 
elif 200 <= WinorLose < 300: 
    print ("You won a Sony PSP.") 
elif WinorLose < 200: 
    print ("You won a Nintendo Wii.")  
else: 
    print ("Not your lucky day, Try again.") 

Использование if 400 <= WinorLose < 500 и т.д .. будет работать в любом порядке, как мы устанавливаем диапазон с более низкой и верхней границей так, если WinorLose в что диапазон утверждения не будет соответствовать True.

0

Я знаю, что есть ответ выше, но я думаю, он не объяснил, почему вы не работали, поэтому я укажу вам это, чтобы вы могли избежать этого в следующий раз.

Давайте рассмотрим, где проблема.

elif WinorLose > 200:

Это будет справедливо для любых чисел больше, чем 200, так 201..1000 в вашем случае; поэтому оператор if завершен, потому что условие выполнено. Это также будет одинаково для других условий, которые следуют в вашем коде.

Надеюсь, это объясняет, почему ваш не работал должным образом.

Смежные вопросы