Отклонить буквы и разрешить ввод только цифр @ введите первое и второе число в Python 3.x - PullRequest
0 голосов
/ 01 апреля 2019

Попытка разрешить ввод чисел только в Python 3.x без букв и попросить пользователя ввести число, если они вводят букву. У меня есть два числа, которые нужно ввести, и нужно, чтобы они отклонялись по отдельности при вводе.

print ('Hello There, what is your name?') # String asks the user for their name
myname = input() #string
print ('Nice to meet you, '+ myname)# String responds "Nice to meet you" and input the users name that was entered
print() #adds a space
print ('We want to some math today!') # String tells user we want to do some math today
print() # adds a space
num1,num2 = float(input("Enter first number")), float(input("Enter second number"))
sum = num1+num2
if sum  >100 : # Determines if users inputs when added together are  > 100
 print('They add up to a "Big Number" ') # If inputs are > 100 prints "They add up to a big number"
 # and the users name
elif sum <=100 : # Determines if the users inputs when added are = to or <100
 print ('They add up to' ,(sum))

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Вам необходим цикл while , чтобы непрерывно принимать действительный вход , который в вашем случае является числовым единицей.

Другая вещьчто вам нужно проверить , если введенный ввод является числовым или не , в этом случае вы можете использовать встроенную в Python функцию isdigit () , чтобы сделать это.

Наконец, введите приведение ваш ввод в float или int , в то время как вы добавляете оба, чтобы избежать ошибок, связанных с str.

print ('Hello there, what is your name?') # String asks the user for their name
myname = input() #string
print ('Nice to meet you, '+ myname) # String responds "Nice to meet you" and input the users name that was entered
print() #adds a space
print ('We want to some math today!') # String tells user we want to do some math today
print() # adds a space

i = False
while i == False:
    num1 = input("Enter first number: ")
    if num1.isdigit():
        i = True
    else:
        i = False

print() # adds a space

j = False
while j == False:
    num2 = input("Enter Second number: ")
    if num2.isdigit():
        j = True
    else:
        j = False

sum = float(num1) + float(num2)
if sum  > 100 : # Determines if users inputs when added together are  > 100
    print('They add up to a "Big Number" ') # If inputs are > 100 prints "They add up to a big number"
 # and the users name

elif sum <= 100 : # Determines if the users inputs when added are = to or <100
    print ('They add up to' ,(sum))

Дайте мне знать, если это сработало для вас!

0 голосов
/ 01 апреля 2019

Когда вы проверяете несколько входов, я обычно делаю для этого отдельную функцию. Хотя здесь это может и не понадобиться, это хорошая привычка выделять повторяющийся код. Он выйдет, если один из входов не является плавающим. Вот как я бы это сделал, используя блок try с исключением ValueError. Кстати, переводы строки могут быть достигнуты, поставив '\ n' в конце нужных строк. Использование print() - неаккуратный способ сделать это.

import sys
def checkNum(number):
    try:
        number = float(number)
    except ValueError:
        print("That is not a float.")
        sys.exit()
    return number    

Затем вы можете использовать оригинальный код следующим образом:

print ('Hello There, what is your name?') #String asks the user for their name
myname = input() #string
print ('Nice to meet you, '+ myname + '\n')#String responds "Nice to meet you" and input the users name that was entered
print ('We want to some math today!\n') #String tells user we want to do some math today
num1 = checkNum(input("Enter first number"))
num2 = checkNum(input("Enter second number"))
sum = num1+num2
if sum  >100 : # Determines if users inputs when added together are  > 100
    print('They add up to a "Big Number" ') #If inputs are > 100 prints "They add up to a big number" and the users name
elif sum <=100 : #Determines if the users inputs when added are = to or <100
    print ('They add up to' ,(sum))
...