Работа со списком

По умолчанию инпут превращает всё в str. Как из инпута получить object? (Правильный вопрос внизу)

Ты про python?

1 симпатия

да, про python

Какой именно object? :slight_smile:

1 симпатия

Я давно не программировать на python но как помню (возможно) object это и есть переменная которая имеет тип str

x = input('What is your name? : ') 

X - object

Но все же тебе стоит проверить корректность вопроса.

А нет я нашёл о чем ты спрашивал

x = input('What is your name?: ') 

Console output:
>>> What is your name?: (Anything what inputed by user is object) 

Source: Python str() Function

P. S. Научитесь гуглить

Именно так. Все в Python есть объекты.

Я догадываюсь, что @Baurzhan хотел узнать как можно перевести объект str в объект int или float. Для этого используются функции:

x = input("Введите число")
num = float(x)
num_int = int(x)
1 симпатия
from gtts import gTTS 
import os
import random

randList = ["яблоко", "работа", "стакан", "стол"]
def test_start(list_name, lang):
    while True:
        text = random.choice(list_name)
        print(text)
        print(page2_eng)
        list_name.remove(text)
        speech = gTTS(text = text, lang = lang, slow = False)
        speech.save("text.mp3")
        os.system("start text.mp3")
        b = input()
        if randList = []:
        	break
print("list name, lang?")
list_name = input()
lang = input()
test_start(list_name, lang)

Мне нужно чтобы randomchoice выбирал случайное слово из списка, когда я пишу randList в list_name = input() , но у меня выходит ошибка.

'str' object has no attribute 'remove'

Если перед input написать list, то таких ошибок нет, но randomchoice выбирает случайные буквы из названия списка, вместо того чтобы выбирать случайные слова из списка. Как это исправить?

А ты пробовал вывести как выглядит list(input())?

Например, проделаем следующие действия

s = str(["яблоко", "работа", "стакан", "стол"])
l = list(s)
print(l)

То мы получим:
['[', "'", 'я', 'б', 'л', 'о', 'к', 'о', "'", ',', ' ', "'", 'р', 'а', 'б', 'о', 'т', 'а', "'", ',', ' ', "'", 'с', 'т', 'а', 'к', 'а', 'н', "'", ',', ' ', "'", 'с', 'т', 'о', 'л', "'", ']']

Дело в том, что функция list просто берет каждый элемент строки как отдельный символ и пихает его в массив. Чтобы добиться того, что ты хочешь, тебе нужно написать кастомную функцию (по своей сути это будет парсер).

def parse_input(text):
    """
    Input: a (str) object resembling a list

    Output: a (list) object
    """ 
    pass

Функция может иметь разный вид в зависимости от того, какие массивы ты планируешь давать в качестве инпута (одномерные или многомерные).

Могу показать как это делается для одномерных списков

Пример имплементации
def parse_input(text):
    """
    Input: a (str) object resembling a list

    Output: a (list) object
    """ 
    obj1 = text.split("[")[1].split("]")[0].split(", ")
    output = []
    for elt in obj1:
        output.append(elt[1:-1])
    return output
    
1 симпатия

Это код, превращающий инпут лист в реальный лист?

Запусти и проверь?)

Окозалось это малварь)))

© 2021 Общественный Фонд «Beyond Curriculum» (CC BY-NC-SA 4.0 International)