【问题标题】:Python is there a way to hide a programmPython有没有办法隐藏程序
【发布时间】:2021-04-28 18:21:34
【问题描述】:
program, info = input ("->") .split ()


if program == 'search':
   print (info)
elif program == 'hello':
   print ("do")
else:
   print ("Error")

在本例中,输入是拆分的。

例如

search youtube.com

输出:

youtube.com

但现在我也想管理你只能输入 1 个单词,它仍然有效。

比如。

elif program == 'hello':

这意味着我只输入你好,它也可以。

那么输出应该是:

do

但目前只有一个词不起作用,我该如何理解?

【问题讨论】:

  • 当然不行,因为你假设input ("->") .split () 的长度总是>= 2。
  • 标题看不懂。 “隐藏程序(m)”是什么意思?

标签: python


【解决方案1】:

您可以在 info 变量中添加一个星号:

program, *info = input("->").split()

if program == 'search':
   print(info[0])
elif program == 'hello':
   print("do")
else:
   print("Error")

这导致 info 成为拆分输入的第一个元素之后的所有内容的列表。如果输入search youtube.com,变量信息将包含['youtube.com']。如果输入hello,变量info 将不包含任何内容,即[]

请注意,我还在第 4 行添加了对 info 变量的列表访问,它被打印在这里。

关于如何解决这个问题和/或为什么这个工作的更多信息可以找到here,其中讨论了解包中的默认值。

编辑:正如@Steve 指出的那样,如果只输入search,这会出现问题,因为您会尝试访问空列表的第一个元素。为了防止这种情况,您可以在代码中添加额外的检查:

program, *info = input("->").split()

if program == 'search':
   if not info:
      print("Error, nothing to search for")
   else:
      print(info[0])
elif program == 'hello':
   print("do")
else:
   print("Error")

【讨论】:

  • 如果用户只输入“搜索”就会爆炸。
  • @Steve 为什么不应该呢?从语义上讲,什么都不搜索是无效的。
  • @Steve 是正确的,但我仍然觉得它解决了 OP 将一个值解压缩为两个变量的问题。我现在仍然要编辑我的答案以添加它。
  • 为什么要这样?我的信念是,除非另有说明,否则程序应该正确处理任何可能的用户输入,而不会抛出至少看起来像程序员错过的情况的异常。你是说这是你自己设计的?
  • 是的,应该,不,不是。感谢您指出这一点。
【解决方案2】:

在分配变量之前只需检查输入的大小:

data = input("->").split()
if len(data) == 2:
    program = data[0]
    info = data[1]
elif len(data) == 1:
    program = data[0]
else:
    print("invalid number of arguments")

【讨论】:

  • 投反对票:想解释一下吗?这个答案有什么问题,你会如何改进它?
  • 如果输入了三个或更多的单词,这将不起作用。我不知道正确的行为是什么。也许就是这样。我只是想指出,该案件并未得到明确处理。
  • @Steve 问题没有明确提及,但无论如何我会为这种情况添加一条错误消息
猜你喜欢
  • 2015-12-11
  • 2019-01-23
  • 2016-01-18
  • 2016-05-29
  • 2021-09-02
  • 2019-02-19
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多