方法一:多次调用input

1. 代码

a = list(map(int,input().split(" ")))

方法来源:python怎么在键盘上一次输入多个整数

方法二:调用C标准库

1. 代码

from ctypes import *
# Windows下:
libc = cdll.msvcrt
# Linux下: libc = CDLL("libc.so.6") msg = [c_int(),c_int()]
libc.scanf(b"%d%d", byref(msg[0]),byref(msg[1])) print(msg[0].value,msg[1].value)

参考:ctypes — Python 的外部函数库官网的“传递指针(或以引用方式传递形参)”。

c_int()初始化变量,byref()取地址(相当于&符号)。
官方文档:ctypes.pointerctypes.byref都可以进行取地址,但是ctypes.pointer会创建指针对象,操作更多。像使用c语言中的scanf来获取输入,就需要存储地址,使用byref就足够了。

注意:所有的字符串都要用二进制的字符串,也就是前面要加个b

2. 残留的问题(int数组取元素)

理论上,用ctypes的int数组会更正确一些,但是我没办法取到int数组的后面的地址。
注意:通过value方法获取值、用msg[0]获取元素只适用于字符数组,对于int数组,msg[0]得到的就是value……麻,太不合理了。
如:msg = (c_int()*2)(999,888)msg[0]并不是数组第一个元素,而是第一个值999。我已经麻了,真查不到。如果有查到怎么取数组元素的朋友,请在评论区告诉我该怎么做qwq。

附:计算时间差的程序(使用实例)

第一种读取方式:

import datetime

def showTime(now,level):
Str=""
if(level==1):
Str=str(now.hour)+':'+str(now.minute)
print(Str) # 间隔数组,年-月-日-时-分-秒-毫秒,数组单位,显示级别
def timeInterval(interval,begin_y=2010,begin_m=1,begin_d=1,begin_hh=0, begin_mm=0,begin_s=0,begin_ms=0,unit=1,level=1):
now=datetime.datetime(begin_y,begin_m,begin_d,begin_hh, begin_mm,begin_s,begin_ms)
showTime(now,level)
for any in a:
now=now + datetime.timedelta(minutes=any)
showTime(now,level) begin_h, begin_m=list(map(int,input("起始:").split(" ")))
a=list(map(int,input("间隔:").split(" ")))
timeInterval(a, begin_hh=begin_h, begin_mm=begin_m)

第二种读取输入方式:

import datetime

def showTime(now,level):
Str=""
if(level==1):
Str=str(now.hour)+':'+str(now.minute)
print(Str) # 间隔数组,年-月-日-时-分-秒-毫秒,数组单位,显示级别
def timeInterval(interval,begin_y=2010,begin_m=1,begin_d=1,begin_hh=0, begin_mm=0,begin_s=0,begin_ms=0,unit=1,level=1):
now=datetime.datetime(begin_y,begin_m,begin_d,begin_hh, begin_mm,begin_s,begin_ms)
showTime(now,level)
for any in a:
now=now + datetime.timedelta(minutes=any)
showTime(now,level) from ctypes import *
# Windows下:
libc = cdll.msvcrt
# Linux下: libc = CDLL("libc.so.6") print("起始:",end='')
begin_h, begin_m = [c_int(),c_int()]
libc.scanf(b"%d%d", byref(begin_h),byref(begin_m)) a=list(map(int,input("间隔:").split(" ")))
timeInterval(a, begin_hh=begin_h.value, begin_mm=begin_m.value)

运行结果:

