如何防止if语句从转换输入到布尔值?

时间:2018-04-19 20:25:47

标签: python python-3.x

我试图从函数(enter_student_name)获取用户输入值并将其添加到我的字典函数(add_student)中。但是当我打印时,我得到一个布尔值而不是输入的字符串。

控制台示例:输入学生姓名: john

[{'name': True}]

我希望它返回[{'name': john}]

students = []

def enter_student_name():
    while True:
        student_name = str.isalpha(input('Enter student name: '))

        if student_name:
        add_student(student_name)
        print(students)
        # enter_student_id()
    else:
        print('Please enter a name only')
        continue


def add_student(name):
    student = {"name": name }
    students.append(student)

3 个答案:

答案 0 :(得分:2)

如果字符串是字母字符,则

str.isalpha()返回true或false。见https://www.tutorialspoint.com/python/string_isalpha.htm

而是从输入中获取值,然后检查字母字符:

students = []


def enter_student_name():
    while True:
        student_name = input('Enter student name: ')

        if str.isalpha(student_name):
            add_student(student_name)
            print(students)
            # enter_student_id()
        else:
            print('Please enter a name only')
            continue


def add_student(name):
    student = {"name": name }
    students.append(student)

答案 1 :(得分:1)

isalpha()移至if语句:

    student_name = input('Enter student name: ')

    if student_name.isalpha():

答案 2 :(得分:1)

只需使用str代替str.isalpha,而不是:

str.isalpha(input('Enter student name: '))

使用

str(input('Enter student name: '))

这会将任何给定值转换为字符串并使其有效。

然后使用isalpha的if条件检查字符串是否包含所有字母,然后再调用add_student(student_name)函数调用。