【发布时间】:2020-02-02 15:55:55
【问题描述】:
我正在做一个小型控制台程序。您输入数据,然后程序将其放入 .txt 文件中。 数据是: 国家 出生年份 出生月份 出生日期 真正的名字 昵称
我决定为每个变量做一个定义,所以如果用户在“国家”中输入一个整数,它会给他一个警告,反之亦然。 代码如下:
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...')
别介意,我是俄罗斯人,我使用俄语。那么问题来了: 当我运行程序并正确输入所有内容(整数到整数,字符串到字符串)时,它说: Год вашего рождения является числом! (问题字符串) 这意味着“你的出生年份应该是一个数字!” 即使我输入了错误的国家(整数),它也是一样的。 所以无论我输入什么,它都会给我那个字符串。 我也使用了 isinstance,但这里的情况要糟糕得多。 请帮帮我!
【问题讨论】:
-
顺便说一句,其他一切正常。当我删除整数/字符串的测试时,它也可以正常工作。
-
type(countryU)将始终为str,因为input始终返回str。 -
如果有标准库函数可以告诉您字符串是否完全由数字或字母组成。 (提示:有。)
-
顺便说一句,阅读此代码需要全景监视器...开玩笑,嵌套的
if/else语句太多。 -
尝试使用
elif语句而不是嵌套的else if,以使代码更具可读性。
标签: python python-3.x string int