2015-04-08 2 views
-6

Я хочу написать функцию, которая принимает число от 1 до 7 в качестве параметра и печатает соответствующий день в виде строки.Как использовать инструкции IF или ELSE в Python? BTW, Как мое имя пользователя и профиль?

Например, если параметр равен 1, ваша функция должна распечатать one. Если параметр равен 2, ваша функция должна распечатываться two и т. Д.

Я написал эту программу, но я не получаю ничего как выход. Я уверен, что я использую if и else заявление правильно

Моей программу:

def string(x): 
    if x=="1": 
     word = "one" 
    else: 
     if x=="2": 
     word = "two" 
    else: 
     if x=="3": 
      word = "three" 
     else: 
      if x=="4": 
       word = "four" 
      else: 
       if x=="5": 
        word = "five" 
       else: 
        if x=="6": 
         word = "six" 
        else: 
          if x=="7": 
           word = "seven" 
          else: 
           word = "Try again" 
return word 

def main(): 
    y = int(input("Please enter a number between 1 and 7: ")) 
    z = string(y) 
    print(z) 

main() 
+5

https://docs.python.org/3.4/tutorial/controlflow.html – TigerhawkT3

+0

Я думаю, что вы ищете еще, если: – marsh

+0

я прочитал, что уже. Не могли бы вы рассказать мне, в чем проблема с моей программой? Он не печатает ничего, если я ввожу вход. –

ответ

2

Все, что вам нужно сделать в этом случае, - удалить int() звонок из main(). Ваша функция string() ожидает строку - если вы отправите ее int, она никогда не будет работать. Кроме того, вы можете использовать ключевое слово elif:

def string(x): 
    if x=="1": 
     word = "one" 
    elif x=="2": 
     word = "two" 
    elif x=="3": 
     word = "three" 
    elif x=="4": 
     word = "four" 
    elif x=="5": 
     word = "five" 
    elif x=="6": 
     word = "six" 
    elif x=="7": 
     word = "seven" 
    else: 
     word = "Try again" 
    return word 

def main(): 
    y = input("Please enter a number between 1 and 7: ") 
    z = string(y) 
    print(z) 

main() 

Или вы можете использовать структуру данных, называемую dictionary:

def string(x): 
    if x not in ('1', '2', '3', '4', '5', '6', '7'): 
     return "Try again" 

    d = {'1':'one', '2':'two', '3':'three', '4':'four', 
    '5':'five', '6':'six', '7':'seven'} 

    return d.get(x) 

def main(): 
    print(string(input("Please enter a number between 1 and 7: "))) 

main() 
1

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

Во-вторых, пока ваш, если заявления будут работать, вы должны использовать, если, ElseIf и т.д.

В-третьих, это гораздо лучше использовать операторы переключателей для множественных сравнений. Еще лучше, словарь

С elseifs:

def string(x): 
    if x=="1": 
     word = "one" 
    elif x=="2": 
     word = "two" 
    elif x=="3": 
     word = "three" 
    elif x=="4": 
     word = "four" 
    elif x=="5": 
     word = "five" 
    elif x=="6": 
     word = "six" 
    elif x=="7": 
     word = "seven" 
    else 
     word = "Try again" 

    return word 

С словарю:

intWordLookup = {1:"one", 
       2:"two", 
       3:"three", 
       4:"four", 
       5:"five", 
       6:"six", 
       7:"seven"} 

def main(): 
    y = int(input("Please enter a number between 1 and 7: ")) 
    z = intWordLookup[y] 
    print(z) 
1
def string(x): 
    if x == "1": 
     word = "one" 
    elif x == "2": 
     word = "two" 
    elif x == "3": 
     word = "three" 
    elif x == "4": 
     word = "four" 
    elif x == "5": 
     word = "five" 
    elif x == "6": 
     word == "six" 
    elif x == "7": 
     word == "seven" 
    else: 
     word == "try again" 
    return word 

x = input("Enter a number: ") 
z = string(x) 
print(z) 

вы не должны преобразовывать пользовательский ввод в междунар затем обратно в строку потому что это уже строка.

0

Альтернативный подход с использованием встроенной функции почтового индекса.

list_num=list(range(1,8)) 
list_words=['one','two','three','four','five','six','seven'] 
myArray=zip(list_words,list_num) 
def somefunc(x): 
    take_inp=input("Enter any number between 1 and 7:") 
    if take_inp in list_num: 
     return myArray[take_inp -1][0] 
    else: 
     print "Try Again" 

print somefunc() 
Смежные вопросы