2016-03-06 4 views
-2

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

1 - Как ограничить только ввод строки, если пользователь вводит целое число, тогда программа должна выдать ошибку.

2 - Вход - кошка коврик летучая мышь -> кошки коврики летучие мыши вход - кошка, коврик, летучая мышь -> кошка, матовый, летучая мышь, s (я хочу избежать этого, т.е. когда пользователь отделяет слова запятая, тогда я должен получить летучие мыши, а не биту, s)

, пожалуйста, направляйте меня сюда и, пожалуйста, обратите внимание на отступ.

Спасибо

`(def plural(user_input): 
    # creating list 
    List_of_word_ends = ['o','ch', 's', 'sh', 'x', 'z'] 
    words = user_input.split() 
    ws = ""; 
    # setting loop to for words 
    for word in words: 
     if len(word)>0 : 
      if word.endswith("y"): 
       word = word[:-1] 
       word += "ies" 
      else: 
       isSomeEs = False; 
       for suffix in List_of_word_ends: 
        if word.endswith(suffix): 
         word += "es" 
         isSomeEs = True; 
         break 
       if not isSomeEs: 
        word += "s" 
      ws += word+" " 
    print ws 
# taking input from user 
singular = raw_input("Please enter the words whose plural you want:") 
# returns a list of words 
x = singular.split(" ") 
x = singular.split(",") 
#calculate the length of object 
y = len(x) 
print "The no. of words you entered is :", y 
#function call 
plural(singular))` 
+0

Ваш вопрос в настоящее время «моя программа содержит ошибки и не хватает функций, пожалуйста, закончить это для меня», который является 1) ни один вопрос, и 2) на самом деле не вопрос, и, таким образом, не по теме для SO. – TigerhawkT3

+0

жаль, что я забыл, что – siddpro

+0

Есть части этого, которые кажутся мне доступными, хотя и не все. Сделайте некоторые поиски Вопроса 1 и сделайте хороший удар, и я готов поспорить, что мы можем помочь вам (возможно, после нового справочного центра вы можете задать новый вопрос). Вопрос 2 не поддается каким-либо средствам в рамках этого сайта - английский язык слишком усложнен для универсального плюрализатора, который подходит для ответа SO –

ответ

0

Ответ на 1-ый вопрос

# taking input from user 
singular = raw_input("Please enter the words whose plural you want:") 

try: 
    val = int(singular) 
except ValueError: 
    print("Please enter a valid string. Integer not accepted!!!") 
+0

Что касается вас Второй вопрос: Пожалуйста, введите слова, которые вы хотите: кошка, коврик, летучая мышь Введите слова без пробелов между ними. Функция split(), используемая в вашей функции, разбивается на основе пробелов, поэтому не давайте пробелов. Пожалуйста, введите слова, которые вы хотите: кошка, коврик, летучая мышь No. слов, которые вы ввели: 3 кошка, коврик, летучие мыши Отметьте как ответ, если вы удовлетворены ответом –

-1

Что касается первого требования - вы можете сделать что-то простое, как:

если сингулярный тип == (5): печать 'ошибка'

5 в type - может быть заменена любым int.

Что касается второго требования - не уверен, что именно вы ищете ... если бы вы могли привести пример.

+0

'exclusive' всегда будет строкой, если это строка, представляющая целое число, она по-прежнему не будет целым числом, и это определенно не будет типом. Это все неправильно. Кроме того, ответы не являются местом для вопросов или разъяснений - вместо этого используйте комментарий. – TigerhawkT3

0

Чтобы помочь вам с вашей первой проблемой, задачами типа ввода, добавьте try/catch всякий раз, когда у вас есть пользовательский ввод. Нечто подобное должно работать:

singular = raw_input("Please enter the words whose plural you want. ") 
try: 
    int(singular) 
except ValueError: 
    print "Invalid input! Please try again." 
Смежные вопросы