def pryklad (b):
a=1
while a < 10:
print a*b
a=a+1
if __name__=="__main__":
pryklad(3)
a=pryklad(3)
value=str(a)
file=open('C:/Python27/file.txt','w+')
file.write(value)
print file
3 に答える
あなたのプログラムには多くの間違いがあります
pryklad() 関数が値を返していません。
pryklad() 関数への最初の呼び出しの値を保存していません。
pryklad() によって返された値を str() を使用して文字列に変換する必要はありません。
最後の行
print file
は、ファイルの実際の内容を出力しません。オブジェクトに関する情報を出力しfile
ます。最後に、これは実際にはエラーではありませんが、関数に適切な名前を付けるなどの適切なコーディング標準に従うようにしてください (少なくとも私は pryklad の意味を理解できません。他の人はその意味を知っているかもしれません)。
の代わりに変数に適切な名前を付けて 、のような変数名
a
をb
使用します(大まかな推測ですが、長方形の面積を測定しようとしていると仮定しています)height
weight
これらのことを試してみると、file.txt でいくつかの値を表示できるようになります
a = pryklad(3)
関数にステートメントがないため、結果はa
になります。今では単にいくつかの数字を出力します。また、あなたが から何を得ようとしているのかわかりません。None
return
print file
Python が特に何もしない場合は、return
が返されNone
ます。
関数は、a*b
すべてのループを返す代わりに、それを出力します。この関数は何も返さないため、 を返しますNone
。
したがってa = pryklad(3)
、a is None
. そして、あなたは"None"
あなたのファイルに書き込んでいます。
あなたはyield
ここが欲しいかもしれません。これは値を返しますa*b
が、関数は壊れません。次に、if __name__=="__main__":
コード ブロックで に変更a=pryklad(3)
しa=list(pryklad(3))
ます。while ループa
の for each ループのリストが含まれます。a*b
次に、各番号をファイルに追加することができます。ここでは、次のwith
ステートメントを使用します。
with open('C:/Python27/file.txt','w+') as myfile:
for number in a:
myfile.write(str(number))
その後、ファイルの内容を印刷したい場合は、それをprint file
行いません。ファイルを再度読み取りモードで開く必要があります。
with open('C:/Python27/file.txt','w+') as myfile:
print myfile.read()