Menlo 发表于 2024-3-22 15:43:50

class+while语句问题

希望当输入数值大于6时,数值自动减少到6输出"My name is {StudentX.Name}, I should study 6 hours per day!",当输入数值小于6时候(比如X),输出 "My name is {StudentX.Name}, I should study {StudentX.StudyHours(X)} hours per day!")
以下是我写的代码,输出结果不合期待,但不知道怎么改,求助。

class Tired_Students:
    def __init__(self, Name, Study_hours):
      self.StudyHours=Study_hours
      self.Name=Name

a=input("what's your name?")
b=float(input("Your daily study hours:"))

StudentX=Tired_Students(a,b)

while b>6:
    b=b-1

else:
    print(f"My name is {StudentX.Name}, I should study {StudentX.StudyHours} hours per day!")

stanley_b 发表于 2024-3-22 15:43:51

class Tired_Students:
    def __init__(self, Name, Study_hours):
      self.StudyHours = Study_hours
      self.Name = Name
   
a = input("What's your name?")
b = float(input("Your daily study hours:"))

StudentX = Tired_Students(a, b)

if b > 6:
    StudentX.StudyHours=6

print(f"My name is {StudentX.Name}, I should study {StudentX.StudyHours} hours per day!")


大于6时不需要用while,用if判断下直接改成6就行了。
另外,改的对象应该是StudentX.StudyHours,而不是b

FishC 发表于 2024-3-22 15:44:04

你的代码有一些问题,主要是在while循环中没有对学习小时数进行更新。下面是修正后的代码:

class Tired_Students:
    def __init__(self, Name, Study_hours):
      self.StudyHours = Study_hours
      self.Name = Name
   
a = input("What's your name?")
b = float(input("Your daily study hours:"))

StudentX = Tired_Students(a, b)

while b > 6:
    b -= 1

print(f"My name is {StudentX.Name}, I should study {b} hours per day!")

现在,无论输入的值是多少,都会输出正确的结果。当输入数值大于6时,循环会将数值逐渐减少到6,然后输出指定的字符串。当输入数值小于等于6时,循环不会执行,直接输出指定的字符串,并使用输入的数值作为学习小时数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: class+while语句问题