【问题标题】:Get input from user in class从课堂上的用户那里获取输入
【发布时间】:2018-12-19 20:25:34
【问题描述】:
class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("John", 36)

print(p1.name)
print(p1.age)

如何要求用户输入姓名和年龄?

【问题讨论】:

    标签: python class init


    【解决方案1】:

    您可以在 init 中执行此操作。如果在 Python 2.7 中,请使用 raw_input

    class Person:
        def __init__(self):
            self.name = input('Name: ')
            self.age = int(input('Age: ')
    
    p1 = Person()
    
    print(p1.name)
    print(p1.age)
    

    或者如果你想把它放在外面

    class Person:
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
    
    name = input('Name: ')
    age = int(input('Age: '))
    
    p1 = Person(name,age)
    
    print(p1.name)
    print(p1.age)
    

    【讨论】:

    • 领先我 10 秒!哈哈
    • __init__ 中这样做是个坏主意;提示键盘输入不应该是构造函数的工作。此外,它还可以防止您从 键盘输入之外的任何内容初始化 Person,或使用这些特定提示之外的任何内容。
    • 完全正确。 +1 ;) 但这取决于需要!例如,如果您想使用用户值启动课程。
    【解决方案2】:

    This 会有所帮助,但简单的答案是:

    class Person:
      def __init__(self, name, age):
        self.name = name
        self.age = age
    
    p1 = Person((raw_input("Enter Name"), int(raw_input("Enter Age"))))
    
    print(p1.name)
    print(p1.age)
    

    【讨论】:

    • @Alexander_Alvaer raw_input 仅适用于 Python 2
    • 我明白了,使用 3.7
    【解决方案3】:

    The input function 用于获取用户的输入。您可以根据用户输入创建一个新的Person,如下所示:

    p1 = Person(input("What is your name?"), int(input("What is your age?")))
    

    这是一种在输入年龄时防止非整数用户输入的方法:

    name = input("What is your name?")
    try:
        age = int(input("What is your age?"))
    except:
        print("Invalid input.")
        exit()
    p1 = Person(name, age)
    

    【讨论】:

      【解决方案4】:

      对于 Python 3,您可以使用 input()

      name = input('Enter your name:')
      age = input('Enter your age: ')
      

      对于 Python 2,raw_input()

      name = raw_input('Enter your name:')
      age = raw_input('Enter your age: ')
      

      请注意,在读取来自用户的输入时,您需要将 age 转换为 int,因为您将获得一个字符串值。

      age = int(age)
      

      但请注意,如果用户输入无效的int,则会引发错误

      【讨论】:

        猜你喜欢
        • 2019-04-11
        • 2019-06-19
        • 1970-01-01
        • 1970-01-01
        • 2013-09-03
        • 1970-01-01
        • 1970-01-01
        • 2016-08-26
        • 1970-01-01
        相关资源
        最近更新 更多