簡體   English   中英

如何在Python中輸入一個字母以輸入輸入

[英]How do I type one letter at a time for an input in Python

我最近讀到過如何在Python中一次輸入一個字母以查看舊學校並使用循環和時間來冷卻 - 但是,我的代碼有一個輸入。 有誰知道如何做和輸入(在我的代碼中,“你的名字是什么?”)

我已經嘗試更改輸入名稱但失敗了。 代碼只是像往常一樣立即打印出來

如果我正確理解您的要求,您可以打印每個字母並在最后使用輸入。 像這樣的東西:

output = "what is your name?"

for i in output:
    print(i, end='')
x = input()

x將是包含用戶輸入內容的字符串。
Imho,它並不酷,只是多余的。

如果您希望每個字母的外觀之間有延遲,請使用time模塊。

import sys
import time
output = "what is your name?"

for i in output:
    print(i, end='')
    sys.stdout.flush()
    time.sleep(0.1)
x = input()

注意使用sys.stdout.flush()在輸出中立即推送每個字母。

這使它看起來像你在說什么

import time

output = "what is your name?"
blank = ""


for i in output:
    blank = blank + i
    print("\r"+blank, end='')
    time.sleep(0.1)
x = input()

我們的想法是構建越來越大的輸出部分,並使用\\ r \\ n每次都替換控制台中的行。 在循環之間等待0.1秒會增加效果

如果你想做一些看起來像這樣的事情:

演示

然后最簡單的方法是在過去的好時光中完成它。 然后發生的事情是該程序會向終端發送特殊代碼(當時它是一個真實的物理設備,而不僅僅是一個窗口),終端可以執行任何想要的代碼。 有代碼可以移動光標,改變顏色,發出嗶嗶聲以及許多你需要的漂亮東西。

目前仍在使用的一組通用代碼稱為ANSI轉義碼

有一個名為Colorama for Python的優秀軟件包可以完成所有繁重的工作並且是跨平台的。 我推薦使用它。

上面演示的源代碼:

from colorama import init, Fore, Style
import time

def print_old(message):
    print(Fore.GREEN, end='', flush=True)
    for c in message:
        print(c, end='', flush=True)
        time.sleep(0.1)
    print(Style.RESET_ALL, end='', flush=True)

init()
print_old('What is your name? ')
name = input()
print_old('Nice to meet you %s\n' % name)

希望這就是你要找的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM