【问题标题】:Function Arguments - Clarification函数参数 - 澄清
【发布时间】:2018-09-14 13:19:51
【问题描述】:

Q - 编写一个函数 consonant(ch) 返回字符串 ch 是否为辅音字母。你可以假设 ch 是一个只包含字母字符的字符串。

我的代码:

l = ['a','e','i','o','u']

def consonant(ch):

    if ch in l:
        return False
    else:
        return True

x = consonant(g) # Doesn't work NameError g is not defined 
print(x)

它给出了一个 NameError: name 'g' is not defined。

但是,如果我将参数作为字符串(字符)给出,它可以工作:

x = consonant('g')  # Works 

我不明白为什么在第一种情况下它不像在第二种情况下那样将值 g 转移到 ch。

【问题讨论】:

  • 这实际上与函数参数没有任何关系。如果你已经完成了if g in ['a','e','i','o','u']: print("vowel"),那么你会得到一个 NameError 一样的,不需要函数。
  • consonant(g) 传递的是名为g 的变量,而不是第二个consonant('g') 中的字符串g。而且由于您没有名为 g 的变量,它会给您一个 NameError。
  • 你能澄清你的困惑吗? g(不带引号)不是一个值,而是一个名称。除非您定义该名称所指的值,否则它没有任何意义(因此会触发NameError)。你认为g 有什么价值?
  • 如果print(x) 输出变量x,那么consonant(g) 做了什么……?

标签: python python-3.x python-2.7


【解决方案1】:

g 是一个名为 g 的变量。就像xx = consonant('g') 中一样。

'g' 是字符串'g'

请注意,您的代码不支持大写字符。

不相关但

if ch in l:
    return False
else:
    return True

可以简化为

return ch not in l

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2018-11-21
    相关资源
    最近更新 更多