【问题标题】:How to set string while running the code?如何在运行代码时设置字符串?
【发布时间】:2023-03-04 22:45:02
【问题描述】:

所以我尝试使用 python 制作一个简单的控制台应用程序,但我遇到了问题。 我试图做一个新的“写”命令。该命令将打印一个文本。

示例:

> write hello
> hello

但我不知道怎么做。这是我代码中的命令:

x = ""

if w == "write " + x:
    
    if x == "":

        print("you need to add words")

    if x != "":

        print(x)

这很烦人,我需要帮助来解决这个问题

【问题讨论】:

  • w 的值是多少?
  • w 是输入。

标签: python console console-application


【解决方案1】:

你可以像这样使用while循环:

while True:
    w = input("> ")
    if w.startswith('write '):
        print(w.split(' ', 1)[1])

试运行:

> write hello
hello
> write bye bye
bye bye
> hey hi
> help please!
> write Help please!
Help please!
> 

【讨论】:

  • 这行得通,只要应该打印的字符串中没有空格。
  • 你是对的。我的错!我认为这个解决方案应该是公认的答案。其实你的答案很棒!我学到了新东西!从来不知道,我可以在 split 中添加一个参数 :) 非常感谢!
【解决方案2】:

使用sys.argv[] 列表。它更容易和严格:

sys.argv 是 Python 中的 list,其中包含传递给脚本的命令行参数。

注意sys.argv[0]是脚本本身的名字!

所以最简单的方法是使用内置的sys.argv list。例如,如果我的脚本被调用:foo.py,我可以通过命令行向它传递参数,如下所示:

python foo.py 写你好 并且在 foo.py 中,可以像这样获取传递的参数:

import sys

if __name__ == '__main__':
    for arg in sys.argv[1:]:
        #do work with arg! arg is a string type!
        if argv[1]=='write':
            print(argv[2]) 

【讨论】:

    【解决方案3】:

    使用input() 接受用户在键盘上的输入,使用split() 将输入分成多个部分:

    command = input("Enter a command >")
    parts = command.split(maxsplit=1)
    if parts[0] == "write":
        if len(parts) > 1:
            print(parts[1])
        else:
            print("you did not enter any words to write")
    else:
        print("unknown command")
    

    【讨论】:

      【解决方案4】:

      假设您要编写一个不将命令作为 调用它的参数(如上面回答的建议),但是您运行程序并在循环中检查用户输入,您可以通过以下方式进行:

      import re 
      
      def main():
          user_input = input()
          write_command_pattern = "(?<=write)\s+.*"
      
          result = re.findall(write_command_pattern, user_input)
          print(result[0])
      
      if __name__=='__main__':
          main()
      

      正则表达式(?&lt;=write)\s+.* 返回前面为write 的任意字符串。对于多个命令,您可以将其包装在一个循环中并为其他命令添加其他模式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多