相关疑难解决方法(0)

从Python中的函数返回名称中的变量

我正在尝试使用函数返回给定列表.

def get_ext(file_type):
    text = ['txt', 'doc']
    audio = ['mp3', 'wav']
    video = ['mp4', 'mkv']
    return ?????

get_ext('audio')  #should return de list ['mp3', 'wav']
Run Code Online (Sandbox Code Playgroud)

然后我被卡住了.这是一个扩展列表的简单/简短示例.最简单的方法是什么?

python function list

11
推荐指数
2
解决办法
3696
查看次数

由于Python没有switch语句,我应该使用什么?

可能重复:
python中switch语句的替换?

我在Python中创建一个基于控制台的小应用程序,我想使用Switch语句来处理用户对菜单选择的选择.

你有什么建议我用的.谢谢!

python switch-statement

10
推荐指数
3
解决办法
5389
查看次数

if语句太多了

我有一些话题需要讨论.我有一个24 ifs/elifs 的代码片段.Operation是我自己的类,表示类似的功能Enum.
这是一段代码:

if operation == Operation.START:
    strategy = strategy_objects.StartObject()
elif operation == Operation.STOP:
    strategy = strategy_objects.StopObject()
elif operation == Operation.STATUS:
    strategy = strategy_objects.StatusObject()
(...)
Run Code Online (Sandbox Code Playgroud)

从可读性的角度来看,我有一些顾虑.更好的是将它改成24个类并使用多态?我不相信它会使我的代码可维护......从一方面来说,这些代码if非常清晰,并且不应该难以理解,另一方面,有太多if的代码.

我的问题相当普遍,但是我用Python编写代码所以我不能使用像switch.

你怎么看?


更新:

一个重要的是StartObject(),StopObject()并且StatusObject()是构造函数,我想分配一个对象来strategy引用.

python conditional if-statement code-readability code-maintainability

9
推荐指数
1
解决办法
7808
查看次数

"Pythonic"等效于处理开关和多字符串比较

好吧,所以我的头衔糟透了.一个例子效果更好:

input = 'check yahoo.com'
Run Code Online (Sandbox Code Playgroud)

我想解析输入,使用第一个单词作为"命令",并将字符串的其余部分作为参数.这是我的非Pythonic思想编码的简单版本:

if len(input) > 0:
    a = input.split(' ')
    if a[0] == 'check':
        if len(a) > 1:
            do_check(a[1])
    elif a[0] == 'search':
        if len(a) > 1:
            do_search(a[1])
Run Code Online (Sandbox Code Playgroud)

我喜欢Python,因为它将通常很复杂的东西变成了相当简单的东西.我对它没有太多的经验,而且我相信有更好的方法来做这些事情...某种程度上更加诡异.我已经看到一些人用dicts和lambda函数替换switch语句的例子,而其他人只是推荐if..else嵌套.

python conditional

8
推荐指数
1
解决办法
1249
查看次数

python:"with"语法用于打开具有两个函数的文件

假设我想使用以下语法打开一个文本文件进行阅读:

with open(fname,'r') as f:
    # do something
    pass
Run Code Online (Sandbox Code Playgroud)

但如果我发现它以.gz结尾,我会调用gzip.open().

if fname.endswith('.gz'):
    with gzip.open(fname,'rt') as f:
            # do something
            pass
else:
    with open(fname,'r') as f:
            # do something
            pass
Run Code Online (Sandbox Code Playgroud)

如果"做某事"部分很长并且不方便在函数中写入(例如,它会创建一个无法序列化的嵌套函数),那么使用gzip.open或基于返回的打开来调用最短的方法是什么? fname.endswith( '广州')?

python

8
推荐指数
2
解决办法
294
查看次数

如何检查句子是否包含Python中的某个单词然后执行操作?

假设我问用户原始输入,他们说:"这是一条消息." 如果该原始输入包含单词"message",则它将在此之后执行操作.我能看出这是怎么做到的吗?

python input

7
推荐指数
1
解决办法
5万
查看次数

在Python中重现C函数指针数组

我有一个Python程序要求用户输入像shell一样,如果我检测到一些特定的关键字,我想进入一些特定的函数.

问题是,我想避免做大量的ifelse if.通常在C中为了避免这种情况,我使用了一个函数指针数组,我while用它strcmp来旅行并用来检查输入.

如果有可能的话,我想知道如何在Python中做到这一点.

c python

6
推荐指数
1
解决办法
303
查看次数

'switch'/'case' 用于确定 Python 中要分配的变量

我想使用“switch/case”结构来根据某些参数来决定为哪个变量赋值:

a, b = [init_val] * 2
# This doesn't exist in Python.
switch param
    case 'a':
        a = final_val
    case 'b':
        b = final_val
Run Code Online (Sandbox Code Playgroud)

问题Replacements for switch statements in Python中描述的字典方法在这里不起作用,因为您既不能分配给函数调用,

a, b = [init_val] * 2
switcher = {
    'a': a,
    'b': b
}
switcher.get(param) = final_val
Run Code Online (Sandbox Code Playgroud)

也不通过将变量存储在字典中来更改变量的值:

switcher[param] = final_val  # switcher['a'] is only a copy of variable a
Run Code Online (Sandbox Code Playgroud)

我可以坚持使用“if/elif”,但由于我经常看到基于某些参数确定输出的漂亮字典解决方案(如上述问题),我很好奇是否有类似的解决方案来确定要向一组变量中的哪个变量赋值。

python switch-statement

5
推荐指数
1
解决办法
5403
查看次数

Python编写switch case的有效方法比较

我通常使用字典实现 Switch/Case 进行相等比较。

dict = {0:'zero', 1:'one', 2:'two'}; 
a=1; res = dict[a]
Run Code Online (Sandbox Code Playgroud)

代替

if a==0 :
  res = 'zero'
elif a == 1:
  res = 'one'
elif a==2:
  res = 'two'
Run Code Online (Sandbox Code Playgroud)

是否有策略来实施类似的非等比较方法?

if score <=10 :
  cat = 'A'
elif score >10 and score <=30:
  cat = 'B'
elif score >30 and score <=50 :
  cat = 'C'
elif score >50 and score <=90 :
  cat = 'D'
else:
  cat = 'E'
Run Code Online (Sandbox Code Playgroud)

我知道使用 <、<=、>、>= 可能很棘手,但是是否有任何策略可以概括它或从列表中生成自动语句

{[10]:'A', [10,30]:'B', [30,50]:'C',[50,90]:'D',[90]:'E'}
Run Code Online (Sandbox Code Playgroud)

还有一些标志来说明它是 < …

python switch-statement

5
推荐指数
3
解决办法
2万
查看次数

Python switch case 允许可选参数

我知道 python 中没有 switch case,可以使用字典代替。但是如果我想将参数传递给函数 zero() 而没有参数给 one() 呢?我没有发现任何与此相关的问题。

def zero(number):
    return number == "zero"

def one():
    return "one"

def numbers_to_functions_to_strings(argument):
    switcher = {
        0: zero,
        1: one,
        2: lambda: "two",
    }
    # Get the function from switcher dictionary
    func = switcher.get(argument, lambda: "nothing")
    # Execute the function
    return func()
Run Code Online (Sandbox Code Playgroud)

在不必将它们分成两种情况的情况下实现这一点的最简单方法是什么?我认为 func() 需要采用(可选)参数?

python

4
推荐指数
2
解决办法
8750
查看次数