定义变量的类型! 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...')
我正在做一个小控制台程序。您输入数据,然后程序将其放入 .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...')