Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用abs、chr、len功能重新打印输入?_Python_Variables_Printing - Fatal编程技术网

Python 如何使用abs、chr、len功能重新打印输入?

Python 如何使用abs、chr、len功能重新打印输入?,python,variables,printing,Python,Variables,Printing,除了getValue函数外,我什么都做了。系统会提示我输入正整数、负整数、48-122之间的整数和字符串。一旦我把它们全部输入,我希望它能重新打印它们,除了显示的abs、chr和len函数。这就是我得到语法错误的地方 def main(): posInteger() negInteger() myChar() myString() getValues() def posInteger(): #Declaring positive integer

除了getValue函数外,我什么都做了。系统会提示我输入正整数、负整数、48-122之间的整数和字符串。一旦我把它们全部输入,我希望它能重新打印它们,除了显示的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/错误)

输入一个正整数:45
输入一个负整数:-1
输入一个介于48和122之间的整数,包括:90
输入一个字符串:daf
回溯(最近一次呼叫最后一次):
文件“D:\.Drexel Affil\info\info108\W3\scrap.py”,第38行,在
main()
文件“D:\.Drexel Affil\info\info108\W3\scrap.py”,第7行,主目录
getValues()
文件“D:\.Drexel Affil\info\info108\W3\scrap.py”,第32行,在getValues中
打印('正整数为',abs(posInt))
TypeError:abs()的操作数类型错误:'str'

默认情况下,Python函数中的变量与函数相关。所以这不起作用:

def f():
    a = 1

f()
print(a)
为了使
a
在功能之外可用,您必须使用
global

def f():
    global a
    a = 1

注意:您的语法错误在这一行(您有一个多余的左括号):


在这里,问题不在于使用函数,而在于变量管理

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

所以你至少可以走两条路中的一条

第一种方法最简单:停止使用函数,只需将所有代码放入
main
函数即可。工作,但不是一个好的思考方式


第二种更好的方法是:在各个函数的末尾返回
posInt
&co.变量,并将它们作为(名称不正确?
getValues
函数的参数。您可以在有关函数的教程中获得更多详细信息,例如。

如果这是Python 2…原始输入对字符串有效,您甚至不需要所有列出命令的函数

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

你的错误是什么?请回答您的问题并添加错误的全文。另外,您在
posInt=(输入('Enter a positive integer:')
行中缺少一个结束符
。您不需要初始的
,所以就扔掉它。@MattDMo如果你读了代码,错误是显而易见的。@orlp我读过代码,对错误是什么有自己的想法,但我想仔细阅读错误,思考它,并可能发现它的原因。“教人钓鱼…”所有这些。@MattDMo在一个新手程序员中没有变量作用域的概念,思考它不会突然产生想法。它需要明确地教授和提及,试图让OP发现它本身并没有增加教育价值,只是增加了挫折感。@orlp这取决于实际的错误是什么。我同意concep但是,OP刚刚编辑了这篇文章,并说这是一个语法错误(不过仍然没有添加它的文本),所以其他事情也在发生…答案很好,但是为什么不编辑删除的帖子并取消删除它呢?教学习编写函数的人使用
global
可能是个坏主意,我认为…@BhargavRao因为我以前的答案根本不正确,所以我删除了我不正确的答案并在中发布了一个正确的答案当然。这是一个完全不同的答案,所以我觉得编辑是不合适的。@Ekleog我同意,但这个问题是关于OP不理解变量范围。我没有时间每次都为每个新手解释所有最佳实践-他们可以阅读一本好书。我按照你的建议添加了全局变量,但仍然有一个错误.只是想弄清楚如何展示它。。。
osInt = (input('Enter a positive integer: ')
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