【问题标题】:Changing string into integers for variables inside function, Python将字符串更改为函数内部变量的整数,Python
【发布时间】:2014-09-18 11:16:39
【问题描述】:

为什么assign()函数不把字符串变成整数? assign 函数不会返回我在 if 语句中设置的值!

p1 = raw_input("Player 1 ?")
p2 = raw_input("Player 2 ?")

def assign(n):

    if n == "r":
        return (1)
    elif n == "s":
        n = 2
    elif n == "p":
        n = 3
    else:
        print "Wrong input!"
    return n

assign(p1)
assign(p2)
print p1
print p2

if p1 - p2 == 0:
    print "Tie!"
elif (p1 - p2) / 2 != 0:
    print " Player 1 is winner!"
else:
    print" Player 2 is the winner!"

【问题讨论】:

  • 你得到的输入和输出是什么,你期望的输出是什么?
  • 您的assign 函数可能被称为assign,但它不会assignassign 的变量outside 提供新值。
  • Python 赋值确实那样工作。参见例如python.net/~goodger/projects/pycon/2007/idiomatic/…
  • 我一直在想,为什么新用户认为最好把整个问题放在标题中,然后只把代码放在问题正文中。
  • stackoverflow.com/questions/986006/… 基本上就是你要问的。

标签: python string integer


【解决方案1】:

函数内的变量n 与作为参数提供的表达式(或变量)不同。因此,在函数内部分配给n不会影响外部的任何变量。 (这是因为 Python 不是按引用调用。)

改为使用返回值,例如。

def classifyInput(n):    
    if n == "r":
        return 1
    elif n == "s":
        return 2
    elif n == "p":
        return 3
    else:
        print "Wrong input!"
        # implicit: return None

p1_inp = raw_input("Player 1 ?")
p1 = classifyInput(p1_inp)

【讨论】:

  • 太棒了!多谢。我明白你的意思。它的工作。抱歉,如果我的帖子杂乱无章。我对编码和这个网站还很陌生!
  • 我也写了这个脚本来制作剪刀石头布游戏。如果你让我知道我正在以正确的方式处理这个问题,我会很高兴
  • @user3880531 我实际上会保留原始 r/p/s 值(无需将它们转换为数字)。请参阅stackoverflow.com/a/14892086/2864740stackoverflow.com/questions/23585417/… 和类似的问题,了解如何建立排序(我认为在这种情况下查找确实很好,但也可以使用 if-else 语句来完成)
  • 我明白了。是的,这样做更聪明!
猜你喜欢
  • 2013-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 2013-09-15
  • 2015-10-24
相关资源
最近更新 更多