Python 如何在函数中使用原始输入

Python 如何在函数中使用原始输入,python,Python,我已经搜索了论坛,试图找到一个好的方法来制作一个函数,该函数接受原始输入并使用它 print "Roll for Agility" def Rolling(a, b, value): in1 = raw_input() if in1 == 'roll': irand = randrange(a, b) elif in1 == 'Roll': irand = randrange(a, b) else:

我已经搜索了论坛,试图找到一个好的方法来制作一个函数,该函数接受原始输入并使用它

print "Roll for Agility"

def Rolling(a, b, value):

    in1 = raw_input()

    if in1 == 'roll':

        irand = randrange(a, b)

    elif in1 == 'Roll':

        irand = randrange(a, b)

    else: 

        print "Please Type <roll> in order to roll the dice."

        Rolling ()

    print "Your %d is %d" % (value, irand)

Rolling(1, 10, Agility)
打印“敏捷滚动”
def滚动(a、b、值):
in1=原始输入()
如果in1==‘滚动’:
irand=随机范围(a,b)
elif in1==“滚动”:
irand=随机范围(a,b)
其他:
打印“请键入以便掷骰子。”
滚动()
打印“您的%d是%d%”(值,irand)
滚动(1,10,敏捷)
它应该取滚动范围的数字,滚动中的数字被插入到一个值中(在本例中是敏捷性)

代码不起作用,因为原始输入和“滚动函数”中的参数有问题。我希望该函数不仅能够获取原始输入,而且能够处理它。我不想在函数之前进行原始输入,然后通过将原始输入放入字符串或int来手动将其添加到函数中


提前谢谢

代码有一些拼写错误。错误消息
name错误:未定义名称“value”
是因为该语句被错误地放在未定义
value
函数体之外而生成的

更正后的代码应如下所示:

#Rolling for Agility
from random import randrange
print "Roll for Agility"
def Rolling(a, b, value):
    in1 = raw_input()
    if in1 == 'roll' or in1 == 'Roll':
        irand = randrange(a, b)
        print "Your %s is %d" % (value, irand) 
    else: 
        print "Please Type <roll> in order to roll the dice."
        Rolling(a,b,value) # using recursion to call again incase of erroneous input 


Rolling(1, 10, "Agility")
#滚动实现敏捷
从随机输入范围
打印“敏捷卷”
def滚动(a、b、值):
in1=原始输入()
如果in1=='roll'或in1=='roll':
irand=随机范围(a,b)
打印“您的%s是%d%”(值,irand)
其他:
打印“请键入以便掷骰子。”
滚动(a,b,value)#使用递归在输入错误时再次调用
滚动(1,10,“敏捷”)

这是错误:打印“您的%d是%d”%(值,irand)名称错误:名称“值”未定义代码中存在多个错误。请先解决这些问题。你是说缩进问题吗?因为它只是在这里的页面中,而不是在原始代码中…@Yossigerson:修复这里的缩进,这样我们就可以知道原始代码是什么。在每行代码前面加上四个空格,告诉堆栈溢出将其格式化为代码块;现在,您的缩进显然是错误的(函数的第二行缩进比第一行低,但没有
def
行低,这是一个
SyntaxError
;完全不清楚
打印的位置,等等。您还需要说明“不工作”是什么意思;它是否不输出、是否引发异常、是否产生不正确的输出等。
value
irand
是局部变量,它们仅存在于
Rolling
函数中-因此不能在
%中使用它们(value,irand)
这是在
滚动之外的
非常感谢。你为什么要用一次s和一次d?还有,为什么我不能通过调用我的函数来使用reccursion,这样,如果某个函数不是滚动的,就可以再次调用该函数?s=string,d=decimal/integer,f=float,等等。(顺便说一句:)@Yossigerson I)
s
用于格式化为字符串,因为字符串
“Agility”
Rolling
ii)中作为
值传递,如果在
原始输入中键入了不正确的值,您肯定可以使用递归调用
Rolling
函数。只需确保使用正确的参数调用
Rolling
,因为在问题中没有正确执行。@AbhishekKedia非常感谢。我在else中添加了以下内容:Rolling(1,10,“Agility”)程序可以工作,但它给了我这个错误:UnboundLocalError:赋值前引用的局部变量'irand'。