问题描述:在自我学习的过程中,写了个登陆,在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. OpenCV和Qt的图像格式互转

    做图像处理的时候经常使需要用到opencv的,这应该是免费的图像处理库中用得最广泛而且最好用的库了吧.然后有时候想用界面来展示点东西的时候,我们就需要编写个界面,编写界面的方法千千万,弱水三千我只取一 ...

  2. 基于libcurl的POST(http)

    #include <stdio.h> #include <curl/curl.h> int main (void) { char *url="http://www.n ...

  3. js实现placehoider效果

    placeholder作为input输入框提示语很好用,但是低版本ie却不支持,对于只有提示语的输入框并不适用 <input type="text" value=" ...

  4. JNI的第1种写法 及 JNI通过形参修改Java数据

    声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 目的:通过形参在Java 和C之间传递数据,尤其是大块的媒体数据 优点:避免通过返回值返回一个巨大的数据块 ...

  5. Java之多线程方式一(继承Thread类)

    /** * 多线程的创建,方式一:继承于Thread类 * 1. 创建一个继承于Thread类的子类 * 2. 重写Thread类的run() --> 将此线程执行的操作声明在run()中 * ...

  6. MySQL学习笔记——〇三 MySQL习题

    在前面讲了MySQL的初步使用方法以后,在这里放出来一些案例来看看怎么做. 先看看database的结构,一共5个表 外键关系: class的cid是student的class_id的外键,teach ...

  7. Java 创建类的过程

    创建对象过程: 堆分配父类空间 堆分类子类空间 属性初始化 调用构造方法(第一行是调用父类构造方法)

  8. 发生 Configuration system failed to initialize 错误的一个特例

    一般情况下,.net 程序启动时发生 Configuration system failed to initialize 错误, 大都与 config 文件中 <configSections&g ...

  9. Thinkphp中js报错,Uncaught SyntaxError: Unexpected token }

    tp中js在行末使用注释报错Uncaught SyntaxError: Unexpected token } if (new_directors==1) {// 注释 解决办法:注释换成单行 if ( ...

  10. [USACO09MAR]Moon哞哞叫Moon Mooing(模拟)

    链接:https://ac.nowcoder.com/acm/contest/1086/F来源:牛客网 题目描述 A full moon casts some sort of spell on the ...