定义变量的类型! PYTHON

Defining the type of variable! PYTHON

我正在做一个小控制台程序。您输入数据,然后程序将其放入 .txt 文件中。 数据是: 国家 出生年份 出生月份 出生日期 真正的名字 昵称

我决定为每个变量做一个定义,所以如果用户在 "Country" 中键入一个整数,它会给他一个警告,反之亦然。 这是代码:

countryU = input('Страна проживания ')
yearU = input('Год рождения ')
monthU = input('Месяц рождения (его порядковый номер) ')
dayU = input('День рождения ')
nameU = input('Имя ')
nicknameU = input('Никнейм ')
aaaaa = 5
from random import *
u = randint(1,1000000000000)
uinfoname = str(u) + '.txt'

if type(countryU) == str:
    if type(yearU) == int:
        if type(monthU) == int:
            if type(dayU) == int:
                if type(nameU) == str:
                    if type(nicknameU) == str:
                        if countryU == '':
                            print('Вы ввели не все данные! Перезапустите программу и введите все.')
                            input('Press any key to exit...')
                        else:
                            if yearU == '':
                                print('Вы ввели не все данные! Перезапустите программу и введите все.')
                                input('Press any key to exit...')
                            else:
                                if monthU == '':
                                    print('Вы ввели не все данные! Перезапустите программу и введите все.')
                                    input('Press any key to exit...')
                                else:
                                    if dayU == '':
                                        print('Вы ввели не все данные! Перезапустите программу и введите все.')
                                        input('Press any key to exit...')
                                    else:
                                        if nameU == '':
                                            print('Вы ввели не все данные! Перезапустите программу и введите все.')
                                            input('Press any key to exit...')
                                        else:
                                            if nicknameU == '':
                                                print('Вы ввели не все данные! Перезапустите программу и введите все.')
                                                input('Press any key to exit...')
                                            else:
                                                if (len(str(nicknameU)) < aaaaa):
                                                    print('Твой никнейм недостаточно длинный! (минимум 5 символов) Перезагрузите программу и введите все правильно.')
                                                    input('Press any key to exit...')
                                                else:
                                                    print('Вы -', nameU, 'из страны', countryU, '')
                                                    print('Ваша дата рождения: месяц', monthU, 'число', dayU, 'год', yearU, '')
                                                    print('Ваш никнейм на сайте -', nicknameU, '.')
                                                    print('Приятного времяпрепровождения!')
                                                    output = open(uinfoname, 'x')
                                                    print(countryU, file=output)
                                                    print(yearU, file=output)
                                                    print(monthU, file=output)
                                                    print(dayU, file=output)
                                                    print(nameU, file=output)
                                                    print(nicknameU, file=output)
                                                    output.close()
                                                    input('Press any key to exit...')
                    else:
                        print('Никнейм не должен содержать специальные символы или цифры!')
                        input('Press any key to exit...')
                else:
                    print('Имя не должно содержать специальные символы или цифры!')
                    input('Press any key to exit...')
            else:
                print('День вашего рождения является числом!')
                input('Press any key to exit...')
        else:
            print('Месяц вашего рождения является числом!')
            input('Press any key to exit...')
    else:
        print('Год вашего рождения является числом!') #pay attention to this string, this is the problem
        input('Press any key to exit...')
else:
    print('Название вашей страны не может содержать специальные символы или цифры! (Если название вашей страны все-таки их содержит, напишите название без них.')
    input('Press any key to exit...')

别介意,我是俄罗斯人,我使用俄语。好吧,对于这个问题: 当我 运行 程序并正确输入所有内容(整数到整数,字符串到字符串)时,它说: Год вашего рождения является числом! (问题字符串) 这意味着 "Your year of birth should be a number!" 即使我错误地输入了国家/地区(整数),它也是一样的。 所以无论我输入什么,它都会给我那个字符串。 我也使用了 isinstance,但这里更糟糕。 请帮助我!

input()方法总是returns一个字符串。如果你想对应的变量是一个整数,你应该使用int()方法将字符串转换成一个整数。

所以:

year = int(input("Please enter a year"))

其他类型的变量也是如此,但对浮点数等使用 float() 方法。

您所有的输入都是字符串,您可以将整数处理为 int(str_var)

userinput = input ("Enter your Age")
try:
   value = int(userinput)
   print("Input is an integer number. Number = ", valuee)
except ValueError:
  try:
    value = float(userinput)
    print("Input is a float  number. Number = ", value)
  except ValueError:
      print("No.. input is not a number. It's a string")

您的大部分代码都在迎合永远不会发生的情况,即 input 的 return 值是 而不是 str 值。此外,如果您只是在使用 input('Press any key to exit...') 时立即退出,则无需缩进以下代码。考虑到这一点,您的代码会立即简化为

from random import *

countryU = input('Страна проживания ')
yearU = input('Год рождения ')
monthU = input('Месяц рождения (его порядковый номер) ')
dayU = input('День рождения ')
nameU = input('Имя ')
nicknameU = input('Никнейм ')
aaaaa = 5
u = randint(1,1000000000000)

uinfoname = str(u) + '.txt'


if countryU == '':
    print('...')
    input('Press any key to exit...')
    sys.exit()

if yearU == '':
    print('...')
    input('Press any key to exit...')
    sys.exit()

if monthU == '':
    print('...')
    input('Press any key to exit...')
    sys.exit()

if dayU == '':
    print('...')
    input('Press any key to exit...')
    sys.exit()

if nameU == '':
    print('...')
    input('Press any key to exit...')
    sys.exit()

if nicknameU == '':
    print('...')
    input('Press any key to exit...')
    sys.exit()

if (len(str(nicknameU)) < aaaaa):
    print('...')
    input('Press any key to exit...')
    sys.exit()

print('Вы -', nameU, 'из страны', countryU, '')
print('Ваша дата рождения: месяц', monthU, 'число', dayU, 'год', yearU, '')
print('Ваш никнейм на сайте -', nicknameU, '.')
print('Приятного времяпрепровождения!')
output = open(uinfoname, 'x')
print(countryU, file=output)
print(yearU, file=output)
print(monthU, file=output)
print(dayU, file=output)
print(nameU, file=output)
print(nicknameU, file=output)
output.close()
input('Press any key to exit...')

要去除你拥有的 IF 语句的数量,你可以在前几行要求变量时简单地要求输入是整数或字符串,例如:

countryU = str(input('Страна проживания '))
yearU = int(input('Год рождения '))

这样您就不需要检查输入是整数还是字符串,因为它就像整数或字符串一样。如果输入年份的字符 python 将发回错误。要解决此问题,您可以输入:

if countryU != int():
print('Год вашего рождения является числом!') # remember to indent/tab this line!!

'!=' 表示不等于,因此如果国家不是整数输出“Γод вашего рождения является числом!”。

我希望这对您有所帮助,这意味着您不需要检查它是否是 str/int,因为 python 已经为您完成了,您只需要检查它是否不是 srt/int。

input([prompt])总是return字符串类型。

If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that.

如果你想做类型检查,你可以使用 isinstance(object, classinfo) which return 如果对象参数是 classinfo 参数的实例则为真,并在遇到无效值时引发异常。

一个例子:

def checkType(s):
    if not isinstance(s, str):
        # This is (a simple form of) how you raise your own custom exception:
        raise Exception('It must be a string')
    else: 
        pass

print(checkType('abc'))
print(checkType(1))
print("This line will never run!")

你应该记住 input() 总是给你一个字符串。 试试这个:

try:
    mathproblem = int(input('23516 * 84818^81'))
except ValueError:
    print('Dude you should type a number...')