2017-10-25 2 views
0

ヘルパー機能がプログラムの実行に苦労しています。私は、残りのヘルパー機能で自分の問題を乗り越えるように見えるカントのでヘルパー機能を修復できません

# create_grades - A function that will create and return a list of 
# 'amount' randomly selected between 0 and 100. 0 and 100 are included. 
def create_grades(amount): 
    import random 
    grade_list = [] 
    for i in range (amount): 
     number = random.randint (0, 100) 
     grade_list.append (number) 
    return grade_list 

# print_rows - A function that prints all of grade_list displaying 4 space 
# separated values in each row. Last row may have fewer than 4 values in it. 
def print_rows(grade_list): 
    count = 0 
    for i in range (len(grade_list)): 
     print(grade_list[i], end = " ") 
     if (grade_list[i] % 2 == 0): 
      count += 1 

# add_grade - A function that gets user input from 0 to 100, and counts how 
# many times the grade occurs in 'grade_list'. Result is printed out. 
def add_grade(grade_list): 

    grade = int(input("\nEnter a grade between 0 and 100: ")) 

    print (grade, "occurs", number, "times.") 

# count_grades - A function that calculates and returns amount of 2-digit grades 
# in grade_list. grade_list is assumed to have at least one value. 
def count_grades(grade_list): 
    count = 0 
    if (grade_list > 9 and grade_list <= 100): 
     count +=1 


# Main function - Test all of the helper functions 
def test_grades(): 

    grade_list = create_grades (11) 
    print_rows (grade_list) 

    add_grade (grade_list) 
    print_rows (grade_list) 

    print ("Amount of 2-digit values =", count_grades (grade_list)) 

プログラムはここにある作品が欠落している:これは私がこれまでに私のプログラムで持っているものです。私はそれはあなたがタグ付けされたものであるとして、あなたは、Python 2.7を使用していると仮定するつもりです

test_grades() 

47 7 43 90 
7 39 97 41 
36 100 64 

Enter a grade between 0 and 100: 7 
7 occurs 3 times 

47 7 43 90 
7 39 97 41 
36 100 64 

Amount of 2-digit values = 8 
+0

あなたはすなわち、なぜなど、Aが動作しない、なぜBが動作しない機能していない機能せず、複数の質問をしているように見えますそれぞれの質問は、一度に1つの問題に集中すべきです。あなたのより大きなイメージは、あなたのコードを実行させることかもしれませんが、あなたが扱っている複数の異なる問題があります。 – Reti43

+0

コードを実行すると、 'add_gradeで の印刷(グレード、"発生 "、数字、"時 ")が発生します。 NameError:グローバル名 'number'が定義されていません。 'number'変数はこの関数のスコープ内にありません。 – davedwards

+0

Python 2.xまたはPython 3.xを使用していますか? – DavidG

答えて

0

:私は、結果のこのタイプを得るために取得print_rows、add_grade、およびcount_gradesに苦しんでいます。この作業は、部品を分割して個々に作業する場合には簡単です。

print_rowsは、countが3の場合(pythonの索引付けが0から始まる場合)、新しい行に印刷するように変更できます。 Pythonの2.xで同じ行に印刷すると、ドンは、print文の最後にカンマを追加することです:

def print_rows(grade_list): 
    count = 0 
    for i in grade_list: 
     if count == 3: 
      print i 
      count = 0 
     else: 
      print i, 
      count += 1 

add_gradeであなたはgradegrade_listに表示されますどのように多くの時間をうまくする必要があります。

def count_grades(grade_list): 
    two_digit_grades = grade_list[(grade_list > 9) & (grade_list <= 100)] 
    return len(two_digit_grades) 
:これは grade_list.count(grade)

あなたは組み込み関数 len()を使用して、リストの長さを計算し、その後たくないリストで結果をフィルタリングする必要が count_grade
def add_grade(grade_list):  
    grade = int(input("\nEnter a grade between 0 and 100: "))  
    print grade, "occurs", list(grade_list).count(grade), "time(s)." 

を使用して行うことができます

def create_grades(amount): 
    import numpy as np 
    return np.random.randint(0, 100, amount) 

これらの呼び出し:

また、numpyを使用して、あなたのcreate_gradesを簡素化機能

def test_grades(): 
    grade_list = create_grades(11) 
    print_rows(grade_list) 
    add_grade(grade_list) 
    print "Amount of 2-digit values =", count_grades(grade_list) 

test_grades() 

は与える:

25 88 93 16 
27 53 62 46 
28 6 85 
Enter a grade between 0 and 100: 88 
88 occurs 1 time(s). 
Amount of 2-digit values = 10 
+0

助けてくれてありがとう:) python 3.5のようなプログラムでは、end = ""を使って 'print_rows'に 'i'を印刷しますか? – tabi

+0

@tabi問題ありません。この回答があなたの質問に答えた場合、upvoteを忘れずに受け入れてください。 – DavidG

+0

はすでにアップビューされていますが、残念ながら十分な評判はありません。 – tabi

関連する問題