📜  如何编写与终端交互的程序 - Python (1)

📅  最后修改于: 2023-12-03 15:09:14.149000             🧑  作者: Mango

如何编写与终端交互的程序 - Python

在Python中,我们可以使用内置的input()函数和print()函数来实现与用户终端的交互。

使用input()函数

input()函数用于从终端读取用户输入的数据,并返回一个字符串类型的值。例如,下面的代码会提示用户输入一个数字,并将其转换为整数类型:

num = int(input("Please enter a number: "))
print("The number entered is: ", num)

以上代码执行时,终端会显示提示信息 "Please enter a number: ",用户可以输入一个数字并按回车键确认。程序接着会将输入的字符串转换为整数类型,并打印输出。

使用print()函数

print()函数用于在终端上输出信息,其参数可以是字符串、数字、列表、元组等等。例如,下面的代码会在终端上打印一条问候语:

name = input("Please enter your name: ")
print("Hello, ", name)

以上代码执行时,终端会提示用户输入姓名,程序接着会将其存储在变量 name 中,并使用 print() 函数打印一条问候语。

增强交互效果

为了增强用户交互效果,可以使用颜色、位置控制、格式化等技巧来美化终端输出。以下是一些常用的库和工具:

  • ANSI控制码

    ANSI 控制码是一种在终端上显示彩色文本和光标位置的方法。例如,以下代码可以在终端上打印带有彩色的提示信息:

    print("\033[1;31;40mError: \033[0mSomething went wrong.")
    

    上述代码包含了 ANSI 控制码,其中 "\033" 是控制字符的转义序列,后面的数字指定了前景色、背景色和文本格式。

  • curses库

    curses 库是 Python 提供的一个 CUI(字符用户界面)库,用于在终端上创建可交互的文本界面。例如,以下代码可以在终端上显示一个简单的界面:

    import curses
    
    stdscr = curses.initscr()
    
    # Clear screen
    stdscr.clear()
    
    # Add text
    stdscr.addstr(0, 0, "Press any key to continue...")
    
    # Wait for user input
    stdscr.getch()
    
    curses.endwin()
    

    上述代码使用 curses 库创建了一个 stdscr 对象,可以在屏幕上添加文本、处理用户输入等等。

  • rich库

    rich 库是一个 Python 提供的美化终端输出的工具库,支持文本着色、表格显示、图形绘制等等。例如,以下代码可以在终端上显示一个带有表格和颜色的信息:

    from rich.console import Console
    from rich.table import Table
    from rich.markdown import Markdown
    
    console = Console()
    
    table = Table(show_header=True, header_style="bold magenta")
    table.add_column("Name")
    table.add_column("Age")
    table.add_row("John Smith", "35")
    table.add_row("Jane Doe", "28")
    
    console.print("\n[bold red]Error:[/bold red] Something went wrong.", style="italic")
    console.print(table)
    console.print(Markdown("# This is a heading\n\nThis is a paragraph."))
    

    上述代码演示了如何在终端上使用 rich 库添加表格、文本格式化、颜色等等。

总结

本文介绍了如何在 Python 中编写与终端交互的程序,并探讨了一些增强交互效果的方法。希望可以帮助读者更好地设计和开发终端应用程序。