Проверенное значение все еще вызывает TypeError? - PullRequest
0 голосов
/ 10 ноября 2018

продолжаю сталкиваться с этой ошибкой, но я запутался, потому что теоретически я уже проверил переменную как целое число, прежде чем отправить ее через мою функцию в качестве параметра. Есть идеи? Спасибо!

Функция является вопросом: "Calculate_Distance (N):", и мне не нравится, что я использую операторы "<>" с этими значениями.

print("Welcome Astronaut to Apollo 11 - the mission to land on The Moon.")
print("Lets determine the length of your journey so far - It should take about 3 days to reach Lunar orbit.")

# Function Boolean valid_integer(String input_string)
#   Declare Boolean is_valid
#
#   is_valid = is input_string a valid integer?
#   Return is_valid
# End Function

def valid_integer(input_string):
    try:
        val = int(input_string)
        is_valid = True
    except ValueError:
        is_valid = False
    return is_valid

# Function Integer get_number()
#   Declare String input_string
#   Declare Boolean is_valid
#
#   Display "Enter a number: "
#   Input input_string
#   Set is_valid = valid_integer(input_string)
#   While Not is_valid
#       Display "Please enter a whole number: "
#       Input input_string
#       is_valid = valid_integer(input_string)
#   End While
#   input_integer = int(input_string)
#   Return input_integer
# End Function

def get_number():
    input_string = input("Enter your hours of spaceflight: ")
    is_valid = valid_integer(input_string)
    while not is_valid:
        input_string = input("Please enter a whole number: ")
        is_valid = valid_integer(input_string)
    input_integer = int(input_string)
    return input_string


def output_distance(counter, distance, percent):
    print("Since hour", counter, "you have traveled", distance, "miles,", percent, "of the way there")

def calculate_distance(n):
    counter = 0
    distance = 0
    percent = 0

    if(n < 1):
        print("You're still on the launchpad")
        return
    if(n > 72):
        print("You made it! The Eagle has landed")
        return
    while counter < n:
        counter = counter + 1
        distance = counter * 3333
        percent = ((counter * 3333) / 240000) * 100
        output_distance(counter, distance, percent)


# Module main()
#   Set n = get_number()
#   Call calculate(n)
# End Module

def main():
    n = get_number()
    calculate_distance(n)

main()

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

используйте int (input) для ввода номера

0 голосов
/ 10 ноября 2018

Даже если вы проверяете число как целое число в функции valid_integer (), вы можете передать число как целое число в функцию calc_distance ().

calculate_distance(int(n))

Или в любом другом месте на этом пути. Верните его в функцию get_number (), например:

return(int(input_string))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...