2015-04-15 43 views
0

除getValue函数工作外,我得到了一切。系统会提示输入正整数,负整数,48-122之间的一个整数和一个字符串。一旦我将它们全部输入,我希望它能重印它们,除了显示的abs,chr和len函数。这是我得到语法错误的地方。如何获得打印以重印输入,但使用abs,chr,len函数?

def main(): 
    posInteger() 
    negInteger() 
    myChar() 
    myString() 
    getValues() 

def posInteger(): 
    #Declaring positive integer value 
    posInt = (input('Enter a positive integer: ') 


def negInteger(): 
    #Declaring negative integer value 
    negInt = input('Enter a negative integer:') 

def myChar(): 
    #Declaring integer 
    myCh = input('Enter an integer between 48 and 122 incluseive: ') 

def myString(): 
    #Declaring string 
    myStr = input('Enter a string: ') 

def getValues(): 
     #Prints the variables back out to user 
    print ('The positive int is,', abs(posInt)) 
    print('textbody', abs(negInt)) 
    print('textbody', chr(myCh)) 
    print('textbody', len(myStr)) 
#raiser posInt by power 4 

main() 

编辑:

这是我的程序在运行时的外观(W /错误)

Enter a positive integer: 45 
Enter a negative integer:-1 
Enter an integer between 48 and 122 incluseive: 90 
Enter a string: daf 
Traceback (most recent call last): 
    File "D:\.Drexel Affil\info\info108\W3\scrap.py", line 38, in <module> 
    main() 
    File "D:\.Drexel Affil\info\info108\W3\scrap.py", line 7, in main 
    getValues() 
    File "D:\.Drexel Affil\info\info108\W3\scrap.py", line 32, in getValues 
    print('The positive int is,', abs(posInt)) 
TypeError: bad operand type for abs(): 'str' 
+0

什么是错误您收到?请[编辑]你的问题,并添加错误的**全文**。另外,你在'posInt =(input('输入一个正整数:')'行缺少一个结束''''。你不需要最初的'(',所以只需要清除它) – MattDMo

+1

@ MattDMo如果你阅读代码,错误是显而易见的 – orlp

+0

@orlp我已经阅读了代码,并且对错误是什么有我的想法,但是我想要OP仔细阅读错误,仔细想想,并且可能发现“教一个人钓鱼......”等等 – MattDMo

回答

1

变量函数在Python是local到系统默认的功能。所以这不起作用:

def f(): 
    a = 1 

f() 
print(a) 

为了使a提供的功能之外,你必须使用global

def f(): 
    global a 
    a = 1 

PS:你的语法错误是在这条线(你有一个多余的左括号):

osInt = (input('Enter a positive integer: ') 
+0

很好的答案,但是为什么不编辑已删除的帖子并将其取消删除? –

+0

教学使用'全球'的人学习写功能可能是一个坏主意,我认为... – Ekleog

+1

@BhargavRao因为我以前的答案是不正确的,所以我删除了我的不正确的答案,并发布了一个正确的。这是一个完全不同的答案,所以我不觉得编辑是合适的。 – orlp

1

这里,问题不在于你的使用功能,但在你的变量管理。

例如,您在posInteger中读取的变量posInt是本地函数的变量。因此,您无法在getValues中获得它的价值,因为它在posInt返回时就被遗忘了。

所以,你可以去至少两种方式之一。

第一种方式,最简单的:停止使用的功能,只是把所有的代码在main功能。工程,但不是一个好的思考方式。

方式二,更好:返回posInt &合作。变量放在各个函数的末尾,并将它们作为(错误名称?)getValues函数的参数。您可以在处理函数的教程中获得更多详细信息,例如this one

0

如果这是Python的... 2的raw_input供职的字符串,还你甚至需要所有这些列出的命令,例如将工作职能。

posInt = (input('Enter a positive integer: ')) 
negInt = input('Enter a negative integer:') 
myCh = input('Enter an integer between 48 and 122 incluseive: ') 
myStr = raw_input('Enter a string: ') 
print ('The positive int is,', abs(posInt)) 
print('textbody', abs(negInt)) 
print('textbody', chr(myCh)) 
print('textbody', len(myStr)) 
#raiser posInt by power 4