Почему работают только однозначные целочисленные входы, а не двузначные? - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь написать функцию, которая запрашивает число, а затем печатает строку. Он работает безупречно для однозначных чисел, но как только я использую две цифры, мой оператор if / elif видит только первую цифру, а не обе цифры вместе.

Я создал образец функции в python3 и провел тест. Я попытался изменить str на int, а также просто input (), но ничего не получилось.

>>> def test():
...     out = str(input('Choice: '))
...     if out[0] == '1':
...             print('Test1 Worked')
...     elif out[0] == '2':
...             print('Test2 Worked')
...     elif out[0] == '10':
...             print('Test10 Worked')
... 
>>> test()
Choice: 1
Test1 Worked
>>> test()
Choice: 2
Test2 Worked
>>> test()
Choice: 10
Test1 Worked

При последнем запуске test () мой выбор равен 10, и я ожидаю, что результатом будет Test 10 Worked, но в нем указано Test1 Worked.

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Вы, вероятно, хотите проверить значение out вместо out [0], так как out [0] проверит первый символ ввода

def test():
  out = str(input('Choice: '))
  if out == '1':
    print('Test1 Worked')
  elif out == '2':
    print('Test2 Worked')
  elif out == '10':
   print('Test10 Worked')
1 голос
/ 27 июня 2019

Поскольку out является строкой, и вы берете первый элемент out[0], который является только первым символом. Отсюда out[0] == '10'[0] == '1'.

Вам нужно будет сделать out[:2] == '10' или, поскольку это легко испортить, лучше использовать if out.startswith('10'). Если вы знаете, что вся строка будет просто числом, это безопасно сделать out == '10'.

...