我很会Python 发表于 2023-11-12 19:55:26

python 第六讲课后题

x = int(input("请输入你的分数:"))
while x>1:
    if 0< x < 60 :
      print('D')
      print("请输入你的分数")

    elif 60 <= x <80:
      print('C')
      print("请输入你的分数")
   
    elif 80 <= x <90:
      print('B')
      print("请输入你的分数")

    elif 90 <= x < 100:
      print('A')
      print("请输入你的分数")

    elif x == 100:
      print('S')
      print("请输入你的分数")
   
    elif x == ('e'):
      break
家人们,我这个为啥填了一个数字之后,就无线刷下去了啊{:5_105:}

isdkz 发表于 2023-11-12 19:55:32

您的代码中存在一个逻辑错误。在while循环中,您使用了 while x>1 ,这会导致循环无限进行,因为x的值在循环内部并没有被更新。另外,您还需要添加一个条件来处理用户输入'e'时的情况。

以下是修改后的代码:

while True:
    x = input("请输入你的分数:")
    if x == 'e':
      break
    x = int(x)
    if 0 <= x < 60:
      print('D')
    elif 60 <= x < 80:
      print('C')
    elif 80 <= x < 90:
      print('B')
    elif 90 <= x < 100:
      print('A')
    elif x == 100:
      print('S')
    else:
      print("请输入有效的分数")


这样修改后,用户输入'e'时会退出循环,而输入数字时会根据分数进行评级打印。

Mike_python小 发表于 2023-11-12 19:56:06

你的代码中存在一些问题,我来帮你看看。

首先,你的循环条件是 while x>1:,这意味着只要用户输入的分数大于 1,就会无限循环。其次,你的 input 函数接收到的是字符串,需要将其转换为整数后再进行比较。最后,你在每个判断条件的末尾又让用户重新输入分数,这会导致循环无法正常结束。

以下是修改后的代码:


while True:
    x = input("请输入你的分数:")
    if x == 'e':
      break
    x = int(x)
    if 0 <= x < 60 :
      print('D')
    elif 60 <= x < 80:
      print('C')
    elif 80 <= x < 90:
      print('B')
    elif 90 <= x < 100:
      print('A')
    elif x == 100:
      print('S')
    else:
      print("输入错误,请重新输入")

print("程序结束")


在这个修改后的代码中,我使用了一个无限循环 while True,然后在适当的位置使用 break 来结束循环。同时我将用户输入的分数转换为整数后再进行判断,并删除了多余的提示输入的语句。这样,当用户输入 'e' 时,程序会结束循环并输出"程序结束"。

我很会Python 发表于 2023-11-12 20:00:19

Mike_python小 发表于 2023-11-12 19:56
你的代码中存在一些问题,我来帮你看看。

首先,你的循环条件是 while x>1:,这意味着只要用户输入的分数 ...

哥,可是在之前做第一期的小游戏的那个,输入心里想的数字的时候
我的代码是这样的,我感觉写的和现在一样呀,也没有终止的,也不会出现这样的无限循环,那是为什么呢?
import random

counts = 5
answer = random.randint(1,1000)
while counts > 1:
    temp = input("猜猜我现在想的数字是什么?")
    guess = int (temp)

    if guess == answer:
      print("你真牛逼!\n我没看错你!666!")
      break
    else :
      if guess < answer:
            print("不对嗷老弟,小了,再给你一次机会!")
      if guess > answer:
            print("不对嗷老弟,大了,再给你一次机会")
      counts = counts - 1
    if counts - 1 ==0:
      print("最后一次机会")
      temp = input("猜猜我现在想的数字是什么?")
      guess = int(temp)
      
      if guess == answer:
            print("你真牛逼!\n我没看错你!666!")
            break
      else:
            print("游戏结束!看来你真的不行!")

      

            

liuhongrun2022 发表于 2023-11-12 20:03:11

你的代码在一个 while 循环中,这个循环会一直执行,直到满足某个条件才会停止。你的停止条件是 x>1,所以只要 x 的值大于 1,循环就会无限地继续下去。

在你的代码中,x 的值是在循环开始之前由用户输入的,然后在循环中并没有改变。这就是为什么你填入一个数字后,代码就会无限循环的原因。

要解决这个问题,你需要在每次循环的最后再次请求用户输入。这样,x 的值在每次循环时都会得到更新。以下是修改后的代码:

x = int(input("请输入你的分数:"))

while x > 1:
    if 0 < x < 60 :
      print('D')

    elif 60 <= x < 80:
      print('C')

    elif 80 <= x < 90:
      print('B')

    elif 90 <= x < 100:
      print('A')

    elif x == 100:
      print('S')

    x = input("请输入你的分数或输入'e'退出:")
    if x.lower() == 'e':
      break
    else:
      x = int(x)


以上代码在每次循环结束时,都会提示用户输入新的分数或输入 'e' 退出循环。这样就不会出现无限循环的情况了。

liuhongrun2022 发表于 2023-11-12 20:03:15

我很会Python 发表于 2023-11-12 20:00
哥,可是在之前做第一期的小游戏的那个,输入心里想的数字的时候
我的代码是这样的,我感觉写的和现在一 ...

counts = counts - 1 每次都会-1,等到减到1的时候,就会自动退出
页: [1]
查看完整版本: python 第六讲课后题