如何使用" def"用字符串

时间:2013-12-25 10:48:40

标签: python python-3.3 function

我对编程比较陌生,所以我最近开始在python中尝试使用“def”。这是我的代码,它不断告诉我第一个名字还没有定义。

def name(first, last):
    first = str(first)
    last = str(last)
    first = first.upper
    last = last,upper
    print("HELLO", first, last)

然后我运行程序,我写了一个像

这样的名字
  
    
      

姓名(鲍勃,罗伯特)       然后它会告诉我“bob”尚未定义

    
  

4 个答案:

答案 0 :(得分:4)

如果你的意思是字符串文字,你应该引用它们(使用'"):

name('bob', 'robert') 

除此之外,代码需要修复。

def name(first, last):
    first = str(first)
    last = str(last)
    first = first.upper() # Append `()` to call `upper` method.
    last = last.upper()   # Replaced `,` with `.`.
    print("HELLO", first, last)

答案 1 :(得分:1)

变量和字符串之间存在差异。变量是已经分配了数据的内存中的一个插槽(字符串,数字,结构......)当您编写没有引号的robert时,Python将搜索已使用此名称实例化的变量。

此处不存在,因为您不写robert = 'something'。如果你想直接传递一个字符串,你只需要编写它,用引号括起来(如果它在多行上,则为三引号)。

您希望实现的是name这样的功能:

def name(first, last):
    first = str(first)
    last = str(last)
    first = first.upper
    last = last,upper
    print("HELLO %s %s" % (first, last))

name('bob', 'robert') # Will print "HELLO bob robert"

答案 2 :(得分:1)

    def name(first, last):
        first = str(first)
        last = str(last)
        first = first.upper()
        last = last.upper()
        print("HELLO", first, last)
    name("bob","robert")

1.str-objects有上层方法,但要调用它并得到结果你必须在方法名后加上“()” - 因为你得到了对象方法的链接 - 而不是大写的字符串。 .. 2.in调用名称(bob,robert) - 你把参数,这是未定义的变量.. 要做到这一点,你必须在调用之前定义这些变量,f.g:

    bob = "bob"
    robert="robert"
    name(bob,robert)

答案 3 :(得分:0)

你需要把字符串放到引号(“bob”或“bob”)。

所以你的电话会是

name('bob', 'robert')

而不是

name(bob, robert)

如果你在没有引号的情况下使用它,python会尝试查找名为bob的变量。

此外,您不需要使用str(first)str(last),因为两者都是字符串。