【问题标题】:Type annotation stuff - Want to enter an actual string value and not an integer when asking the user to type their nameType annotation stuff - 当要求用户输入他们的名字时想要输入一个实际的字符串值而不是一个整数
【发布时间】:2022-12-18 07:35:49
【问题描述】:

我是这个编程方面的初级程序员(或者我认为),所以我对术语使用的了解相当低。所以说。我在 Python 中执行此操作(是的,这应该很容易,因为它是 Python,但对我来说并不容易)。我想知道,在使用输入函数时,是否有更简单的方法来返回合法字符串而不表示为整数的字符串?因为当我要求用户输入他们的名字并且他们输入了一个数字(无论出于何种原因......必须是狼疮)时,数字输入仍然被接受为字符串值。我想接受字符串(实际单词)而不是数字(整数或浮点数),所以当输入数值时,它会打印一条消息要求重试,然后将用户返回到输入函数以输入正确的值(简单的东西,对吧???)。我还添加了年龄、身高(还没有为这两个做任何事情)和性别(性别选项只有男性和女性)的条目。至于性别部分,我创建了一个函数来输入男性或女性,并通过返回各自性别符号的值来关联这两种性别。请原谅我的语法。 Anyhoo,一分钱你的想法?附言我的代码中可能有很多不必要的混乱,所以请原谅我的混乱。我欢迎批评。

代码如下:

i = 'Name'
j = 'Age'
k  = 'Height'
l = 'Sex'
def anno_name(input_str: str ) -> str:
    if input_str.isalpha():
        return
        #print(input_str)
    else:
        print("Entry invalid. Name can neither be numeric nor left empty. Please try again.\n")
        return anno_name(input("Enter your name: "))
        

aname = input(f'{i}\nEnter your name: \n')
anno_name(aname)

print(input(f'\n{j}\nEnter age: \n'))
print(input(f'\n{k}\nEnter height: \n'))

def sym_g():
        gen = input(f'\n{l}\nEnter sex: \n')
        if gen == 'female':
            return 'female \f'
        elif gen == 'male':
            return ('male \v')
        else:
            if gen != 'female' or 'male':
                print("Entry invalid. Please try again.\n")
                return sym_g()#('Invalid value. Please try again...')
           
    
sym_gen = sym_g()
print(sym_gen)

Output

【问题讨论】:

    标签: python string function integer annotations


    【解决方案1】:

    对于您要尝试做的事情,您将必须评估每个输入,我为每个输入创建函数并在通过评估时返回输入是一件好事。这将使您能够灵活地单独处理每个错误。 例子:

    def anno_name(input_str: str ) -> str:
        if input_str.isalpha():
            return input_str.title()
        else:
            print("Entry invalid. Name can neither be numeric nor left empty. Please try again.
    ")
            return anno_name(input("Enter your name: "))
            
    
    def get_age(input_age: int ) -> int:
        try:
            input_age = int(input_age)
        except ValueError:
            pass
        
        if type(input_age) is int:
            return input_age
        else:
            print("Entry invalid. Accepts only integers. Please try again.
    ")
            return get_age(input("Enter Age: "))
    
    
    def get_height(input_height: float ) -> float:
        try:
            input_height = float(input_height)
        except ValueError:
            pass
        
        if type(input_height) is float:
            return input_height
        else:
            print("Entry invalid. Accepts either integers or float. Please try again.
    ")
            return get_height(input("Enter height: "))
    
    
    def get_sex(input_sex: str ) -> str:
        input_sex = input_sex.lower()
        if input_sex == "male" or input_sex == "female":
            return input_sex.title()
        else:
            print("Entry invalid. Enter (male) or (female).
    ")
            return get_sex(input("Enter sex: "))
    
    
    
    def get_personal_details():
        name = anno_name(input("Name
    Enter your name: 
    "))
        print(name, "
    ")
        
        age = get_age(input("Age
    Enter Age: "))
        print(age, "
    ")
        
        height = get_height(input("Height
    Enter Height: "))
        print(height, "
    ")
        
        sex = get_sex(input("Sex
    Enter Sex: "))
        print(sex, "
    ")
    get_personal_details()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      相关资源
      最近更新 更多