-1
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  
4

3 に答える 3

2

あなたのプログラムには多くの間違いがあります

  1. pryklad() 関数が値を返していません。

  2. pryklad() 関数への最初の呼び出しの値を保存していません。

  3. pryklad() によって返された値を str() を使用して文字列に変換する必要はありません。

  4. 最後の行print fileは、ファイルの実際の内容を出力しません。オブジェクトに関する情報を出力しfileます。

  5. 最後に、これは実際にはエラーではありませんが、関数に適切な名前を付けるなどの適切なコーディング標準に従うようにしてください (少なくとも私は pryklad の意味を理解できません。他の人はその意味を知っているかもしれません)。

    の代わりに変数に適切な名前を付けて 、のような変数名ab使用します(大まかな推測ですが、長方形の面積を測定しようとしていると仮定しています)heightweight

これらのことを試してみると、file.txt でいくつかの値を表示できるようになります

于 2013-10-07T10:51:34.047 に答える
2

a = pryklad(3)関数にステートメントがないため、結果はaになります。今では単にいくつかの数字を出力します。また、あなたが から何を得ようとしているのかわかりません。Nonereturnprint file

于 2013-10-07T10:47:11.877 に答える
1

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()
于 2013-10-07T10:50:58.757 に答える