问题描述:在自我学习的过程中,写了个登陆,在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. Leetcode(104)之二叉树的最大深度

    题目描述: 解题思路: 代码: public int MaxDepth(TreeNode root) { if (root == null) return 0; return Mathf.Max(Ma ...

  2. 1. Ruby基础知识

    1. Ruby执行选项 符号 作用 -c 检查代码正确性 -w 警告模式运行 -e 字面脚本 -l 行模式运行 单独 ruby -c Hello.rb 组合 ruby -le 'print " ...

  3. 并发与高并发(四)-java并发的优势和风险

  4. 富文本编辑器Tinymce的示例和配置

    Demo链接: https://download.csdn.net/download/silverbutter/10557703 有时候需要验证tinyMCE编辑器中的内容是否符合规范(不为空),就需 ...

  5. \_\_init\_\_和\_\_new\_\_

    __init__和__new__ 一.__new__和__init__ 曾经我幼稚的以为认识了python的__init__()方法就相当于认识了类构造器,结果,__new__()方法突然出现在我眼前 ...

  6. 基于JSP开发医院预约挂号系统 Java源码

    开发环境: Windows操作系统 开发工具: Eclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 源码及原文链接:http://javadao.xyz/forum.php?mod= ...

  7. apt源换国内源

    vim /etc/apt/sources.list deb http://mirrors.163.com/debian/ jessie main non-free contribdeb http:// ...

  8. Eclipse Jee 2019-12 使用的一些小窍门(积累性更新)

    在安装使用 Eclipse IDE for Enterprise Java Developers  Version: 2019-12 M1 (4.14.0) 之前请确保已在系统环境变量配置好JDK1. ...

  9. 14 微服务电商【黑马乐优商城】:day03-springcloud(Zuul网关)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...

  10. Linux介绍,基本命令