나는, 학생의 성적을 뱉어 운동을 적응하기 위해 노력하고있어. 개인적으로 대문자 (예 : 앨리스)를 사용하여 자동으로 이름을 입력하는 경향이 있으므로 입력을 사상해야합니다. .lower()
코드는 대문자를 사용하지 않는 한 .lower
없이 작동합니다. NameError: name 'Tyler' is not defined:
사전을 참조하는 Santising 사용자 입력? 대신 코드 예</p> <pre><code>print get_letter_grade (get_average(alice)) </code></pre> <p>에 이름을 넣는 I는 사용자 입력을 사용할 수 있도록
pupil = input("Which student?").lower()
print get_letter_grade (get_average(
pupil))
이 시도 : 또한 시도
pupil = input("Which student?").lower
student = pupil
print get_letter_grade (get_average(
student))
:
오류
(즉, 앨리스) 입력을 모두 소문자로 입력AttributeError: 'dict' object has no attribute 'lower'
과 대문자이 될 것으로 보인다
pupil = input("Which student?")
student = pupil.lower()
print get_letter_grade (get_average(
student))
그리고 :
pupil = input("Which student?")
student = pupil
print get_letter_grade (get_average(input("Which student?").lower()))
여기에 전체 코드는 다음과 같습니다
lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
def average(numbers):
total=sum(numbers)
total=float(total)
total =total/len(numbers)
return total
def get_average(student):
homework = average(student["homework"])
quizzes = average(student["quizzes"])
tests = average(student["tests"])
return float(0.1*homework + 0.3*quizzes + 0.6*tests)
def get_letter_grade(score):
if score>=90:
return "A"
elif score>=80:
return "B"
elif score>=70:
return "C"
elif score>=60:
return "D"
else:
return "F"
pupil = input("Which student?").lower()
print get_letter_grade (get_average(
pupil))
내가 사용자의 입력을 처리/사용, 또는 뭔가 포맷 문자열, 사전에 수행하는 방법에 대한 일을 오해하고있어 같은 느낌?
- 그것은 갑자기 전 세계의''alice'' 사전에 대한 언급으로 바뀌지 않을 것입니다. 팁 : 작게 시작하십시오. 본격적인 프로그램을 작성하는 대신 사용자의 입력을 기반으로 올바른 사전을 식별하고 참조하는 것으로 시작하십시오. 그렇게하면 잠재적 오류가 줄어 듭니다. –