打印语句执行三次,而执行仅运行一次

时间:2019-01-31 20:08:15

标签: python python-3.x

我的代码在我想要打印的代码方面工作得很好,但是以某种方式它可以打印fs 3次。因此,它不是只打印一次A,而是打印A树时间,每次都在单独的行上。为什么?

sr = input("Enter score: ")
for i in (sr):
    try:
        fs = float(sr)
        if fs > 1.0: print("decimal only")
        elif fs >= 0.9: print("A")
        elif fs >= 0.8: print("B")
        elif fs >= 0.7: print("C")
        elif fs >= 0.6: print("D")
        elif fs < 0.6: print("F")
    except:
        print("Bad score")
        sr = input("Enter score: ")
        continue

例如,如果用户输入为0.8,则应仅打印B。

3 个答案:

答案 0 :(得分:0)

现在您尚未处理用户输入,因此,当您在一个字符串上循环时,您要一个一个地循环字母,因此每个“ .08”都一个字母地循环,您应该通过首先按空格分割来处理输入(如果您期望多个输入之间用空格隔开)并将其转换为整数。

尚不清楚为什么要对输入进行for循环,如果您希望没有输入,则需要,如果需要多个输入,则必须决定是要全部输入还是一次处理一次(这将需要一个while循环)。

sr = input("Enter score: ")
sr = sr.split(' ')

for i in (sr):
    i = int(i)
    try:
        fs = float(sr)
        if fs > 1.0: print("decimal only")
        elif fs >= 0.9: print("A")
        elif fs >= 0.8: print("B")
        elif fs >= 0.7: print("C")
        elif fs >= 0.6: print("D")
        elif fs < 0.6: print("F")
    except:
        print("Bad score")
        sr = input("Enter score: ")
        continue

答案 1 :(得分:0)

除非您希望程序在评估用户输入后连续运行,否则无需使用for循环。如果你不那么就加入while循环会的工作。

while True:
    try:
        sr = input("Enter score: ")
        fs = float(sr)
        if fs > 1.0: print("decimal only")
        elif fs >= 0.9: print("A")
        elif fs >= 0.8: print("B")
        elif fs >= 0.7: print("C")
        elif fs >= 0.6: print("D")
        elif fs < 0.6: print("F")
    except:
        print("Bad score")
        sr = input("Enter score: ")

答案 2 :(得分:0)

您为什么要输入:-     对于(sr)中的我:#

这将导致循环输入直到您的数字示例达到0.8-0.88的3倍-0.888的4倍-代替5倍执行此类操作。

sr = input("Enter score: ")
if sr>=0 :
    try:
        fs = float(sr)
        if fs > 1.0: print("decimal only")
        elif fs >= 0.9: print("A")
        elif fs >= 0.8: print("B")
        elif fs >= 0.7: print("C")
        elif fs >= 0.6: print("D")
        elif fs < 0.6: print("F")
    except:
        print("Bad score")
        sr = input("Enter score: ")
        continue