负整数值错误,附加但不写入

时间:2014-12-17 22:29:57

标签: python file integer append

我的第一个问题是,当我输入tex -10时,除了ValueError之外没有运行,只有第一个输入再次运行,但如果我输入(-10),那么ValuError会运行。我希望ValueError运行当我输入-10时,没有副词的负数

while True:
          try:
          number = int(input("Area?"))
       if number>0:
            break
  except ValueError: 
           print("That was not a positive number") ##

我的第二个问题是,这个功能只有在我有“a”,附加,而不是我写的时候才有效,有没有人知道为什么,以及我如何解决它?我想写一个文件。

def list_to_file():
             file=open("file.txt","a") 
             file.write("\n")
             file.write("".join(str(lista)))

2 个答案:

答案 0 :(得分:1)

对于第一个问题,听起来你想提出一个值错误,除了它。

number = int(input("Area?"))
while True:
    try:
        if number > 0:
            break
        else:
            raise ValueError()
    except ValueError:
        number = int(input("Please enter a positive number"))

至于第二个问题,当它是一个小的" lista"时,我无法写入文件。但是当它很大的时候才能够。我在这里提出了一个问题并得到了一个有效的答案

Python won't write small object to file but will with large object

简而言之,当你完成写入文件时,你必须用file.close()关闭文件。

def list_to_file():
     file=open("file.txt","w") 
     file.write("\n")
     file.write("".join(str(lista)))
     file.close()

因此,如果您遇到同样的问题,这应该可以解决问题。

要为每次迭代创建一个新文件,请进行每次迭代递增的计数,然后将其发送到打印方法。然后使用该计数创建一个如下所示的唯一文件名:

def list_to_file(count, lista):
    file=open("file_"  + str(count) + ".txt","w") 
    file.write("\n")
    file.write("".join(str(lista)))
    file.close()

allLists = list of all your listas
count = 1
for thisList in allLists:
    list_to_print(count, thisList)
    count +=1

答案 1 :(得分:0)

您正在格式化您的try:except:声明错误。它应该是这样的:

try:
    1/0
except:
    print("the exception happened")

注意尝试是如何直接在上面,除了...在你的看起来像这样:

#your code
while True:
       try:
          number = int(input("State the number of latitudes you want to calculate energy for?"))
       if number>0:
            break
except ValueError: 
           print("That was not a positive number") ##

你有一个except语句挂在while语句下面,没有属于它的try语句。

你可能想要这样做的方式就是这样:

while True:
    try:
        #some sort of statement here that is going to throw an exception like 1/0 ( cant divide by zero bro )
    except:
        print("cant divide b zero bro")
        #some statement that you want to happen after the above exception is thrown
        break

除此之外,你的break不是一个异常诱导语句,它只是停止循环结束。说" break"应该说像

while True:
    try:
        if _some_sort_of_logic_not_fufilled:
            raise Exception("some exception text if you want") #you could use your ValueError here also since ValueError is derived from Exception
    except:
        print "see how it got here?"
        break # this would go here if you want it to STOP the loop after it gets the exception, or dont put break if you want it to keep going... but a while True loop... you probably wnat to eventually break out of...