Как исправить ошибки печати в коде

1

Есть несколько проблем с моим кодом, который я не знаю, как исправить.

  1. Когда я печатаю сообщение о том, какую игру и уровень они выбрали, в конце она не печатает уровень (новичок, промежуточный или продвинутый). Он только распечатывает игру. Я поставил 'num', чтобы напечатать его, но я также попробовал 'Level' и 'number' на месте. Код

    print ("Play", gamelist [gametype], "at", num)

  2. Когда вы спрашиваете у пользователя, в какую игру они хотели бы играть, если они вводят номер из диапазона 0-3 или букву, он разрывается дальше в коде при печати сообщения в конце. Это только когда вы спрашиваете, в какую игру, а не тот уровень, на который они хотят играть.

Все, что может помочь, будет оценено по достоинству.

#Ask user what game they would like to play
def game () :
    global gametype,gamelist
    gamelist = ["Mario Cart","Minecraft","Angry Birds","Grabd Theft Auto"]
    gamecount = 0
    print ("Hello",name,"the four games avaliable are:")
    while gamecount < 4:
        print (gamecount," ",gamelist[gamecount])
        gamecount = gamecount + 1
    gametype = int(input("What number game do you want? (Please choose between 0 and 3) "))
    print ( "You have chosen",gamelist[gametype],)
    print ("")

#Ask game level
def number():
    while True:
        try:
            Level = int(input("What is the level you would like to play at? "))

            if Level <= 25:
                print ("Begginer ")
                break

            elif Level >=26 and Level <=75:
                print ("Intermediate")
                break

            elif Level >=76 and Level <=100:
                print ("Advanced")
                break
            else:
                print("Out Of range(1-100): Please enter a valid number:")

        except ValueError:
            print("Please enter a valid number")

#Create a subroutine to print out the action message
def printmessage ():

    print ("")
    print ("#                                                      #")
    print ("########################################################")
    print ("#################### ACTION MESSAGE ####################")
    print ("########################################################")
    print ("#                                                      #")
    print ("Play",gamelist[gametype], "at" ,num)
    print ("#                                                      #")
    print ("########################################################")
    print ("#################### ACTION MESSAGE ####################")
    print ("########################################################")
    print ("#                                                      #")

#This is to let the program work
name = input("What is your name? ")
print ("")

game ()
num = number()
printmessage()
  • 0
    посмотрите код, gamecount = 0, затем напечатайте (gamecount, "", gamelist [gamecount]), вы не можете объединить строку с целым числом, поэтому вам нужно преобразовать все в строку, например print (str (gamecount) + "" + gamelist [ gamecount])
  • 0
    это все еще не работает, когда я делаю это
Показать ещё 5 комментариев
Теги:

2 ответа

0
Лучший ответ

Я добавил комментарий с изменениями:

#Ask user what game they would like to play
def game (name) :
    global gametype,gamelist
    gamelist = ["Mario Cart","Minecraft","Angry Birds","Grabd Theft Auto"]
    gamecount = 0
    print ("Hello "+name+" the four games avaliable are:")
    while gamecount < 4:
        print (gamecount," ",gamelist[gamecount])
        gamecount = gamecount + 1
    gametype = int(input("What number game do you want? (Please choose between 0 and 3) "))
    print ( "You have chosen "+gamelist[gametype])
    print ("")

#Ask game level
def number():
    while True:
        try:
            Level = int(input("What is the level you would like to play at? "))

            if Level <= 25:
                print ("Begginer ")
                return("Begginer ")#changed break with return so it will break and return the selected value

            elif Level >=26 and Level <=75:
                print ("Intermediate")
                return("Intermediate ")#changed break with return so it will break and return the selected value

            elif Level >=76 and Level <=100:
                print ("Advanced")
                return("Advanced ")#changed break with return so it will break and return the selected value
            else:
                print("Out Of range(1-100): Please enter a valid number:")

        except ValueError:
            print("Please enter a valid number")

#Create a subroutine to print out the action message
def printmessage (num):

    print ("")
    print ("#                                                      #")
    print ("########################################################")
    print ("#################### ACTION MESSAGE ####################")
    print ("########################################################")
    print ("#                                                      #")
    print ("Play "+gamelist[gametype]+" at "+num)
    print ("#                                                      #")
    print ("########################################################")
    print ("#################### ACTION MESSAGE ####################")
    print ("########################################################")
    print ("#                                                      #")

#This is to let the program work
name = raw_input("What is your name? ") # I changed input with raw_input because you are sending a string not integer
print ("")

game (name)
num = number()
printmessage(num)

Это результат:

What is your name? Test

Hello Test the four games avaliable are:
(0, ' ', 'Mario Cart')
(1, ' ', 'Minecraft')
(2, ' ', 'Angry Birds')
(3, ' ', 'Grabd Theft Auto')
What number game do you want? (Please choose between 0 and 3) 0
You have chosen Mario Cart

What is the level you would like to play at? 1000
Out Of range(1-100): Please enter a valid number:
What is the level you would like to play at? 1
Begginer 

#                                                      #
########################################################
#################### ACTION MESSAGE ####################
########################################################
#                                                      #
Play Mario Cart at Begginer 
#                                                      #
########################################################
#################### ACTION MESSAGE ####################
########################################################
# 
0

Добавьте следующую строку кода в конце номера функции def:

return Level
  • 0
    что это делает? потому что я не уверен
  • 0
    Он возвращает полученный уровень в конце функции "number ()", поэтому вы можете сохранить возвращаемые результаты, когда num = number (). Если вы не возвращаете значение, вы просто сохраняете значение дампа в num. Вот почему он не печатает номер правильно.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню