2016-07-01 3 views
0

Как компьютерная программа справляется с ошибкой пользователя в словах таким образом, чтобы заставить их повторно войти, пока не будет правильно? например Ввод мужчин и женщин для гендерного аргумента. Я использую этот код Python:Проверка правильности написания пользовательского ввода в Python

def mean(values): 

    length = len(values) 

    total_sum = 0 
    for i in range(length): 
     total_sum += values[i] 

    total_sum = sum (values) 
    average = total_sum*1.0/length 
    return average 

name = " " 
Age = " " 
Gender = " " 
people = [] 
ages = [] 
while name != "": 

### This is the Raw data input portion and the ablity to stop the program and exit 
    name = input("Enter a name or type done:") 
    if name == 'done' : break 
    Age = int(input('How old are they?')) 

    Gender = input("What is their gender Male or Female?") 


### This is where I use .append to create the entry of the list  
people.append(name) 
people.append(Age) 
ages.append(Age) 
people.append(Gender) 
### print("list of People:", people) 

#### useing the . count to call how many m of F they are in the list 

print ("Count for Males is : ", people.count('Male')) 
print ("Count for Females is : ", people.count('Female')) 

### print("There ages are",ages) 

### This is where I put the code to find the average age 

x= (ages) 

n = mean(x) 

print ("The average age is:", n) 

Я хотел бы также указать возраст в диапазоне 18-25.

+1

Вы пробовали использовать вложенные циклы while? –

+0

Проверьте, не является ли имя не 'Male' или' Female' во вложенном цикле while, а затем повторите – Li357

ответ

0

Просто продолжайте движение до тех пор, пока они не выдадут правильный ввод. Сделайте то же самое для пола.

Age = "" 
while True: 
    Age = int(input('How old are they?')) 
    if int(Age) >= 18 and int(Age) <= 25: 
    break 
+0

, какой другой код можно использовать вместо продолжения, он не работает правильно и не вернется к началу – kevin

+0

Ой ооп сделал опечатку , попробуйте новый код выше – ifma

0

Просто используйте оператор while, который продолжается до тех пор, пока вы не удовлетворите условию, которое вы хотите удовлетворить.

Gender = "" 
    while Gender != "Male" or Gender != "Female": 
     Gender = raw_input("What is your gender, Male or Female?") 
1

"... что не заставляет их Reenter, пока это правильно? ..."

Поскольку вы также просили способ Reenter, следующий фрагмент кода использует escape-последовательность формы \033[<N>A, которая moves the cursor up N lines и управляющая последовательность Carriage Return, \r, для печати недопустимых данных и ввода ввода снова.

import sys 

age = 0 
gender = "" 

agePrompt = "How old are they? " 
genderPrompt = "What is their gender Male or Female? " 

#Input for age 
print("") 
while not (18 <= age <= 25): 
    sys.stdout.write("\033[1A\r" + " " * (len(agePrompt) + len(str(age)))) 
    sys.stdout.write("\r" + agePrompt) 
    sys.stdout.flush() 
    age=int(input()) 

#Input for gender 
print("") 
while not (gender == "Male" or gender == "Female") : 
    sys.stdout.write("\033[1A\r" + " " * (len(genderPrompt) + len(str(gender)))) 
    sys.stdout.write("\r" + genderPrompt) 
    sys.stdout.flush() 
    gender=str(input()) 

Другим решением было бы использовать управляющую последовательность вида \033[<N>D, который moves the cursor backward N columns.

Смежные вопросы