如何计算Python中下一个要打印的字符串的长度?

How to calculate the length of the next string that is going to be printed in Python?

我正在尝试根据字符串的长度创建延迟。但是延迟必须在字符串打印到控制台之前发生。目标是为冒险游戏添加一点真实感。

这是我目前想出的代码。我知道这不对,但这是我使用 Python.

的第一周
import time

def calculate_text_speed(delay):
        delay = text.len() / 20

def start_game():
    calculate_text_speed(delay)
    
    time.sleep(calculate_text_speed.delay)
    print("Test message.")

我应该创建一个带有对话的列表来预先计算字符串吗?这可能会降低代码的可读性,对吗?

也许这就是您所说的不声明文本的意思?

def print_with_delay(text):
    time.sleep(len(text) / 20)
    print(text)

print_with_delay("Some very exciting things are happening....")

原回答: 您可以创建非常可读的代码,而无需提前生成文本列表。

主要问题是您将错误的内容传递给 calculate_text_speed。试试这个。

import time

text = "Some very exciting things are happening...."

#pass text to the calculate_text_speed function
def calculate_text_speed(text):
    return len(text) / 20

time.sleep(calculate_text_speed(text))
print(text)

首先,您必须 return 来自第一个函数的内容,在您的情况下是:

在 python 中,字符串长度是 len(text) 而不是 text.len()

return (len(text)() / 20)

那么该函数将如下所示:

def calculate_text_speed(text):
        return (len(text) / 20)

现在计算文本长度, 您可以全局或本地传递文本变量。我现在做你想要的。我假设你想在本地使用它,所以在这种情况下你的第二个函数会像:

def start_game(text):
    time.sleep(calculate_text_speed(text))
    print("Test message.")

如果你想要全局定义文本变量,那么:

text = "something"

def calculate_text_speed():
        return (len(text) / 20)

def start_game():
    time.sleep(calculate_text_speed())
    print("Test message.")

start_game()