问题描述:在自我学习的过程中,写了个登陆,在input处,希望能够对数据类型进行判断,但是因为python3的输入的数据会被系统默认为字符串,也就是1,1.2,a。都会被系统默认为字符串,这个心塞啊,难受啊。我不接受强制类型转换,先贴代码,供大家参考,希望大神能够给出优化代码。多谢

  ps:来自某小白的问题

#!/user/bin/env python
#coding:utf-8 #Author:shenqiang
import json '''分离用户名输入和密码输入的函数'''
def infoUsername():
'''
输入用户名
:return: username 用户名
'''
username = input('请输入您注册的用户名:\n')
return username def infoPassword():
'''
输入密码
:return:password 密码
'''
password = input('请输入您注册的密码:\n')
return password '''
注册
'''
def register(username,password):
'''
注册
:parameter: username 用户名
:parameter:password 密码
:return:
'''
temp = username+'|'+password
'''改写,序列化和反序列化'''
json.dump(temp,open('login', 'w'))
# f = open('login','w')
# f.write(temp)
print('恭喜{0},注册成功!'.format(username)) '''
1。模拟登陆
2。模拟登陆成功后,用户现实登陆状态
3。模拟注册
'''
def login(username,password):
'''
登陆
:param username:登陆系统的账号
:param password:登陆系统的账号的密码
:return: True:登陆成功 False:登陆失败
'''
# f = open('login','r') '''改写,序列化和反序列化'''
f = str(json.load(open('login','r')))
list1 = f.split('|')
if list1[0] == username and list1[1] == password:
return True
else:
return False # for line in f:
# # 将字符串转化成列表
# list = line.split('|')
# if list[0] == username and list[1] == password:
# return True
# else:
# return False '''
查询用户信息
'''
def info(username,password):
'''拿到文件的用户名和密码''' # lines = open('login','r')
# for line in lines:
# list1 = line.split('|') '''改写,序列化和反序列化'''
f = str(json.load(open('login', 'r')))
list1 = f.split('|')
'''验证用户等登陆是否成功'''
r = login(username,password)
if r:
print('登陆成功!用户昵称为:{0}'.format(list1[0]))
else:
print('登陆失败!请检查您的账号和密码!') '''
退出系统
'''
def exit():
'''退出系统'''
import sys
sys.exit(1)
print('您已退出该系统!') '''
主函数
'''
def main():
'''调用上面的方法和属性'''
while True:
try:
# t = int(input('1。注册;2。登陆;3。退出登陆 \n'))
t = int(input('1。注册;2。登陆;3。退出登陆 \n'))
'''
python3输入的整型,浮点型,字符串。都是被系统默认是字符串.下面代码失效
'''
print(type(t))
if isinstance(t,float):
t = int(t)
if isinstance(t,str):
if len(t)==1:
t = ord(t)
except Exception as e:
print(e.args)
else:
if t == 1:
username = infoUsername()
password = infoPassword()
register(username,password)
elif t == 2:
username = infoUsername()
password = infoPassword()
login(username,password)
info(username,password)
elif t == 3:
exit()
else:
print('输入错误,请重新输入!')
finally:
print('') if __name__ == '__main__':
main()
问题部分:
'''
主函数
'''
def main():
'''调用上面的方法和属性'''
while True:
try:
# t = int(input('1。注册;2。登陆;3。退出登陆 \n'))
t = int(input('1。注册;2。登陆;3。退出登陆 \n'))
'''
python3输入的整型,浮点型,字符串。都是被系统默认是字符串.下面代码失效
'''
print(type(t))
if isinstance(t,float):
t = int(t)
if isinstance(t,str):
if len(t)==1:
t = ord(t)
except Exception as e:
print(e.args)
else:
if t == 1:
username = infoUsername()
password = infoPassword()
register(username,password)
elif t == 2:
username = infoUsername()
password = infoPassword()
login(username,password)
info(username,password)
elif t == 3:
exit()
else:
print('输入错误,请重新输入!')
finally:
print('') if __name__ == '__main__':
main()
												

python3的数据类型转换问题的更多相关文章

  1. 简谈-Python的输入、输出、运算符、数据类型转换

    输出: 格式化输出: 看到了 % 这样的操作符,这就是Python中格式化输出. 换行输出: 在输出的时候,如果有 \n 那么,此时 \n 后的内容会在另外一行显示 输入: 在python2.7当中, ...

  2. Python基础之模块、数据类型及数据类型转换

    一.模块 1.标准库 不需要安装,直接调入使用的模块. import sys模块: import sys print(sys.path) #打印环境变量绝对路径 print(sys.argv) #打印 ...

  3. python中数据类型转换

    python中list和str互转   1.list转str 假设有一个名为test_list的list,转换后的str名为test_str 则转换方法: test_str = "" ...

  4. python3 raw 数据转换为jpg

    python3 raw 数据转换为jpg 我们大家都知道,sensor 直接出来的裸数据为raw 数据,没有经过编解码,压缩. 我们需要将raw数据转换为其他格式比如jpg,png,bmp 人眼才能看 ...

  5. JavaScript中数据类型转换总结

    JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...

  6. Sql Server函数全解<三>数据类型转换函数和文本图像函数

    阅读目录 一:数据类型转换函数 二:文本和图像函数 一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和flo ...

  7. JS 数据类型转换

    JS 数据类型转换 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把 ...

  8. 使用变量 数据类型转换 逻辑控制语句(begin ...end; case...end; if...else; while)

    一:变量 变量分为局部变量和全局变量  (全局变量是系统自定的,是不可手动给值的,若想自己定义全局变量可考虑创建全局临时表!) 局部变量的定义:  declare @变量名  数据类型 (局部变量只能 ...

  9. Util应用程序框架公共操作类(三):数据类型转换公共操作类(扩展篇)

    上一篇以TDD方式介绍了数据类型转换公共操作类的开发,并提供了单元测试和实现代码,本文将演示通过扩展方法来增强公共操作类,以便调用时更加简化. 下面以字符串转换为List<Guid>为例进 ...

随机推荐

  1. SWIG 3 中文手册——9. SWIG 库

    目录 9 SWIG 库 9.1 %include 指令与库搜索路径 9.2 C 数组与指针 9.2.1 cpointer.i 9.2.2 carrays.i 9.2.3 cmalloc.i 9.2.4 ...

  2. Jenkin远程部署Tomcat8.5总结

    tomcat8.5相比之前的tomcat进入manger管理界面需要多一些设置 1. 在 $tomcathome/conf/Catalina/localhost/下创建 manager.xml , 填 ...

  3. deque & list

    deque 双向队列 它也是采用动态数组的方式来管理的提供了随机数组 和vector的区别 1.deque头尾两端可以开放,能够进行快速的插入和删除(vector只能在尾部进行快速的插入和删除) 2. ...

  4. Python—选择排序算法

    # 选择排序,时间复杂度O(n²) def select_sort(arr): """ 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置. 再从剩余未排序元 ...

  5. 爬虫—GEETEST滑动验证码识别

    一.准备工作 本次使用Selenium,浏览器为Chrome,并配置好ChromDriver 二.分析 1.模拟点击验证按钮:可以直接使用Selenium完成.    2.识别滑块的缺口位置:先观察图 ...

  6. Python之小作业

    文档如下: # name, age, score tom, 12, 86 Lee, 15, 99 Lucy, 11, 58 Joseph, 19, 56 第一栏为姓名(name),第二栏为年纪(age ...

  7. windows下使用vs code调试简单的C程序

    常使用visual studio code(vs code)打开.c文件,如果让vs code具备调试技能估计会比较有用 准备工作: 1. vs code安装插件:cpptools 2. window ...

  8. IT人员职业发展规划

  9. VS IDE调试下将打印日志输出到输出窗口

    int aBeginTime = GetTickCount(); TRACE("Current time begin:%d \n", aBeginTime); 查看输出窗口:

  10. [APIO2016]Gap(交互)

    第一个subtask应该还是很送分的,就是每次询问两端值的大小,(N+1)/2次即可. 考虑第二个subtask,首先还是先把最小值和最大值询问出来,然后发现不需要询问每一个数,直接将[l+1,r-1 ...