やるべき評価があります。これまでの私のコードは次のとおりです。
number1 = input("Number1? ")
number2 = input("Number2? ")
packages = csv.reader(open('lol.txt', newline='\n'), delimiter=',')
for PackName,PriceAdultString,PriceChildString in packages:
n += 1
PriceAdult = float(PriceAdultString)
PriceChild = float(PriceChildString)
print("%i. %17s - $%4.2d / $%4.2d" % (n, PackName, PriceAdult, PriceChild))
NameChoice = input("Which name would you like? Choose using a number: ")
csv.readerで使用されるlol.txtは、次のもので構成されています。
herp,123,456
derp,321,654
hurr,213,546
ここで、NameChoiceを使用してファイルから行を取得し、その中のデータをname、number1、およびnumber2として使用できるようにする必要があります。したがって、NameChoice == 1の場合、name = herp、number1 = 123、number 2=456です。 、および数値は浮動小数点数である必要があります。
私はこれを理解するのに苦労しています、そしてそれが可能であればいくつかのガイダンスを使うことができます。
皆さんありがとう。
尋ねられる前に、私は言及するのを忘れていることに気づきました。私はグーグルで検索し、Pythonガイドと教科書を調べました。しかし、私は自分が何を探しているのかを完全に確信しているわけではありません。
新しい問題が発生しました。「\n」ではなく「\n\ n」を使用してCSVテキストを取得できるようにする必要があるため、テキストは次のようになります。
herp,123,456
derp,321,654
hurr,213,546
Li-Aungが使用したコードの私の(非常にわずかに調整された)バージョン:
import csv
with open ("lol.txt",'rt', newline = '\n\n') as f:
csv_r = csv.reader (f)
entries = [ (name, float(p1), float(p2)) for name, p1, p2 in csv_r]
for index, entry in enumerate(entries):
print ("%2i. %-10s %5.2f %5.2f" % (index, entry[0], entry[1], entry[2]))
choice = int(input("Choose a number: "))
print (entries[choice])
これは例外を返します:
Traceback (most recent call last):
File "C:/Python32/eh", line 2, in <module>
with open ("lol.txt",'rt', newline = '\n\n') as f:
ValueError: illegal newline value:
さて、デバッグはかなり明確です-'\ n \ n'は改行指定子として受け入れられませんが、これを回避する方法があるかどうか疑問に思いましたか?
注:前の編集を台無しにすると、「newline='\n'」のコードからのデバッグは次のようになります。
Traceback (most recent call last):
File "C:/Python32/eh", line 4, in <module>
entries = [ (name, float(p1), float(p2)) for name, p1, p2 in csv_r]
File "C:/Python32/eh", line 4, in <listcomp>
entries = [ (name, float(p1), float(p2)) for name, p1, p2 in csv_r]
ValueError: need more than 0 values to unpack
これは、各有用な行の間の空白を0の値で処理するように指示されたとおりに処理し、そこには何もなかったためです。