Как преобразовать пользовательский ввод в набор на python?

#python #string #set #user-input

Вопрос:

Я хочу создать набор из алфавитов пользовательского ввода, например: ввод: «что-то», а вывод должен быть: {«s», «o», «m», «e», «t», «h», «i», «n», «g»} Я написал это, как показано ниже, но это вызвало ошибку, в которой говорится, что ввод должен быть повторяемым!

  str = print("please enter a string:")
 str_set = set(str)
 print(str_set)
 

Комментарии:

1. Пожалуйста, обновите свой вопрос с полным отслеживанием ошибок.

Ответ №1:

Если вы хотите ввести что-то от пользователя, вам следует использовать input() функцию:

 s = input("please enter a string:")
str_set = set(s)
print(str_set)
 

Комментарии:

1. Я также думаю, что s = set(input("please enter a string:")) это также сработало бы

2. @Sujay: Да, вы правы, но я подозреваю, что ОП хочет заставить код работать по одному шагу за раз, чтобы они могли проверить, что происходит.

Ответ №2:

У вас есть две ошибки:

  1. str является встроенным, поэтому вам нужно другое имя.
  2. Вам нужно input перехватывать ввод, а не просто печатать.
 str1 = input("please enter a string:")
str_set = set(str1)
print(str_set)
 

Вы также можете сократить до одной строки, если хотите быть более кратким, но, торгуя лаконичностью против удобочитаемости, склоняйтесь к удобочитаемости:

 str_set = set(input("please enter a string: "))
 

Ответ №3:

  1. Прежде всего, вы не должны называть переменные, используя имена объектов buildins, такие как: str, int, float и так далее.
  2. print функция вернется None и не будет повторяться, поэтому вы получите сообщение об ошибке. Вместо этого вы должны использовать input функцию.

user_input = input("please enter a string:")

Ответ №4:

Существует несколько правил для именования переменных, одно из которых заключается в том, что вы не можете использовать зарезервированные слова, такие как: print, str, int, float, input и т. Д. для именования ваших переменных. Вы можете узнать больше о правилах здесь: https://www.geeksforgeeks.org/python-variables/

И что касается кода, я считаю, что это помогло бы:

     user_input = input("Please enter a string: ")
    list_of_letters = list(user_input)
    print(list_of_letters)
 

Ответ №5:

Сначала вам нужно использовать ввод вместо печати. печать-это печать чего-либо в терминале/ командной строке, также можно получить пользовательский ввод с помощью вашего скрипта без (str =), как это :

 import sys

def printerd():
    print('please enter a string:', end='')
    sys.stdout.flush()
    data = sys.stdin.readline()[:-1]
    print(list(data))

 printerd()
 

это выведет, пожалуйста, введите строку : и подождите, пока пользователь что-нибудь введет, а затем выведет массив [‘s’, ‘o’ и т. Д.].