Я пытаюсь добавить оператор if, который проверяет, является ли ввод строкой с python3, возвращает ошибку при передаче аргумента в любом случае - PullRequest
3 голосов
/ 06 июля 2019

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

В настоящее время работает Python3.7.3, я пытался использовать .isalpha().Сначала я попробовал if numOfGuests.isalpha: и numOfGuests == str(numOfGuests), но они тоже не сработали.intellisense говорит мне, что в строке 8 есть синтаксическая ошибка с if подчеркнутым.Зачем?Я все еще учусь, поэтому я не уверен, что делаю неправильно

name = ''

while not name:
    print('Enter your name ')
    name = input()
print ('How many guests will you have')
numOfGuests = input()
if numOfGuests == str(numOfGuests)
    print('those are letters, not numbers')
    else:
      pass
if numOfGuests == int()
    print('Be sure that you have enough room for all your guests')
print('Done')

Я ожидал, что система просто напечатает «это буквы, а не цифры», а затем начнёт заново с «Сколько гостейпоявится ли сообщение об ошибке '

:

SyntaxError: invalid syntax
PS C:\Users\name\Desktop\python> cd 'c:\Users\name\Desktop\python'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:\Python\Python37\python.exe' 'c:\Users\name\.vscode\extensions\ms-python.python-2019.6.22090\pythonFiles\ptvsd_launcher.py' '--default' '--client' '--host' 'localhost' '--port' 'omitted for security' 'c:\Users\name\Desktop\python\truthy and falsey.py' Traceback (most recent call last):
  File "c:\Users\name\.vscode\extensions\ms-python.python-2019.6.22090\pythonFiles\ptvsd_launcher.py", line 43, in <module>
    main(ptvsdArgs)
  File "c:\Users\name\.vscode\extensions\ms-python.python-2019.6.22090\pythonFiles\lib\python\ptvsd\__main__.py", line 434, in main
    run()
  File "c:\Users\name\.vscode\extensions\ms-python.python-2019.6.22090\pythonFiles\lib\python\ptvsd\__main__.py", line 312, in run_file
    runpy.run_path(target, run_name='__main__')
  File "C:\Python\Python37\lib\runpy.py", line 261, in run_path
    code, fname = _get_code_from_file(run_name, path_name)
  File "C:\Python\Python37\lib\runpy.py", line 236, in _get_code_from_file
    code = compile(f.read(), fname, 'exec')
  File "c:\Users\name\Desktop\python\truthy and falsey.py", line 8
    if numOfGuests == str(numOfGuests)
                                     ^
SyntaxError: invalid syntax

1 Ответ

0 голосов
/ 06 июля 2019

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

name = ''

while not name:
    print('Enter your name ')
    name = input()
print ('How many guests will you have')
numOfGuests = input()
if not numOfGuests.isdecimal():
    print('those are letters, not numbers')
else:
    print('Be sure that you have enough room for all your guests')
print('Done')

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

...