0
f = open("arvud.txt", "r")
arv = f.readline()
arv = arv.strip()

while arv != " ":
    if int(arv)%2 > 0:
        print("Arv " + str(arv) + " on paaritu arv.")
    else:
        print("Arv " + str(arv) + " on paarisarv.")
    arv = f.readline()
    arv = arv.strip()

これは私のコードで、数値が 2 で除算されるかどうかを調べるために機能します。各行のファイルから数値を読み取ります。

arvud.txt

10
2
1
6
17
36665
1000000001
25832864968

これは、IDLE での外観です。

>>> ================================ RESTART ================================
>>> 
Arv 10 on paarisarv.
Arv 2 on paarisarv.
Arv 1 on paaritu arv.
Arv 6 on paarisarv.
Arv 17 on paaritu arv.
Arv 36665 on paaritu arv.
Arv 1000000001 on paaritu arv.
Arv 25832864968 on paarisarv.
Traceback (most recent call last):
  File "C:\Python33\9.veebruar\2. kodutöö\1paarispaaritu.py", line 8, in <module>
    if int(arv)%2 > 0:
ValueError: invalid literal for int() with base 10: ''
>>> 

もっとテキストを追加する必要があります... grrhh。これを回避する方法について助けが必要です。私はこのプログラムに慣れていないので、これについて何か助けていただければ幸いです。ありがとうございました!

4

1 に答える 1

1

ファイルの最後にf.readline()、空の文字列を返します。したがって、空の文字列をテストする必要があります。

while arv:

に対してテストするのではなくarv != " "

于 2013-02-21T19:23:53.147 に答える