Answer the question
In order to leave comments, you need to log in
Problem with if,elif statements in a loop?
The other day I wrote a toy like Russian roulette:
import time
import random
def tm(x):
time.sleep(x)
rf = random.randint(1,8)
rn = random.randint(1,7)
rc = random.randint(1,6)
while True:
ans_1 = str(input('Добро пожаловать в русскую рулетку!\nФлобер(8 патронов),Наган(7) ибо Кольт(6)?\nВыберите револьвер:'))
if ans_1 == 'Флобер' or 'флобер':
ans_2_1 = int(input('Введите количеством патронов в барабане(от 1 до 8):'))
if ans_2_1 == 1:
print('Барабан крутиться...')
tm(rf)
if rf in range(ans_2_1):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_1 == 2:
print('Барабан крутиться...')
tm(rf)
if rf in range(ans_2_1):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_1 == 3:
print('Барабан крутиться...')
tm(rf)
if rf in range(ans_2_1):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_1 == 4:
print('Барабан крутиться...')
tm(rf)
if rf in range(ans_2_1):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_1 == 5:
print('Барабан крутиться...')
tm(rf)
if rf in range(ans_2_1):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_1 == 6:
print('Барабан крутиться...')
tm(rf)
if rf in range(ans_2_1):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_1 == 7:
print('Барабан крутиться...')
tm(rf)
if rf in range(ans_2_1):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_1 == 8:
print('Ну ты же знаешь что с полным барабаном у тебя нет шансов...')
else:
print('Некорректное количество патронов')
break
elif ans_1 == 'Наган' or 'наган':
ans_2_2 = int(input('Введите количеством патронов в барабане(от 1 до 7):'))
if ans_2_2 == 1:
print('Барабан крутиться...')
tm(rn)
if rn in range(ans_2_2):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_2 == 2:
print('Барабан крутиться...')
tm(rn)
if rn in range(ans_2_2):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_2 == 3:
print('Барабан крутиться...')
tm(rn)
if rn in range(ans_2_2):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_2 == 4:
print('Барабан крутиться...')
tm(rn)
if rn in range(ans_2_2):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_2 == 5:
print('Барабан крутиться...')
tm(rn)
if rn in range(ans_2_2):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_2 == 6:
print('Барабан крутиться...')
tm(rn)
if rn in range(ans_2_2):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_2 == 7:
print('Ну ты же знаешь что с полным барабаном у тебя нет шансов...')
else:
print('Некорректное количество патронов')
break
elif ans_1 == 'Кольт' or 'кольт':
ans_2_3 = (input('Введите количеством патронов в барабане(от 1 до 6):'))
if ans_2_3 == 1:
print('Барабан крутиться...')
tm(rc)
if rc in range(ans_2_3):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_3 == 2:
print('Барабан крутиться...')
tm(rc)
if rc in range(ans_2_3):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_3 == 3:
print('Барабан крутиться...')
tm(rc)
if rc in range(ans_2_3):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_3 == 4:
print('Барабан крутиться...')
tm(rc)
if rc in range(ans_2_3):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_3 == 5:
print('Барабан крутиться...')
tm(rc)
if rc in range(ans_2_3):
print('Ты проиграл!')
else:
print('Ты выиграл')
elif ans_2_3 == 6:
print('Ну ты же знаешь что с полным барабаном у тебя нет шансов...')
else:
print('Некорректное количество патронов')
break
else:
print('Неверный револьвер')
continue
Answer the question
In order to leave comments, you need to log in
Never write such shitty code!
What for a heap of times to repeat these IF?
If the actions do not differ in any way for any number of cartridges, then what is the point of writing them in separate code? With pistols, the difference is only in the size of the drum - everything is also decided through a simple variable.
import time
import random
guns = {'флобер': 8, 'наган': 7, 'кольт': 6}
while True:
while True:
gun = input('Добро пожаловать в русскую рулетку!\n'
'Флобер(8 патронов),Наган(7) либо Кольт(6)?\n'
'Выберите револьвер:')
if gun.lower() not in guns.keys():
print('Неверный револьвер')
else:
break
bullets = guns[gun]
while True:
choice = int(input('Введите количеством патронов в барабане'
' (от 1 до %d):'%bullets))
if choice == bullets:
print('Ну ты же знаешь что с полным барабаном у тебя нет шансов...')
elif choice <= 0 or choice >= bullets:
print('Некорректное количество патронов')
else:
break
print('Барабан вращается')
turn = random.randint(1, bullets)
time.sleep(turn)
if turn >= choice:
print('Ты выиграл')
else:
print('Ты проиграл!')
It makes sense to abandon these endless if, else, and use a dict dictionary with all options.
Then the error itself will be corrected, and the code itself will become 10 times shorter.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question