私はこのプログラムを動作させようとしていて、それは実行されますが、実行されると、この問題を発見しました。現在、gradePointとクレジット時間を要求し、想定どおりにGPAを出力しますが、gradePointに何でも入力すると、値が出力されます。私が欲しいのは、ユーザーが0.0〜4.0の数値を入力した場合にのみgradePointが機能することです。私はifループのようなある種のループを考えていましたが、これを行うためのより簡単な方法(または好ましい方法)はありますか?
コードは次のとおりです。
def stu():
stu = Student
class Student:
def __init__(self, name, hours, qpoints):
self.name = name
self.hours = float(hours)
self.qpoints = float(qpoints)
def getName(self):
return self.name
def getHours(self):
return self.hours
def getQpoints(self):
return self.qpoints
def getStudent(infoStr):
name, hours, qpoints = infoStr.split("\t")
return Student(name, hours, qpoints)
def addGrade(self, gradePoint, credits):
self.qpoints = gradePoint * credits
self.hours = credits
self.gradePoint = float(gradePoint)
self.credits = float(credits)
def gpa(self):
return self.qpoints/self.hours
def main():
stu = Student(" ", 0.0, 0.0)
credits = int(input("Enter Credit Hours "))
gradePoint = float(input("Enter Grade Point"))
if gradePoint > 4.0:
print("Please enter a Grade Point that is less then 4.")
stu.addGrade(gradePoint,credits)
output = stu.gpa()
print("\nStudent GPA is: ", output)
main()
これはシェルのプリントアウトです(GPAで成績が繰り返されていることはわかっています。これはクラス用であり、スケルトンプログラムを使用していくつかの変更を行うことになっています):
Enter Credit Hours 4
Enter Grade Point 3.5
Student GPA is: 3.5
Enter Credit Hours 12
Enter Grade Point 3.2
Student GPA is: 3.2
ありがとう!
編集:コメントで提案されているようにifループを実行しましたが、必要なものが出力されるという点である程度機能しましたが、停止して正しい入力を待つことはありませんでした。それをどうやってやるのか正確にはわかりません。
シェルからの新しいプリントは次のとおりです。
Enter Credit Hours 4
Enter Grade Point 3.5
Student GPA is: 3.5
Enter Credit Hours 4
Enter Grade Point 4.5
Please enter a Grade Point that is less then 4.
Student GPA is: 4.5