Member 12388676 Ответов: 2

Зацикливание, чтобы получить ответы на вопрос


У меня проблемы с цикличностью. Когда я выбираю 1, он отвечает на один вопрос, а затем падает и говорит что-то о userinput. Я довольно смущен, так как он говорит что-то о неупорядоченных типах. Я хочу, чтобы он вышел, когда я нажму 5, а также

Что я уже пробовал:

import random
 
# this is my menu choice that the user can select from +,-,*,/ or else user would select 5 to exit.
def mainMenu():
	menu_pick = ["1. + ", "2. - ", "3. * ", "4. / ", "5. Exit"]
	print(menu_pick[0])
	print(menu_pick[1])
	print(menu_pick[2])
	print(menu_pick[3])
	print(menu_pick[4])
 
 #this function displays the introduction that the user would be given when first start the quiz.
def displayIntro():
	#prints the output of introduction and name
	print("Welcome to Random Maths Quiz ! What is your Name ")
	#what ever name was entered it will be stored in input 
	Name = input()
	#then will welcome the user plus there name that was stored in input and tell the user to begin the game.
	print("Welcome , "+ Name + "\n Lets Begin")
 
def userInput():
	userInput = (input("Enter a choice "))
	while userInput >5 or userInput <=0:
		print("Not correct menu choice")
		userInput = (input("Please Try Again"))
	
		return userInput
		
		
def menu_choice():
	score = 0
	fig1 = random.randrange(0,21)
	fig2 = random.randrange(0,10)
	pick = input('Choose Menu choice')
	pick = int(pick)
	
	
	if pick is 1:
		qas = fig1+fig2
		print('What is ',str(fig1)+ '+',str(fig2)+'?\n')
		ans = int(input(''))
		if ans == qas:
			print('Correct')
			score = score +1
		else:
			print('Incorrect')
			return pick
			
		
			
	if pick is 2:
		qas = fig1-fig2
		print('what is ', str(fig1)+ '-',str(fig2)+'?\n')
		ans = int(input(''))
		if ans == qas:
			print('Correct')
		else:
			print('Incorrect')
			
	
					
	
 
def main():
	
    displayIntro()
    mainMenu()
    menu_choice()
    userInput()
    while option != 5:
        option = userInput()
    print("\n You have choosen to Exit.")
    
 
main()
#displayIntro()
#mainMenu()
#menu_choice()
#userInput()

Patrice T

И вы собираетесь рассказать нам, что он говорит о userinput ? а положение ошибки ?

2 Ответов

Рейтинг:
19

Peter Leow

Во-первых, виновником этой ошибки msg является

userInput = (input("Enter a choice "))
	while userInput >5 or userInput <=0:

input в Python возвращает строковый тип данных, и вы пытаетесь сравнить string с int. Нет-нет. Попробуйте сначала преобразовать его:
int(userInput) > 5 or int(userInput) <=0:

Во-вторых, вы получите неопределенную ошибку для переменной option здесь:
userInput()
while option != 5:
    option = userInput()

Я думаю, что ваш вариант предназначен для того, чтобы взять значение из userInput(). Так что исправь это.
В-третьих, этот цикл while выше не будет работать так, как вы этого хотите. Почему? Это та же ошибка, что и первая. Либо вы преобразовать параметр int или сделать 5 в одну строку.


VISWESWARAN1998

Хорошее решение, государь мой голос 5, и, похоже, он забыл, приведение типов здесь иначе, если один операнд = (input("введите выбор ")) дополнительный () наглядно показывает, что вместо преобразования всех переменных в целые можно типизировать вход заявление-самостоятельно принимать целых чисел, как этот, иначе, если один операнд = тип int(input("введите выбор "))

Member 12388676

userInput = int(input ("введите выбор"))

в то время как int (userInput) > 5 или int (userInput) <=0:
печать ("неправильный выбор меню")
userInput = (input ("пожалуйста, попробуйте еще раз"))

возвращает значение типа int (иначе, если один операнд)

в то время как инт (иначе, если один операнд)!= 5:
инт = иначе, если один операнд()
print ("\n вы выбрали выход.")

правильно ли я поступаю, делая это вот так, я все время получаю ошибку?

Рейтинг:
0

Member 12388676

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

Richard MacCutchan

Я объяснил, что нужно сделать в первоначальном вопросе,поэтому вам нужно пойти и попробовать.

Почему бы не пойти и не поработать с учебниками по Python, где вы найдете четкие определения всех функций, которые вы пытаетесь использовать. Пока вы полностью не поймете язык и его структуру, вы всегда будете бороться.