2016-04-18 11 views
1

私はPythonの初心者です。私は数時間にわたり課題に取り組んで、乗り降りブロックを打った。基本的には、Pythonに最大1000個のランダムな整数を含むテキストファイルを書き込ませ、max、min、およびユーザが選択したi番目の数字を表示させる必要があります。 (たとえば、ユーザーが9を入力した場合、9番目の変数が返されます)。次に、プログラムが最小から最大までの数値をソートし、新しい整数リストの出力を返すようにする必要があります。私はファイルを正常に書き込もうとしていますが、プログラムをいくつかの関数に分割する必要があります。プログラム本体のreadList(infile、first)関数、sort(first)関数、main()関数。私は読んだり書いたりすることができません。私はこれらの3つの関数に自分のコードを分割しようとしましたが、今は実行されず、エラーメッセージも表示されません。それは私の変数の束が割り当てられているが、私は異なる機能を持っているので使用されていないことを教えてくれます。私のmain()関数でインデントが不足していることを以前にも教えていましたが、決して見つけられませんでした。複数の関数定義を使ってPythonコードを実行する方法(2.7)

import random 
with open("1000.txt", "w") as f: 
    for x in range(1000): 
     f.write(str(random.randint(0, 9999))+"\n") 



def readList(infile, first): 
    infile = raw_input("Please enter the file name: ") 
    file_name = open(infile, 'r') 
    List = file_name.readlines() 
    n = int(raw_input("please enter the nth number in the list you would like to find: ")) 
    m = int(float(n-1)) 
    return List 
    return m 



def sortList(): 
    readList(infile, first) 
    new_list = List.sort() 
    new_min_val = new_list(min) 
    new_max_val = new_list(max) 
    return new_list 
    return new_min_val 
    return new_max_value 


def main(): 
    readList(infile, first) 
    user_num = List[m] 
    first = List[0] 
    lines = len(List) 
    minimum_val = List(min) 
    maximum_val = List(max) 
    if m > 1000: 
     print (m, "is greater than 1000!") 
    elif m > lines: 
     print ("There aren't that many numbers in the list!") 
    elif lines < 1000: 
     print ("WARNING: only", lines, "numbers were read into the list!") 
    print (user_num) 
    print (minimum_val) 
    print (maximum_val) 

私は、このような長い記事のためにごめんなさい:

は、ここに私のコードです。どんな助けでも大歓迎です。

+0

を動作するはずです。残りの部分は決して呼び出されない関数定義なので、何も起こりません。詳細は、[python tutorial](https://docs.python.org/2/tutorial/index.html)を参照してください。 – Cyb3rFly3r

答えて

1

ここでは、プログラムの外観の例を示します。多分、それはあなたがPythonに精通するのを助けるでしょう。これは完璧ではないかもしれないが、少なくともそれはそれで、あなたは?Pythonでプログラミングに適切な導入なしにこの割り当てを与えてきたあなたのコードは唯一の整数の乱数を使用してファイルを生成している:)

import random 
with open("1000.txt", "w") as f: 
    for x in range(1000): 
     f.write(str(random.randint(0, 9999))+"\n") 

def readList(): 
    infile = raw_input("Please enter the file name: ") 
    rawList = list()  
    with open(infile, 'r') as infi: 
     for line in infi: 
      rawList.append(int(line)) 
    sortedList = sortList(rawList) #function call for sorting the list, returned sorted list is stored 
    n = int(raw_input("please enter the nth number in the list you would like to find: ")) 
    m = int(float(n-1)) 
    return sortedList, m 

def sortList(inpList): #function needs list as input and returns sorted list 
    inpList.sort() 
    return inpList 

if __name__=='__main__': #This is how the main is defined in python 
    sortedList, user_num = readList() #function call of readList, returned two objects are stored in variables 
    first = sortedList[0] 
    lines = len(sortedList) 
    minimum_val = min(sortedList) 
    maximum_val = max(sortedList) 
    if user_num > 1000: 
     print user_num, "is greater than 1000!" # you don't need brackets when printing 
    elif user_num > lines: 
     print "There aren't that many numbers in the list!" 
    elif lines < 1000: 
     print "WARNING: only", lines, "numbers were read into the list!" 
    print user_num 
    print minimum_val 
    print maximum_val 
+1

print()を使わないで使っているのは悪い習慣です。なぜなら、 'print' something "はPython 3では動作しないからです。" print( "something")を書くことは常にすべてのバージョンで動作します。しかし、OPのコードでは、 'print'と '(' ...の間にスペースがありません。 –

関連する問題