#python #python-3.x
#python #python-3.x
Вопрос:
Я пытаюсь использовать внешнюю функцию и применить ее к базовому пользовательскому вводу. По сути, внешняя функция (код 1) заставляет текст в (коде 2) распечатываться медленно, как диалоговое окно видеоигры. Однако эта функция не влияет на первую переменную с именем «intro», а только на переменную «response». Я не знаю, как это исправить.
Код 1:
import sys,time,os
def typewriter(self):
for char in message:
sys.stdout.write(char)
sys.stdout.flush()
if char !="n":
time.sleep(0.1)
else:
time.sleep(1)
os.system("cls")
Код 2:
from typewriter import *
intro = input("What is your name?n")
typewriter(intro)
response = ("Nice to meet you " intro ".n
My name is Program.")
message = intro and response
typewriter(response)
Комментарии:
1. Что
message = intro and response
предполагается делать?2. При запросе ввода пользователь непосредственно видит, что он вводит, прежде чем отправлять его в вашу программу. Вы ищете приглашение без эха, например
getpass
?3. @khelwood я ничего не думаю. Просто удалил его, и код все еще выполняется.
4. @MisterMiyagi Я понятия не имею, что это такое. Я самообучаюсь. По сути, я хочу, чтобы предложение «Как тебя зовут» печаталось медленно, как диалог в видеоигре, благодаря моей функции. Но независимо от того, где я вызываю функцию в коде 2, приглашение из «intro» по-прежнему печатается нормально, а не зависит от функции.
5.
typewriter('What is your name?')
за которым следуетintro = input()
Ответ №1:
У вас почти получилось! Как уже упоминалось, ваша typewriter
функция должна получать текст, который она должна печатать. Но также, «Как вас зовут?» теперь печатается input
, а не вашей функцией.
Это работает:
import sys
import time
def typewriter(message):
for char in message:
sys.stdout.write(char)
sys.stdout.flush()
if char !="n":
time.sleep(0.1)
else:
time.sleep(1)
intro = "What is your name?n"
typewriter(intro)
name = input()
response = ("Nice to meet you " name ".n
My name is Program.")
typewriter(response)
Комментарии:
1. Да, я закончил тем, что сделал это, и это работает, но мне было любопытно посмотреть, можно ли объединить функцию пишущей машинки с функцией ввода. Вы знаете, меньше строк, более чистый код и еще много чего.
Ответ №2:
Очевидно, что функция typewriter не принимает никаких аргументов для обработки данных. При typewriter(intro)
первом вызове переменная message не определена. Я думаю, вам нужно изменить функцию пишущей машинки следующим образом.
def typewriter(message):
for char in message:
sys.stdout.write(char)
sys.stdout.flush()
if char !="n":
time.sleep(0.1)
else:
time.sleep(1)
Комментарии:
1. Желаемый эффект заключается в том, чтобы предложение «Как вас зовут?» из переменной «intro» в коде 2 печаталось медленно, как это было бы для переменной «response». пока даже с вашим исправлением это не работает.
Ответ №3:
прежде всего, я попытался переименовать ввод в функции typewrite вместо self я написал message:
import sys,time,os
def typewriter(message):
for char in message:
sys.stdout.write(char)
sys.stdout.flush()
if char !="n":
time.sleep(0.1)
else:
time.sleep(1)
os.system("cls")
я бы также изменил второй код на этот:
from typewriter import *
typewriter("What is your name?n")
intro = input()
response = ("Nice to meet you " intro ".n
My name is Program.")
message = intro and response
typewriter(response)
получайте удовольствие от кодирования!
Комментарии:
1. Да, это то, что я в итоге сделал, но я хотел посмотреть, возможно ли объединить пишущую машинку и ввод.