【经验】Python3|输入多个整数(map方法或ctypes调用C标准库scanf)的更多相关文章

  1. 编写Java程序_输入三个整数x,y,z,请把这三个数由小到大输出,请写出实现代码。(3种方法)

    要求说明: 输入三个整数x,y,z,请把这三个数由小到大输出. 实现代码: 第1种方法: import java.util.Scanner; public class xyzMaxMin{ publi ...

  2. python3.x pool.map方法的实质

    我使用多进程的一般方式,都是multiprocessing模块中的Pool.map()方法.下面写一个简单的示例和解析.至于此种方法使用多进程的效率问题,还希望大佬予以指正. 示例: "&q ...

  3. python018 Python3 输入和输出

    Python3 输入和输出在前面几个章节中,我们其实已经接触了 Python 的输入输出的功能.本章节我们将具体介绍 Python 的输入输出. 输出格式美化Python两种输出值的方式: 表达式语句 ...

  4. ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)

    1057: 输入两个整数,求他们相除的余数 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 136[Submit][Status ...

  5. 【编程题目】输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数, 使其和等于 m ... ★

    第 21 题(数组)2010 年中兴面试题编程求解:输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来. 我的思路: 从小 ...

  6. 排序,求几个最值问题,输入n个整数,输出其中最小的k个元素。

    看完两个求最大值算法之后的一些感想. 如果想直接看算法的可以跳过.但是我觉得我这些想法还是比较有用的,至少对我将来的算法设计是这样的. 算法的功能越强大,必然意味着速度慢,因为根据丛林法则,那种慢又功 ...

  7. 基于查表的整数霍夫变换方法实现(matlab)

    暂时先用matlab把算法弄一下,这是基于查表的整数霍夫变换方法实现及解释. 接着再实现FPGA的霍夫变换. 霍夫变换原理和算法这里不多说,可参考以下链接: http://blog.csdn.net/ ...

  8. 输入三个整数x、y、z,请把这三个数由小到大输出

    题目:输入三个整数x,y,z,请把这三个数由小到大输出. 程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x> y则将x与y的值进行交换,然后再用x与z进行比较,如果x> ...

  9. parseInt和map方法使用案例分析

    ["1","2","3"].map(parseInt) //[1,NaN,NaN] 先看map()方法 定义和用法 map() 方法返回一个 ...

  10. jQuery与JS中的map()方法使用

    1.jquery中的map()方法 首先看一个简单的实例: $("p").append( $("input").map(function(){ return $ ...

随机推荐

  1. Luogu P5298 PKUWC2018 Minimax 题解 [ 紫 ] [ 树形 dp ] [ 线段树合并 ] [ 概率 dp ]

    Minimax:线段树合并优化 dp 好题. 树形 dp 因为要求出每一个值的出现概率,首先我们可以想到一个很暴力的 dp 式子. 定义 \(dp_{i,j}\) 表示在节点 \(i\) 时,权值 \ ...

  2. NOIp 2024 游记

    要是 T3 T4 挂分就寄了. Day-11 运动会上 vp 了 NOIp2023 和 NOIp2022,NOIp2023 被 T2 硬控了一会,最后口胡的做法感觉可以拿 \(100+100+35+1 ...

  3. mysqldump从mysql迁移数据到OceanBase

    使用mysqldump导出数据 /usr/bin/mysqldump --single-transaction -B employees -S /data/mysql/mysql.sock -uroo ...

  4. 精选4款基于.NET开源、功能强大的通讯调试工具

    前言 今天大姚给大家分享4款基于.NET开源.功能强大的通讯调试工具,旨在帮助.NET开发者们更好的应对通讯调试方面的学习和工作,提升调试效率. LLCOM LLCOM是一个.NET开源的.功能强大的 ...

  5. MySQL - [13] binlog、redolog、undolog、delaylog

    题记部分 bin log redo log undo log 3.1.什么是undo log 事务是需要保证原子性的,也就是说,事务中的操作要么全部完成,要么什么也不做.但有如下情况,会造成事务执行不 ...

  6. 【忍者算法】从快慢指针到倒数查找:优雅解决链表倒数问题|LeetCode第19题"删除链表的倒数第N个结点"

    从快慢指针到倒数查找:优雅解决链表倒数问题 从生活场景说起 想象你在一个漫长的队伍中,想知道自己距离队尾还有多少人.一个巧妙的方法是:让你的朋友从你所在位置往后数N步,然后你和朋友一起向后走.当朋友走 ...

  7. springboot项目发布war包

    1:修改pom.xml 将"jar"改为"war" <packaging>war</packaging> 将: <dependen ...

  8. mysql 无数据插入,有数据更新

    mysql的语法与sql server有很多不同,sql server执行插入更新时可以update后使用if判断返回的@@rowcount值,然后确定是否插入,mysql在语句中无法使用类似sql  ...

  9. flex布局之flex-shrink

    当指定view为flex布局后,给子元素定义width是不起效果的. 原因:定义为flex布局元素的子元素,自动获得了flex-shrink的属性,这个属性是什么意思呢?就是告诉子元素当父元素宽度不够 ...

  10. . net core 项目创建和发布

    1.发布和部署到IIS https://www.cnblogs.com/loverwangshan/p/11284169.html https://www.cnblogs.com/wangjiegua ...