Преобразование входного результата / строки в целое число в Python

#python #string #integer

#python #строка #целое

Вопрос:

У меня возникла проблема с запуском этого кода. Когда я пытаюсь его запустить, он говорит, что это не сработает, потому что age — это строка. Как мне преобразовать строку в целое число? Я также пытался сделать 18 — int(возраст), и это тоже не сработает.

     age = input ("How old are you? (): ")
    if int(age) > 18 :
        print("You're old enough to drink") 
    else:
        print("You're not old enough to drink. Wait",   18 - age, "more years")
 

Комментарии:

1. Можете ли вы поделиться с нами выводом, который выдает этот код, и выводом, который вы ожидали от него.

2. Где вы делаете if int(age) > 18 , по вашим собственным словам: а) что означает int(age) часть? б) ожидаете ли вы, что это изменится age ? Почему или почему нет?

3. «Я также пытался сделать 18 — int(возраст), и это тоже не сработает». Что вы имеете в виду, «не будет работать»? Как именно вы «попробовали» это; что произошло, когда вы попытались; и чем это отличается от того, что должно произойти?

4. возможно, вы вводите строки типа «19.0» …. вы не можете напрямую преобразовать str в int, если str имеет значение с плавающей запятой в формате str …. для этого вы можете использовать float … float(возраст)

Ответ №1:

 age = input("How old are you? (): "))
try:
    age = int(age)
    if age > 18 :
        print("You're old enough to drink.") 
    else:
        print(f"You're not old enough to drink. Wait {18-age} more years.")
except:
    print("You did not enter a valid age.")
 

Ответ №2:

Обратите input("How old are you? (): ") внимание, что int(input("How old are you? (): "))

 age = int(input("How old are you? (): "))
if int(age) > 18 :
    print("You're old enough to drink") 
else:
    print("You're not old enough to drink. Wait {} more years".format(18-age))
 

Ответ №3:

Вы можете добавить try.. except..

Вот так:

 age = input("How old are you? (): "))
try:
    age = int(age)
    if age > 18 :
        print("You're old enough to drink.") 
    else:
        print(f"You're not old enough to drink. Wait {18-age} more years.")
except ValueError:
    print("Not a valid age. Please enter again")
 

и, кстати, вы можете использовать f' строки для строкового формата.

или используйте .format :

 print("You're not old enough to drink. Wait {0} more years.".format(18-age))
 

Ответ №4:

 while True:
    age = input ("How old are you?  ")
#Check if the input is a positive integer
    if age.isdigit() >0:
        break
if int(age) > 18 :
    print("You're old enough to drink.") 
else:
    print("You're not old enough to drink. Wait",18 - int(age), "more years.")
#Remove the   in 18 because you already use comma after'Wait'
 

Комментарии:

1. Я использую цикл while, чтобы повторить запрос для недопустимого ввода.