Задать вопрос
Slavka_online
@Slavka_online
Интересная личность

Как исправить ошибку из-за четвертого if подряд?

import random
n=1
sim=""
k=0

def start():
    n=int(input("\nПорядок: "))
    sim=input("\nОперация: ")
    game(n,sim)

def game(nn, optt):
	
	s1 = int(1)
	s2 = int(10**nn)
	 
	i = random.randint(s1,s2)
	j = random.randint(s1,s2)
	 
	ans=answer(i,j,optt)
	if ans :
	
		print ("Nice")
		

	else:
	    print("Bad")
    
    
      	
	start()

def answer( i,j, optt):
	 if optt=="+":
		 print(i," ", optt," ",j," = ?")
		 a=int(input("\nОтвет: "))
		 if a == int(i)+int(j):
		     return True
		 return False

	 elif optt=="-":
		 print(i," ", optt," ",j," = ?")
		 a=int(input("\nОтвет: "))
		 if a == int(i)-int(j):
		     return True
		 return False

	 elif optt=="*":
		 print(i," ", optt," ",j," = ?")
		 a=int(input("\nОтвет: "))
		 if a == int(i)*int(j):
		     return True
		 return False
 

for i in range(100):		 
   start()


Когда пытаюсь написать в конце
elif optt=="/":
		 print(i," ", optt," ",j," = ?")
		 a=int(input("\nОтвет: "))
		 if a == float(i)/float(j):
		     return True
		 return False


он ругается, что я путаю что-то с уровнем.
  • Вопрос задан
  • 2710 просмотров
Подписаться 5 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
@lega
У вас в коде неправильные отступы - перемешаны табы и пробелы, используйте что-то одно, рекомендуется пробелы. Далее выровняйте elif по одному уровню кратно размеру отступа.
Ответ написан
@iroln
Используйте нормальный редактор, который:

- Заменяет табуляцию пробелами
- Умеет конвертировать "табуляция" <> "пробелы"

Например, Notepad++ или SublimeText.
Ответ написан
Комментировать
adugin
@adugin Куратор тега Python
Почему бы вместо
if a == int(i)*int(j):
		     return True
		 return False

Не написать
return a == int(i)*int(j)
?

Кроме того, у вас переменные i и j являются int по способу создания, так что постоянно писать int(i) и int(j) не обязательно.
Ответ написан
Комментировать
Hateman31
@Hateman31
Делиться мыслями - это круто!
import random

def game(nn, optt):	
	s1 = 1
	s2 = 10**nn	 
	i = random.randint(s1,s2)
	j = random.randint(s1,s2)
	ans=answer(i,j,optt)
	print ("Nice") if ans else print("Bad")
		
def answer( i,j, optt):
	d = {'+':(lambda x,y:x+y),'-':(lambda x,y:x-y),
		'*':(lambda x,y:x*y)}
	print(i," ", optt," ",j," = ?")
	a=int(input("\nОтвет: "))
	return a == d[optt](i,j)
		
for i in range(100):
	n=int(input("\nПорядок: "))
	sim=input("\nОперация: ")
	game(n,sim)

Советую в будущем писать более лаконично. More Python-way
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект